summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-11-25 23:09:31 +0100
committerRaindropsSys <raindrops@equestria.dev>2023-11-25 23:09:31 +0100
commit3ba8dcef374000c0cbe76306939ad544a199048d (patch)
treec79610ffd0eebc21514ca0a5d1412567a58e2b38
parent4bd815753eae7a1ddcc0fcdc152f0005531c8450 (diff)
downloadchatroom-3ba8dcef374000c0cbe76306939ad544a199048d.tar.gz
chatroom-3ba8dcef374000c0cbe76306939ad544a199048d.tar.bz2
chatroom-3ba8dcef374000c0cbe76306939ad544a199048d.zip
Updated 2 files, added 1506 files and deleted client/apps/home.html (automated)
-rw-r--r--client/apps/home.html49
-rw-r--r--client/icons/back.svg1
-rw-r--r--client/icons/forward.svg1
-rw-r--r--client/icons/reload.svg1
-rw-r--r--client/icons/stop.svg1
-rw-r--r--client/index.html141
-rwxr-xr-xclient/main.js51
l---------client/node_modules/.bin/electron1
l---------client/node_modules/.bin/extract-zip1
l---------client/node_modules/.bin/semver1
-rw-r--r--client/node_modules/.package-lock.json1036
-rw-r--r--client/node_modules/@cliqz/adblocker-content/LICENSE375
-rw-r--r--client/node_modules/@cliqz/adblocker-content/README.md46
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js2
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js197
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js190
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/es6/tsconfig.bundle.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts74
-rw-r--r--client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-content/package.json84
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/LICENSE375
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/README.md46
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js64
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js264
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js262
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron-preload/package.json88
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/LICENSE375
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/README.md135
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js254
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js234
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/es6/tsconfig.bundle.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts46
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-electron/package.json91
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/LICENSE375
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/README.md46
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js38
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js167
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js134
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js501
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js29
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js12
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js161
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js130
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js492
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js24
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/tsconfig.bundle.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts12
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts12
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts17
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts41
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts82
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker-extended-selectors/package.json59
-rw-r--r--client/node_modules/@cliqz/adblocker/LICENSE375
-rw-r--r--client/node_modules/@cliqz/adblocker/README.md242
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js2
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js58
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js267
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js114
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js267
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js267
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js90
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js267
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js267
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js63
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js30
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js72
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js42
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js458
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js80
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js487
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js121
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js113
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js190
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js719
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js233
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js162
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js74
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js103
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js149
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js179
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js483
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js96
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js78
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js701
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js112
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js1341
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js210
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js246
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js346
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js18
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js270
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js138
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js43
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js347
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js46
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js184
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js52926
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js107
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js1111
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js353
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js49
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js44
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js191
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js128
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js449
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js49
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js1909
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js208
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js250
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js76
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js237
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js127
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js83
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js213
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js17
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js66
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js53
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js123
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js141
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js345
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts20
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts10
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts12
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts18
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts30
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts2
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts146
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts91
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts35
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts37
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts29
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts175
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts43
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts52
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts24
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts33
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts31
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts19
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts119
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts40
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts34
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts99
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts33
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts16
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts182
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts23
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts56
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts69
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts11
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts84
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts34
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts26
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts34
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts22
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts18
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts15
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts2
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts2
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts2
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts9
-rw-r--r--client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts.map1
-rw-r--r--client/node_modules/@cliqz/adblocker/package.json113
-rw-r--r--client/node_modules/@electron/get/LICENSE21
-rw-r--r--client/node_modules/@electron/get/README.md138
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Cache.d.ts8
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Cache.js60
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Cache.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Downloader.d.ts3
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Downloader.js3
-rw-r--r--client/node_modules/@electron/get/dist/cjs/Downloader.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts21
-rw-r--r--client/node_modules/@electron/get/dist/cjs/GotDownloader.js76
-rw-r--r--client/node_modules/@electron/get/dist/cjs/GotDownloader.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts4
-rw-r--r--client/node_modules/@electron/get/dist/cjs/artifact-utils.js66
-rw-r--r--client/node_modules/@electron/get/dist/cjs/artifact-utils.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts3
-rw-r--r--client/node_modules/@electron/get/dist/cjs/downloader-resolver.js12
-rw-r--r--client/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/index.d.ts18
-rw-r--r--client/node_modules/@electron/get/dist/cjs/index.js140
-rw-r--r--client/node_modules/@electron/get/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/proxy.d.ts4
-rw-r--r--client/node_modules/@electron/get/dist/cjs/proxy.js27
-rw-r--r--client/node_modules/@electron/get/dist/cjs/proxy.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/types.d.ts129
-rw-r--r--client/node_modules/@electron/get/dist/cjs/types.js3
-rw-r--r--client/node_modules/@electron/get/dist/cjs/types.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/cjs/utils.d.ts25
-rw-r--r--client/node_modules/@electron/get/dist/cjs/utils.js107
-rw-r--r--client/node_modules/@electron/get/dist/cjs/utils.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/Cache.d.ts8
-rw-r--r--client/node_modules/@electron/get/dist/esm/Cache.js57
-rw-r--r--client/node_modules/@electron/get/dist/esm/Cache.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/Downloader.d.ts3
-rw-r--r--client/node_modules/@electron/get/dist/esm/Downloader.js1
-rw-r--r--client/node_modules/@electron/get/dist/esm/Downloader.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/GotDownloader.d.ts21
-rw-r--r--client/node_modules/@electron/get/dist/esm/GotDownloader.js73
-rw-r--r--client/node_modules/@electron/get/dist/esm/GotDownloader.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/artifact-utils.d.ts4
-rw-r--r--client/node_modules/@electron/get/dist/esm/artifact-utils.js61
-rw-r--r--client/node_modules/@electron/get/dist/esm/artifact-utils.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts3
-rw-r--r--client/node_modules/@electron/get/dist/esm/downloader-resolver.js9
-rw-r--r--client/node_modules/@electron/get/dist/esm/downloader-resolver.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/index.d.ts18
-rw-r--r--client/node_modules/@electron/get/dist/esm/index.js134
-rw-r--r--client/node_modules/@electron/get/dist/esm/index.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/proxy.d.ts4
-rw-r--r--client/node_modules/@electron/get/dist/esm/proxy.js24
-rw-r--r--client/node_modules/@electron/get/dist/esm/proxy.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/types.d.ts129
-rw-r--r--client/node_modules/@electron/get/dist/esm/types.js1
-rw-r--r--client/node_modules/@electron/get/dist/esm/types.js.map1
-rw-r--r--client/node_modules/@electron/get/dist/esm/utils.d.ts25
-rw-r--r--client/node_modules/@electron/get/dist/esm/utils.js95
-rw-r--r--client/node_modules/@electron/get/dist/esm/utils.js.map1
-rw-r--r--client/node_modules/@electron/get/package.json100
-rw-r--r--client/node_modules/@remusao/guess-url-type/CHANGELOG.md59
-rw-r--r--client/node_modules/@remusao/guess-url-type/LICENSE373
-rw-r--r--client/node_modules/@remusao/guess-url-type/README.md3
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/index.js66
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js5
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js12
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js35
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js15
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js5
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js5
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js31
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js102
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/cjs/tsconfig.tsbuildinfo1044
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/index.js63
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js9
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js32
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js12
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js27
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js97
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/es6/tsconfig.bundle.tsbuildinfo1045
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts3
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/guess-url-type/package.json48
-rw-r--r--client/node_modules/@remusao/small/CHANGELOG.md58
-rw-r--r--client/node_modules/@remusao/small/LICENSE373
-rw-r--r--client/node_modules/@remusao/small/README.md21
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/index.js167
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/index.test.js9
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/flv.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/flv.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/gif.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/gif.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/html.js18
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/html.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/ico.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/ico.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/javascript.js22
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/javascript.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/jpeg.js16
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/jpeg.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/json.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/json.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/mp3.js16
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/mp3.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/mp4.js25
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/mp4.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/pdf.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/pdf.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/png.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/png.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/svg.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/svg.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/txt.js17
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/txt.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/wav.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/wav.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/webm.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/webm.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/webp.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/webp.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/wmv.js14
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/src/wmv.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/cjs/tsconfig.tsbuildinfo1124
-rw-r--r--client/node_modules/@remusao/small/dist/es6/index.js140
-rw-r--r--client/node_modules/@remusao/small/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/index.test.js7
-rw-r--r--client/node_modules/@remusao/small/dist/es6/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/flv.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/flv.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/gif.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/gif.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/html.js15
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/html.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/ico.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/ico.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/javascript.js19
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/javascript.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/jpeg.js13
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/jpeg.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/json.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/json.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/mp3.js13
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/mp3.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/mp4.js23
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/mp4.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/pdf.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/pdf.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/png.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/png.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/svg.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/svg.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/txt.js14
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/txt.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/wav.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/wav.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/webm.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/webm.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/webp.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/webp.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/wmv.js11
-rw-r--r--client/node_modules/@remusao/small/dist/es6/src/wmv.js.map1
-rw-r--r--client/node_modules/@remusao/small/dist/es6/tsconfig.bundle.tsbuildinfo1125
-rw-r--r--client/node_modules/@remusao/small/dist/types/index.d.ts35
-rw-r--r--client/node_modules/@remusao/small/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/small/dist/types/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/flv.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/flv.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/gif.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/gif.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/html.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/html.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/ico.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/ico.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/javascript.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/javascript.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/json.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/json.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/mp3.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/mp3.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/mp4.d.ts7
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/mp4.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/pdf.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/pdf.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/png.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/png.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/svg.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/svg.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/txt.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/txt.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/wav.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/wav.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/webm.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/webm.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/webp.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/webp.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/wmv.d.ts8
-rw-r--r--client/node_modules/@remusao/small/dist/types/src/wmv.d.ts.map1
-rw-r--r--client/node_modules/@remusao/small/package.json47
-rw-r--r--client/node_modules/@remusao/smaz-compress/CHANGELOG.md58
-rw-r--r--client/node_modules/@remusao/smaz-compress/LICENSE373
-rw-r--r--client/node_modules/@remusao/smaz-compress/README.md3
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/cjs/index.js114
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js93
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/cjs/tsconfig.tsbuildinfo995
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/es6/index.js110
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js91
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/es6/tsconfig.bundle.tsbuildinfo996
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts10
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz-compress/package.json50
-rw-r--r--client/node_modules/@remusao/smaz-decompress/CHANGELOG.md58
-rw-r--r--client/node_modules/@remusao/smaz-decompress/LICENSE373
-rw-r--r--client/node_modules/@remusao/smaz-decompress/README.md3
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js34
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js44
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/cjs/tsconfig.tsbuildinfo986
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/es6/index.js30
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js42
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/es6/tsconfig.bundle.tsbuildinfo987
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts6
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz-decompress/package.json47
-rw-r--r--client/node_modules/@remusao/smaz/CHANGELOG.md58
-rw-r--r--client/node_modules/@remusao/smaz/LICENSE373
-rw-r--r--client/node_modules/@remusao/smaz/README.md32
-rw-r--r--client/node_modules/@remusao/smaz/dist/cjs/index.js43
-rw-r--r--client/node_modules/@remusao/smaz/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz/dist/cjs/index.test.js31
-rw-r--r--client/node_modules/@remusao/smaz/dist/cjs/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz/dist/cjs/tsconfig.tsbuildinfo1002
-rw-r--r--client/node_modules/@remusao/smaz/dist/es6/index.js36
-rw-r--r--client/node_modules/@remusao/smaz/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/smaz/dist/es6/index.test.js29
-rw-r--r--client/node_modules/@remusao/smaz/dist/es6/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/smaz/dist/es6/tsconfig.bundle.tsbuildinfo1003
-rw-r--r--client/node_modules/@remusao/smaz/dist/types/index.d.ts13
-rw-r--r--client/node_modules/@remusao/smaz/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz/dist/types/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/smaz/dist/types/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/smaz/package.json51
-rw-r--r--client/node_modules/@remusao/trie/CHANGELOG.md82
-rw-r--r--client/node_modules/@remusao/trie/LICENSE373
-rw-r--r--client/node_modules/@remusao/trie/README.md17
-rw-r--r--client/node_modules/@remusao/trie/dist/cjs/index.js40
-rw-r--r--client/node_modules/@remusao/trie/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/@remusao/trie/dist/cjs/index.test.js36
-rw-r--r--client/node_modules/@remusao/trie/dist/cjs/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/trie/dist/cjs/tsconfig.tsbuildinfo986
-rw-r--r--client/node_modules/@remusao/trie/dist/es6/index.js35
-rw-r--r--client/node_modules/@remusao/trie/dist/es6/index.js.map1
-rw-r--r--client/node_modules/@remusao/trie/dist/es6/index.test.js34
-rw-r--r--client/node_modules/@remusao/trie/dist/es6/index.test.js.map1
-rw-r--r--client/node_modules/@remusao/trie/dist/es6/tsconfig.bundle.tsbuildinfo987
-rw-r--r--client/node_modules/@remusao/trie/dist/types/index.d.ts7
-rw-r--r--client/node_modules/@remusao/trie/dist/types/index.d.ts.map1
-rw-r--r--client/node_modules/@remusao/trie/dist/types/index.test.d.ts2
-rw-r--r--client/node_modules/@remusao/trie/dist/types/index.test.d.ts.map1
-rw-r--r--client/node_modules/@remusao/trie/package.json47
-rw-r--r--client/node_modules/@sindresorhus/is/dist/index.d.ts232
-rw-r--r--client/node_modules/@sindresorhus/is/dist/index.js434
-rw-r--r--client/node_modules/@sindresorhus/is/dist/types.d.ts25
-rw-r--r--client/node_modules/@sindresorhus/is/dist/types.js3
-rw-r--r--client/node_modules/@sindresorhus/is/license9
-rw-r--r--client/node_modules/@sindresorhus/is/package.json96
-rw-r--r--client/node_modules/@sindresorhus/is/readme.md669
-rw-r--r--client/node_modules/@szmarczak/http-timer/LICENSE21
-rw-r--r--client/node_modules/@szmarczak/http-timer/README.md93
-rw-r--r--client/node_modules/@szmarczak/http-timer/dist/source/index.d.ts32
-rw-r--r--client/node_modules/@szmarczak/http-timer/dist/source/index.js126
-rw-r--r--client/node_modules/@szmarczak/http-timer/package.json72
-rw-r--r--client/node_modules/boolean/.eslintrc.json3
-rw-r--r--client/node_modules/boolean/.npmpackagejsonlintrc.json3
-rw-r--r--client/node_modules/boolean/.releaserc.json3
-rw-r--r--client/node_modules/boolean/CHANGELOG.md70
-rw-r--r--client/node_modules/boolean/LICENSE.txt8
-rw-r--r--client/node_modules/boolean/README.md95
-rw-r--r--client/node_modules/boolean/lib/boolean.ts17
-rw-r--r--client/node_modules/boolean/lib/index.ts4
-rw-r--r--client/node_modules/boolean/lib/isBooleanable.ts20
-rw-r--r--client/node_modules/boolean/licenseCheck.json16
-rw-r--r--client/node_modules/boolean/package.json46
-rw-r--r--client/node_modules/boolean/tsconfig.json19
-rw-r--r--client/node_modules/buffer-crc32/LICENSE19
-rw-r--r--client/node_modules/buffer-crc32/README.md47
-rw-r--r--client/node_modules/buffer-crc32/index.js111
-rw-r--r--client/node_modules/buffer-crc32/package.json39
-rwxr-xr-xclient/node_modules/cacheable-lookup/LICENSE21
-rwxr-xr-xclient/node_modules/cacheable-lookup/README.md240
-rwxr-xr-xclient/node_modules/cacheable-lookup/index.d.ts139
-rwxr-xr-xclient/node_modules/cacheable-lookup/package.json45
-rwxr-xr-xclient/node_modules/cacheable-lookup/source/index.js436
-rw-r--r--client/node_modules/cacheable-request/LICENSE21
-rw-r--r--client/node_modules/cacheable-request/README.md206
-rw-r--r--client/node_modules/cacheable-request/package.json56
-rw-r--r--client/node_modules/cacheable-request/src/index.js251
-rw-r--r--client/node_modules/clone-response/LICENSE21
-rw-r--r--client/node_modules/clone-response/README.md62
-rw-r--r--client/node_modules/clone-response/package.json41
-rw-r--r--client/node_modules/clone-response/src/index.js17
-rw-r--r--client/node_modules/cross-fetch/CHANGELOG.md5
-rw-r--r--client/node_modules/cross-fetch/LICENSE21
-rw-r--r--client/node_modules/cross-fetch/README.md165
-rw-r--r--client/node_modules/cross-fetch/dist/browser-polyfill.js619
-rw-r--r--client/node_modules/cross-fetch/dist/browser-ponyfill.js647
-rw-r--r--client/node_modules/cross-fetch/dist/cross-fetch.js2
-rw-r--r--client/node_modules/cross-fetch/dist/cross-fetch.js.map1
-rw-r--r--client/node_modules/cross-fetch/dist/node-polyfill.js11
-rw-r--r--client/node_modules/cross-fetch/dist/node-ponyfill.js22
-rw-r--r--client/node_modules/cross-fetch/dist/react-native-polyfill.js12
-rw-r--r--client/node_modules/cross-fetch/dist/react-native-ponyfill.js6
-rw-r--r--client/node_modules/cross-fetch/index.d.ts14
-rw-r--r--client/node_modules/cross-fetch/package.json128
-rw-r--r--client/node_modules/cross-fetch/polyfill/package.json9
-rw-r--r--client/node_modules/decompress-response/index.d.ts22
-rw-r--r--client/node_modules/decompress-response/index.js58
-rw-r--r--client/node_modules/decompress-response/license9
-rw-r--r--client/node_modules/decompress-response/node_modules/mimic-response/index.d.ts17
-rw-r--r--client/node_modules/decompress-response/node_modules/mimic-response/index.js77
-rw-r--r--client/node_modules/decompress-response/node_modules/mimic-response/license9
-rw-r--r--client/node_modules/decompress-response/node_modules/mimic-response/package.json42
-rw-r--r--client/node_modules/decompress-response/node_modules/mimic-response/readme.md78
-rw-r--r--client/node_modules/decompress-response/package.json56
-rw-r--r--client/node_modules/decompress-response/readme.md48
-rw-r--r--client/node_modules/defer-to-connect/LICENSE21
-rw-r--r--client/node_modules/defer-to-connect/README.md38
-rw-r--r--client/node_modules/defer-to-connect/dist/source/index.d.ts10
-rw-r--r--client/node_modules/defer-to-connect/dist/source/index.js47
-rw-r--r--client/node_modules/defer-to-connect/package.json71
-rw-r--r--client/node_modules/define-data-property/.eslintrc24
-rw-r--r--client/node_modules/define-data-property/.github/FUNDING.yml12
-rw-r--r--client/node_modules/define-data-property/.nycrc13
-rw-r--r--client/node_modules/define-data-property/CHANGELOG.md41
-rw-r--r--client/node_modules/define-data-property/LICENSE21
-rw-r--r--client/node_modules/define-data-property/README.md67
-rw-r--r--client/node_modules/define-data-property/index.d.ts3
-rw-r--r--client/node_modules/define-data-property/index.d.ts.map1
-rw-r--r--client/node_modules/define-data-property/index.js68
-rw-r--r--client/node_modules/define-data-property/package.json113
-rw-r--r--client/node_modules/define-data-property/test/index.js392
-rw-r--r--client/node_modules/define-data-property/tsconfig.json59
-rw-r--r--client/node_modules/define-properties/.editorconfig13
-rw-r--r--client/node_modules/define-properties/.eslintrc19
-rw-r--r--client/node_modules/define-properties/.github/FUNDING.yml12
-rw-r--r--client/node_modules/define-properties/.nycrc9
-rw-r--r--client/node_modules/define-properties/CHANGELOG.md91
-rw-r--r--client/node_modules/define-properties/LICENSE21
-rw-r--r--client/node_modules/define-properties/README.md84
-rw-r--r--client/node_modules/define-properties/index.js47
-rw-r--r--client/node_modules/define-properties/package.json88
-rw-r--r--client/node_modules/detect-node/LICENSE21
-rw-r--r--client/node_modules/detect-node/Readme.md30
-rw-r--r--client/node_modules/detect-node/browser.js2
-rw-r--r--client/node_modules/detect-node/index.esm.js2
-rw-r--r--client/node_modules/detect-node/index.js2
-rw-r--r--client/node_modules/detect-node/package.json25
-rw-r--r--client/node_modules/electron/LICENSE21
-rw-r--r--client/node_modules/electron/README.md115
-rw-r--r--client/node_modules/electron/checksums.json77
-rwxr-xr-xclient/node_modules/electron/cli.js25
-rw-r--r--client/node_modules/electron/electron.d.ts19519
-rw-r--r--client/node_modules/electron/index.js21
-rw-r--r--client/node_modules/electron/install.js107
-rw-r--r--client/node_modules/electron/package.json27
-rw-r--r--client/node_modules/electron/path.txt1
-rw-r--r--client/node_modules/end-of-stream/LICENSE21
-rw-r--r--client/node_modules/end-of-stream/README.md54
-rw-r--r--client/node_modules/end-of-stream/index.js94
-rw-r--r--client/node_modules/end-of-stream/package.json37
-rw-r--r--client/node_modules/env-paths/index.d.ts101
-rw-r--r--client/node_modules/env-paths/index.js74
-rw-r--r--client/node_modules/env-paths/license9
-rw-r--r--client/node_modules/env-paths/package.json45
-rw-r--r--client/node_modules/env-paths/readme.md115
-rw-r--r--client/node_modules/es6-error/CHANGELOG.md26
-rw-r--r--client/node_modules/es6-error/LICENSE.md21
-rw-r--r--client/node_modules/es6-error/README.md59
-rw-r--r--client/node_modules/es6-error/es6/index.js72
-rw-r--r--client/node_modules/es6-error/lib/index.js79
-rw-r--r--client/node_modules/es6-error/package.json48
-rw-r--r--client/node_modules/es6-error/typings/index.d.ts1
-rw-r--r--client/node_modules/escape-string-regexp/index.d.ts18
-rw-r--r--client/node_modules/escape-string-regexp/index.js13
-rw-r--r--client/node_modules/escape-string-regexp/license9
-rw-r--r--client/node_modules/escape-string-regexp/package.json38
-rw-r--r--client/node_modules/escape-string-regexp/readme.md34
-rw-r--r--client/node_modules/extract-zip/LICENSE23
-rwxr-xr-xclient/node_modules/extract-zip/cli.js19
-rw-r--r--client/node_modules/extract-zip/index.d.ts21
-rw-r--r--client/node_modules/extract-zip/index.js173
-rw-r--r--client/node_modules/extract-zip/package.json80
-rw-r--r--client/node_modules/extract-zip/readme.md57
-rw-r--r--client/node_modules/fd-slicer/.npmignore2
-rw-r--r--client/node_modules/fd-slicer/.travis.yml7
-rw-r--r--client/node_modules/fd-slicer/CHANGELOG.md49
-rw-r--r--client/node_modules/fd-slicer/LICENSE21
-rw-r--r--client/node_modules/fd-slicer/README.md199
-rw-r--r--client/node_modules/fd-slicer/index.js296
-rw-r--r--client/node_modules/fd-slicer/package.json36
-rw-r--r--client/node_modules/fd-slicer/test/test.js350
-rw-r--r--client/node_modules/fs-extra/CHANGELOG.md864
-rw-r--r--client/node_modules/fs-extra/LICENSE15
-rw-r--r--client/node_modules/fs-extra/README.md261
-rw-r--r--client/node_modules/fs-extra/lib/copy-sync/copy-sync.js164
-rw-r--r--client/node_modules/fs-extra/lib/copy-sync/index.js5
-rw-r--r--client/node_modules/fs-extra/lib/copy/copy.js212
-rw-r--r--client/node_modules/fs-extra/lib/copy/index.js6
-rw-r--r--client/node_modules/fs-extra/lib/empty/index.js48
-rw-r--r--client/node_modules/fs-extra/lib/ensure/file.js49
-rw-r--r--client/node_modules/fs-extra/lib/ensure/index.js23
-rw-r--r--client/node_modules/fs-extra/lib/ensure/link.js61
-rw-r--r--client/node_modules/fs-extra/lib/ensure/symlink-paths.js99
-rw-r--r--client/node_modules/fs-extra/lib/ensure/symlink-type.js31
-rw-r--r--client/node_modules/fs-extra/lib/ensure/symlink.js63
-rw-r--r--client/node_modules/fs-extra/lib/fs/index.js109
-rw-r--r--client/node_modules/fs-extra/lib/index.js28
-rw-r--r--client/node_modules/fs-extra/lib/json/index.js16
-rw-r--r--client/node_modules/fs-extra/lib/json/jsonfile.js12
-rw-r--r--client/node_modules/fs-extra/lib/json/output-json-sync.js18
-rw-r--r--client/node_modules/fs-extra/lib/json/output-json.js27
-rw-r--r--client/node_modules/fs-extra/lib/mkdirs/index.js14
-rw-r--r--client/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js54
-rw-r--r--client/node_modules/fs-extra/lib/mkdirs/mkdirs.js63
-rw-r--r--client/node_modules/fs-extra/lib/mkdirs/win32.js25
-rw-r--r--client/node_modules/fs-extra/lib/move-sync/index.js5
-rw-r--r--client/node_modules/fs-extra/lib/move-sync/move-sync.js47
-rw-r--r--client/node_modules/fs-extra/lib/move/index.js6
-rw-r--r--client/node_modules/fs-extra/lib/move/move.js65
-rw-r--r--client/node_modules/fs-extra/lib/output/index.js40
-rw-r--r--client/node_modules/fs-extra/lib/path-exists/index.js12
-rw-r--r--client/node_modules/fs-extra/lib/remove/index.js9
-rw-r--r--client/node_modules/fs-extra/lib/remove/rimraf.js314
-rw-r--r--client/node_modules/fs-extra/lib/util/buffer.js12
-rw-r--r--client/node_modules/fs-extra/lib/util/stat.js172
-rw-r--r--client/node_modules/fs-extra/lib/util/utimes.js79
-rw-r--r--client/node_modules/fs-extra/package.json69
-rw-r--r--client/node_modules/function-bind/.eslintrc21
-rw-r--r--client/node_modules/function-bind/.github/FUNDING.yml12
-rw-r--r--client/node_modules/function-bind/.github/SECURITY.md3
-rw-r--r--client/node_modules/function-bind/.nycrc13
-rw-r--r--client/node_modules/function-bind/CHANGELOG.md136
-rw-r--r--client/node_modules/function-bind/LICENSE20
-rw-r--r--client/node_modules/function-bind/README.md46
-rw-r--r--client/node_modules/function-bind/implementation.js84
-rw-r--r--client/node_modules/function-bind/index.js5
-rw-r--r--client/node_modules/function-bind/package.json87
-rw-r--r--client/node_modules/function-bind/test/.eslintrc9
-rw-r--r--client/node_modules/function-bind/test/index.js252
-rw-r--r--client/node_modules/get-intrinsic/.eslintrc38
-rw-r--r--client/node_modules/get-intrinsic/.github/FUNDING.yml12
-rw-r--r--client/node_modules/get-intrinsic/.nycrc9
-rw-r--r--client/node_modules/get-intrinsic/CHANGELOG.md125
-rw-r--r--client/node_modules/get-intrinsic/LICENSE21
-rw-r--r--client/node_modules/get-intrinsic/README.md71
-rw-r--r--client/node_modules/get-intrinsic/index.js351
-rw-r--r--client/node_modules/get-intrinsic/package.json93
-rw-r--r--client/node_modules/get-intrinsic/test/GetIntrinsic.js274
-rw-r--r--client/node_modules/get-stream/buffer-stream.js52
-rw-r--r--client/node_modules/get-stream/index.d.ts108
-rw-r--r--client/node_modules/get-stream/index.js60
-rw-r--r--client/node_modules/get-stream/license9
-rw-r--r--client/node_modules/get-stream/package.json50
-rw-r--r--client/node_modules/get-stream/readme.md124
-rw-r--r--client/node_modules/global-agent/.flowconfig3
-rw-r--r--client/node_modules/global-agent/LICENSE24
-rw-r--r--client/node_modules/global-agent/README.md239
-rw-r--r--client/node_modules/global-agent/bootstrap.js1
-rw-r--r--client/node_modules/global-agent/dist/Logger.js18
-rw-r--r--client/node_modules/global-agent/dist/Logger.js.flow10
-rw-r--r--client/node_modules/global-agent/dist/Logger.js.map1
-rw-r--r--client/node_modules/global-agent/dist/classes/Agent.js174
-rw-r--r--client/node_modules/global-agent/dist/classes/Agent.js.flow212
-rw-r--r--client/node_modules/global-agent/dist/classes/Agent.js.map1
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpProxyAgent.js33
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.flow30
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.map1
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js53
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.flow54
-rw-r--r--client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.map1
-rw-r--r--client/node_modules/global-agent/dist/classes/index.js32
-rw-r--r--client/node_modules/global-agent/dist/classes/index.js.flow5
-rw-r--r--client/node_modules/global-agent/dist/classes/index.js.map1
-rw-r--r--client/node_modules/global-agent/dist/errors.js22
-rw-r--r--client/node_modules/global-agent/dist/errors.js.flow15
-rw-r--r--client/node_modules/global-agent/dist/errors.js.map1
-rw-r--r--client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js175
-rw-r--r--client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.flow197
-rw-r--r--client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.map1
-rw-r--r--client/node_modules/global-agent/dist/factories/createProxyController.js45
-rw-r--r--client/node_modules/global-agent/dist/factories/createProxyController.js.flow46
-rw-r--r--client/node_modules/global-agent/dist/factories/createProxyController.js.map1
-rw-r--r--client/node_modules/global-agent/dist/factories/index.js24
-rw-r--r--client/node_modules/global-agent/dist/factories/index.js.flow4
-rw-r--r--client/node_modules/global-agent/dist/factories/index.js.map1
-rw-r--r--client/node_modules/global-agent/dist/index.js22
-rw-r--r--client/node_modules/global-agent/dist/index.js.flow4
-rw-r--r--client/node_modules/global-agent/dist/index.js.map1
-rw-r--r--client/node_modules/global-agent/dist/routines/bootstrap.js30
-rw-r--r--client/node_modules/global-agent/dist/routines/bootstrap.js.flow25
-rw-r--r--client/node_modules/global-agent/dist/routines/bootstrap.js.map1
-rw-r--r--client/node_modules/global-agent/dist/routines/index.js16
-rw-r--r--client/node_modules/global-agent/dist/routines/index.js.flow3
-rw-r--r--client/node_modules/global-agent/dist/routines/index.js.map1
-rw-r--r--client/node_modules/global-agent/dist/types.js10
-rw-r--r--client/node_modules/global-agent/dist/types.js.flow66
-rw-r--r--client/node_modules/global-agent/dist/types.js.map1
-rw-r--r--client/node_modules/global-agent/dist/utilities/bindHttpMethod.js62
-rw-r--r--client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.flow54
-rw-r--r--client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.map1
-rw-r--r--client/node_modules/global-agent/dist/utilities/index.js32
-rw-r--r--client/node_modules/global-agent/dist/utilities/index.js.flow5
-rw-r--r--client/node_modules/global-agent/dist/utilities/index.js.map1
-rw-r--r--client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js43
-rw-r--r--client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.flow37
-rw-r--r--client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.map1
-rw-r--r--client/node_modules/global-agent/dist/utilities/parseProxyUrl.js42
-rw-r--r--client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.flow36
-rw-r--r--client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.map1
l---------client/node_modules/global-agent/node_modules/.bin/semver1
-rw-r--r--client/node_modules/global-agent/node_modules/semver/LICENSE15
-rw-r--r--client/node_modules/global-agent/node_modules/semver/README.md637
-rwxr-xr-xclient/node_modules/global-agent/node_modules/semver/bin/semver.js197
-rw-r--r--client/node_modules/global-agent/node_modules/semver/classes/comparator.js141
-rw-r--r--client/node_modules/global-agent/node_modules/semver/classes/index.js5
-rw-r--r--client/node_modules/global-agent/node_modules/semver/classes/range.js539
-rw-r--r--client/node_modules/global-agent/node_modules/semver/classes/semver.js302
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/clean.js6
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/cmp.js52
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/coerce.js52
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/compare-build.js7
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/compare-loose.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/compare.js5
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/diff.js65
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/eq.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/gt.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/gte.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/inc.js19
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/lt.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/lte.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/major.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/minor.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/neq.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/parse.js16
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/patch.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/prerelease.js6
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/rcompare.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/rsort.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/satisfies.js10
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/sort.js3
-rw-r--r--client/node_modules/global-agent/node_modules/semver/functions/valid.js6
-rw-r--r--client/node_modules/global-agent/node_modules/semver/index.js89
-rw-r--r--client/node_modules/global-agent/node_modules/semver/internal/constants.js35
-rw-r--r--client/node_modules/global-agent/node_modules/semver/internal/debug.js9
-rw-r--r--client/node_modules/global-agent/node_modules/semver/internal/identifiers.js23
-rw-r--r--client/node_modules/global-agent/node_modules/semver/internal/parse-options.js15
-rw-r--r--client/node_modules/global-agent/node_modules/semver/internal/re.js212
-rw-r--r--client/node_modules/global-agent/node_modules/semver/package.json87
-rw-r--r--client/node_modules/global-agent/node_modules/semver/preload.js2
-rw-r--r--client/node_modules/global-agent/node_modules/semver/range.bnf16
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/gtr.js4
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/intersects.js7
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/ltr.js4
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/max-satisfying.js25
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/min-satisfying.js24
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/min-version.js61
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/outside.js80
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/simplify.js47
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/subset.js247
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/to-comparators.js8
-rw-r--r--client/node_modules/global-agent/node_modules/semver/ranges/valid.js11
-rw-r--r--client/node_modules/global-agent/package.json105
-rw-r--r--client/node_modules/global-agent/src/Logger.js10
-rw-r--r--client/node_modules/global-agent/src/classes/Agent.js212
-rw-r--r--client/node_modules/global-agent/src/classes/HttpProxyAgent.js30
-rw-r--r--client/node_modules/global-agent/src/classes/HttpsProxyAgent.js54
-rw-r--r--client/node_modules/global-agent/src/classes/index.js5
-rw-r--r--client/node_modules/global-agent/src/errors.js15
-rw-r--r--client/node_modules/global-agent/src/factories/createGlobalProxyAgent.js197
-rw-r--r--client/node_modules/global-agent/src/factories/createProxyController.js46
-rw-r--r--client/node_modules/global-agent/src/factories/index.js4
-rw-r--r--client/node_modules/global-agent/src/index.js4
-rw-r--r--client/node_modules/global-agent/src/routines/bootstrap.js25
-rw-r--r--client/node_modules/global-agent/src/routines/index.js3
-rw-r--r--client/node_modules/global-agent/src/types.js66
-rw-r--r--client/node_modules/global-agent/src/utilities/bindHttpMethod.js54
-rw-r--r--client/node_modules/global-agent/src/utilities/index.js5
-rw-r--r--client/node_modules/global-agent/src/utilities/isUrlMatchingNoProxy.js37
-rw-r--r--client/node_modules/global-agent/src/utilities/parseProxyUrl.js36
-rw-r--r--client/node_modules/globalthis/.eslintrc18
-rw-r--r--client/node_modules/globalthis/.nycrc10
-rw-r--r--client/node_modules/globalthis/CHANGELOG.md96
-rw-r--r--client/node_modules/globalthis/LICENSE21
-rw-r--r--client/node_modules/globalthis/README.md70
-rw-r--r--client/node_modules/globalthis/auto.js3
-rw-r--r--client/node_modules/globalthis/implementation.browser.js11
-rw-r--r--client/node_modules/globalthis/implementation.js3
-rw-r--r--client/node_modules/globalthis/index.js19
-rw-r--r--client/node_modules/globalthis/package.json97
-rw-r--r--client/node_modules/globalthis/polyfill.js10
-rw-r--r--client/node_modules/globalthis/shim.js22
-rw-r--r--client/node_modules/globalthis/test/implementation.js11
-rw-r--r--client/node_modules/globalthis/test/index.js11
-rw-r--r--client/node_modules/globalthis/test/native.js26
-rw-r--r--client/node_modules/globalthis/test/shimmed.js29
-rw-r--r--client/node_modules/globalthis/test/tests.js36
-rw-r--r--client/node_modules/gopd/.eslintrc16
-rw-r--r--client/node_modules/gopd/.github/FUNDING.yml12
-rw-r--r--client/node_modules/gopd/CHANGELOG.md25
-rw-r--r--client/node_modules/gopd/LICENSE21
-rw-r--r--client/node_modules/gopd/README.md40
-rw-r--r--client/node_modules/gopd/index.js16
-rw-r--r--client/node_modules/gopd/package.json71
-rw-r--r--client/node_modules/gopd/test/index.js35
-rw-r--r--client/node_modules/got/dist/source/as-promise/create-rejection.d.ts2
-rw-r--r--client/node_modules/got/dist/source/as-promise/create-rejection.js30
-rw-r--r--client/node_modules/got/dist/source/as-promise/index.d.ts3
-rw-r--r--client/node_modules/got/dist/source/as-promise/index.js176
-rw-r--r--client/node_modules/got/dist/source/as-promise/normalize-arguments.d.ts3
-rw-r--r--client/node_modules/got/dist/source/as-promise/normalize-arguments.js78
-rw-r--r--client/node_modules/got/dist/source/as-promise/parse-body.d.ts3
-rw-r--r--client/node_modules/got/dist/source/as-promise/parse-body.js25
-rw-r--r--client/node_modules/got/dist/source/as-promise/types.d.ts256
-rw-r--r--client/node_modules/got/dist/source/as-promise/types.js42
-rw-r--r--client/node_modules/got/dist/source/core/calculate-retry-delay.d.ts5
-rw-r--r--client/node_modules/got/dist/source/core/calculate-retry-delay.js29
-rw-r--r--client/node_modules/got/dist/source/core/index.d.ts1124
-rw-r--r--client/node_modules/got/dist/source/core/index.js1505
-rw-r--r--client/node_modules/got/dist/source/core/utils/dns-ip-version.d.ts5
-rw-r--r--client/node_modules/got/dist/source/core/utils/dns-ip-version.js17
-rw-r--r--client/node_modules/got/dist/source/core/utils/get-body-size.d.ts3
-rw-r--r--client/node_modules/got/dist/source/core/utils/get-body-size.js32
-rw-r--r--client/node_modules/got/dist/source/core/utils/get-buffer.d.ts4
-rw-r--r--client/node_modules/got/dist/source/core/utils/get-buffer.js16
-rw-r--r--client/node_modules/got/dist/source/core/utils/is-form-data.d.ts8
-rw-r--r--client/node_modules/got/dist/source/core/utils/is-form-data.js4
-rw-r--r--client/node_modules/got/dist/source/core/utils/is-response-ok.d.ts2
-rw-r--r--client/node_modules/got/dist/source/core/utils/is-response-ok.js8
-rw-r--r--client/node_modules/got/dist/source/core/utils/options-to-url.d.ts14
-rw-r--r--client/node_modules/got/dist/source/core/utils/options-to-url.js53
-rw-r--r--client/node_modules/got/dist/source/core/utils/proxy-events.d.ts3
-rw-r--r--client/node_modules/got/dist/source/core/utils/proxy-events.js17
-rw-r--r--client/node_modules/got/dist/source/core/utils/timed-out.d.ts29
-rw-r--r--client/node_modules/got/dist/source/core/utils/timed-out.js121
-rw-r--r--client/node_modules/got/dist/source/core/utils/unhandle.d.ts11
-rw-r--r--client/node_modules/got/dist/source/core/utils/unhandle.js22
-rw-r--r--client/node_modules/got/dist/source/core/utils/url-to-options.d.ts15
-rw-r--r--client/node_modules/got/dist/source/core/utils/url-to-options.js24
-rw-r--r--client/node_modules/got/dist/source/core/utils/weakable-map.d.ts8
-rw-r--r--client/node_modules/got/dist/source/core/utils/weakable-map.js29
-rw-r--r--client/node_modules/got/dist/source/create.d.ts5
-rw-r--r--client/node_modules/got/dist/source/create.js240
-rw-r--r--client/node_modules/got/dist/source/index.d.ts4
-rw-r--r--client/node_modules/got/dist/source/index.js132
-rw-r--r--client/node_modules/got/dist/source/types.d.ts344
-rw-r--r--client/node_modules/got/dist/source/types.js2
-rw-r--r--client/node_modules/got/dist/source/utils/deep-freeze.d.ts1
-rw-r--r--client/node_modules/got/dist/source/utils/deep-freeze.js12
-rw-r--r--client/node_modules/got/dist/source/utils/deprecation-warning.d.ts2
-rw-r--r--client/node_modules/got/dist/source/utils/deprecation-warning.js13
-rw-r--r--client/node_modules/got/license9
-rw-r--r--client/node_modules/got/package.json131
-rw-r--r--client/node_modules/got/readme.md2477
-rw-r--r--client/node_modules/graceful-fs/LICENSE15
-rw-r--r--client/node_modules/graceful-fs/README.md143
-rw-r--r--client/node_modules/graceful-fs/clone.js23
-rw-r--r--client/node_modules/graceful-fs/graceful-fs.js448
-rw-r--r--client/node_modules/graceful-fs/legacy-streams.js118
-rw-r--r--client/node_modules/graceful-fs/package.json53
-rw-r--r--client/node_modules/graceful-fs/polyfills.js355
-rw-r--r--client/node_modules/has-property-descriptors/.eslintrc13
-rw-r--r--client/node_modules/has-property-descriptors/.github/FUNDING.yml12
-rw-r--r--client/node_modules/has-property-descriptors/.nycrc9
-rw-r--r--client/node_modules/has-property-descriptors/CHANGELOG.md27
-rw-r--r--client/node_modules/has-property-descriptors/LICENSE21
-rw-r--r--client/node_modules/has-property-descriptors/README.md43
-rw-r--r--client/node_modules/has-property-descriptors/index.js33
-rw-r--r--client/node_modules/has-property-descriptors/package.json77
-rw-r--r--client/node_modules/has-property-descriptors/test/index.js57
-rw-r--r--client/node_modules/has-proto/.eslintrc5
-rw-r--r--client/node_modules/has-proto/.github/FUNDING.yml12
-rw-r--r--client/node_modules/has-proto/CHANGELOG.md23
-rw-r--r--client/node_modules/has-proto/LICENSE21
-rw-r--r--client/node_modules/has-proto/README.md38
-rw-r--r--client/node_modules/has-proto/index.js11
-rw-r--r--client/node_modules/has-proto/package.json74
-rw-r--r--client/node_modules/has-proto/test/index.js19
-rw-r--r--client/node_modules/has-symbols/.eslintrc11
-rw-r--r--client/node_modules/has-symbols/.github/FUNDING.yml12
-rw-r--r--client/node_modules/has-symbols/.nycrc9
-rw-r--r--client/node_modules/has-symbols/CHANGELOG.md75
-rw-r--r--client/node_modules/has-symbols/LICENSE21
-rw-r--r--client/node_modules/has-symbols/README.md46
-rw-r--r--client/node_modules/has-symbols/index.js13
-rw-r--r--client/node_modules/has-symbols/package.json101
-rw-r--r--client/node_modules/has-symbols/shams.js42
-rw-r--r--client/node_modules/has-symbols/test/index.js22
-rw-r--r--client/node_modules/has-symbols/test/shams/core-js.js28
-rw-r--r--client/node_modules/has-symbols/test/shams/get-own-property-symbols.js28
-rw-r--r--client/node_modules/has-symbols/test/tests.js56
-rw-r--r--client/node_modules/hasown/.eslintrc5
-rw-r--r--client/node_modules/hasown/.github/FUNDING.yml12
-rw-r--r--client/node_modules/hasown/.nycrc13
-rw-r--r--client/node_modules/hasown/CHANGELOG.md20
-rw-r--r--client/node_modules/hasown/LICENSE21
-rw-r--r--client/node_modules/hasown/README.md40
-rw-r--r--client/node_modules/hasown/index.d.ts3
-rw-r--r--client/node_modules/hasown/index.d.ts.map1
-rw-r--r--client/node_modules/hasown/index.js8
-rw-r--r--client/node_modules/hasown/package.json91
-rw-r--r--client/node_modules/hasown/tsconfig.json49
-rw-r--r--client/node_modules/http-cache-semantics/LICENSE9
-rw-r--r--client/node_modules/http-cache-semantics/README.md203
-rw-r--r--client/node_modules/http-cache-semantics/index.js674
-rw-r--r--client/node_modules/http-cache-semantics/package.json18
-rw-r--r--client/node_modules/http2-wrapper/LICENSE21
-rw-r--r--client/node_modules/http2-wrapper/README.md470
-rw-r--r--client/node_modules/http2-wrapper/package.json54
-rw-r--r--client/node_modules/http2-wrapper/source/agent.js670
-rw-r--r--client/node_modules/http2-wrapper/source/auto.js149
-rw-r--r--client/node_modules/http2-wrapper/source/client-request.js445
-rw-r--r--client/node_modules/http2-wrapper/source/incoming-message.js58
-rw-r--r--client/node_modules/http2-wrapper/source/index.js28
-rw-r--r--client/node_modules/http2-wrapper/source/utils/calculate-server-name.js27
-rw-r--r--client/node_modules/http2-wrapper/source/utils/errors.js45
-rw-r--r--client/node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js13
-rw-r--r--client/node_modules/http2-wrapper/source/utils/proxy-events.js7
-rw-r--r--client/node_modules/http2-wrapper/source/utils/url-to-options.js25
-rw-r--r--client/node_modules/json-buffer/.travis.yml3
-rw-r--r--client/node_modules/json-buffer/LICENSE22
-rw-r--r--client/node_modules/json-buffer/README.md24
-rw-r--r--client/node_modules/json-buffer/index.js58
-rw-r--r--client/node_modules/json-buffer/package.json34
-rw-r--r--client/node_modules/json-buffer/test/index.js63
-rw-r--r--client/node_modules/json-stringify-safe/.npmignore1
-rw-r--r--client/node_modules/json-stringify-safe/CHANGELOG.md14
-rw-r--r--client/node_modules/json-stringify-safe/LICENSE15
-rw-r--r--client/node_modules/json-stringify-safe/Makefile35
-rw-r--r--client/node_modules/json-stringify-safe/README.md52
-rw-r--r--client/node_modules/json-stringify-safe/package.json31
-rw-r--r--client/node_modules/json-stringify-safe/stringify.js27
-rw-r--r--client/node_modules/json-stringify-safe/test/mocha.opts2
-rw-r--r--client/node_modules/json-stringify-safe/test/stringify_test.js246
-rw-r--r--client/node_modules/jsonfile/CHANGELOG.md145
-rw-r--r--client/node_modules/jsonfile/LICENSE15
-rw-r--r--client/node_modules/jsonfile/README.md168
-rw-r--r--client/node_modules/jsonfile/index.js134
-rw-r--r--client/node_modules/jsonfile/package.json37
-rw-r--r--client/node_modules/keyv/README.md429
-rw-r--r--client/node_modules/keyv/package.json57
-rw-r--r--client/node_modules/keyv/src/index.d.ts112
-rw-r--r--client/node_modules/keyv/src/index.js259
-rw-r--r--client/node_modules/lowercase-keys/index.d.ts16
-rw-r--r--client/node_modules/lowercase-keys/index.js10
-rw-r--r--client/node_modules/lowercase-keys/license9
-rw-r--r--client/node_modules/lowercase-keys/package.json38
-rw-r--r--client/node_modules/lowercase-keys/readme.md32
-rw-r--r--client/node_modules/lru-cache/LICENSE15
-rw-r--r--client/node_modules/lru-cache/README.md166
-rw-r--r--client/node_modules/lru-cache/index.js334
-rw-r--r--client/node_modules/lru-cache/package.json34
-rw-r--r--client/node_modules/matcher/index.d.ts85
-rw-r--r--client/node_modules/matcher/index.js77
-rw-r--r--client/node_modules/matcher/license9
-rw-r--r--client/node_modules/matcher/package.json54
-rw-r--r--client/node_modules/matcher/readme.md120
-rw-r--r--client/node_modules/mimic-response/index.js32
-rw-r--r--client/node_modules/mimic-response/license9
-rw-r--r--client/node_modules/mimic-response/package.json37
-rw-r--r--client/node_modules/mimic-response/readme.md54
-rw-r--r--client/node_modules/ms/index.js162
-rw-r--r--client/node_modules/ms/license.md21
-rw-r--r--client/node_modules/ms/package.json37
-rw-r--r--client/node_modules/ms/readme.md60
-rw-r--r--client/node_modules/node-fetch/LICENSE.md22
-rw-r--r--client/node_modules/node-fetch/README.md634
-rw-r--r--client/node_modules/node-fetch/browser.js25
-rw-r--r--client/node_modules/node-fetch/lib/index.es.js1777
-rw-r--r--client/node_modules/node-fetch/lib/index.js1787
-rw-r--r--client/node_modules/node-fetch/lib/index.mjs1775
-rw-r--r--client/node_modules/node-fetch/package.json89
-rw-r--r--client/node_modules/normalize-url/index.d.ts267
-rw-r--r--client/node_modules/normalize-url/index.js216
-rw-r--r--client/node_modules/normalize-url/license9
-rw-r--r--client/node_modules/normalize-url/package.json50
-rw-r--r--client/node_modules/normalize-url/readme.md286
-rw-r--r--client/node_modules/object-keys/.editorconfig13
-rw-r--r--client/node_modules/object-keys/.eslintrc17
-rw-r--r--client/node_modules/object-keys/.travis.yml277
-rw-r--r--client/node_modules/object-keys/CHANGELOG.md232
-rw-r--r--client/node_modules/object-keys/LICENSE21
-rw-r--r--client/node_modules/object-keys/README.md76
-rw-r--r--client/node_modules/object-keys/implementation.js122
-rw-r--r--client/node_modules/object-keys/index.js32
-rw-r--r--client/node_modules/object-keys/isArguments.js17
-rw-r--r--client/node_modules/object-keys/package.json88
-rw-r--r--client/node_modules/object-keys/test/index.js5
-rw-r--r--client/node_modules/once/LICENSE15
-rw-r--r--client/node_modules/once/README.md79
-rw-r--r--client/node_modules/once/once.js42
-rw-r--r--client/node_modules/once/package.json33
-rw-r--r--client/node_modules/p-cancelable/index.d.ts176
-rw-r--r--client/node_modules/p-cancelable/index.js111
-rw-r--r--client/node_modules/p-cancelable/license9
-rw-r--r--client/node_modules/p-cancelable/package.json49
-rw-r--r--client/node_modules/p-cancelable/readme.md153
-rw-r--r--client/node_modules/pend/LICENSE23
-rw-r--r--client/node_modules/pend/README.md41
-rw-r--r--client/node_modules/pend/index.js55
-rw-r--r--client/node_modules/pend/package.json18
-rw-r--r--client/node_modules/pend/test.js137
-rw-r--r--client/node_modules/progress/CHANGELOG.md115
-rw-r--r--client/node_modules/progress/LICENSE22
-rw-r--r--client/node_modules/progress/Makefile8
-rw-r--r--client/node_modules/progress/Readme.md146
-rw-r--r--client/node_modules/progress/index.js1
-rw-r--r--client/node_modules/progress/lib/node-progress.js236
-rw-r--r--client/node_modules/progress/package.json26
-rw-r--r--client/node_modules/pump/.travis.yml5
-rw-r--r--client/node_modules/pump/LICENSE21
-rw-r--r--client/node_modules/pump/README.md65
-rw-r--r--client/node_modules/pump/index.js82
-rw-r--r--client/node_modules/pump/package.json24
-rw-r--r--client/node_modules/pump/test-browser.js66
-rw-r--r--client/node_modules/pump/test-node.js53
-rw-r--r--client/node_modules/quick-lru/index.d.ts97
-rw-r--r--client/node_modules/quick-lru/index.js123
-rw-r--r--client/node_modules/quick-lru/license9
-rw-r--r--client/node_modules/quick-lru/package.json43
-rw-r--r--client/node_modules/quick-lru/readme.md111
-rw-r--r--client/node_modules/resolve-alpn/LICENSE22
-rw-r--r--client/node_modules/resolve-alpn/README.md60
-rw-r--r--client/node_modules/resolve-alpn/index.js43
-rw-r--r--client/node_modules/resolve-alpn/package.json34
-rw-r--r--client/node_modules/responselike/LICENSE19
-rw-r--r--client/node_modules/responselike/README.md77
-rw-r--r--client/node_modules/responselike/package.json39
-rw-r--r--client/node_modules/responselike/src/index.js34
-rw-r--r--client/node_modules/roarr/LICENSE24
-rw-r--r--client/node_modules/roarr/README.md689
-rw-r--r--client/node_modules/roarr/dist/constants.js16
-rw-r--r--client/node_modules/roarr/dist/constants.js.flow10
-rw-r--r--client/node_modules/roarr/dist/constants.js.map1
-rw-r--r--client/node_modules/roarr/dist/factories/createLogger.js192
-rw-r--r--client/node_modules/roarr/dist/factories/createLogger.js.flow197
-rw-r--r--client/node_modules/roarr/dist/factories/createLogger.js.map1
-rw-r--r--client/node_modules/roarr/dist/factories/createMockLogger.js44
-rw-r--r--client/node_modules/roarr/dist/factories/createMockLogger.js.flow46
-rw-r--r--client/node_modules/roarr/dist/factories/createMockLogger.js.map1
-rw-r--r--client/node_modules/roarr/dist/factories/createNodeWriter.js25
-rw-r--r--client/node_modules/roarr/dist/factories/createNodeWriter.js.flow22
-rw-r--r--client/node_modules/roarr/dist/factories/createNodeWriter.js.map1
-rw-r--r--client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js53
-rw-r--r--client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.flow43
-rw-r--r--client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.map1
-rw-r--r--client/node_modules/roarr/dist/factories/index.js32
-rw-r--r--client/node_modules/roarr/dist/factories/index.js.flow11
-rw-r--r--client/node_modules/roarr/dist/factories/index.js.map1
-rw-r--r--client/node_modules/roarr/dist/log.js42
-rw-r--r--client/node_modules/roarr/dist/log.js.flow47
-rw-r--r--client/node_modules/roarr/dist/log.js.map1
-rw-r--r--client/node_modules/roarr/dist/types.js2
-rw-r--r--client/node_modules/roarr/dist/types.js.flow81
-rw-r--r--client/node_modules/roarr/dist/types.js.map1
-rw-r--r--client/node_modules/roarr/package.json93
-rw-r--r--client/node_modules/semver-compare/.travis.yml6
-rw-r--r--client/node_modules/semver-compare/LICENSE18
-rw-r--r--client/node_modules/semver-compare/example/cmp.js13
-rw-r--r--client/node_modules/semver-compare/example/lex.js12
-rw-r--r--client/node_modules/semver-compare/index.js13
-rw-r--r--client/node_modules/semver-compare/package.json31
-rw-r--r--client/node_modules/semver-compare/readme.markdown77
-rw-r--r--client/node_modules/semver-compare/test/cmp.js29
-rw-r--r--client/node_modules/semver/LICENSE15
-rw-r--r--client/node_modules/semver/README.md443
-rwxr-xr-xclient/node_modules/semver/bin/semver.js174
-rw-r--r--client/node_modules/semver/package.json38
-rw-r--r--client/node_modules/semver/range.bnf16
-rw-r--r--client/node_modules/semver/semver.js1643
-rw-r--r--client/node_modules/serialize-error/index.d.ts58
-rw-r--r--client/node_modules/serialize-error/index.js101
-rw-r--r--client/node_modules/serialize-error/license9
-rw-r--r--client/node_modules/serialize-error/package.json41
-rw-r--r--client/node_modules/serialize-error/readme.md55
-rw-r--r--client/node_modules/sprintf-js/CONTRIBUTORS.md26
-rw-r--r--client/node_modules/sprintf-js/LICENSE24
-rw-r--r--client/node_modules/sprintf-js/README.md143
-rw-r--r--client/node_modules/sprintf-js/dist/.gitattributes4
-rw-r--r--client/node_modules/sprintf-js/dist/angular-sprintf.min.js3
-rw-r--r--client/node_modules/sprintf-js/dist/angular-sprintf.min.js.map1
-rw-r--r--client/node_modules/sprintf-js/dist/sprintf.min.js3
-rw-r--r--client/node_modules/sprintf-js/dist/sprintf.min.js.map1
-rw-r--r--client/node_modules/sprintf-js/package.json35
-rw-r--r--client/node_modules/sprintf-js/src/angular-sprintf.js24
-rw-r--r--client/node_modules/sprintf-js/src/sprintf.js231
-rw-r--r--client/node_modules/sumchecker/.github/FUNDING.yml2
-rw-r--r--client/node_modules/sumchecker/.github/workflows/ci.yml47
-rw-r--r--client/node_modules/sumchecker/LICENSE202
-rw-r--r--client/node_modules/sumchecker/NEWS.md77
-rw-r--r--client/node_modules/sumchecker/README.md92
-rw-r--r--client/node_modules/sumchecker/index.d.ts51
-rw-r--r--client/node_modules/sumchecker/index.js155
-rw-r--r--client/node_modules/sumchecker/index.test-d.ts31
-rw-r--r--client/node_modules/sumchecker/package.json79
-rw-r--r--client/node_modules/sumchecker/yarn.lock4756
-rw-r--r--client/node_modules/tldts-core/LICENSE13
-rw-r--r--client/node_modules/tldts-core/README.md3
-rw-r--r--client/node_modules/tldts-core/dist/cjs/index.js561
-rw-r--r--client/node_modules/tldts-core/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js15
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/domain.js83
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/domain.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js149
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/factory.js105
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/factory.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/is-ip.js72
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/is-ip.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/is-valid.js69
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/is-valid.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js69
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js3
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/options.js23
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/options.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/subdomain.js14
-rw-r--r--client/node_modules/tldts-core/dist/cjs/src/subdomain.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/tldts-core/dist/es6/index.js4
-rw-r--r--client/node_modules/tldts-core/dist/es6/index.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js12
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/domain.js80
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/domain.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/extract-hostname.js146
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/factory.js99
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/factory.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/is-ip.js69
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/is-ip.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/is-valid.js66
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/is-valid.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js66
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/lookup/interface.js2
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/options.js19
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/options.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/subdomain.js11
-rw-r--r--client/node_modules/tldts-core/dist/es6/src/subdomain.js.map1
-rw-r--r--client/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo1
-rw-r--r--client/node_modules/tldts-core/dist/types/index.d.ts4
-rw-r--r--client/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts6
-rw-r--r--client/node_modules/tldts-core/dist/types/src/domain.d.ts5
-rw-r--r--client/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts5
-rw-r--r--client/node_modules/tldts-core/dist/types/src/factory.d.ts28
-rw-r--r--client/node_modules/tldts-core/dist/types/src/is-ip.d.ts6
-rw-r--r--client/node_modules/tldts-core/dist/types/src/is-valid.d.ts15
-rw-r--r--client/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts2
-rw-r--r--client/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts9
-rw-r--r--client/node_modules/tldts-core/dist/types/src/options.d.ts10
-rw-r--r--client/node_modules/tldts-core/dist/types/src/subdomain.d.ts4
-rw-r--r--client/node_modules/tldts-core/index.ts10
-rw-r--r--client/node_modules/tldts-core/package.json68
-rw-r--r--client/node_modules/tldts-core/src/domain-without-suffix.ts14
-rw-r--r--client/node_modules/tldts-core/src/domain.ts100
-rw-r--r--client/node_modules/tldts-core/src/extract-hostname.ts170
-rw-r--r--client/node_modules/tldts-core/src/factory.ts160
-rw-r--r--client/node_modules/tldts-core/src/is-ip.ts87
-rw-r--r--client/node_modules/tldts-core/src/is-valid.ts79
-rw-r--r--client/node_modules/tldts-core/src/lookup/fast-path.ts80
-rw-r--r--client/node_modules/tldts-core/src/lookup/interface.ts10
-rw-r--r--client/node_modules/tldts-core/src/options.ts39
-rw-r--r--client/node_modules/tldts-core/src/subdomain.ts11
-rw-r--r--client/node_modules/tldts-experimental/LICENSE13
-rw-r--r--client/node_modules/tldts-experimental/README.md26
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/index.js808
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/index.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js5
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js217
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/cjs/tsconfig.tsbuildinfo1
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/index.js33
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/index.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js3
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js214
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/es6/tsconfig.bundle.tsbuildinfo1
-rw-r--r--client/node_modules/tldts-experimental/dist/index.cjs.min.js2
-rw-r--r--client/node_modules/tldts-experimental/dist/index.cjs.min.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/index.esm.min.js2
-rw-r--r--client/node_modules/tldts-experimental/dist/index.esm.min.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/index.umd.min.js2
-rw-r--r--client/node_modules/tldts-experimental/dist/index.umd.min.js.map1
-rw-r--r--client/node_modules/tldts-experimental/dist/types/index.d.ts7
-rw-r--r--client/node_modules/tldts-experimental/dist/types/src/data/hashes.d.ts2
-rw-r--r--client/node_modules/tldts-experimental/dist/types/src/packed-hashes.d.ts8
-rw-r--r--client/node_modules/tldts-experimental/index.ts62
-rw-r--r--client/node_modules/tldts-experimental/package.json88
-rw-r--r--client/node_modules/tldts-experimental/src/data/hashes.ts3
-rw-r--r--client/node_modules/tldts-experimental/src/packed-hashes.ts278
-rw-r--r--client/node_modules/tr46/.npmignore4
-rw-r--r--client/node_modules/tr46/index.js193
-rw-r--r--client/node_modules/tr46/lib/.gitkeep0
-rw-r--r--client/node_modules/tr46/lib/mappingTable.json1
-rw-r--r--client/node_modules/tr46/package.json31
-rw-r--r--client/node_modules/type-fest/index.d.ts29
-rw-r--r--client/node_modules/type-fest/license9
-rw-r--r--client/node_modules/type-fest/package.json45
-rw-r--r--client/node_modules/type-fest/readme.md642
-rw-r--r--client/node_modules/type-fest/source/async-return-type.d.ts23
-rw-r--r--client/node_modules/type-fest/source/basic.d.ts67
-rw-r--r--client/node_modules/type-fest/source/conditional-except.d.ts43
-rw-r--r--client/node_modules/type-fest/source/conditional-keys.d.ts43
-rw-r--r--client/node_modules/type-fest/source/conditional-pick.d.ts42
-rw-r--r--client/node_modules/type-fest/source/except.d.ts22
-rw-r--r--client/node_modules/type-fest/source/literal-union.d.ts33
-rw-r--r--client/node_modules/type-fest/source/merge-exclusive.d.ts39
-rw-r--r--client/node_modules/type-fest/source/merge.d.ts22
-rw-r--r--client/node_modules/type-fest/source/mutable.d.ts22
-rw-r--r--client/node_modules/type-fest/source/opaque.d.ts65
-rw-r--r--client/node_modules/type-fest/source/package-json.d.ts585
-rw-r--r--client/node_modules/type-fest/source/partial-deep.d.ts72
-rw-r--r--client/node_modules/type-fest/source/promisable.d.ts23
-rw-r--r--client/node_modules/type-fest/source/promise-value.d.ts20
-rw-r--r--client/node_modules/type-fest/source/readonly-deep.d.ts59
-rw-r--r--client/node_modules/type-fest/source/require-at-least-one.d.ts32
-rw-r--r--client/node_modules/type-fest/source/require-exactly-one.d.ts35
-rw-r--r--client/node_modules/type-fest/source/set-optional.d.ts34
-rw-r--r--client/node_modules/type-fest/source/set-required.d.ts34
-rw-r--r--client/node_modules/type-fest/source/stringified.d.ts21
-rw-r--r--client/node_modules/type-fest/source/tsconfig-json.d.ts872
-rw-r--r--client/node_modules/type-fest/source/union-to-intersection.d.ts58
-rw-r--r--client/node_modules/type-fest/source/value-of.d.ts40
-rw-r--r--client/node_modules/undici-types/README.md6
-rw-r--r--client/node_modules/undici-types/agent.d.ts31
-rw-r--r--client/node_modules/undici-types/api.d.ts43
-rw-r--r--client/node_modules/undici-types/balanced-pool.d.ts18
-rw-r--r--client/node_modules/undici-types/cache.d.ts36
-rw-r--r--client/node_modules/undici-types/client.d.ts97
-rw-r--r--client/node_modules/undici-types/connector.d.ts34
-rw-r--r--client/node_modules/undici-types/content-type.d.ts21
-rw-r--r--client/node_modules/undici-types/cookies.d.ts28
-rw-r--r--client/node_modules/undici-types/diagnostics-channel.d.ts67
-rw-r--r--client/node_modules/undici-types/dispatcher.d.ts241
-rw-r--r--client/node_modules/undici-types/errors.d.ts128
-rw-r--r--client/node_modules/undici-types/fetch.d.ts209
-rw-r--r--client/node_modules/undici-types/file.d.ts39
-rw-r--r--client/node_modules/undici-types/filereader.d.ts54
-rw-r--r--client/node_modules/undici-types/formdata.d.ts108
-rw-r--r--client/node_modules/undici-types/global-dispatcher.d.ts9
-rw-r--r--client/node_modules/undici-types/global-origin.d.ts7
-rw-r--r--client/node_modules/undici-types/handlers.d.ts9
-rw-r--r--client/node_modules/undici-types/header.d.ts4
-rw-r--r--client/node_modules/undici-types/index.d.ts63
-rw-r--r--client/node_modules/undici-types/interceptors.d.ts5
-rw-r--r--client/node_modules/undici-types/mock-agent.d.ts50
-rw-r--r--client/node_modules/undici-types/mock-client.d.ts25
-rw-r--r--client/node_modules/undici-types/mock-errors.d.ts12
-rw-r--r--client/node_modules/undici-types/mock-interceptor.d.ts93
-rw-r--r--client/node_modules/undici-types/mock-pool.d.ts25
-rw-r--r--client/node_modules/undici-types/package.json55
-rw-r--r--client/node_modules/undici-types/patch.d.ts71
-rw-r--r--client/node_modules/undici-types/pool-stats.d.ts19
-rw-r--r--client/node_modules/undici-types/pool.d.ts28
-rw-r--r--client/node_modules/undici-types/proxy-agent.d.ts30
-rw-r--r--client/node_modules/undici-types/readable.d.ts61
-rw-r--r--client/node_modules/undici-types/webidl.d.ts220
-rw-r--r--client/node_modules/undici-types/websocket.d.ts131
-rw-r--r--client/node_modules/universalify/LICENSE20
-rw-r--r--client/node_modules/universalify/README.md76
-rw-r--r--client/node_modules/universalify/index.js25
-rw-r--r--client/node_modules/universalify/package.json34
-rw-r--r--client/node_modules/webidl-conversions/LICENSE.md12
-rw-r--r--client/node_modules/webidl-conversions/README.md53
-rw-r--r--client/node_modules/webidl-conversions/lib/index.js189
-rw-r--r--client/node_modules/webidl-conversions/package.json23
-rw-r--r--client/node_modules/whatwg-url/LICENSE.txt21
-rw-r--r--client/node_modules/whatwg-url/README.md67
-rw-r--r--client/node_modules/whatwg-url/lib/URL-impl.js200
-rw-r--r--client/node_modules/whatwg-url/lib/URL.js196
-rw-r--r--client/node_modules/whatwg-url/lib/public-api.js11
-rw-r--r--client/node_modules/whatwg-url/lib/url-state-machine.js1297
-rw-r--r--client/node_modules/whatwg-url/lib/utils.js20
-rw-r--r--client/node_modules/whatwg-url/package.json32
-rw-r--r--client/node_modules/wrappy/LICENSE15
-rw-r--r--client/node_modules/wrappy/README.md36
-rw-r--r--client/node_modules/wrappy/package.json29
-rw-r--r--client/node_modules/wrappy/wrappy.js33
-rw-r--r--client/node_modules/yallist/LICENSE15
-rw-r--r--client/node_modules/yallist/README.md204
-rw-r--r--client/node_modules/yallist/iterator.js8
-rw-r--r--client/node_modules/yallist/package.json29
-rw-r--r--client/node_modules/yallist/yallist.js426
-rw-r--r--client/node_modules/yauzl/LICENSE21
-rw-r--r--client/node_modules/yauzl/README.md658
-rw-r--r--client/node_modules/yauzl/index.js796
-rw-r--r--client/node_modules/yauzl/package.json40
-rw-r--r--client/package-lock.json1042
-rw-r--r--client/package.json6
-rw-r--r--client/secure-no.svg1
-rw-r--r--client/secure-ok.svg1
-rw-r--r--client/secure-sd.svg1
-rw-r--r--client/secure-wh.svg1
1509 files changed, 191401 insertions, 100 deletions
diff --git a/client/apps/home.html b/client/apps/home.html
deleted file mode 100644
index e058937..0000000
--- a/client/apps/home.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>Home</title>
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
- <link rel="icon" href="../icons/home.svg">
- <style>
- * {
- -webkit-user-drag: none;
- user-select: none;
- }
- </style>
-</head>
-<body>
- <br>
- <div class="container">
- <h1>Home</h1>
- <p>Select an application.</p>
-
- <div class="list-group">
- <a class="list-group-item list-group-item-action" href="https://school.equestria.dev/">
- <img style="width: 24px; height: 24px;" src="../icons/chat.svg" alt="">
- <span style="vertical-align: middle;">Chat</span>
- </a>
- <a class="list-group-item list-group-item-action" href="https://canvas.apps.chrome/">
- <img style="width: 24px; height: 24px;" src="../icons/canvas.svg" alt="">
- <span style="vertical-align: middle;">Canvas</span>
- </a>
- </div>
-
- <div class="list-group" style="margin-top: 10px;">
- <a class="list-group-item list-group-item-action" href="https://google.com/">
- <img style="width: 24px; height: 24px;" src="https://www.google.com/images/branding/googleg/1x/googleg_standard_color_128dp.png" alt="">
- <span style="vertical-align: middle;">Google</span>
- </a>
- <a class="list-group-item list-group-item-action" href="https://chat.openai.com/">
- <img style="width: 24px; height: 24px;" src="https://cdn.oaistatic.com/_next/static/media/favicon-32x32.be48395e.png" alt="">
- <span style="vertical-align: middle;">ChatGPT</span>
- </a>
- <a class="list-group-item list-group-item-action" href="https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx">
- <img style="width: 24px; height: 24px;" src="https://r.bing.com/rp/SOP97zQpFD4pG6teqCTC-c4LEgE.svg" alt="">
- <span style="vertical-align: middle;">Bing AI</span>
- </a>
- </div>
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/client/icons/back.svg b/client/icons/back.svg
new file mode 100644
index 0000000..22c19e6
--- /dev/null
+++ b/client/icons/back.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M10.295 19.716a1 1 0 0 0 1.404-1.425l-5.37-5.29h13.67a1 1 0 1 0 0-2H6.336L11.7 5.714a1 1 0 0 0-1.404-1.424l-6.924 6.822a1.25 1.25 0 0 0 0 1.78l6.924 6.823Z" fill="#000000"/></svg> \ No newline at end of file
diff --git a/client/icons/forward.svg b/client/icons/forward.svg
new file mode 100644
index 0000000..65b7014
--- /dev/null
+++ b/client/icons/forward.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M13.704 4.284a1 1 0 1 0-1.403 1.424L17.67 11H4a1 1 0 1 0 0 2h13.665L12.3 18.285a1 1 0 0 0 1.403 1.424l6.925-6.822a1.25 1.25 0 0 0 0-1.78l-6.925-6.823Z" fill="#000000"/></svg> \ No newline at end of file
diff --git a/client/icons/reload.svg b/client/icons/reload.svg
new file mode 100644
index 0000000..5247905
--- /dev/null
+++ b/client/icons/reload.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 4.75a7.25 7.25 0 1 0 7.201 6.406c-.068-.588.358-1.156.95-1.156.515 0 .968.358 1.03.87a9.25 9.25 0 1 1-3.432-6.116V4.25a1 1 0 1 1 2.001 0v2.698l.034.052h-.034v.25a1 1 0 0 1-1 1h-3a1 1 0 1 1 0-2h.666A7.219 7.219 0 0 0 12 4.75Z" fill="#000000"/></svg> \ No newline at end of file
diff --git a/client/icons/stop.svg b/client/icons/stop.svg
new file mode 100644
index 0000000..c4b81e1
--- /dev/null
+++ b/client/icons/stop.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4.21 4.387.083-.094a1 1 0 0 1 1.32-.083l.094.083L12 10.585l6.293-6.292a1 1 0 1 1 1.414 1.414L13.415 12l6.292 6.293a1 1 0 0 1 .083 1.32l-.083.094a1 1 0 0 1-1.32.083l-.094-.083L12 13.415l-6.293 6.292a1 1 0 0 1-1.414-1.414L10.585 12 4.293 5.707a1 1 0 0 1-.083-1.32l.083-.094-.083.094Z" fill="#000000"/></svg> \ No newline at end of file
diff --git a/client/index.html b/client/index.html
index d156d3b..1ebd8e8 100644
--- a/client/index.html
+++ b/client/index.html
@@ -11,21 +11,41 @@
user-select: none;
}
- webview {
+ .wv-container {
display: none;
}
- webview.open {
+ .nav-item.pinned .tab-close, .nav-item.pinned .tab-text {
+ display: none !important;
+ }
+
+ .wv-container.open {
+ height: 100%;
+ width: 100%;
+ display: block;
+ }
+
+ .wv-container.open webview {
display: flex;
width: 100%;
+ height: calc(100% - 48px);
+ }
+
+ .wv-container.no-bar.open webview {
+ height: 100%;
+ }
+
+ .wv-container.no-bar .bar {
+ display: none !important;
}
html, body, #windows {
- height: calc(100% - 15px);
+ height: calc(100% - 14px);
}
.nav-item, .nav-item * {
color: black;
+ -webkit-app-region: no-drag;
}
.nav-item:not(.active):hover {
@@ -39,7 +59,7 @@
</style>
</head>
<body>
- <ul id="tabs" class="nav nav-tabs" style="background-color: #eee;"></ul>
+ <ul id="tabs" class="nav nav-tabs" style="background-color: #eee; -webkit-app-region: drag;"></ul>
<script>
if (process.platform === "darwin") {
document.getElementById("tabs").style.paddingLeft = "86px";
@@ -65,8 +85,8 @@
}
document.getElementById("tabs").innerHTML = window.tabs.map((i, j) => `
- <li class="nav-item">
- <a class="nav-link ${j === window.activeTab ? 'active' : ''}" aria-current="page" href="#" onclick="switchToTab(${j});"><img style="width: 24px; height: 24px;" alt="" src="${i.icon}"><span style="vertical-align: middle; margin-left: 5px; width: 171px; display: inline-block; white-space: nowrap; overflow: hidden !important; text-overflow: ellipsis">${i.name}</span><span style="display: inline-block;" onclick="event.preventDefault(); closeTab(${j});"><img alt="" src="./icons/dismiss.svg"></span></a>
+ <li class="nav-item ${i.chat ? 'pinned' : ''}">
+ <a class="nav-link ${j === window.activeTab ? 'active' : ''}" aria-current="page" href="#"><img onclick="switchToTab(${j});" style="width: 24px; height: 24px;" alt="" src="${i.icon}"><span class="tab-text" onclick="switchToTab(${j});" style="vertical-align: middle; margin-left: 5px; width: 171px; display: inline-block; white-space: nowrap; overflow: hidden !important; text-overflow: ellipsis">${i.name}</span><span class="tab-close" style="display: inline-block;" onclick="event.preventDefault(); closeTab(${j});"><img alt="" src="./icons/dismiss.svg"></span></a>
</li>
`).join("") + `<li class="nav-item">
<a class="nav-link" aria-current="page" href="#" onclick="openHome();"><img alt="" src="./icons/new.svg"></a>
@@ -76,24 +96,72 @@
function reloadWebview(force) {
if (force) {
- tabs[activeTab].webview.reloadIgnoringCache();
+ tabs[activeTab].webview.children[1].reloadIgnoringCache();
} else {
- tabs[activeTab].webview.reload();
+ tabs[activeTab].webview.children[1].reload();
+ }
+ }
+
+ function loadURL(id) {
+ let query = document.getElementById("wv-item-" + id + "-bar-address").value;
+
+ try {
+ new URL(query);
+ document.getElementById("wv-item-" + id + "-inner").loadURL(query);
+ } catch (e) {
+ document.getElementById("wv-item-" + id + "-inner").loadURL("https://duckduckgo.com/?q=" + encodeURIComponent(query));
+ }
+ }
+
+ function resetURL(id) {
+ if (document.getElementById("wv-item-" + id + "-inner").getURL() === "https://start.duckduckgo.com/") {
+ document.getElementById("wv-item-" + id + "-bar-address").value = "";
+ } else {
+ document.getElementById("wv-item-" + id + "-bar-address").value = document.getElementById("wv-item-" + id + "-inner").getURL();
}
}
function openTab(url) {
+ let container = document.createElement("div");
let webview = document.createElement("webview");
let tab = {
icon: "./icons/placeholder.svg",
name: "Unnamed tab",
url,
- webview,
- id: crypto.randomUUID()
+ webview: container,
+ id: crypto.randomUUID(),
+ chat: url.includes("school.equestria.dev")
+ }
+
+ if (url.includes("school.equestria.dev")) {
+ container.classList.add("no-bar");
}
+ let bar = document.createElement("div");
+ bar.id = "wv-item-" + tab.id + "-bar";
+ bar.style.height = "47px";
+ bar.style.borderBottom = "1px solid rgba(0, 0, 0, .1)";
+ bar.style.paddingLeft = bar.style.paddingRight = "3vw";
+ bar.style.display = "grid";
+ bar.style.gridTemplateColumns = "1fr max-content 1fr";
+ bar.classList.add("bar");
+ bar.innerHTML = `
+ <div>
+ <a><img id="wv-item-${tab.id}-bar-back" src="./icons/back.svg" alt="Back" title="Back" style="width: 24px; height: 24px; margin: 12px; cursor: pointer;" onclick="goBack('${tab.id}');"></a>
+ <a><img id="wv-item-${tab.id}-bar-forward" src="./icons/forward.svg" alt="Forward" title="Forward" style="width: 24px; height: 24px; margin: 12px; cursor: pointer;" onclick="goForward('${tab.id}');"></a>
+ <a><img id="wv-item-${tab.id}-bar-reload" src="./icons/reload.svg" alt="Refresh" title="Refresh" style="width: 24px; height: 24px; margin: 12px; cursor: pointer;" onclick="reloadTab('${tab.id}');"></a>
+ </div>
+ <div>
+ <input onchange="resetURL('${tab.id}');" id="wv-item-${tab.id}-bar-address" type="text" class="form-control" style="margin-top: 4px; width: 100vw; max-width: 500px;" placeholder="Search with DuckDuckGo or enter address">
+ </div>
+ <div style="text-align: right;"></div>
+ `.replaceAll("\n", "");
+ container.append(bar);
+
webview.src = url;
- webview.id = "wv-item-" + tab.id;
+ webview.id = "wv-item-" + tab.id + "-inner";
+ container.id = "wv-item-" + tab.id;
+ container.classList.add("wv-container");
webview.addEventListener('page-title-updated', (e) => {
if (webview.getURL().startsWith("https://school.equestria.dev/")) {
tab.name = "Chat";
@@ -116,8 +184,32 @@
refreshTabBar();
});
+ webview.addEventListener('will-navigate', (e) => {
+ document.getElementById("wv-item-" + tab.id + "-bar-address").value = e.url;
+ document.getElementById("wv-item-" + tab.id + "-bar-reload").src = "./icons/stop.svg";
+ });
+ webview.addEventListener('did-navigate', () => {
+ document.getElementById("wv-item-" + tab.id + "-bar-reload").src = "./icons/reload.svg";
+ resetURL(tab.id);
+ });
+ webview.addEventListener('did-navigate-in-page', () => {
+ resetURL(tab.id);
+ });
+ webview.addEventListener('did-finish-load', () => {
+ resetURL(tab.id);
+ });
+ webview.addEventListener('did-fail-load', () => {
+ resetURL(tab.id);
+ });
- document.getElementById("windows").append(webview);
+ container.append(webview);
+ document.getElementById("windows").append(container);
+
+ document.getElementById('wv-item-' + tab.id + '-bar-address').onkeydown = (e) => {
+ if (e.code === "Return" || e.code === "Enter") {
+ loadURL(tab.id);
+ }
+ }
tabs.push(tab);
@@ -130,8 +222,24 @@
refreshTabBar();
}
+ function reloadTab(id) {
+ if (document.getElementById("wv-item-" + id + "-bar-reload").src.endsWith("/stop.svg")) {
+ document.getElementById("wv-item-" + id + "-inner").stop();
+ } else {
+ document.getElementById("wv-item-" + id + "-inner").loadURL(document.getElementById("wv-item-" + id + "-inner").getURL());
+ }
+ }
+
+ function goBack(id) {
+ document.getElementById("wv-item-" + id + "-inner").goBack();
+ }
+
+ function goForward(id) {
+ document.getElementById("wv-item-" + id + "-inner").goForward();
+ }
+
function openHome() {
- openTab("file:///" + __dirname + "/apps/home.html");
+ openTab("https://start.duckduckgo.com");
}
function closeTab(id) {
@@ -182,13 +290,14 @@
}
function openDevTools() {
- if (tabs[window.activeTab].webview.isDevToolsOpened()) {
- tabs[window.activeTab].webview.closeDevTools();
+ if (tabs[window.activeTab].webview.children[1].isDevToolsOpened()) {
+ tabs[window.activeTab].webview.children[1].closeDevTools();
} else {
- tabs[window.activeTab].webview.openDevTools();
+ tabs[window.activeTab].webview.children[1].openDevTools();
}
}
+ openTab("https://school.equestria.dev");
openHome();
</script>
</body>
diff --git a/client/main.js b/client/main.js
index 076674c..a913e42 100755
--- a/client/main.js
+++ b/client/main.js
@@ -1,9 +1,18 @@
-const { app, BrowserWindow, webContents, globalShortcut, ipcMain, dialog, MenuItem, Menu, desktopCapturer, clipboard, nativeImage } = require('electron');
+const { app, BrowserWindow, webContents, globalShortcut, ipcMain, session, dialog, MenuItem, Menu, desktopCapturer, clipboard, nativeImage } = require('electron');
const path = require('path');
const os = require("os");
const {writeFileSync, existsSync, unlinkSync} = require("fs");
const fs = require("fs");
+const { ElectronBlocker } = require('@cliqz/adblocker-electron');
+const { fetch } = require('cross-fetch');
+
+ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
+ blocker.enableBlockingInSession(session.defaultSession);
+});
+
+session.defaultSession.setUserAgent(session.defaultSession.getUserAgent().replace(/(.*)( Electron\/(.*) )/gm, "$1 ") + " Chatroom/1.0.0")
+
let localchatDataRoot = (os.platform() === "win32" ? os.homedir() + "/AppData/Roaming" : (os.platform() === "darwin" ? os.homedir() + "/Library/Application Support" : os.homedir())) + (os.platform() === "darwin" ? "/ChatroomWorkspace" : "/.chatroom-workspace");
if (!fs.existsSync(localchatDataRoot)) fs.mkdirSync(localchatDataRoot);
@@ -182,6 +191,12 @@ const createWindow = () => {
mainWindow.setMenu(menu);
Menu.setApplicationMenu(menu);
+ mainWindow.webContents.setWindowOpenHandler(() => {
+ return {
+ action: "deny"
+ }
+ });
+
windows.push(mainWindow);
if (os.platform() === "win32") mainWindow.setContentProtection(true);
@@ -197,40 +212,6 @@ const createWindow = () => {
mainWindow.once('ready-to-show', () => {
mainWindow.show();
try { loaderWindow.close(); } catch (e) {}
-
- if (process.platform === "linux") {
- setTimeout(() => {
- mainWindow.setTitle("");
-
- setTimeout(() => {
- mainWindow.setTitle("");
- mainWindow.setTitle("Chatroom");
- }, 1000);
- }, 1000);
- }
- });
-
- mainWindow.on('page-title-updated', (_, title) => {
- if (title.startsWith("Chatroom [")) {
- if (!isNaN(parseInt(title.substring(20).split("]")[0]))) {
- notifications = parseInt(title.substring(20).split("]")[0]).toString();
- }
- } else if (title.startsWith("Chatroom *")) {
- notifications = "·";
- } else {
- notifications = "";
- }
-
- if (title.substring(20).split("]")[0] === "Offline") {
- notifications = "";
- }
-
- if (os.platform() === "darwin") app.dock.setBadge(notifications);
-
- if (notifications.trim() !== "") {
- if (os.platform() === "win32") mainWindow.setOverlayIcon(nativeImage.createFromPath('./overlay.png'), "You have new messages.");
- if (os.platform() === "linux") mainWindow.focus();
- }
});
}
diff --git a/client/node_modules/.bin/electron b/client/node_modules/.bin/electron
new file mode 120000
index 0000000..946101e
--- /dev/null
+++ b/client/node_modules/.bin/electron
@@ -0,0 +1 @@
+../electron/cli.js \ No newline at end of file
diff --git a/client/node_modules/.bin/extract-zip b/client/node_modules/.bin/extract-zip
new file mode 120000
index 0000000..af9b561
--- /dev/null
+++ b/client/node_modules/.bin/extract-zip
@@ -0,0 +1 @@
+../extract-zip/cli.js \ No newline at end of file
diff --git a/client/node_modules/.bin/semver b/client/node_modules/.bin/semver
new file mode 120000
index 0000000..5aaadf4
--- /dev/null
+++ b/client/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver.js \ No newline at end of file
diff --git a/client/node_modules/.package-lock.json b/client/node_modules/.package-lock.json
new file mode 100644
index 0000000..0d3657e
--- /dev/null
+++ b/client/node_modules/.package-lock.json
@@ -0,0 +1,1036 @@
+{
+ "name": "client",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@cliqz/adblocker": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker/-/adblocker-1.26.12.tgz",
+ "integrity": "sha512-mnFxASJpHfkbBJ9/pmY2MPbOfwWQtk+MvqF044IssBmvpOe9t8miBNwl+PX+moGGIFYqRHk78TwUkZHUNkbGJg==",
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12",
+ "@cliqz/adblocker-extended-selectors": "^1.26.12",
+ "@remusao/guess-url-type": "^1.2.1",
+ "@remusao/small": "^1.2.1",
+ "@remusao/smaz": "^1.9.1",
+ "@types/chrome": "^0.0.248",
+ "@types/firefox-webext-browser": "^111.0.2",
+ "tldts-experimental": "^6.0.14"
+ }
+ },
+ "node_modules/@cliqz/adblocker-content": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-content/-/adblocker-content-1.26.12.tgz",
+ "integrity": "sha512-4LWW3kntWuTDo10u24uuk0GmTzegkw9cZ8eDBzzDvHOtRVRMUv4fuoaWCwnB6UpA1VH7iU5nCbRlXNvjnnUA2Q==",
+ "dependencies": {
+ "@cliqz/adblocker-extended-selectors": "^1.26.12"
+ }
+ },
+ "node_modules/@cliqz/adblocker-electron": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-electron/-/adblocker-electron-1.26.12.tgz",
+ "integrity": "sha512-KcteTxbOvnnNSjYobRnJmUKWitIxBvJqN9GTrHYTygJzOtm0te7/QexCP2/wIBbbD56c+9Fn0FsdDU4gZAIyWA==",
+ "dependencies": {
+ "@cliqz/adblocker": "^1.26.12",
+ "@cliqz/adblocker-electron-preload": "^1.26.12",
+ "tldts-experimental": "^6.0.14"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ }
+ },
+ "node_modules/@cliqz/adblocker-electron-preload": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.26.12.tgz",
+ "integrity": "sha512-R9ZL5d6M1qKBed9/BCmIh3+RWpoO9MnDDxeVFySfpHM9pdLkRDniZURuP2FTQ43JD2GtWopHgYmfWj3Hc46huw==",
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ }
+ },
+ "node_modules/@cliqz/adblocker-extended-selectors": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.26.12.tgz",
+ "integrity": "sha512-Sbh9Fu1FzqD0p/UExKoTKcsbGL3wZdHcn/WTe0MvFbRYAjPVzVCyUxCBwCXOQ1XPFK3D7CarXMb6NZPct7q/rg=="
+ },
+ "node_modules/@electron/get": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
+ "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ }
+ },
+ "node_modules/@remusao/guess-url-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@remusao/guess-url-type/-/guess-url-type-1.2.1.tgz",
+ "integrity": "sha512-rbOqre2jW8STjheOsOaQHLgYBaBZ9Owbdt8NO7WvNZftJlaG3y/K9oOkl8ZUpuFBisIhmBuMEW6c+YrQl5inRA=="
+ },
+ "node_modules/@remusao/small": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@remusao/small/-/small-1.2.1.tgz",
+ "integrity": "sha512-7MjoGt0TJMVw1GPKgWq6SJPws1SLsUXQRa43Umht+nkyw2jnpy3WpiLNqGdwo5rHr5Wp9B2W/Pm5RQp656UJdw=="
+ },
+ "node_modules/@remusao/smaz": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz/-/smaz-1.9.1.tgz",
+ "integrity": "sha512-e6BLuP8oaXCZ9+v46Is4ilAZ/Vq6YLgmBP204Ixgk1qTjXmqvFYG7+AS7v9nsZdGOy96r9DWGFbbDVgMxwu1rA==",
+ "dependencies": {
+ "@remusao/smaz-compress": "^1.9.1",
+ "@remusao/smaz-decompress": "^1.9.1"
+ }
+ },
+ "node_modules/@remusao/smaz-compress": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-compress/-/smaz-compress-1.9.1.tgz",
+ "integrity": "sha512-E2f48TwloQu3r6BdLOGF2aczeH7bJ/32oJGqvzT9SKur0cuUnLcZ7ZXP874E2fwmdE+cXzfC7bKzp79cDnmeyw==",
+ "dependencies": {
+ "@remusao/trie": "^1.4.1"
+ }
+ },
+ "node_modules/@remusao/smaz-decompress": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-decompress/-/smaz-decompress-1.9.1.tgz",
+ "integrity": "sha512-TfjKKprYe3n47od8auhvJ/Ikj9kQTbDTe71ynKlxslrvvUhlIV3VQSuwYuMWMbdz1fIs0H/fxCN1Z8/H3km6/A=="
+ },
+ "node_modules/@remusao/trie": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@remusao/trie/-/trie-1.4.1.tgz",
+ "integrity": "sha512-yvwa+aCyYI/UjeD39BnpMypG8N06l86wIDW1/PAc6ihBRnodIfZDwccxQN3n1t74wduzaz74m4ZMHZnB06567Q=="
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "peer": true,
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "peer": true,
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/chrome": {
+ "version": "0.0.248",
+ "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.248.tgz",
+ "integrity": "sha512-qtBzxZD1v3eWZn8XxH1i07pAhzJDHnxJBBVy7bmntXxXKxjzNXYxD41teqa5yOcX/Yy8brRFGZESEzGoINvBDg==",
+ "dependencies": {
+ "@types/filesystem": "*",
+ "@types/har-format": "*"
+ }
+ },
+ "node_modules/@types/filesystem": {
+ "version": "0.0.35",
+ "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz",
+ "integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==",
+ "dependencies": {
+ "@types/filewriter": "*"
+ }
+ },
+ "node_modules/@types/filewriter": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz",
+ "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg=="
+ },
+ "node_modules/@types/firefox-webext-browser": {
+ "version": "111.0.5",
+ "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-111.0.5.tgz",
+ "integrity": "sha512-YYE+4MeJvq7DZ+UzPD8c5uN1HJpGu4Fl6O6PEAfBJQmLzQkfTWlgMjZMJQHAmcH3rjVS5fjN+jMkkZ4ZTlKbmA=="
+ },
+ "node_modules/@types/har-format": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz",
+ "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA=="
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "peer": true
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "18.18.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz",
+ "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==",
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "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,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
+ "optional": true,
+ "peer": true
+ },
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "peer": true,
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "peer": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "peer": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
+ "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "peer": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/electron": {
+ "version": "27.1.2",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-27.1.2.tgz",
+ "integrity": "sha512-Dy6BUuGLiIJv+zfsXwr78TV2TNppi24rXF4PIIS+OjDblEKdkI9r1iM8JUd3/x3sbGUy5mdLMSPhvmu//IhkgA==",
+ "hasInstallScript": true,
+ "peer": true,
+ "dependencies": {
+ "@electron/get": "^2.0.0",
+ "@types/node": "^18.11.18",
+ "extract-zip": "^2.0.1"
+ },
+ "bin": {
+ "electron": "cli.js"
+ },
+ "engines": {
+ "node": ">= 12.20.55"
+ }
+ },
+ "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==",
+ "peer": true,
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "peer": true,
+ "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/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==",
+ "peer": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "peer": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "peer": true,
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "peer": true
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "peer": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "peer": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "peer": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "peer": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "peer": true
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "peer": true,
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.0.21",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.0.21.tgz",
+ "integrity": "sha512-Ae3+JCsuiewSntToPzJh/Gu0on8nbpGcWXGL2y3WufIQOzUhJd7Kod/vXAA8bS5uUd87thNkfz4KeIVoRftfLA=="
+ },
+ "node_modules/tldts-experimental": {
+ "version": "6.0.21",
+ "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-6.0.21.tgz",
+ "integrity": "sha512-xa7521+GxoVWJpd6mxIZCrr1AW+ZzklCilSHJuBydIWpPceNgM9/KNquycOaN0nw5uM4fPqPWNUbkQ3vOK58gw==",
+ "dependencies": {
+ "tldts-core": "^6.0.21"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "optional": true,
+ "peer": true
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/client/node_modules/@cliqz/adblocker-content/LICENSE b/client/node_modules/@cliqz/adblocker-content/LICENSE
new file mode 100644
index 0000000..11ce717
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/LICENSE
@@ -0,0 +1,375 @@
+Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0. \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/README.md b/client/node_modules/@cliqz/adblocker-content/README.md
new file mode 100644
index 0000000..6a42e75
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/README.md
@@ -0,0 +1,46 @@
+<h1 align="center">@cliqz/adblocker-content</h2>
+
+<p align="center">
+ <em>
+ Efficient
+ · Minimal
+ · JavaScript
+ · TypeScript
+ · uBlock Origin- and Easylist-compatible
+ </em>
+ <br />
+ <em>
+ <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker">Node.js</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-puppeteer">Puppeteer</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron">Electron</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-webextension">WebExtension</a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3ATests">
+ <img alt="Github Actions Build Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Tests?label=tests&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3Assets">
+ <img alt="Github Actions Assets Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Assets?label=assets&style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="npm version" src="https://img.shields.io/npm/v/@cliqz/adblocker.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/@cliqz/adblocker.svg?style=flat-square"></a>
+ <br/>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://twitter.com/cliqz">
+ <img alt="Follow Cliqz on Twitter" src="https://img.shields.io/twitter/follow/cliqz.svg?label=follow+cliqz&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker">
+ <img alt="Dependabot" src="https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/blob/master/LICENSE">
+ <img alt="License Badge" src="https://img.shields.io/github/license/cliqz-oss/adblocker?style=flat-square"></a>
+ <a href="https://lgtm.com/projects/g/cliqz-oss/adblocker?mode=list">
+ <img alt="LGTM Badge" src="https://img.shields.io/lgtm/alerts/github/cliqz-oss/adblocker?style=flat-square"></a>
+</p>
+
+---
+
+This package is part of [@cliqz/adblocker](https://github.com/cliqz-oss/adblocker).
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js b/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js
new file mode 100644
index 0000000..feca06f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).adblocker={})}(this,(function(e){"use strict";const t="cliqz-adblocker-script",s=new Set(["br","head","link","meta","script","style","s"]);function n(e){return 1===e.nodeType}function o(e){const t=new Set(["br","head","link","meta","script","style","s"]),s=new Set,n=new Set,o=new Set;for(const r of e)for(const e of[r,...r.querySelectorAll("[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)")]){if(t.has(e.nodeName.toLowerCase()))continue;const r=e.id;r&&o.add(r);const i=e.classList;if(i)for(const e of i)s.add(e);const d=e.getAttribute("href");"string"==typeof d&&n.add(d)}return{classes:Array.from(s),hrefs:Array.from(n),ids:Array.from(o)}}function r(e){return`try{${e}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`}e.DOMMonitor=class{constructor(e){this.cb=e,this.knownIds=new Set,this.knownHrefs=new Set,this.knownClasses=new Set,this.observer=null}queryAll(e){this.cb({type:"elements",elements:[e.document.documentElement]}),this.handleUpdatedNodes([e.document.documentElement])}start(e){null===this.observer&&void 0!==e.MutationObserver&&(this.observer=new e.MutationObserver((e=>{this.handleUpdatedNodes(function(e){const s=[];for(const o of e)if("attributes"===o.type)n(o.target)&&s.push(o.target);else if("childList"===o.type)for(const e of o.addedNodes)n(e)&&e.id!==t&&s.push(e);return s}(e))})),this.observer.observe(e.document.documentElement,{attributes:!0,attributeFilter:["class","id","href"],childList:!0,subtree:!0}))}stop(){null!==this.observer&&(this.observer.disconnect(),this.observer=null)}handleNewFeatures({hrefs:e,ids:t,classes:s}){const n=[],o=[],r=[];for(const e of t)!1===this.knownIds.has(e)&&(n.push(e),this.knownIds.add(e));for(const e of s)!1===this.knownClasses.has(e)&&(o.push(e),this.knownClasses.add(e));for(const t of e)!1===this.knownHrefs.has(t)&&(r.push(t),this.knownHrefs.add(t));return(0!==n.length||0!==o.length||0!==r.length)&&(this.cb({type:"features",classes:o,hrefs:r,ids:n}),!0)}handleUpdatedNodes(e){return 0!==e.length&&(this.cb({type:"elements",elements:e.filter((e=>!1===s.has(e.nodeName.toLowerCase())))}),this.handleNewFeatures(o(e)))}},e.autoRemoveScript=r,e.extractFeaturesFromDOM=o,e.injectScript=function(e,s){const n=s.createElement("script");n.type="text/javascript",n.id=t,n.async=!1,n.appendChild(s.createTextNode(r(e)));const o=s.head||s.documentElement||s;null!==o&&o.appendChild(n)}}));
+//# sourceMappingURL=adblocker.umd.min.js.map
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js.map b/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js.map
new file mode 100644
index 0000000..519c1c5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/adblocker.umd.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.umd.min.js","sources":["../adblocker.ts"],"sourcesContent":["/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport type { AST } from '@cliqz/adblocker-extended-selectors';\n\nconst SCRIPT_ID = 'cliqz-adblocker-script';\nconst IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n\nexport type Lifecycle = 'start' | 'dom-update';\n\nexport interface IBackgroundCallback {\n classes: string[];\n hrefs: string[];\n ids: string[];\n lifecycle: Lifecycle;\n}\n\nexport interface IMessageFromBackground {\n active: boolean;\n scripts: string[];\n styles: string;\n extended: {\n ast: AST;\n remove: boolean;\n attribute?: string | undefined;\n }[];\n}\n\nfunction isElement(node: Node): node is Element {\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\n return node.nodeType === 1; // Node.ELEMENT_NODE;\n}\n\nfunction getElementsFromMutations(mutations: MutationRecord[]): Element[] {\n // Accumulate all nodes which were updated in `nodes`\n const elements: Element[] = [];\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n if (isElement(mutation.target)) {\n elements.push(mutation.target);\n }\n } else if (mutation.type === 'childList') {\n for (const addedNode of mutation.addedNodes) {\n if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {\n elements.push(addedNode);\n }\n }\n }\n }\n\n return elements;\n}\n\n/**\n * WARNING: this function should be self-contained and not rely on any global\n * symbol. That constraint needs to be fulfilled because this function can\n * potentially be injected in content-script (e.g.: see PuppeteerBlocker for\n * more details).\n */\nexport function extractFeaturesFromDOM(roots: Element[]): {\n classes: string[];\n hrefs: string[];\n ids: string[];\n} {\n // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.\n const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n const classes: Set<string> = new Set();\n const hrefs: Set<string> = new Set();\n const ids: Set<string> = new Set();\n\n for (const root of roots) {\n for (const element of [\n root,\n ...root.querySelectorAll(\n '[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)',\n ),\n ]) {\n if (ignoredTags.has(element.nodeName.toLowerCase())) {\n continue;\n }\n\n // Update ids\n const id = element.id;\n if (id) {\n ids.add(id);\n }\n\n // Update classes\n const classList = element.classList;\n if (classList) {\n for (const cls of classList) {\n classes.add(cls);\n }\n }\n\n // Update href\n const href = element.getAttribute('href');\n if (typeof href === 'string') {\n hrefs.add(href);\n }\n }\n }\n\n return {\n classes: Array.from(classes),\n hrefs: Array.from(hrefs),\n ids: Array.from(ids),\n };\n}\n\nexport interface FeaturesUpdate {\n type: 'features';\n ids: string[];\n classes: string[];\n hrefs: string[];\n}\n\nexport interface ElementsUpdate {\n type: 'elements';\n elements: Element[];\n}\n\nexport type DOMUpdate = FeaturesUpdate | ElementsUpdate;\n\nexport class DOMMonitor {\n private knownIds: Set<string> = new Set();\n private knownHrefs: Set<string> = new Set();\n private knownClasses: Set<string> = new Set();\n\n private observer: MutationObserver | null = null;\n\n constructor(private readonly cb: (update: DOMUpdate) => void) {}\n\n public queryAll(window: Pick<Window, 'document'>): void {\n this.cb({ type: 'elements', elements: [window.document.documentElement] });\n this.handleUpdatedNodes([window.document.documentElement]);\n }\n\n public start(\n window: Pick<Window, 'document'> & { MutationObserver?: typeof MutationObserver },\n ): void {\n if (this.observer === null && window.MutationObserver !== undefined) {\n this.observer = new window.MutationObserver((mutations: MutationRecord[]) => {\n this.handleUpdatedNodes(getElementsFromMutations(mutations));\n });\n\n this.observer.observe(window.document.documentElement, {\n // Monitor some attributes\n attributes: true,\n attributeFilter: ['class', 'id', 'href'],\n childList: true,\n subtree: true,\n });\n }\n }\n\n public stop(): void {\n if (this.observer !== null) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n public handleNewFeatures({\n hrefs,\n ids,\n classes,\n }: {\n hrefs: string[];\n ids: string[];\n classes: string[];\n }): boolean {\n const newIds: string[] = [];\n const newClasses: string[] = [];\n const newHrefs: string[] = [];\n\n // Update ids\n for (const id of ids) {\n if (this.knownIds.has(id) === false) {\n newIds.push(id);\n this.knownIds.add(id);\n }\n }\n\n for (const cls of classes) {\n if (this.knownClasses.has(cls) === false) {\n newClasses.push(cls);\n this.knownClasses.add(cls);\n }\n }\n\n for (const href of hrefs) {\n if (this.knownHrefs.has(href) === false) {\n newHrefs.push(href);\n this.knownHrefs.add(href);\n }\n }\n\n if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {\n this.cb({\n type: 'features',\n classes: newClasses,\n hrefs: newHrefs,\n ids: newIds,\n });\n return true;\n }\n\n return false;\n }\n\n private handleUpdatedNodes(elements: Element[]): boolean {\n if (elements.length !== 0) {\n this.cb({\n type: 'elements',\n elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),\n });\n return this.handleNewFeatures(extractFeaturesFromDOM(elements));\n }\n\n return false;\n }\n}\n\n/**\n * Wrap a self-executing script into a block of custom logic to remove the\n * script tag once execution is terminated. This can be useful to not leave\n * traces in the DOM after injections.\n */\nexport function autoRemoveScript(script: string): string {\n // Minified using 'terser'\n return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;\n // Original:\n //\n // try {\n // ${script}\n // } catch (ex) { }\n //\n // (function() {\n // var currentScript = document.currentScript;\n // var parent = currentScript && currentScript.parentNode;\n //\n // if (parent) {\n // parent.removeChild(currentScript);\n // }\n // })();\n}\n\nexport function injectScript(s: string, doc: Document): void {\n const script = doc.createElement('script');\n script.type = 'text/javascript';\n script.id = SCRIPT_ID;\n script.async = false;\n script.appendChild(doc.createTextNode(autoRemoveScript(s)));\n\n // Insert node\n const parent = doc.head || doc.documentElement || doc;\n if (parent !== null) {\n parent.appendChild(script);\n }\n}\n"],"names":["SCRIPT_ID","IGNORED_TAGS","Set","isElement","node","nodeType","extractFeaturesFromDOM","roots","ignoredTags","classes","hrefs","ids","root","element","querySelectorAll","has","nodeName","toLowerCase","id","add","classList","cls","href","getAttribute","Array","from","autoRemoveScript","script","constructor","cb","this","knownIds","knownHrefs","knownClasses","observer","queryAll","window","type","elements","document","documentElement","handleUpdatedNodes","start","undefined","MutationObserver","mutations","mutation","target","push","addedNode","addedNodes","getElementsFromMutations","observe","attributes","attributeFilter","childList","subtree","stop","disconnect","handleNewFeatures","newIds","newClasses","newHrefs","length","filter","e","s","doc","createElement","async","appendChild","createTextNode","parent","head"],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js b/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js
new file mode 100644
index 0000000..0277ef1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js
@@ -0,0 +1,197 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.injectScript = exports.autoRemoveScript = exports.DOMMonitor = exports.extractFeaturesFromDOM = void 0;
+const SCRIPT_ID = 'cliqz-adblocker-script';
+const IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+function isElement(node) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants
+ return node.nodeType === 1; // Node.ELEMENT_NODE;
+}
+function getElementsFromMutations(mutations) {
+ // Accumulate all nodes which were updated in `nodes`
+ const elements = [];
+ for (const mutation of mutations) {
+ if (mutation.type === 'attributes') {
+ if (isElement(mutation.target)) {
+ elements.push(mutation.target);
+ }
+ }
+ else if (mutation.type === 'childList') {
+ for (const addedNode of mutation.addedNodes) {
+ if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {
+ elements.push(addedNode);
+ }
+ }
+ }
+ }
+ return elements;
+}
+/**
+ * WARNING: this function should be self-contained and not rely on any global
+ * symbol. That constraint needs to be fulfilled because this function can
+ * potentially be injected in content-script (e.g.: see PuppeteerBlocker for
+ * more details).
+ */
+function extractFeaturesFromDOM(roots) {
+ // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.
+ const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+ const classes = new Set();
+ const hrefs = new Set();
+ const ids = new Set();
+ for (const root of roots) {
+ for (const element of [
+ root,
+ ...root.querySelectorAll('[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)'),
+ ]) {
+ if (ignoredTags.has(element.nodeName.toLowerCase())) {
+ continue;
+ }
+ // Update ids
+ const id = element.id;
+ if (id) {
+ ids.add(id);
+ }
+ // Update classes
+ const classList = element.classList;
+ if (classList) {
+ for (const cls of classList) {
+ classes.add(cls);
+ }
+ }
+ // Update href
+ const href = element.getAttribute('href');
+ if (typeof href === 'string') {
+ hrefs.add(href);
+ }
+ }
+ }
+ return {
+ classes: Array.from(classes),
+ hrefs: Array.from(hrefs),
+ ids: Array.from(ids),
+ };
+}
+exports.extractFeaturesFromDOM = extractFeaturesFromDOM;
+class DOMMonitor {
+ constructor(cb) {
+ this.cb = cb;
+ this.knownIds = new Set();
+ this.knownHrefs = new Set();
+ this.knownClasses = new Set();
+ this.observer = null;
+ }
+ queryAll(window) {
+ this.cb({ type: 'elements', elements: [window.document.documentElement] });
+ this.handleUpdatedNodes([window.document.documentElement]);
+ }
+ start(window) {
+ if (this.observer === null && window.MutationObserver !== undefined) {
+ this.observer = new window.MutationObserver((mutations) => {
+ this.handleUpdatedNodes(getElementsFromMutations(mutations));
+ });
+ this.observer.observe(window.document.documentElement, {
+ // Monitor some attributes
+ attributes: true,
+ attributeFilter: ['class', 'id', 'href'],
+ childList: true,
+ subtree: true,
+ });
+ }
+ }
+ stop() {
+ if (this.observer !== null) {
+ this.observer.disconnect();
+ this.observer = null;
+ }
+ }
+ handleNewFeatures({ hrefs, ids, classes, }) {
+ const newIds = [];
+ const newClasses = [];
+ const newHrefs = [];
+ // Update ids
+ for (const id of ids) {
+ if (this.knownIds.has(id) === false) {
+ newIds.push(id);
+ this.knownIds.add(id);
+ }
+ }
+ for (const cls of classes) {
+ if (this.knownClasses.has(cls) === false) {
+ newClasses.push(cls);
+ this.knownClasses.add(cls);
+ }
+ }
+ for (const href of hrefs) {
+ if (this.knownHrefs.has(href) === false) {
+ newHrefs.push(href);
+ this.knownHrefs.add(href);
+ }
+ }
+ if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {
+ this.cb({
+ type: 'features',
+ classes: newClasses,
+ hrefs: newHrefs,
+ ids: newIds,
+ });
+ return true;
+ }
+ return false;
+ }
+ handleUpdatedNodes(elements) {
+ if (elements.length !== 0) {
+ this.cb({
+ type: 'elements',
+ elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),
+ });
+ return this.handleNewFeatures(extractFeaturesFromDOM(elements));
+ }
+ return false;
+ }
+}
+exports.DOMMonitor = DOMMonitor;
+/**
+ * Wrap a self-executing script into a block of custom logic to remove the
+ * script tag once execution is terminated. This can be useful to not leave
+ * traces in the DOM after injections.
+ */
+function autoRemoveScript(script) {
+ // Minified using 'terser'
+ return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;
+ // Original:
+ //
+ // try {
+ // ${script}
+ // } catch (ex) { }
+ //
+ // (function() {
+ // var currentScript = document.currentScript;
+ // var parent = currentScript && currentScript.parentNode;
+ //
+ // if (parent) {
+ // parent.removeChild(currentScript);
+ // }
+ // })();
+}
+exports.autoRemoveScript = autoRemoveScript;
+function injectScript(s, doc) {
+ const script = doc.createElement('script');
+ script.type = 'text/javascript';
+ script.id = SCRIPT_ID;
+ script.async = false;
+ script.appendChild(doc.createTextNode(autoRemoveScript(s)));
+ // Insert node
+ const parent = doc.head || doc.documentElement || doc;
+ if (parent !== null) {
+ parent.appendChild(script);
+ }
+}
+exports.injectScript = injectScript;
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js.map b/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js.map
new file mode 100644
index 0000000..f5a382d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/cjs/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@cliqz/adblocker-content/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..5f691e5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb",{"version":"07b0f8139476a354e846df65cf9b92cf5e9d733687d7cda6fc06ae8757357c09","signature":"e63ee0eae662a3bf7b0ab60491a0e14456767572c9c3b08c2af989494e0f90f5"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[56],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":true,"declaration":true,"declarationDir":"../types","declarationMap":true,"emitDeclarationOnly":false,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":99,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[137],[107,110,136,137,144,145,146,147],[137,149],[137,151],[137,152,153,155],[137,154],[107,137,139,144,173,174,176],[137,175],[107,137,144],[58,137],[94,137],[95,100,128,137],[96,107,108,115,125,136,137],[96,97,107,115,137],[98,137],[99,100,108,116,137],[100,125,133,137],[101,103,107,115,137],[102,137],[103,104,137],[107,137],[105,107,137],[94,107,137],[107,108,109,125,136,137],[107,108,109,122,125,128,137],[92,137,141],[103,107,110,115,125,136,137],[107,108,110,111,115,125,133,136,137],[110,112,125,133,136,137],[58,59,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],[107,113,137],[114,136,137,141],[103,107,115,125,137],[116,137],[117,137],[94,118,137],[119,135,137,141],[120,137],[121,137],[107,122,123,137],[122,124,137,139],[95,107,125,126,127,128,137],[95,125,127,137],[125,126,137],[128,137],[129,137],[94,125,137],[107,131,132,137],[131,132,137],[100,115,125,133,137],[134,137],[115,135,137],[95,110,121,136,137],[100,137],[125,137,138],[114,137,139],[137,140],[95,100,107,109,118,125,136,137,139,141],[125,137,142],[110,125,137,144],[137,185,224],[137,185,209,224],[137,224],[137,185],[137,185,210,224],[137,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223],[137,210,224],[137,149,226],[137,225],[107,125,137,144],[137,162],[137,161,162],[137,161],[137,161,162,163,165,166,169,170,171,172],[137,162,166],[137,161,162,163,165,166,167,168],[137,161,166],[137,166,170],[137,162,163,164],[137,163],[137,161,162,166],[69,73,136,137],[69,125,136,137],[64,137],[66,69,133,136,137],[115,133,137],[137,144],[64,137,144],[66,69,115,136,137],[61,62,65,68,95,107,125,136,137],[61,67,137],[65,69,95,128,136,137,144],[95,137,144],[85,95,137,144],[63,64,137,144],[69,137],[63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,86,87,88,89,90,91,137],[69,76,77,137],[67,69,77,78,137],[68,137],[61,64,69,137],[69,73,77,78,137],[73,137],[67,69,72,136,137],[61,66,67,69,73,76,137],[95,125,137],[64,69,85,95,137,141,144],[50,55,137],[51,52,53,54,137],[51,137],[55]],"referencedMap":[[57,1],[148,2],[150,3],[149,1],[153,1],[152,4],[156,5],[157,1],[158,1],[159,1],[155,6],[154,1],[160,1],[151,1],[146,1],[175,7],[176,8],[177,1],[178,9],[179,1],[180,1],[181,1],[58,10],[59,10],[94,11],[95,12],[96,13],[97,14],[98,15],[99,16],[100,17],[101,18],[102,19],[103,20],[104,20],[106,21],[105,22],[107,23],[108,24],[109,25],[93,26],[143,1],[110,27],[111,28],[112,29],[144,30],[113,31],[114,32],[115,33],[116,34],[117,35],[118,36],[119,37],[120,38],[121,39],[122,40],[123,40],[124,41],[125,42],[127,43],[126,44],[128,45],[129,46],[130,47],[131,48],[132,49],[133,50],[134,51],[135,52],[136,53],[137,54],[138,55],[139,56],[140,57],[141,58],[142,59],[182,1],[183,1],[184,1],[147,60],[209,61],[210,62],[185,63],[188,63],[207,61],[208,61],[198,61],[197,64],[195,61],[190,61],[203,61],[201,61],[205,61],[189,61],[202,61],[206,61],[191,61],[192,61],[204,61],[186,61],[193,61],[194,61],[196,61],[200,61],[211,65],[199,61],[187,61],[224,66],[223,1],[218,65],[220,67],[219,65],[212,65],[213,65],[215,65],[217,65],[221,67],[222,67],[214,67],[216,67],[227,68],[226,69],[225,1],[174,1],[228,70],[60,1],[145,21],[163,71],[172,72],[161,1],[162,73],[173,74],[168,75],[169,76],[167,77],[171,78],[165,79],[164,80],[170,81],[166,72],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[76,82],[83,83],[75,82],[90,84],[67,85],[66,86],[89,87],[84,88],[87,89],[69,90],[68,91],[64,92],[63,93],[86,94],[65,95],[70,96],[71,1],[74,96],[61,1],[92,97],[91,96],[78,98],[79,99],[81,100],[77,101],[80,102],[85,87],[72,103],[73,104],[82,105],[62,106],[88,107],[56,108],[55,109],[53,110],[54,1],[52,110],[51,1]],"exportedModulesMap":[[57,1],[148,2],[150,3],[149,1],[153,1],[152,4],[156,5],[157,1],[158,1],[159,1],[155,6],[154,1],[160,1],[151,1],[146,1],[175,7],[176,8],[177,1],[178,9],[179,1],[180,1],[181,1],[58,10],[59,10],[94,11],[95,12],[96,13],[97,14],[98,15],[99,16],[100,17],[101,18],[102,19],[103,20],[104,20],[106,21],[105,22],[107,23],[108,24],[109,25],[93,26],[143,1],[110,27],[111,28],[112,29],[144,30],[113,31],[114,32],[115,33],[116,34],[117,35],[118,36],[119,37],[120,38],[121,39],[122,40],[123,40],[124,41],[125,42],[127,43],[126,44],[128,45],[129,46],[130,47],[131,48],[132,49],[133,50],[134,51],[135,52],[136,53],[137,54],[138,55],[139,56],[140,57],[141,58],[142,59],[182,1],[183,1],[184,1],[147,60],[209,61],[210,62],[185,63],[188,63],[207,61],[208,61],[198,61],[197,64],[195,61],[190,61],[203,61],[201,61],[205,61],[189,61],[202,61],[206,61],[191,61],[192,61],[204,61],[186,61],[193,61],[194,61],[196,61],[200,61],[211,65],[199,61],[187,61],[224,66],[223,1],[218,65],[220,67],[219,65],[212,65],[213,65],[215,65],[217,65],[221,67],[222,67],[214,67],[216,67],[227,68],[226,69],[225,1],[174,1],[228,70],[60,1],[145,21],[163,71],[172,72],[161,1],[162,73],[173,74],[168,75],[169,76],[167,77],[171,78],[165,79],[164,80],[170,81],[166,72],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[76,82],[83,83],[75,82],[90,84],[67,85],[66,86],[89,87],[84,88],[87,89],[69,90],[68,91],[64,92],[63,93],[86,94],[65,95],[70,96],[71,1],[74,96],[61,1],[92,97],[91,96],[78,98],[79,99],[81,100],[77,101],[80,102],[85,87],[72,103],[73,104],[82,105],[62,106],[88,107],[56,111],[55,109],[53,110],[54,1],[52,110],[51,1]],"semanticDiagnosticsPerFile":[57,148,150,149,153,152,156,157,158,159,155,154,160,151,146,175,176,177,178,179,180,181,58,59,94,95,96,97,98,99,100,101,102,103,104,106,105,107,108,109,93,143,110,111,112,144,113,114,115,116,117,118,119,120,121,122,123,124,125,127,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,182,183,184,147,209,210,185,188,207,208,198,197,195,190,203,201,205,189,202,206,191,192,204,186,193,194,196,200,211,199,187,224,223,218,220,219,212,213,215,217,221,222,214,216,227,226,225,174,228,60,145,163,172,161,162,173,168,169,167,171,165,164,170,166,50,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,76,83,75,90,67,66,89,84,87,69,68,64,63,86,65,70,71,74,61,92,91,78,79,81,77,80,85,72,73,82,62,88,56,55,53,54,52,51],"latestChangedDtsFile":"../types/adblocker.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js b/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js
new file mode 100644
index 0000000..7ea89ff
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js
@@ -0,0 +1,190 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+const SCRIPT_ID = 'cliqz-adblocker-script';
+const IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+function isElement(node) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants
+ return node.nodeType === 1; // Node.ELEMENT_NODE;
+}
+function getElementsFromMutations(mutations) {
+ // Accumulate all nodes which were updated in `nodes`
+ const elements = [];
+ for (const mutation of mutations) {
+ if (mutation.type === 'attributes') {
+ if (isElement(mutation.target)) {
+ elements.push(mutation.target);
+ }
+ }
+ else if (mutation.type === 'childList') {
+ for (const addedNode of mutation.addedNodes) {
+ if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {
+ elements.push(addedNode);
+ }
+ }
+ }
+ }
+ return elements;
+}
+/**
+ * WARNING: this function should be self-contained and not rely on any global
+ * symbol. That constraint needs to be fulfilled because this function can
+ * potentially be injected in content-script (e.g.: see PuppeteerBlocker for
+ * more details).
+ */
+export function extractFeaturesFromDOM(roots) {
+ // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.
+ const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+ const classes = new Set();
+ const hrefs = new Set();
+ const ids = new Set();
+ for (const root of roots) {
+ for (const element of [
+ root,
+ ...root.querySelectorAll('[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)'),
+ ]) {
+ if (ignoredTags.has(element.nodeName.toLowerCase())) {
+ continue;
+ }
+ // Update ids
+ const id = element.id;
+ if (id) {
+ ids.add(id);
+ }
+ // Update classes
+ const classList = element.classList;
+ if (classList) {
+ for (const cls of classList) {
+ classes.add(cls);
+ }
+ }
+ // Update href
+ const href = element.getAttribute('href');
+ if (typeof href === 'string') {
+ hrefs.add(href);
+ }
+ }
+ }
+ return {
+ classes: Array.from(classes),
+ hrefs: Array.from(hrefs),
+ ids: Array.from(ids),
+ };
+}
+export class DOMMonitor {
+ constructor(cb) {
+ this.cb = cb;
+ this.knownIds = new Set();
+ this.knownHrefs = new Set();
+ this.knownClasses = new Set();
+ this.observer = null;
+ }
+ queryAll(window) {
+ this.cb({ type: 'elements', elements: [window.document.documentElement] });
+ this.handleUpdatedNodes([window.document.documentElement]);
+ }
+ start(window) {
+ if (this.observer === null && window.MutationObserver !== undefined) {
+ this.observer = new window.MutationObserver((mutations) => {
+ this.handleUpdatedNodes(getElementsFromMutations(mutations));
+ });
+ this.observer.observe(window.document.documentElement, {
+ // Monitor some attributes
+ attributes: true,
+ attributeFilter: ['class', 'id', 'href'],
+ childList: true,
+ subtree: true,
+ });
+ }
+ }
+ stop() {
+ if (this.observer !== null) {
+ this.observer.disconnect();
+ this.observer = null;
+ }
+ }
+ handleNewFeatures({ hrefs, ids, classes, }) {
+ const newIds = [];
+ const newClasses = [];
+ const newHrefs = [];
+ // Update ids
+ for (const id of ids) {
+ if (this.knownIds.has(id) === false) {
+ newIds.push(id);
+ this.knownIds.add(id);
+ }
+ }
+ for (const cls of classes) {
+ if (this.knownClasses.has(cls) === false) {
+ newClasses.push(cls);
+ this.knownClasses.add(cls);
+ }
+ }
+ for (const href of hrefs) {
+ if (this.knownHrefs.has(href) === false) {
+ newHrefs.push(href);
+ this.knownHrefs.add(href);
+ }
+ }
+ if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {
+ this.cb({
+ type: 'features',
+ classes: newClasses,
+ hrefs: newHrefs,
+ ids: newIds,
+ });
+ return true;
+ }
+ return false;
+ }
+ handleUpdatedNodes(elements) {
+ if (elements.length !== 0) {
+ this.cb({
+ type: 'elements',
+ elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),
+ });
+ return this.handleNewFeatures(extractFeaturesFromDOM(elements));
+ }
+ return false;
+ }
+}
+/**
+ * Wrap a self-executing script into a block of custom logic to remove the
+ * script tag once execution is terminated. This can be useful to not leave
+ * traces in the DOM after injections.
+ */
+export function autoRemoveScript(script) {
+ // Minified using 'terser'
+ return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;
+ // Original:
+ //
+ // try {
+ // ${script}
+ // } catch (ex) { }
+ //
+ // (function() {
+ // var currentScript = document.currentScript;
+ // var parent = currentScript && currentScript.parentNode;
+ //
+ // if (parent) {
+ // parent.removeChild(currentScript);
+ // }
+ // })();
+}
+export function injectScript(s, doc) {
+ const script = doc.createElement('script');
+ script.type = 'text/javascript';
+ script.id = SCRIPT_ID;
+ script.async = false;
+ script.appendChild(doc.createTextNode(autoRemoveScript(s)));
+ // Insert node
+ const parent = doc.head || doc.documentElement || doc;
+ if (parent !== null) {
+ parent.appendChild(script);
+ }
+}
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js.map b/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js.map
new file mode 100644
index 0000000..5b8bb62
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/es6/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@cliqz/adblocker-content/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..178f089
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb","07b0f8139476a354e846df65cf9b92cf5e9d733687d7cda6fc06ae8757357c09","d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[55],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":false,"declaration":false,"declarationDir":"../..","declarationMap":false,"exactOptionalPropertyTypes":true,"module":5,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[136],[106,109,135,136,143,144,145,146],[136,148],[136,150],[136,151,152,154],[136,153],[106,136,138,143,172,173,175],[136,174],[106,136,143],[57,136],[93,136],[94,99,127,136],[95,106,107,114,124,135,136],[95,96,106,114,136],[97,136],[98,99,107,115,136],[99,124,132,136],[100,102,106,114,136],[101,136],[102,103,136],[106,136],[104,106,136],[93,106,136],[106,107,108,124,135,136],[106,107,108,121,124,127,136],[91,136,140],[102,106,109,114,124,135,136],[106,107,109,110,114,124,132,135,136],[109,111,124,132,135,136],[57,58,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142],[106,112,136],[113,135,136,140],[102,106,114,124,136],[115,136],[116,136],[93,117,136],[118,134,136,140],[119,136],[120,136],[106,121,122,136],[121,123,136,138],[94,106,124,125,126,127,136],[94,124,126,136],[124,125,136],[127,136],[128,136],[93,124,136],[106,130,131,136],[130,131,136],[99,114,124,132,136],[133,136],[114,134,136],[94,109,120,135,136],[99,136],[124,136,137],[113,136,138],[136,139],[94,99,106,108,117,124,135,136,138,140],[124,136,141],[109,124,136,143],[136,184,223],[136,184,208,223],[136,223],[136,184],[136,184,209,223],[136,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],[136,209,223],[136,148,225],[136,224],[106,124,136,143],[136,161],[136,160,161],[136,160],[136,160,161,162,164,165,168,169,170,171],[136,161,165],[136,160,161,162,164,165,166,167],[136,160,165],[136,165,169],[136,161,162,163],[136,162],[136,160,161,165],[68,72,135,136],[68,124,135,136],[63,136],[65,68,132,135,136],[114,132,136],[136,143],[63,136,143],[65,68,114,135,136],[60,61,64,67,94,106,124,135,136],[60,66,136],[64,68,94,127,135,136,143],[94,136,143],[84,94,136,143],[62,63,136,143],[68,136],[62,63,64,65,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,136],[68,75,76,136],[66,68,76,77,136],[67,136],[60,63,68,136],[68,72,76,77,136],[72,136],[66,68,71,135,136],[60,65,66,68,72,75,136],[94,124,136],[63,68,84,94,136,140,143],[54,136],[50,51,52,53,136],[50,136]],"referencedMap":[[56,1],[147,2],[149,3],[148,1],[152,1],[151,4],[155,5],[156,1],[157,1],[158,1],[154,6],[153,1],[159,1],[150,1],[145,1],[174,7],[175,8],[176,1],[177,9],[178,1],[179,1],[180,1],[57,10],[58,10],[93,11],[94,12],[95,13],[96,14],[97,15],[98,16],[99,17],[100,18],[101,19],[102,20],[103,20],[105,21],[104,22],[106,23],[107,24],[108,25],[92,26],[142,1],[109,27],[110,28],[111,29],[143,30],[112,31],[113,32],[114,33],[115,34],[116,35],[117,36],[118,37],[119,38],[120,39],[121,40],[122,40],[123,41],[124,42],[126,43],[125,44],[127,45],[128,46],[129,47],[130,48],[131,49],[132,50],[133,51],[134,52],[135,53],[136,54],[137,55],[138,56],[139,57],[140,58],[141,59],[181,1],[182,1],[183,1],[146,60],[208,61],[209,62],[184,63],[187,63],[206,61],[207,61],[197,61],[196,64],[194,61],[189,61],[202,61],[200,61],[204,61],[188,61],[201,61],[205,61],[190,61],[191,61],[203,61],[185,61],[192,61],[193,61],[195,61],[199,61],[210,65],[198,61],[186,61],[223,66],[222,1],[217,65],[219,67],[218,65],[211,65],[212,65],[214,65],[216,65],[220,67],[221,67],[213,67],[215,67],[226,68],[225,69],[224,1],[173,1],[227,70],[59,1],[144,21],[162,71],[171,72],[160,1],[161,73],[172,74],[167,75],[168,76],[166,77],[170,78],[164,79],[163,80],[169,81],[165,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[75,82],[82,83],[74,82],[89,84],[66,85],[65,86],[88,87],[83,88],[86,89],[68,90],[67,91],[63,92],[62,93],[85,94],[64,95],[69,96],[70,1],[73,96],[60,1],[91,97],[90,96],[77,98],[78,99],[80,100],[76,101],[79,102],[84,87],[71,103],[72,104],[81,105],[61,106],[87,107],[55,108],[54,109],[52,110],[53,1],[51,110],[50,1]],"exportedModulesMap":[[56,1],[147,2],[149,3],[148,1],[152,1],[151,4],[155,5],[156,1],[157,1],[158,1],[154,6],[153,1],[159,1],[150,1],[145,1],[174,7],[175,8],[176,1],[177,9],[178,1],[179,1],[180,1],[57,10],[58,10],[93,11],[94,12],[95,13],[96,14],[97,15],[98,16],[99,17],[100,18],[101,19],[102,20],[103,20],[105,21],[104,22],[106,23],[107,24],[108,25],[92,26],[142,1],[109,27],[110,28],[111,29],[143,30],[112,31],[113,32],[114,33],[115,34],[116,35],[117,36],[118,37],[119,38],[120,39],[121,40],[122,40],[123,41],[124,42],[126,43],[125,44],[127,45],[128,46],[129,47],[130,48],[131,49],[132,50],[133,51],[134,52],[135,53],[136,54],[137,55],[138,56],[139,57],[140,58],[141,59],[181,1],[182,1],[183,1],[146,60],[208,61],[209,62],[184,63],[187,63],[206,61],[207,61],[197,61],[196,64],[194,61],[189,61],[202,61],[200,61],[204,61],[188,61],[201,61],[205,61],[190,61],[191,61],[203,61],[185,61],[192,61],[193,61],[195,61],[199,61],[210,65],[198,61],[186,61],[223,66],[222,1],[217,65],[219,67],[218,65],[211,65],[212,65],[214,65],[216,65],[220,67],[221,67],[213,67],[215,67],[226,68],[225,69],[224,1],[173,1],[227,70],[59,1],[144,21],[162,71],[171,72],[160,1],[161,73],[172,74],[167,75],[168,76],[166,77],[170,78],[164,79],[163,80],[169,81],[165,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[75,82],[82,83],[74,82],[89,84],[66,85],[65,86],[88,87],[83,88],[86,89],[68,90],[67,91],[63,92],[62,93],[85,94],[64,95],[69,96],[70,1],[73,96],[60,1],[91,97],[90,96],[77,98],[78,99],[80,100],[76,101],[79,102],[84,87],[71,103],[72,104],[81,105],[61,106],[87,107],[55,108],[54,109],[52,110],[53,1],[51,110],[50,1]],"semanticDiagnosticsPerFile":[56,147,149,148,152,151,155,156,157,158,154,153,159,150,145,174,175,176,177,178,179,180,57,58,93,94,95,96,97,98,99,100,101,102,103,105,104,106,107,108,92,142,109,110,111,143,112,113,114,115,116,117,118,119,120,121,122,123,124,126,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,181,182,183,146,208,209,184,187,206,207,197,196,194,189,202,200,204,188,201,205,190,191,203,185,192,193,195,199,210,198,186,223,222,217,219,218,211,212,214,216,220,221,213,215,226,225,224,173,227,59,144,162,171,160,161,172,167,168,166,170,164,163,169,165,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,75,82,74,89,66,65,88,83,86,68,67,63,62,85,64,69,70,73,60,91,90,77,78,80,76,79,84,71,72,81,61,87,55,54,52,53,51,50]},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts b/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts
new file mode 100644
index 0000000..cf5d360
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts
@@ -0,0 +1,74 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import type { AST } from '@cliqz/adblocker-extended-selectors';
+export type Lifecycle = 'start' | 'dom-update';
+export interface IBackgroundCallback {
+ classes: string[];
+ hrefs: string[];
+ ids: string[];
+ lifecycle: Lifecycle;
+}
+export interface IMessageFromBackground {
+ active: boolean;
+ scripts: string[];
+ styles: string;
+ extended: {
+ ast: AST;
+ remove: boolean;
+ attribute?: string | undefined;
+ }[];
+}
+/**
+ * WARNING: this function should be self-contained and not rely on any global
+ * symbol. That constraint needs to be fulfilled because this function can
+ * potentially be injected in content-script (e.g.: see PuppeteerBlocker for
+ * more details).
+ */
+export declare function extractFeaturesFromDOM(roots: Element[]): {
+ classes: string[];
+ hrefs: string[];
+ ids: string[];
+};
+export interface FeaturesUpdate {
+ type: 'features';
+ ids: string[];
+ classes: string[];
+ hrefs: string[];
+}
+export interface ElementsUpdate {
+ type: 'elements';
+ elements: Element[];
+}
+export type DOMUpdate = FeaturesUpdate | ElementsUpdate;
+export declare class DOMMonitor {
+ private readonly cb;
+ private knownIds;
+ private knownHrefs;
+ private knownClasses;
+ private observer;
+ constructor(cb: (update: DOMUpdate) => void);
+ queryAll(window: Pick<Window, 'document'>): void;
+ start(window: Pick<Window, 'document'> & {
+ MutationObserver?: typeof MutationObserver;
+ }): void;
+ stop(): void;
+ handleNewFeatures({ hrefs, ids, classes, }: {
+ hrefs: string[];
+ ids: string[];
+ classes: string[];
+ }): boolean;
+ private handleUpdatedNodes;
+}
+/**
+ * Wrap a self-executing script into a block of custom logic to remove the
+ * script tag once execution is terminated. This can be useful to not leave
+ * traces in the DOM after injections.
+ */
+export declare function autoRemoveScript(script: string): string;
+export declare function injectScript(s: string, doc: Document): void;
+//# sourceMappingURL=adblocker.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts.map b/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts.map
new file mode 100644
index 0000000..179aeae
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/dist/types/adblocker.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.d.ts","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAK/D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QACR,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,EAAE,CAAC;CACL;AA4BD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG;IACxD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CA6CA;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,cAAc,CAAC;AAExD,qBAAa,UAAU;IAOT,OAAO,CAAC,QAAQ,CAAC,EAAE;IAN/B,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,QAAQ,CAAiC;gBAEpB,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;IAErD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI;IAKhD,KAAK,CACV,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG;QAAE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAA;KAAE,GAChF,IAAI;IAgBA,IAAI,IAAI,IAAI;IAOZ,iBAAiB,CAAC,EACvB,KAAK,EACL,GAAG,EACH,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,OAAO;IAwCX,OAAO,CAAC,kBAAkB;CAW3B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAY3D"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-content/package.json b/client/node_modules/@cliqz/adblocker-content/package.json
new file mode 100644
index 0000000..49e6aa2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-content/package.json
@@ -0,0 +1,84 @@
+{
+ "name": "@cliqz/adblocker-content",
+ "version": "1.26.12",
+ "description": "Cliqz adblocker library (content-scripts helpers)",
+ "author": {
+ "name": "Cliqz"
+ },
+ "homepage": "https://github.com/cliqz-oss/adblocker#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/adblocker.js",
+ "module": "dist/es6/adblocker.js",
+ "types": "dist/types/adblocker.d.ts",
+ "files": [
+ "LICENSE",
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/cliqz-oss/adblocker.git",
+ "directory": "packages/adblocker-content"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "eslint adblocker.ts",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json && rollup --config ./rollup.config.ts --configPlugin typescript",
+ "prepack": "yarn run bundle"
+ },
+ "bugs": {
+ "url": "https://github.com/cliqz-oss/adblocker/issues"
+ },
+ "dependencies": {
+ "@cliqz/adblocker-extended-selectors": "^1.26.12"
+ },
+ "devDependencies": {
+ "@rollup/plugin-node-resolve": "^15.2.1",
+ "@rollup/plugin-typescript": "^11.1.3",
+ "@types/node": "^20.6.2",
+ "eslint": "^8.49.0",
+ "rimraf": "^5.0.1",
+ "rollup": "^4.0.2",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "rollup-plugin-terser": "^7.0.2",
+ "typescript": "^5.2.2"
+ },
+ "contributors": [
+ {
+ "name": "Rémi Berson",
+ "email": "remi@cliqz.com"
+ },
+ {
+ "name": "Zhonghao Yu",
+ "email": "zhonghao@cliqz.com"
+ },
+ {
+ "name": "Krzysztof Jan Modras",
+ "email": "chrmod@chrmod.net"
+ },
+ {
+ "name": "Raymond Hill",
+ "email": "gorhill@users.noreply.github.com"
+ },
+ {
+ "name": "Eleni",
+ "email": "eleni@cliqz.com"
+ },
+ {
+ "name": "ecnmst",
+ "email": "ecnmst@users.noreply.github.com"
+ },
+ {
+ "name": "Asif",
+ "email": "arshadasif0312@gmail.com"
+ },
+ {
+ "name": "Anton Lazarev",
+ "email": "antonok35@gmail.com"
+ }
+ ],
+ "gitHead": "c4df10bc5ba2498ac5f1670c4a829709da7380e7"
+}
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/LICENSE b/client/node_modules/@cliqz/adblocker-electron-preload/LICENSE
new file mode 100644
index 0000000..11ce717
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/LICENSE
@@ -0,0 +1,375 @@
+Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0. \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/README.md b/client/node_modules/@cliqz/adblocker-electron-preload/README.md
new file mode 100644
index 0000000..58c7f7d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/README.md
@@ -0,0 +1,46 @@
+<h1 align="center">@cliqz/adblocker-electron-preload</h2>
+
+<p align="center">
+ <em>
+ Efficient
+ · Minimal
+ · JavaScript
+ · TypeScript
+ · uBlock Origin- and Easylist-compatible
+ </em>
+ <br />
+ <em>
+ <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker">Node.js</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-puppeteer">Puppeteer</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron">Electron</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-webextension">WebExtension</a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3ATests">
+ <img alt="Github Actions Build Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Tests?label=tests&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3Assets">
+ <img alt="Github Actions Assets Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Assets?label=assets&style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="npm version" src="https://img.shields.io/npm/v/@cliqz/adblocker.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/@cliqz/adblocker.svg?style=flat-square"></a>
+ <br/>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://twitter.com/cliqz">
+ <img alt="Follow Cliqz on Twitter" src="https://img.shields.io/twitter/follow/cliqz.svg?label=follow+cliqz&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker">
+ <img alt="Dependabot" src="https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/blob/master/LICENSE">
+ <img alt="License Badge" src="https://img.shields.io/github/license/cliqz-oss/adblocker?style=flat-square"></a>
+ <a href="https://lgtm.com/projects/g/cliqz-oss/adblocker?mode=list">
+ <img alt="LGTM Badge" src="https://img.shields.io/lgtm/alerts/github/cliqz-oss/adblocker?style=flat-square"></a>
+</p>
+
+---
+
+This package is part of [@cliqz/adblocker](https://github.com/cliqz-oss/adblocker).
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js
new file mode 100644
index 0000000..deb13ec
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js
@@ -0,0 +1,64 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { ipcRenderer } from 'electron';
+import { DOMMonitor, injectScript, } from '@cliqz/adblocker-content';
+function getCosmeticsFiltersFirst() {
+ return ipcRenderer.sendSync('get-cosmetic-filters-first', window.location.href);
+}
+function getCosmeticsFiltersUpdate(data) {
+ ipcRenderer.send('get-cosmetic-filters', window.location.href, data);
+}
+if (window === window.top && window.location.href.startsWith('devtools://') === false) {
+ (() => {
+ const enableMutationObserver = ipcRenderer.sendSync('is-mutation-observer-enabled');
+ let ACTIVE = true;
+ let DOM_MONITOR = null;
+ const unload = () => {
+ if (DOM_MONITOR !== null) {
+ DOM_MONITOR.stop();
+ DOM_MONITOR = null;
+ }
+ };
+ ipcRenderer.on('get-cosmetic-filters-response',
+ // TODO - implement extended filtering for Electron
+ (_, { active /* , scripts, extended */ }) => {
+ if (active === false) {
+ ACTIVE = false;
+ unload();
+ return;
+ }
+ ACTIVE = true;
+ });
+ const scripts = getCosmeticsFiltersFirst();
+ if (scripts) {
+ for (const script of scripts) {
+ injectScript(script, document);
+ }
+ }
+ // On DOMContentLoaded, start monitoring the DOM. This means that we will
+ // first check which ids and classes exist in the DOM as a one-off operation;
+ // this will allow the injection of selectors which have a chance to match.
+ // We also register a MutationObserver which will monitor the addition of new
+ // classes and ids, and might trigger extra filters on a per-need basis.
+ window.addEventListener('DOMContentLoaded', () => {
+ DOM_MONITOR = new DOMMonitor((update) => {
+ if (update.type === 'features') {
+ getCosmeticsFiltersUpdate(Object.assign({}, update));
+ }
+ });
+ DOM_MONITOR.queryAll(window);
+ // Start observing mutations to detect new ids and classes which would
+ // need to be hidden.
+ if (ACTIVE && enableMutationObserver) {
+ DOM_MONITOR.start(window);
+ }
+ }, { once: true, passive: true });
+ window.addEventListener('unload', unload, { once: true, passive: true });
+ })();
+}
+//# sourceMappingURL=preload.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js.map b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js.map
new file mode 100644
index 0000000..5f49c90
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/preload.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../preload.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EACL,UAAU,EAGV,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,SAAS,wBAAwB;IAC/B,OAAO,WAAW,CAAC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC;AACD,SAAS,yBAAyB,CAAC,IAA4C;IAC7E,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,IAAI,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE;IACrF,CAAC,GAAG,EAAE;QACJ,MAAM,sBAAsB,GAAG,WAAW,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QAEpF,IAAI,MAAM,GAAY,IAAI,CAAC;QAC3B,IAAI,WAAW,GAAsB,IAAI,CAAC;QAE1C,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,WAAW,KAAK,IAAI,EAAE;gBACxB,WAAW,CAAC,IAAI,EAAE,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC;aACpB;QACH,CAAC,CAAC;QAEF,WAAW,CAAC,EAAE,CACZ,+BAA+B;QAC/B,mDAAmD;QACnD,CACE,CAA4B,EAC5B,EAAE,MAAM,CAAC,yBAAyB,EAA0B,EAC5D,EAAE;YACF,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,MAAM,GAAG,KAAK,CAAC;gBACf,MAAM,EAAE,CAAC;gBACT,OAAO;aACR;YAED,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAChC;SACF;QAED,yEAAyE;QACzE,6EAA6E;QAC7E,2EAA2E;QAC3E,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,GAAG,EAAE;YACH,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;oBAC9B,yBAAyB,mBACpB,MAAM,EACT,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE7B,sEAAsE;YACtE,qBAAqB;YACrB,IAAI,MAAM,IAAI,sBAAsB,EAAE;gBACpC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC3B;QACH,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAC9B,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAC;CACN"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/tsconfig.tsbuildinfo b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..e50eb2c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/es6/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/electron/electron.d.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../../adblocker-content/dist/types/adblocker.d.ts","../../preload.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447",{"version":"3a763d6c7b8157bc7efdd8a2088eff19c2642b79e167e108242de8f2800f4646","affectsGlobalScope":true},"385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb","e63ee0eae662a3bf7b0ab60491a0e14456767572c9c3b08c2af989494e0f90f5",{"version":"3d13f1a5abf0f787130e6a4beba63ad0a19f893b7d730ba354cf7e00b4dee7b9","signature":"438918a4f12e1ecb593930ca4f56c95e180ec3875731b80f4e84d7f1e02b5bea"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[145],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":true,"declaration":true,"declarationDir":"../types","declarationMap":true,"emitDeclarationOnly":false,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":5,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[130],[100,103,129,130,137,147,148,149],[130,151],[130,153],[130,154,155,157],[130,156],[100,130,132,137,175,176,178],[130,177],[100,130,137],[51,130],[87,130],[88,93,121,130],[89,100,101,108,118,129,130],[89,90,100,108,130],[91,130],[92,93,101,109,130],[93,118,126,130],[94,96,100,108,130],[95,130],[96,97,130],[100,130],[98,100,130],[87,100,130],[100,101,102,118,129,130],[100,101,102,115,118,121,130],[85,130,134],[96,100,103,108,118,129,130],[100,101,103,104,108,118,126,129,130],[103,105,118,126,129,130],[51,52,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],[100,106,130],[107,129,130,134],[96,100,108,118,130],[109,130],[110,130],[87,111,130],[112,128,130,134],[113,130],[114,130],[100,115,116,130],[115,117,130,132],[88,100,118,119,120,121,130],[88,118,120,130],[118,119,130],[121,130],[122,130],[87,118,130],[100,124,125,130],[124,125,130],[93,108,118,126,130],[127,130],[108,128,130],[88,103,114,129,130],[93,130],[118,130,131],[107,130,132],[130,133],[88,93,100,102,111,118,129,130,132,134],[118,130,135],[103,118,130,137],[130,187,226],[130,187,211,226],[130,226],[130,187],[130,187,212,226],[130,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225],[130,212,226],[130,151,228],[130,227],[100,118,130,137],[100,101,130,137],[130,164],[130,163,164],[130,163],[130,163,164,165,167,168,171,172,173,174],[130,164,168],[130,163,164,165,167,168,169,170],[130,163,168],[130,168,172],[130,164,165,166],[130,165],[130,163,164,168],[62,66,129,130],[62,118,129,130],[57,130],[59,62,126,129,130],[108,126,130],[130,137],[57,130,137],[59,62,108,129,130],[54,55,58,61,88,100,118,129,130],[54,60,130],[58,62,88,121,129,130,137],[88,130,137],[78,88,130,137],[56,57,130,137],[62,130],[56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,130],[62,69,70,130],[60,62,70,71,130],[61,130],[54,57,62,130],[62,66,70,71,130],[66,130],[60,62,65,129,130],[54,59,60,62,66,69,130],[88,118,130],[57,62,78,88,130,134,137],[130,143],[50,130,138,144],[130,139,140,141,142],[130,139],[144]],"referencedMap":[[146,1],[150,2],[152,3],[151,1],[155,1],[154,4],[158,5],[159,1],[160,1],[161,1],[157,6],[156,1],[162,1],[153,1],[148,1],[177,7],[178,8],[179,1],[180,9],[181,1],[182,1],[183,1],[51,10],[52,10],[87,11],[88,12],[89,13],[90,14],[91,15],[92,16],[93,17],[94,18],[95,19],[96,20],[97,20],[99,21],[98,22],[100,23],[101,24],[102,25],[86,26],[136,1],[103,27],[104,28],[105,29],[137,30],[106,31],[107,32],[108,33],[109,34],[110,35],[111,36],[112,37],[113,38],[114,39],[115,40],[116,40],[117,41],[118,42],[120,43],[119,44],[121,45],[122,46],[123,47],[124,48],[125,49],[126,50],[127,51],[128,52],[129,53],[130,54],[131,55],[132,56],[133,57],[134,58],[135,59],[184,1],[185,1],[186,1],[149,60],[211,61],[212,62],[187,63],[190,63],[209,61],[210,61],[200,61],[199,64],[197,61],[192,61],[205,61],[203,61],[207,61],[191,61],[204,61],[208,61],[193,61],[194,61],[206,61],[188,61],[195,61],[196,61],[198,61],[202,61],[213,65],[201,61],[189,61],[226,66],[225,1],[220,65],[222,67],[221,65],[214,65],[215,65],[217,65],[219,65],[223,67],[224,67],[216,67],[218,67],[229,68],[228,69],[227,1],[176,1],[230,70],[53,1],[138,71],[147,21],[165,72],[174,73],[163,1],[164,74],[175,75],[170,76],[171,77],[169,78],[173,79],[167,80],[166,81],[172,82],[168,73],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[69,83],[76,84],[68,83],[83,85],[60,86],[59,87],[82,88],[77,89],[80,90],[62,91],[61,92],[57,93],[56,94],[79,95],[58,96],[63,97],[64,1],[67,97],[54,1],[85,98],[84,97],[71,99],[72,100],[74,101],[70,102],[73,103],[78,88],[65,104],[66,105],[75,106],[55,107],[81,108],[144,109],[145,110],[143,111],[141,112],[142,1],[140,112],[139,1]],"exportedModulesMap":[[146,1],[150,2],[152,3],[151,1],[155,1],[154,4],[158,5],[159,1],[160,1],[161,1],[157,6],[156,1],[162,1],[153,1],[148,1],[177,7],[178,8],[179,1],[180,9],[181,1],[182,1],[183,1],[51,10],[52,10],[87,11],[88,12],[89,13],[90,14],[91,15],[92,16],[93,17],[94,18],[95,19],[96,20],[97,20],[99,21],[98,22],[100,23],[101,24],[102,25],[86,26],[136,1],[103,27],[104,28],[105,29],[137,30],[106,31],[107,32],[108,33],[109,34],[110,35],[111,36],[112,37],[113,38],[114,39],[115,40],[116,40],[117,41],[118,42],[120,43],[119,44],[121,45],[122,46],[123,47],[124,48],[125,49],[126,50],[127,51],[128,52],[129,53],[130,54],[131,55],[132,56],[133,57],[134,58],[135,59],[184,1],[185,1],[186,1],[149,60],[211,61],[212,62],[187,63],[190,63],[209,61],[210,61],[200,61],[199,64],[197,61],[192,61],[205,61],[203,61],[207,61],[191,61],[204,61],[208,61],[193,61],[194,61],[206,61],[188,61],[195,61],[196,61],[198,61],[202,61],[213,65],[201,61],[189,61],[226,66],[225,1],[220,65],[222,67],[221,65],[214,65],[215,65],[217,65],[219,65],[223,67],[224,67],[216,67],[218,67],[229,68],[228,69],[227,1],[176,1],[230,70],[53,1],[138,71],[147,21],[165,72],[174,73],[163,1],[164,74],[175,75],[170,76],[171,77],[169,78],[173,79],[167,80],[166,81],[172,82],[168,73],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[69,83],[76,84],[68,83],[83,85],[60,86],[59,87],[82,88],[77,89],[80,90],[62,91],[61,92],[57,93],[56,94],[79,95],[58,96],[63,97],[64,1],[67,97],[54,1],[85,98],[84,97],[71,99],[72,100],[74,101],[70,102],[73,103],[78,88],[65,104],[66,105],[75,106],[55,107],[81,108],[144,109],[145,113],[143,111],[141,112],[142,1],[140,112],[139,1]],"semanticDiagnosticsPerFile":[146,150,152,151,155,154,158,159,160,161,157,156,162,153,148,177,178,179,180,181,182,183,51,52,87,88,89,90,91,92,93,94,95,96,97,99,98,100,101,102,86,136,103,104,105,137,106,107,108,109,110,111,112,113,114,115,116,117,118,120,119,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,184,185,186,149,211,212,187,190,209,210,200,199,197,192,205,203,207,191,204,208,193,194,206,188,195,196,198,202,213,201,189,226,225,220,222,221,214,215,217,219,223,224,216,218,229,228,227,176,230,53,138,147,165,174,163,164,175,170,171,169,173,167,166,172,168,50,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,69,76,68,83,60,59,82,77,80,62,61,57,56,79,58,63,64,67,54,85,84,71,72,74,70,73,78,65,66,75,55,81,144,145,143,141,142,140,139],"latestChangedDtsFile":"../types/preload.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js
new file mode 100644
index 0000000..066aaec
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js
@@ -0,0 +1,264 @@
+'use strict';
+
+var electron = require('electron');
+
+var adblocker = {};
+
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(adblocker, "__esModule", { value: true });
+var injectScript_1 = adblocker.injectScript = adblocker.autoRemoveScript = DOMMonitor_1 = adblocker.DOMMonitor = adblocker.extractFeaturesFromDOM = void 0;
+const SCRIPT_ID = 'cliqz-adblocker-script';
+const IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+function isElement(node) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants
+ return node.nodeType === 1; // Node.ELEMENT_NODE;
+}
+function getElementsFromMutations(mutations) {
+ // Accumulate all nodes which were updated in `nodes`
+ const elements = [];
+ for (const mutation of mutations) {
+ if (mutation.type === 'attributes') {
+ if (isElement(mutation.target)) {
+ elements.push(mutation.target);
+ }
+ }
+ else if (mutation.type === 'childList') {
+ for (const addedNode of mutation.addedNodes) {
+ if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {
+ elements.push(addedNode);
+ }
+ }
+ }
+ }
+ return elements;
+}
+/**
+ * WARNING: this function should be self-contained and not rely on any global
+ * symbol. That constraint needs to be fulfilled because this function can
+ * potentially be injected in content-script (e.g.: see PuppeteerBlocker for
+ * more details).
+ */
+function extractFeaturesFromDOM(roots) {
+ // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.
+ const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+ const classes = new Set();
+ const hrefs = new Set();
+ const ids = new Set();
+ for (const root of roots) {
+ for (const element of [
+ root,
+ ...root.querySelectorAll('[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)'),
+ ]) {
+ if (ignoredTags.has(element.nodeName.toLowerCase())) {
+ continue;
+ }
+ // Update ids
+ const id = element.id;
+ if (id) {
+ ids.add(id);
+ }
+ // Update classes
+ const classList = element.classList;
+ if (classList) {
+ for (const cls of classList) {
+ classes.add(cls);
+ }
+ }
+ // Update href
+ const href = element.getAttribute('href');
+ if (typeof href === 'string') {
+ hrefs.add(href);
+ }
+ }
+ }
+ return {
+ classes: Array.from(classes),
+ hrefs: Array.from(hrefs),
+ ids: Array.from(ids),
+ };
+}
+adblocker.extractFeaturesFromDOM = extractFeaturesFromDOM;
+class DOMMonitor {
+ constructor(cb) {
+ this.cb = cb;
+ this.knownIds = new Set();
+ this.knownHrefs = new Set();
+ this.knownClasses = new Set();
+ this.observer = null;
+ }
+ queryAll(window) {
+ this.cb({ type: 'elements', elements: [window.document.documentElement] });
+ this.handleUpdatedNodes([window.document.documentElement]);
+ }
+ start(window) {
+ if (this.observer === null && window.MutationObserver !== undefined) {
+ this.observer = new window.MutationObserver((mutations) => {
+ this.handleUpdatedNodes(getElementsFromMutations(mutations));
+ });
+ this.observer.observe(window.document.documentElement, {
+ // Monitor some attributes
+ attributes: true,
+ attributeFilter: ['class', 'id', 'href'],
+ childList: true,
+ subtree: true,
+ });
+ }
+ }
+ stop() {
+ if (this.observer !== null) {
+ this.observer.disconnect();
+ this.observer = null;
+ }
+ }
+ handleNewFeatures({ hrefs, ids, classes, }) {
+ const newIds = [];
+ const newClasses = [];
+ const newHrefs = [];
+ // Update ids
+ for (const id of ids) {
+ if (this.knownIds.has(id) === false) {
+ newIds.push(id);
+ this.knownIds.add(id);
+ }
+ }
+ for (const cls of classes) {
+ if (this.knownClasses.has(cls) === false) {
+ newClasses.push(cls);
+ this.knownClasses.add(cls);
+ }
+ }
+ for (const href of hrefs) {
+ if (this.knownHrefs.has(href) === false) {
+ newHrefs.push(href);
+ this.knownHrefs.add(href);
+ }
+ }
+ if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {
+ this.cb({
+ type: 'features',
+ classes: newClasses,
+ hrefs: newHrefs,
+ ids: newIds,
+ });
+ return true;
+ }
+ return false;
+ }
+ handleUpdatedNodes(elements) {
+ if (elements.length !== 0) {
+ this.cb({
+ type: 'elements',
+ elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),
+ });
+ return this.handleNewFeatures(extractFeaturesFromDOM(elements));
+ }
+ return false;
+ }
+}
+var DOMMonitor_1 = adblocker.DOMMonitor = DOMMonitor;
+/**
+ * Wrap a self-executing script into a block of custom logic to remove the
+ * script tag once execution is terminated. This can be useful to not leave
+ * traces in the DOM after injections.
+ */
+function autoRemoveScript(script) {
+ // Minified using 'terser'
+ return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;
+ // Original:
+ //
+ // try {
+ // ${script}
+ // } catch (ex) { }
+ //
+ // (function() {
+ // var currentScript = document.currentScript;
+ // var parent = currentScript && currentScript.parentNode;
+ //
+ // if (parent) {
+ // parent.removeChild(currentScript);
+ // }
+ // })();
+}
+adblocker.autoRemoveScript = autoRemoveScript;
+function injectScript(s, doc) {
+ const script = doc.createElement('script');
+ script.type = 'text/javascript';
+ script.id = SCRIPT_ID;
+ script.async = false;
+ script.appendChild(doc.createTextNode(autoRemoveScript(s)));
+ // Insert node
+ const parent = doc.head || doc.documentElement || doc;
+ if (parent !== null) {
+ parent.appendChild(script);
+ }
+}
+injectScript_1 = adblocker.injectScript = injectScript;
+
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+function getCosmeticsFiltersFirst() {
+ return electron.ipcRenderer.sendSync('get-cosmetic-filters-first', window.location.href);
+}
+function getCosmeticsFiltersUpdate(data) {
+ electron.ipcRenderer.send('get-cosmetic-filters', window.location.href, data);
+}
+if (window === window.top && window.location.href.startsWith('devtools://') === false) {
+ (() => {
+ const enableMutationObserver = electron.ipcRenderer.sendSync('is-mutation-observer-enabled');
+ let ACTIVE = true;
+ let DOM_MONITOR = null;
+ const unload = () => {
+ if (DOM_MONITOR !== null) {
+ DOM_MONITOR.stop();
+ DOM_MONITOR = null;
+ }
+ };
+ electron.ipcRenderer.on('get-cosmetic-filters-response',
+ // TODO - implement extended filtering for Electron
+ (_, { active /* , scripts, extended */ }) => {
+ if (active === false) {
+ ACTIVE = false;
+ unload();
+ return;
+ }
+ ACTIVE = true;
+ });
+ const scripts = getCosmeticsFiltersFirst();
+ if (scripts) {
+ for (const script of scripts) {
+ injectScript_1(script, document);
+ }
+ }
+ // On DOMContentLoaded, start monitoring the DOM. This means that we will
+ // first check which ids and classes exist in the DOM as a one-off operation;
+ // this will allow the injection of selectors which have a chance to match.
+ // We also register a MutationObserver which will monitor the addition of new
+ // classes and ids, and might trigger extra filters on a per-need basis.
+ window.addEventListener('DOMContentLoaded', () => {
+ DOM_MONITOR = new DOMMonitor_1((update) => {
+ if (update.type === 'features') {
+ getCosmeticsFiltersUpdate(Object.assign({}, update));
+ }
+ });
+ DOM_MONITOR.queryAll(window);
+ // Start observing mutations to detect new ids and classes which would
+ // need to be hidden.
+ if (ACTIVE && enableMutationObserver) {
+ DOM_MONITOR.start(window);
+ }
+ }, { once: true, passive: true });
+ window.addEventListener('unload', unload, { once: true, passive: true });
+ })();
+}
+//# sourceMappingURL=preload.cjs.js.map
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js.map b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js.map
new file mode 100644
index 0000000..6b065c1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.cjs.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"preload.cjs.js","sources":["../../adblocker-content/adblocker.ts","../preload.ts"],"sourcesContent":["/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport type { AST } from '@cliqz/adblocker-extended-selectors';\n\nconst SCRIPT_ID = 'cliqz-adblocker-script';\nconst IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n\nexport type Lifecycle = 'start' | 'dom-update';\n\nexport interface IBackgroundCallback {\n classes: string[];\n hrefs: string[];\n ids: string[];\n lifecycle: Lifecycle;\n}\n\nexport interface IMessageFromBackground {\n active: boolean;\n scripts: string[];\n styles: string;\n extended: {\n ast: AST;\n remove: boolean;\n attribute?: string | undefined;\n }[];\n}\n\nfunction isElement(node: Node): node is Element {\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\n return node.nodeType === 1; // Node.ELEMENT_NODE;\n}\n\nfunction getElementsFromMutations(mutations: MutationRecord[]): Element[] {\n // Accumulate all nodes which were updated in `nodes`\n const elements: Element[] = [];\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n if (isElement(mutation.target)) {\n elements.push(mutation.target);\n }\n } else if (mutation.type === 'childList') {\n for (const addedNode of mutation.addedNodes) {\n if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {\n elements.push(addedNode);\n }\n }\n }\n }\n\n return elements;\n}\n\n/**\n * WARNING: this function should be self-contained and not rely on any global\n * symbol. That constraint needs to be fulfilled because this function can\n * potentially be injected in content-script (e.g.: see PuppeteerBlocker for\n * more details).\n */\nexport function extractFeaturesFromDOM(roots: Element[]): {\n classes: string[];\n hrefs: string[];\n ids: string[];\n} {\n // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.\n const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n const classes: Set<string> = new Set();\n const hrefs: Set<string> = new Set();\n const ids: Set<string> = new Set();\n\n for (const root of roots) {\n for (const element of [\n root,\n ...root.querySelectorAll(\n '[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)',\n ),\n ]) {\n if (ignoredTags.has(element.nodeName.toLowerCase())) {\n continue;\n }\n\n // Update ids\n const id = element.id;\n if (id) {\n ids.add(id);\n }\n\n // Update classes\n const classList = element.classList;\n if (classList) {\n for (const cls of classList) {\n classes.add(cls);\n }\n }\n\n // Update href\n const href = element.getAttribute('href');\n if (typeof href === 'string') {\n hrefs.add(href);\n }\n }\n }\n\n return {\n classes: Array.from(classes),\n hrefs: Array.from(hrefs),\n ids: Array.from(ids),\n };\n}\n\nexport interface FeaturesUpdate {\n type: 'features';\n ids: string[];\n classes: string[];\n hrefs: string[];\n}\n\nexport interface ElementsUpdate {\n type: 'elements';\n elements: Element[];\n}\n\nexport type DOMUpdate = FeaturesUpdate | ElementsUpdate;\n\nexport class DOMMonitor {\n private knownIds: Set<string> = new Set();\n private knownHrefs: Set<string> = new Set();\n private knownClasses: Set<string> = new Set();\n\n private observer: MutationObserver | null = null;\n\n constructor(private readonly cb: (update: DOMUpdate) => void) {}\n\n public queryAll(window: Pick<Window, 'document'>): void {\n this.cb({ type: 'elements', elements: [window.document.documentElement] });\n this.handleUpdatedNodes([window.document.documentElement]);\n }\n\n public start(\n window: Pick<Window, 'document'> & { MutationObserver?: typeof MutationObserver },\n ): void {\n if (this.observer === null && window.MutationObserver !== undefined) {\n this.observer = new window.MutationObserver((mutations: MutationRecord[]) => {\n this.handleUpdatedNodes(getElementsFromMutations(mutations));\n });\n\n this.observer.observe(window.document.documentElement, {\n // Monitor some attributes\n attributes: true,\n attributeFilter: ['class', 'id', 'href'],\n childList: true,\n subtree: true,\n });\n }\n }\n\n public stop(): void {\n if (this.observer !== null) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n public handleNewFeatures({\n hrefs,\n ids,\n classes,\n }: {\n hrefs: string[];\n ids: string[];\n classes: string[];\n }): boolean {\n const newIds: string[] = [];\n const newClasses: string[] = [];\n const newHrefs: string[] = [];\n\n // Update ids\n for (const id of ids) {\n if (this.knownIds.has(id) === false) {\n newIds.push(id);\n this.knownIds.add(id);\n }\n }\n\n for (const cls of classes) {\n if (this.knownClasses.has(cls) === false) {\n newClasses.push(cls);\n this.knownClasses.add(cls);\n }\n }\n\n for (const href of hrefs) {\n if (this.knownHrefs.has(href) === false) {\n newHrefs.push(href);\n this.knownHrefs.add(href);\n }\n }\n\n if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {\n this.cb({\n type: 'features',\n classes: newClasses,\n hrefs: newHrefs,\n ids: newIds,\n });\n return true;\n }\n\n return false;\n }\n\n private handleUpdatedNodes(elements: Element[]): boolean {\n if (elements.length !== 0) {\n this.cb({\n type: 'elements',\n elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),\n });\n return this.handleNewFeatures(extractFeaturesFromDOM(elements));\n }\n\n return false;\n }\n}\n\n/**\n * Wrap a self-executing script into a block of custom logic to remove the\n * script tag once execution is terminated. This can be useful to not leave\n * traces in the DOM after injections.\n */\nexport function autoRemoveScript(script: string): string {\n // Minified using 'terser'\n return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;\n // Original:\n //\n // try {\n // ${script}\n // } catch (ex) { }\n //\n // (function() {\n // var currentScript = document.currentScript;\n // var parent = currentScript && currentScript.parentNode;\n //\n // if (parent) {\n // parent.removeChild(currentScript);\n // }\n // })();\n}\n\nexport function injectScript(s: string, doc: Document): void {\n const script = doc.createElement('script');\n script.type = 'text/javascript';\n script.id = SCRIPT_ID;\n script.async = false;\n script.appendChild(doc.createTextNode(autoRemoveScript(s)));\n\n // Insert node\n const parent = doc.head || doc.documentElement || doc;\n if (parent !== null) {\n parent.appendChild(script);\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { ipcRenderer } from 'electron';\n\nimport {\n DOMMonitor,\n IBackgroundCallback,\n IMessageFromBackground,\n injectScript,\n} from '@cliqz/adblocker-content';\n\nfunction getCosmeticsFiltersFirst(): string[] | null {\n return ipcRenderer.sendSync('get-cosmetic-filters-first', window.location.href);\n}\nfunction getCosmeticsFiltersUpdate(data: Omit<IBackgroundCallback, 'lifecycle'>) {\n ipcRenderer.send('get-cosmetic-filters', window.location.href, data);\n}\n\nif (window === window.top && window.location.href.startsWith('devtools://') === false) {\n (() => {\n const enableMutationObserver = ipcRenderer.sendSync('is-mutation-observer-enabled');\n\n let ACTIVE: boolean = true;\n let DOM_MONITOR: DOMMonitor | null = null;\n\n const unload = () => {\n if (DOM_MONITOR !== null) {\n DOM_MONITOR.stop();\n DOM_MONITOR = null;\n }\n };\n\n ipcRenderer.on(\n 'get-cosmetic-filters-response',\n // TODO - implement extended filtering for Electron\n (\n _: Electron.IpcRendererEvent,\n { active /* , scripts, extended */ }: IMessageFromBackground,\n ) => {\n if (active === false) {\n ACTIVE = false;\n unload();\n return;\n }\n\n ACTIVE = true;\n },\n );\n\n const scripts = getCosmeticsFiltersFirst();\n if (scripts) {\n for (const script of scripts) {\n injectScript(script, document);\n }\n }\n\n // On DOMContentLoaded, start monitoring the DOM. This means that we will\n // first check which ids and classes exist in the DOM as a one-off operation;\n // this will allow the injection of selectors which have a chance to match.\n // We also register a MutationObserver which will monitor the addition of new\n // classes and ids, and might trigger extra filters on a per-need basis.\n window.addEventListener(\n 'DOMContentLoaded',\n () => {\n DOM_MONITOR = new DOMMonitor((update) => {\n if (update.type === 'features') {\n getCosmeticsFiltersUpdate({\n ...update,\n });\n }\n });\n\n DOM_MONITOR.queryAll(window);\n\n // Start observing mutations to detect new ids and classes which would\n // need to be hidden.\n if (ACTIVE && enableMutationObserver) {\n DOM_MONITOR.start(window);\n }\n },\n { once: true, passive: true },\n );\n\n window.addEventListener('unload', unload, { once: true, passive: true });\n })();\n}\n\n// Re-export symbols for convenience\nexport type { IBackgroundCallback, IMessageFromBackground } from '@cliqz/adblocker-content';\n"],"names":["ipcRenderer","injectScript","DOMMonitor"],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js
new file mode 100644
index 0000000..0da1069
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js
@@ -0,0 +1,262 @@
+import { ipcRenderer } from 'electron';
+
+var adblocker = {};
+
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(adblocker, "__esModule", { value: true });
+var injectScript_1 = adblocker.injectScript = adblocker.autoRemoveScript = DOMMonitor_1 = adblocker.DOMMonitor = adblocker.extractFeaturesFromDOM = void 0;
+const SCRIPT_ID = 'cliqz-adblocker-script';
+const IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+function isElement(node) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants
+ return node.nodeType === 1; // Node.ELEMENT_NODE;
+}
+function getElementsFromMutations(mutations) {
+ // Accumulate all nodes which were updated in `nodes`
+ const elements = [];
+ for (const mutation of mutations) {
+ if (mutation.type === 'attributes') {
+ if (isElement(mutation.target)) {
+ elements.push(mutation.target);
+ }
+ }
+ else if (mutation.type === 'childList') {
+ for (const addedNode of mutation.addedNodes) {
+ if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {
+ elements.push(addedNode);
+ }
+ }
+ }
+ }
+ return elements;
+}
+/**
+ * WARNING: this function should be self-contained and not rely on any global
+ * symbol. That constraint needs to be fulfilled because this function can
+ * potentially be injected in content-script (e.g.: see PuppeteerBlocker for
+ * more details).
+ */
+function extractFeaturesFromDOM(roots) {
+ // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.
+ const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);
+ const classes = new Set();
+ const hrefs = new Set();
+ const ids = new Set();
+ for (const root of roots) {
+ for (const element of [
+ root,
+ ...root.querySelectorAll('[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)'),
+ ]) {
+ if (ignoredTags.has(element.nodeName.toLowerCase())) {
+ continue;
+ }
+ // Update ids
+ const id = element.id;
+ if (id) {
+ ids.add(id);
+ }
+ // Update classes
+ const classList = element.classList;
+ if (classList) {
+ for (const cls of classList) {
+ classes.add(cls);
+ }
+ }
+ // Update href
+ const href = element.getAttribute('href');
+ if (typeof href === 'string') {
+ hrefs.add(href);
+ }
+ }
+ }
+ return {
+ classes: Array.from(classes),
+ hrefs: Array.from(hrefs),
+ ids: Array.from(ids),
+ };
+}
+adblocker.extractFeaturesFromDOM = extractFeaturesFromDOM;
+class DOMMonitor {
+ constructor(cb) {
+ this.cb = cb;
+ this.knownIds = new Set();
+ this.knownHrefs = new Set();
+ this.knownClasses = new Set();
+ this.observer = null;
+ }
+ queryAll(window) {
+ this.cb({ type: 'elements', elements: [window.document.documentElement] });
+ this.handleUpdatedNodes([window.document.documentElement]);
+ }
+ start(window) {
+ if (this.observer === null && window.MutationObserver !== undefined) {
+ this.observer = new window.MutationObserver((mutations) => {
+ this.handleUpdatedNodes(getElementsFromMutations(mutations));
+ });
+ this.observer.observe(window.document.documentElement, {
+ // Monitor some attributes
+ attributes: true,
+ attributeFilter: ['class', 'id', 'href'],
+ childList: true,
+ subtree: true,
+ });
+ }
+ }
+ stop() {
+ if (this.observer !== null) {
+ this.observer.disconnect();
+ this.observer = null;
+ }
+ }
+ handleNewFeatures({ hrefs, ids, classes, }) {
+ const newIds = [];
+ const newClasses = [];
+ const newHrefs = [];
+ // Update ids
+ for (const id of ids) {
+ if (this.knownIds.has(id) === false) {
+ newIds.push(id);
+ this.knownIds.add(id);
+ }
+ }
+ for (const cls of classes) {
+ if (this.knownClasses.has(cls) === false) {
+ newClasses.push(cls);
+ this.knownClasses.add(cls);
+ }
+ }
+ for (const href of hrefs) {
+ if (this.knownHrefs.has(href) === false) {
+ newHrefs.push(href);
+ this.knownHrefs.add(href);
+ }
+ }
+ if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {
+ this.cb({
+ type: 'features',
+ classes: newClasses,
+ hrefs: newHrefs,
+ ids: newIds,
+ });
+ return true;
+ }
+ return false;
+ }
+ handleUpdatedNodes(elements) {
+ if (elements.length !== 0) {
+ this.cb({
+ type: 'elements',
+ elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),
+ });
+ return this.handleNewFeatures(extractFeaturesFromDOM(elements));
+ }
+ return false;
+ }
+}
+var DOMMonitor_1 = adblocker.DOMMonitor = DOMMonitor;
+/**
+ * Wrap a self-executing script into a block of custom logic to remove the
+ * script tag once execution is terminated. This can be useful to not leave
+ * traces in the DOM after injections.
+ */
+function autoRemoveScript(script) {
+ // Minified using 'terser'
+ return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;
+ // Original:
+ //
+ // try {
+ // ${script}
+ // } catch (ex) { }
+ //
+ // (function() {
+ // var currentScript = document.currentScript;
+ // var parent = currentScript && currentScript.parentNode;
+ //
+ // if (parent) {
+ // parent.removeChild(currentScript);
+ // }
+ // })();
+}
+adblocker.autoRemoveScript = autoRemoveScript;
+function injectScript(s, doc) {
+ const script = doc.createElement('script');
+ script.type = 'text/javascript';
+ script.id = SCRIPT_ID;
+ script.async = false;
+ script.appendChild(doc.createTextNode(autoRemoveScript(s)));
+ // Insert node
+ const parent = doc.head || doc.documentElement || doc;
+ if (parent !== null) {
+ parent.appendChild(script);
+ }
+}
+injectScript_1 = adblocker.injectScript = injectScript;
+
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+function getCosmeticsFiltersFirst() {
+ return ipcRenderer.sendSync('get-cosmetic-filters-first', window.location.href);
+}
+function getCosmeticsFiltersUpdate(data) {
+ ipcRenderer.send('get-cosmetic-filters', window.location.href, data);
+}
+if (window === window.top && window.location.href.startsWith('devtools://') === false) {
+ (() => {
+ const enableMutationObserver = ipcRenderer.sendSync('is-mutation-observer-enabled');
+ let ACTIVE = true;
+ let DOM_MONITOR = null;
+ const unload = () => {
+ if (DOM_MONITOR !== null) {
+ DOM_MONITOR.stop();
+ DOM_MONITOR = null;
+ }
+ };
+ ipcRenderer.on('get-cosmetic-filters-response',
+ // TODO - implement extended filtering for Electron
+ (_, { active /* , scripts, extended */ }) => {
+ if (active === false) {
+ ACTIVE = false;
+ unload();
+ return;
+ }
+ ACTIVE = true;
+ });
+ const scripts = getCosmeticsFiltersFirst();
+ if (scripts) {
+ for (const script of scripts) {
+ injectScript_1(script, document);
+ }
+ }
+ // On DOMContentLoaded, start monitoring the DOM. This means that we will
+ // first check which ids and classes exist in the DOM as a one-off operation;
+ // this will allow the injection of selectors which have a chance to match.
+ // We also register a MutationObserver which will monitor the addition of new
+ // classes and ids, and might trigger extra filters on a per-need basis.
+ window.addEventListener('DOMContentLoaded', () => {
+ DOM_MONITOR = new DOMMonitor_1((update) => {
+ if (update.type === 'features') {
+ getCosmeticsFiltersUpdate(Object.assign({}, update));
+ }
+ });
+ DOM_MONITOR.queryAll(window);
+ // Start observing mutations to detect new ids and classes which would
+ // need to be hidden.
+ if (ACTIVE && enableMutationObserver) {
+ DOM_MONITOR.start(window);
+ }
+ }, { once: true, passive: true });
+ window.addEventListener('unload', unload, { once: true, passive: true });
+ })();
+}
+//# sourceMappingURL=preload.es6.js.map
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js.map b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js.map
new file mode 100644
index 0000000..ccbae11
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/preload.es6.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"preload.es6.js","sources":["../../adblocker-content/adblocker.ts","../preload.ts"],"sourcesContent":["/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport type { AST } from '@cliqz/adblocker-extended-selectors';\n\nconst SCRIPT_ID = 'cliqz-adblocker-script';\nconst IGNORED_TAGS = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n\nexport type Lifecycle = 'start' | 'dom-update';\n\nexport interface IBackgroundCallback {\n classes: string[];\n hrefs: string[];\n ids: string[];\n lifecycle: Lifecycle;\n}\n\nexport interface IMessageFromBackground {\n active: boolean;\n scripts: string[];\n styles: string;\n extended: {\n ast: AST;\n remove: boolean;\n attribute?: string | undefined;\n }[];\n}\n\nfunction isElement(node: Node): node is Element {\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType#node_type_constants\n return node.nodeType === 1; // Node.ELEMENT_NODE;\n}\n\nfunction getElementsFromMutations(mutations: MutationRecord[]): Element[] {\n // Accumulate all nodes which were updated in `nodes`\n const elements: Element[] = [];\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n if (isElement(mutation.target)) {\n elements.push(mutation.target);\n }\n } else if (mutation.type === 'childList') {\n for (const addedNode of mutation.addedNodes) {\n if (isElement(addedNode) && addedNode.id !== SCRIPT_ID) {\n elements.push(addedNode);\n }\n }\n }\n }\n\n return elements;\n}\n\n/**\n * WARNING: this function should be self-contained and not rely on any global\n * symbol. That constraint needs to be fulfilled because this function can\n * potentially be injected in content-script (e.g.: see PuppeteerBlocker for\n * more details).\n */\nexport function extractFeaturesFromDOM(roots: Element[]): {\n classes: string[];\n hrefs: string[];\n ids: string[];\n} {\n // NOTE: This cannot be global as puppeteer needs to be able to serialize this function.\n const ignoredTags = new Set(['br', 'head', 'link', 'meta', 'script', 'style', 's']);\n const classes: Set<string> = new Set();\n const hrefs: Set<string> = new Set();\n const ids: Set<string> = new Set();\n\n for (const root of roots) {\n for (const element of [\n root,\n ...root.querySelectorAll(\n '[id]:not(html):not(body),[class]:not(html):not(body),[href]:not(html):not(body)',\n ),\n ]) {\n if (ignoredTags.has(element.nodeName.toLowerCase())) {\n continue;\n }\n\n // Update ids\n const id = element.id;\n if (id) {\n ids.add(id);\n }\n\n // Update classes\n const classList = element.classList;\n if (classList) {\n for (const cls of classList) {\n classes.add(cls);\n }\n }\n\n // Update href\n const href = element.getAttribute('href');\n if (typeof href === 'string') {\n hrefs.add(href);\n }\n }\n }\n\n return {\n classes: Array.from(classes),\n hrefs: Array.from(hrefs),\n ids: Array.from(ids),\n };\n}\n\nexport interface FeaturesUpdate {\n type: 'features';\n ids: string[];\n classes: string[];\n hrefs: string[];\n}\n\nexport interface ElementsUpdate {\n type: 'elements';\n elements: Element[];\n}\n\nexport type DOMUpdate = FeaturesUpdate | ElementsUpdate;\n\nexport class DOMMonitor {\n private knownIds: Set<string> = new Set();\n private knownHrefs: Set<string> = new Set();\n private knownClasses: Set<string> = new Set();\n\n private observer: MutationObserver | null = null;\n\n constructor(private readonly cb: (update: DOMUpdate) => void) {}\n\n public queryAll(window: Pick<Window, 'document'>): void {\n this.cb({ type: 'elements', elements: [window.document.documentElement] });\n this.handleUpdatedNodes([window.document.documentElement]);\n }\n\n public start(\n window: Pick<Window, 'document'> & { MutationObserver?: typeof MutationObserver },\n ): void {\n if (this.observer === null && window.MutationObserver !== undefined) {\n this.observer = new window.MutationObserver((mutations: MutationRecord[]) => {\n this.handleUpdatedNodes(getElementsFromMutations(mutations));\n });\n\n this.observer.observe(window.document.documentElement, {\n // Monitor some attributes\n attributes: true,\n attributeFilter: ['class', 'id', 'href'],\n childList: true,\n subtree: true,\n });\n }\n }\n\n public stop(): void {\n if (this.observer !== null) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n public handleNewFeatures({\n hrefs,\n ids,\n classes,\n }: {\n hrefs: string[];\n ids: string[];\n classes: string[];\n }): boolean {\n const newIds: string[] = [];\n const newClasses: string[] = [];\n const newHrefs: string[] = [];\n\n // Update ids\n for (const id of ids) {\n if (this.knownIds.has(id) === false) {\n newIds.push(id);\n this.knownIds.add(id);\n }\n }\n\n for (const cls of classes) {\n if (this.knownClasses.has(cls) === false) {\n newClasses.push(cls);\n this.knownClasses.add(cls);\n }\n }\n\n for (const href of hrefs) {\n if (this.knownHrefs.has(href) === false) {\n newHrefs.push(href);\n this.knownHrefs.add(href);\n }\n }\n\n if (newIds.length !== 0 || newClasses.length !== 0 || newHrefs.length !== 0) {\n this.cb({\n type: 'features',\n classes: newClasses,\n hrefs: newHrefs,\n ids: newIds,\n });\n return true;\n }\n\n return false;\n }\n\n private handleUpdatedNodes(elements: Element[]): boolean {\n if (elements.length !== 0) {\n this.cb({\n type: 'elements',\n elements: elements.filter((e) => IGNORED_TAGS.has(e.nodeName.toLowerCase()) === false),\n });\n return this.handleNewFeatures(extractFeaturesFromDOM(elements));\n }\n\n return false;\n }\n}\n\n/**\n * Wrap a self-executing script into a block of custom logic to remove the\n * script tag once execution is terminated. This can be useful to not leave\n * traces in the DOM after injections.\n */\nexport function autoRemoveScript(script: string): string {\n // Minified using 'terser'\n return `try{${script}}catch(c){}!function(){var c=document.currentScript,e=c&&c.parentNode;e&&e.removeChild(c)}();`;\n // Original:\n //\n // try {\n // ${script}\n // } catch (ex) { }\n //\n // (function() {\n // var currentScript = document.currentScript;\n // var parent = currentScript && currentScript.parentNode;\n //\n // if (parent) {\n // parent.removeChild(currentScript);\n // }\n // })();\n}\n\nexport function injectScript(s: string, doc: Document): void {\n const script = doc.createElement('script');\n script.type = 'text/javascript';\n script.id = SCRIPT_ID;\n script.async = false;\n script.appendChild(doc.createTextNode(autoRemoveScript(s)));\n\n // Insert node\n const parent = doc.head || doc.documentElement || doc;\n if (parent !== null) {\n parent.appendChild(script);\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { ipcRenderer } from 'electron';\n\nimport {\n DOMMonitor,\n IBackgroundCallback,\n IMessageFromBackground,\n injectScript,\n} from '@cliqz/adblocker-content';\n\nfunction getCosmeticsFiltersFirst(): string[] | null {\n return ipcRenderer.sendSync('get-cosmetic-filters-first', window.location.href);\n}\nfunction getCosmeticsFiltersUpdate(data: Omit<IBackgroundCallback, 'lifecycle'>) {\n ipcRenderer.send('get-cosmetic-filters', window.location.href, data);\n}\n\nif (window === window.top && window.location.href.startsWith('devtools://') === false) {\n (() => {\n const enableMutationObserver = ipcRenderer.sendSync('is-mutation-observer-enabled');\n\n let ACTIVE: boolean = true;\n let DOM_MONITOR: DOMMonitor | null = null;\n\n const unload = () => {\n if (DOM_MONITOR !== null) {\n DOM_MONITOR.stop();\n DOM_MONITOR = null;\n }\n };\n\n ipcRenderer.on(\n 'get-cosmetic-filters-response',\n // TODO - implement extended filtering for Electron\n (\n _: Electron.IpcRendererEvent,\n { active /* , scripts, extended */ }: IMessageFromBackground,\n ) => {\n if (active === false) {\n ACTIVE = false;\n unload();\n return;\n }\n\n ACTIVE = true;\n },\n );\n\n const scripts = getCosmeticsFiltersFirst();\n if (scripts) {\n for (const script of scripts) {\n injectScript(script, document);\n }\n }\n\n // On DOMContentLoaded, start monitoring the DOM. This means that we will\n // first check which ids and classes exist in the DOM as a one-off operation;\n // this will allow the injection of selectors which have a chance to match.\n // We also register a MutationObserver which will monitor the addition of new\n // classes and ids, and might trigger extra filters on a per-need basis.\n window.addEventListener(\n 'DOMContentLoaded',\n () => {\n DOM_MONITOR = new DOMMonitor((update) => {\n if (update.type === 'features') {\n getCosmeticsFiltersUpdate({\n ...update,\n });\n }\n });\n\n DOM_MONITOR.queryAll(window);\n\n // Start observing mutations to detect new ids and classes which would\n // need to be hidden.\n if (ACTIVE && enableMutationObserver) {\n DOM_MONITOR.start(window);\n }\n },\n { once: true, passive: true },\n );\n\n window.addEventListener('unload', unload, { once: true, passive: true });\n })();\n}\n\n// Re-export symbols for convenience\nexport type { IBackgroundCallback, IMessageFromBackground } from '@cliqz/adblocker-content';\n"],"names":["injectScript","DOMMonitor"],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts b/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts
new file mode 100644
index 0000000..7ed4dd4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export type { IBackgroundCallback, IMessageFromBackground } from '@cliqz/adblocker-content';
+//# sourceMappingURL=preload.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts.map b/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts.map
new file mode 100644
index 0000000..f598f13
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/dist/types/preload.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../preload.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwFH,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron-preload/package.json b/client/node_modules/@cliqz/adblocker-electron-preload/package.json
new file mode 100644
index 0000000..79df9ea
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron-preload/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "@cliqz/adblocker-electron-preload",
+ "version": "1.26.12",
+ "description": "Cliqz adblocker Electron wrapper preload script",
+ "author": {
+ "name": "Cliqz"
+ },
+ "homepage": "https://github.com/cliqz-oss/adblocker#readme",
+ "license": "MPL-2.0",
+ "main": "dist/preload.cjs.js",
+ "module": "dist/preload.es6.js",
+ "types": "dist/types/preload.d.ts",
+ "files": [
+ "LICENSE",
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/cliqz-oss/adblocker.git",
+ "directory": "packages/adblocker-electron-preload"
+ },
+ "bugs": {
+ "url": "https://github.com/cliqz-oss/adblocker/issues"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "eslint preload.ts",
+ "build": "tsc --build ./tsconfig.json && rollup --config ./rollup.config.ts --configPlugin typescript",
+ "bundle": "yarn build",
+ "prepack": "yarn run bundle"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ },
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12"
+ },
+ "devDependencies": {
+ "@rollup/plugin-commonjs": "^25.0.4",
+ "@rollup/plugin-node-resolve": "^15.2.1",
+ "@rollup/plugin-typescript": "^11.1.3",
+ "@types/chrome": "^0.0.248",
+ "electron": "^27.0.0",
+ "eslint": "^8.49.0",
+ "rimraf": "^5.0.1",
+ "rollup": "^4.0.2",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "typescript": "^5.2.2"
+ },
+ "contributors": [
+ {
+ "name": "Rémi Berson",
+ "email": "remi@cliqz.com"
+ },
+ {
+ "name": "Zhonghao Yu",
+ "email": "zhonghao@cliqz.com"
+ },
+ {
+ "name": "Krzysztof Jan Modras",
+ "email": "chrmod@chrmod.net"
+ },
+ {
+ "name": "Raymond Hill",
+ "email": "gorhill@users.noreply.github.com"
+ },
+ {
+ "name": "Eleni",
+ "email": "eleni@cliqz.com"
+ },
+ {
+ "name": "ecnmst",
+ "email": "ecnmst@users.noreply.github.com"
+ },
+ {
+ "name": "Asif",
+ "email": "arshadasif0312@gmail.com"
+ },
+ {
+ "name": "Anton Lazarev",
+ "email": "antonok35@gmail.com"
+ }
+ ],
+ "gitHead": "c4df10bc5ba2498ac5f1670c4a829709da7380e7"
+}
diff --git a/client/node_modules/@cliqz/adblocker-electron/LICENSE b/client/node_modules/@cliqz/adblocker-electron/LICENSE
new file mode 100644
index 0000000..11ce717
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/LICENSE
@@ -0,0 +1,375 @@
+Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0. \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/README.md b/client/node_modules/@cliqz/adblocker-electron/README.md
new file mode 100644
index 0000000..45e3350
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/README.md
@@ -0,0 +1,135 @@
+<h1 align="center">Electron Adblocker</h2>
+
+<p align="center">
+ <em>
+ Efficient
+ · Minimal
+ · JavaScript
+ · TypeScript
+ · uBlock Origin- and Easylist-compatible
+ </em>
+ <br />
+ <em>
+ <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker">Node.js</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-puppeteer">Puppeteer</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron">Electron</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-webextension">WebExtension</a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3ATests">
+ <img alt="Github Actions Build Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Tests?label=tests&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3Assets">
+ <img alt="Github Actions Assets Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Assets?label=assets&style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="npm version" src="https://img.shields.io/npm/v/@cliqz/adblocker.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/@cliqz/adblocker.svg?style=flat-square"></a>
+ <br/>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://twitter.com/cliqz">
+ <img alt="Follow Cliqz on Twitter" src="https://img.shields.io/twitter/follow/cliqz.svg?label=follow+cliqz&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker">
+ <img alt="Dependabot" src="https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/blob/master/LICENSE">
+ <img alt="License Badge" src="https://img.shields.io/github/license/cliqz-oss/adblocker?style=flat-square"></a>
+ <a href="https://lgtm.com/projects/g/cliqz-oss/adblocker?mode=list">
+ <img alt="LGTM Badge" src="https://img.shields.io/lgtm/alerts/github/cliqz-oss/adblocker?style=flat-square"></a>
+</p>
+
+---
+
+## Getting Started
+
+Install: `npm install --save @cliqz/adblocker-electron`.
+
+## Usage
+
+For a *complete example* check-out: [@cliqz/adblocker-electron-example](https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron-example).
+
+Creating an instance of `ElectronBlocker` and start blocking ads!
+
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+import fetch from 'cross-fetch'; // required 'fetch'
+
+ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
+ blocker.enableBlockingInSession(session.defaultSession);
+});
+```
+
+You are ready to block ads!
+
+There are other ways you can *create an instance of the blocking engine* to
+start blocking ads.
+
+If you already have filters locally:
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+
+const blocker = ElectronBlocker.parse(fs.readFileSync('easylist.txt', 'utf-8'));
+```
+
+Fetching lists from URLs:
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+import fetch from 'cross-fetch'; // required 'fetch'
+
+const blocker = await ElectronBlocker.fromLists(fetch, [
+ 'https://easylist.to/easylist/easylist.txt'
+]);
+```
+
+Use ready-made configs to block ads and optionally trackers:
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+import fetch from 'cross-fetch'; // required 'fetch'
+
+let blocker = await ElectronBlocker.fromPrebuiltAdsOnly(fetch); // ads only
+blocker = await ElectronBlocker.fromPrebuiltAdsAndTracking(fetch); // ads and tracking
+```
+
+### Disabling Blocker in session
+
+To stop blocking ads in a session:
+
+```javascript
+blocker.disableBlockingInSession(session.defaultSession);
+```
+
+### Caching Blocker using Serialization
+
+To avoid having to create the same instance of `ElectronBlocker` all over again,
+you can serialize it to a byte-array which you can store on disk for faster
+loading.
+
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+import fetch from 'cross-fetch'; // required 'fetch'
+import { promises as fs } from 'fs'; // used for caching
+
+ElectronBlocker.fromPrebuiltAdsAndTracking(fetch, {
+ path: 'engine.bin',
+ read: fs.readFile,
+ write: fs.writeFile,
+}).then((blocker) => {
+ blocker.enableBlockingInSession(session.defaultSession);
+});
+```
+
+Or you can do this manually to control the way caching is done:
+
+```javascript
+import { ElectronBlocker } from '@cliqz/adblocker-electron';
+import fetch from 'cross-fetch'; // required 'fetch'
+
+ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
+ const buffer = blocker.serialize();
+ const restoredBlocker = ElectronBlocker.deserialize(buffer);
+ // `restoredBlocker` is deep-equal to `blocker`!
+});
+```
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js
new file mode 100644
index 0000000..cb3d3fd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js
@@ -0,0 +1,254 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ElectronBlocker = exports.BlockingContext = exports.fromElectronDetails = void 0;
+const electron_1 = require("electron");
+const tldts_experimental_1 = require("tldts-experimental");
+const adblocker_1 = require("@cliqz/adblocker");
+const PRELOAD_PATH = require.resolve('@cliqz/adblocker-electron-preload');
+// https://stackoverflow.com/questions/48854265/why-do-i-see-an-electron-security-warning-after-updating-my-electron-project-t
+process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
+/**
+ * Create an instance of `Request` from `Electron.OnBeforeRequestDetails`.
+ */
+function fromElectronDetails(details) {
+ const { id, url, resourceType, referrer, webContentsId } = details;
+ return adblocker_1.Request.fromRawDetails(webContentsId
+ ? {
+ _originalRequestDetails: details,
+ requestId: `${id}`,
+ sourceUrl: referrer,
+ tabId: webContentsId,
+ type: (resourceType || 'other'),
+ url,
+ }
+ : {
+ _originalRequestDetails: details,
+ requestId: `${id}`,
+ sourceUrl: referrer,
+ type: (resourceType || 'other'),
+ url,
+ });
+}
+exports.fromElectronDetails = fromElectronDetails;
+/**
+ * This abstraction takes care of blocking in one instance of `Electron.Session`.
+ */
+class BlockingContext {
+ constructor(session, blocker) {
+ this.session = session;
+ this.blocker = blocker;
+ this.onBeforeRequest = (details, callback) => blocker.onBeforeRequest(details, callback);
+ this.onGetCosmeticFiltersFirst = (event, url) => blocker.onGetCosmeticFiltersFirst(event, url);
+ this.onGetCosmeticFiltersUpdated = (event, url, msg) => blocker.onGetCosmeticFiltersUpdated(event, url, msg);
+ this.onHeadersReceived = (details, callback) => blocker.onHeadersReceived(details, callback);
+ this.onIsMutationObserverEnabled = (event) => blocker.onIsMutationObserverEnabled(event);
+ }
+ enable() {
+ if (this.blocker.config.loadCosmeticFilters === true) {
+ this.session.setPreloads(this.session.getPreloads().concat([PRELOAD_PATH]));
+ electron_1.ipcMain.on('get-cosmetic-filters-first', this.onGetCosmeticFiltersFirst);
+ electron_1.ipcMain.on('get-cosmetic-filters', this.onGetCosmeticFiltersUpdated);
+ electron_1.ipcMain.on('is-mutation-observer-enabled', this.onIsMutationObserverEnabled);
+ }
+ if (this.blocker.config.loadNetworkFilters === true) {
+ this.session.webRequest.onHeadersReceived({ urls: ['<all_urls>'] }, this.onHeadersReceived);
+ this.session.webRequest.onBeforeRequest({ urls: ['<all_urls>'] }, this.onBeforeRequest);
+ }
+ }
+ disable() {
+ if (this.blocker.config.loadNetworkFilters === true) {
+ // NOTE - there is currently no support in Electron for multiple
+ // webRequest listeners registered for the same event. This means that
+ // adblocker's listeners can be overriden by other ones in the same
+ // application (or that the adblocker can override another listener
+ // registered previously). Because of this, the only way to disable the
+ // adblocker is to remove all listeners for the events we are interested
+ // in. In the future, we should consider implementing a webRequest
+ // pipeline allowing to register multiple listeners for the same event.
+ this.session.webRequest.onHeadersReceived(null);
+ this.session.webRequest.onBeforeRequest(null);
+ }
+ if (this.blocker.config.loadCosmeticFilters === true) {
+ this.session.setPreloads(this.session.getPreloads().filter((p) => p !== PRELOAD_PATH));
+ electron_1.ipcMain.removeListener('get-cosmetic-filters', this.onGetCosmeticFiltersUpdated);
+ }
+ }
+}
+exports.BlockingContext = BlockingContext;
+/**
+ * Wrap `FiltersEngine` into a Electron-friendly helper class. It exposes
+ * methods to interface with Electron APIs needed to block ads.
+ */
+class ElectronBlocker extends adblocker_1.FiltersEngine {
+ constructor() {
+ super(...arguments);
+ this.contexts = new WeakMap();
+ // ----------------------------------------------------------------------- //
+ // ElectronBlocker-specific additions to FiltersEngine
+ // ----------------------------------------------------------------------- //
+ this.onIsMutationObserverEnabled = (event) => {
+ event.returnValue = this.config.enableMutationObserver;
+ };
+ this.onGetCosmeticFiltersFirst = (event, url) => {
+ // Extract hostname from sender's URL
+ const parsed = (0, tldts_experimental_1.parse)(url);
+ const hostname = parsed.hostname || '';
+ const domain = parsed.domain || '';
+ const { active, styles, scripts, extended } = this.getCosmeticsFilters({
+ domain,
+ hostname,
+ url,
+ // This needs to be done only once per frame
+ getBaseRules: true,
+ getInjectionRules: true,
+ getExtendedRules: true,
+ getRulesFromHostname: true,
+ getRulesFromDOM: false, // Only done on updates (see `onGetCosmeticFiltersUpdated`)
+ });
+ if (active === false) {
+ event.returnValue = null;
+ return;
+ }
+ // Inject custom stylesheets
+ this.injectStyles(event.sender, styles);
+ event.sender.send('get-cosmetic-filters-response', {
+ active,
+ extended,
+ styles: '',
+ });
+ // to execute Inject scripts synchronously, simply return scripts to renderer.
+ event.returnValue = scripts;
+ };
+ this.onGetCosmeticFiltersUpdated = (event, url, msg) => {
+ // Extract hostname from sender's URL
+ const parsed = (0, tldts_experimental_1.parse)(url);
+ const hostname = parsed.hostname || '';
+ const domain = parsed.domain || '';
+ const { active, styles, extended } = this.getCosmeticsFilters({
+ domain,
+ hostname,
+ url,
+ classes: msg.classes,
+ hrefs: msg.hrefs,
+ ids: msg.ids,
+ // Only done on first load in the frame, disable for updates
+ getBaseRules: false,
+ getInjectionRules: false,
+ getExtendedRules: false,
+ getRulesFromHostname: false,
+ // This will be done every time we get information about DOM mutation
+ getRulesFromDOM: true,
+ });
+ if (active === false) {
+ return;
+ }
+ // Inject custom stylesheets
+ this.injectStyles(event.sender, styles);
+ // Inject scripts from content script
+ event.sender.send('get-cosmetic-filters-response', {
+ active,
+ extended,
+ styles: '',
+ });
+ };
+ this.onHeadersReceived = (details, callback) => {
+ const CSP_HEADER_NAME = 'content-security-policy';
+ const policies = [];
+ const responseHeaders = details.responseHeaders || {};
+ if (details.resourceType === 'mainFrame' || details.resourceType === 'subFrame') {
+ const rawCSP = this.getCSPDirectives(fromElectronDetails(details));
+ if (rawCSP !== undefined) {
+ policies.push(...rawCSP.split(';').map((csp) => csp.trim()));
+ // Collect existing CSP headers from response
+ for (const [name, values] of Object.entries(responseHeaders)) {
+ if (name.toLowerCase() === CSP_HEADER_NAME) {
+ policies.push(...values);
+ delete responseHeaders[name];
+ }
+ }
+ responseHeaders[CSP_HEADER_NAME] = [policies.join(';')];
+ callback({ responseHeaders });
+ return;
+ }
+ }
+ callback({});
+ };
+ this.onBeforeRequest = (details, callback) => {
+ const request = fromElectronDetails(details);
+ if (this.config.guessRequestTypeFromUrl === true && request.type === 'other') {
+ request.guessTypeOfRequest();
+ }
+ if (request.isMainFrame()) {
+ callback({});
+ return;
+ }
+ const { redirect, match } = this.match(request);
+ if (redirect) {
+ callback({ redirectURL: redirect.dataUrl });
+ }
+ else if (match) {
+ callback({ cancel: true });
+ }
+ else {
+ callback({});
+ }
+ };
+ }
+ // ----------------------------------------------------------------------- //
+ // Helpers to enable and disable blocking for 'browser'
+ // ----------------------------------------------------------------------- //
+ enableBlockingInSession(session) {
+ let context = this.contexts.get(session);
+ if (context !== undefined) {
+ return context;
+ }
+ // Create new blocking context for `session`
+ context = new BlockingContext(session, this);
+ this.contexts.set(session, context);
+ context.enable();
+ return context;
+ }
+ disableBlockingInSession(session) {
+ const context = this.contexts.get(session);
+ if (context === undefined) {
+ throw new Error('Trying to disable blocking which was not enabled');
+ }
+ this.contexts.delete(session);
+ context.disable();
+ }
+ isBlockingEnabled(session) {
+ return this.contexts.has(session);
+ }
+ injectStyles(sender, styles) {
+ if (styles.length > 0) {
+ sender.insertCSS(styles, {
+ cssOrigin: 'user',
+ });
+ }
+ }
+}
+exports.ElectronBlocker = ElectronBlocker;
+// re-export @cliqz/adblocker symbols for convenience
+__exportStar(require("@cliqz/adblocker"), exports);
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js.map b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js.map
new file mode 100644
index 0000000..dc6d5d2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..7631b5e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/electron/electron.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/interface.d.ts","../../../../node_modules/tldts-core/dist/types/src/options.d.ts","../../../../node_modules/tldts-core/dist/types/src/factory.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts","../../../../node_modules/tldts-core/dist/types/index.d.ts","../../../../node_modules/tldts-experimental/dist/types/index.d.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../../adblocker-content/dist/types/adblocker.d.ts","../../../../node_modules/@remusao/smaz/dist/types/index.d.ts","../../../adblocker/dist/types/src/compression.d.ts","../../../adblocker/dist/types/src/data-view.d.ts","../../../adblocker/dist/types/src/config.d.ts","../../../adblocker/dist/types/src/events.d.ts","../../../adblocker/dist/types/src/fetch.d.ts","../../../adblocker/dist/types/src/html-filtering.d.ts","../../../adblocker/dist/types/src/engine/domains.d.ts","../../../adblocker/dist/types/src/filters/interface.d.ts","../../../adblocker/dist/types/src/filters/cosmetic.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../adblocker/dist/types/src/request.d.ts","../../../adblocker/dist/types/src/filters/network.d.ts","../../../adblocker/dist/types/src/lists.d.ts","../../../adblocker/dist/types/src/resources.d.ts","../../../adblocker/dist/types/src/engine/reverse-index.d.ts","../../../adblocker/dist/types/src/engine/bucket/filters.d.ts","../../../adblocker/dist/types/src/engine/bucket/cosmetic.d.ts","../../../adblocker/dist/types/src/engine/bucket/network.d.ts","../../../adblocker/dist/types/src/engine/map.d.ts","../../../adblocker/dist/types/src/engine/metadata/categories.d.ts","../../../adblocker/dist/types/src/engine/metadata/organizations.d.ts","../../../adblocker/dist/types/src/engine/metadata/patterns.d.ts","../../../adblocker/dist/types/src/engine/metadata.d.ts","../../../adblocker/dist/types/src/engine/engine.d.ts","../../../adblocker/dist/types/src/tokens-buffer.d.ts","../../../adblocker/dist/types/src/utils.d.ts","../../../adblocker/dist/types/src/encoding.d.ts","../../../adblocker/dist/types/adblocker.d.ts","../../../adblocker-electron-preload/dist/types/preload.d.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447",{"version":"3a763d6c7b8157bc7efdd8a2088eff19c2642b79e167e108242de8f2800f4646","affectsGlobalScope":true},"863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc","4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a","45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7","899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941","5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d","5de310f85a2c8f027298730a918cdd1806092870d86e082720cbc8c23fb5bad3","385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb","e63ee0eae662a3bf7b0ab60491a0e14456767572c9c3b08c2af989494e0f90f5","28f88f7c33b670d94afd4a65fa5af7fdbd38e8c32d3000e06cbb7a8f9a3bab82","618da36d858f0dd4d457a34f62e0ba4e7b2764617976636b6489ce39f4ddfc64","e0e6737c0ce3083935d30bcd22d4b8af2b6fe72f2696beab397dc77fdd2b16aa","b2a7a50de31ffe5a4390b3d2bcf99e6e81ccfece35354a6912681a42e1cac48b","8bd37f7f08b62741bf88faf6849f99def812a8c91aa66e3b50e38ec07a39bd4c","429e3e4e842bef7d5e4d45500b28c8c2a5ea9c68a957712243c1752cb14f7f41","0eb47a3e571a0841e865f1888f6a4a179a997e265d4703276698dc5afe49c240","dbeee582c2a52b3a349b2840c9a128a7854fb3fbe05b5f83cccd851192bc5c3d","d8597736df18af240ff776133e4919808445d9dc5cc1a80a1b8a6886884740d3","d121fe39fb9afa2677d7054ca1f32d2c1282a723d04fe48f6a453edf44df4f44","b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"5ac84442e5a39f0a57cddd42bbd66ac478f379540b87a4cf0db46e86fe1d87a7","a4efcdcdc9072a6a3cb21dc15b168c37e27a132a9740845e7f0b086a91144fca","b36d70f516d598332594843aea4c1c8163e820caa1814c64cf22459f374862bf","b4c0e3ab949262e9c29bcc2fdbf7c6f3ad49e38ad16591d4595ce6ad9b8a1696","2743e0253f64452f059868823461a1f0ef8af28363af0861adc874c0814737c5","22b5724c25bd9566185ff22883c147c16499581bec943e375e7b46a11595ee00","5c9c59ce79c5c9bca344e74fd2b7d44f83d65ef471fb5495794259aae3f0d77a","d49b411fb57c78789536e4905821b2db9b462b40ee1010c7446ffdc7d643bffa","3acaad96234248f01cc61fc90ff2cffe4dcbace901489cb4d74fe049c1337916","28e0c1d633485f7aefad1131444ac028ed3aef56d81b290eb056af5cf44e4401","2e9f23889a6def36c6772831baca9e70f760cb1bd095c5d0cdc0687f50960781","20c55860fd1e116fbb3716d71aa94a8aa68c274093cbb85ef08c327bdd8a6fca","67e0ea43565acc65f5f76996524d8f1cdc7e173742199ed994496f7f727a5b0f","1964c0f2a99d8df6e546fd618e46438e7b76d58c276696a0636298f7617380e4","6bdc48c8bf4abf522a9e2743a19e0d52f68daabfd66d5e9b583b2e9acc94f23e","8dbfc689648d2a052fc129d7743a7f82d7cf6011babcd6df7af0b65149a27173","cbcb382febe1e6d4b073daf940cbc05daae10a05e342fe7be1949a40fc60a36b","22e6cb6e003230acbeaa3a3f3d124d6bcb95783451d7242cf384a31f976f3857","438918a4f12e1ecb593930ca4f56c95e180ec3875731b80f4e84d7f1e02b5bea",{"version":"2836c652647ed63f83ab6f6dfff00faa66928f4999c1266050b498b583e92277","signature":"f93c221392b3c98ab73d1be71a6cbe02e72a33b069b045d89a71f6688ce8f873"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[186],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":true,"declaration":true,"declarationDir":"../types","declarationMap":true,"exactOptionalPropertyTypes":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[129],[99,102,128,129,136,188,189,190],[129,192],[129,160],[129,161,162,164],[129,163],[99,129,131,136,209,210,212],[129,211],[99,129,136],[50,129],[86,129],[87,92,120,129],[88,99,100,107,117,128,129],[88,89,99,107,129],[90,129],[91,92,100,108,129],[92,117,125,129],[93,95,99,107,129],[94,129],[95,96,129],[99,129],[97,99,129],[86,99,129],[99,100,101,117,128,129],[99,100,101,114,117,120,129],[84,129,133],[95,99,102,107,117,128,129],[99,100,102,103,107,117,125,128,129],[102,104,117,125,128,129],[50,51,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135],[99,105,129],[106,128,129,133],[95,99,107,117,129],[108,129],[109,129],[86,110,129],[111,127,129,133],[112,129],[113,129],[99,114,115,129],[114,116,129,131],[87,99,117,118,119,120,129],[87,117,119,129],[117,118,129],[120,129],[121,129],[86,117,129],[99,123,124,129],[123,124,129],[92,107,117,125,129],[126,129],[107,127,129],[87,102,113,128,129],[92,129],[117,129,130],[106,129,131],[129,132],[87,92,99,101,110,117,128,129,131,133],[117,129,134],[102,117,129,136],[129,221,260],[129,221,245,260],[129,260],[129,221],[129,221,246,260],[129,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259],[129,246,260],[129,192,262],[129,261],[99,117,129,136],[99,100,129,136],[129,198],[129,197,198],[129,197],[129,197,198,199,201,202,205,206,207,208],[129,198,202],[129,197,198,199,201,202,203,204],[129,197,202],[129,202,206],[129,198,199,200],[129,199],[129,197,198,202],[129,138,139,140,141],[129,138,139],[129,138],[129,142],[61,65,128,129],[61,117,128,129],[56,129],[58,61,125,128,129],[107,125,129],[129,136],[56,129,136],[58,61,107,128,129],[53,54,57,60,87,99,117,128,129],[53,59,129],[57,61,87,120,128,129,136],[87,129,136],[77,87,129,136],[55,56,129,136],[61,129],[55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,129],[61,68,69,129],[59,61,69,70,129],[60,129],[53,56,61,129],[61,65,69,70,129],[65,129],[59,61,64,128,129],[53,58,59,61,65,68,129],[87,117,129],[56,61,77,87,129,133,136],[129,148],[129,149],[129,137,143,184,185],[129,144,145,146,147],[129,144],[129,153,155,156,159,167,168,169,170,171,180,182,183],[129,150],[129,152],[129,151],[129,149,152,153,159,171,172],[129,152,153,158],[129,152,153,167,168,171,172],[129,149,153,154,155,156,159,167,168,169,170,173,174,179],[129,152,168,175,176,177,178],[129,152,175],[129,148,152,156,157,158],[129,152,157,158,167],[129,153,159,168],[129,165,166],[129,181],[184,185]],"referencedMap":[[150,1],[187,1],[191,2],[193,3],[192,1],[162,1],[161,4],[165,5],[194,1],[195,1],[196,1],[164,6],[163,1],[166,1],[160,1],[189,1],[211,7],[212,8],[213,1],[214,9],[215,1],[216,1],[217,1],[50,10],[51,10],[86,11],[87,12],[88,13],[89,14],[90,15],[91,16],[92,17],[93,18],[94,19],[95,20],[96,20],[98,21],[97,22],[99,23],[100,24],[101,25],[85,26],[135,1],[102,27],[103,28],[104,29],[136,30],[105,31],[106,32],[107,33],[108,34],[109,35],[110,36],[111,37],[112,38],[113,39],[114,40],[115,40],[116,41],[117,42],[119,43],[118,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,51],[127,52],[128,53],[129,54],[130,55],[131,56],[132,57],[133,58],[134,59],[218,1],[219,1],[220,1],[190,60],[245,61],[246,62],[221,63],[224,63],[243,61],[244,61],[234,61],[233,64],[231,61],[226,61],[239,61],[237,61],[241,61],[225,61],[238,61],[242,61],[227,61],[228,61],[240,61],[222,61],[229,61],[230,61],[232,61],[236,61],[247,65],[235,61],[223,61],[260,66],[259,1],[254,65],[256,67],[255,65],[248,65],[249,65],[251,65],[253,65],[257,67],[258,67],[250,67],[252,67],[263,68],[262,69],[261,1],[210,1],[264,70],[52,1],[137,71],[188,21],[199,72],[208,73],[197,1],[198,74],[209,75],[204,76],[205,77],[203,78],[207,79],[201,80],[200,81],[206,82],[202,73],[142,83],[140,84],[141,85],[138,1],[139,1],[143,86],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[68,87],[75,88],[67,87],[82,89],[59,90],[58,91],[81,92],[76,93],[79,94],[61,95],[60,96],[56,97],[55,98],[78,99],[57,100],[62,101],[63,1],[66,101],[53,1],[84,102],[83,101],[70,103],[71,104],[73,105],[69,106],[72,107],[77,92],[64,108],[65,109],[74,110],[54,111],[80,112],[149,113],[185,114],[186,115],[148,116],[146,117],[147,1],[145,117],[144,1],[184,118],[151,119],[153,120],[152,121],[183,1],[173,122],[172,123],[174,124],[157,120],[180,125],[175,120],[179,126],[176,127],[177,127],[178,127],[171,123],[154,1],[155,1],[159,128],[158,120],[168,129],[156,1],[169,130],[167,131],[170,120],[181,1],[182,132]],"exportedModulesMap":[[150,1],[187,1],[191,2],[193,3],[192,1],[162,1],[161,4],[165,5],[194,1],[195,1],[196,1],[164,6],[163,1],[166,1],[160,1],[189,1],[211,7],[212,8],[213,1],[214,9],[215,1],[216,1],[217,1],[50,10],[51,10],[86,11],[87,12],[88,13],[89,14],[90,15],[91,16],[92,17],[93,18],[94,19],[95,20],[96,20],[98,21],[97,22],[99,23],[100,24],[101,25],[85,26],[135,1],[102,27],[103,28],[104,29],[136,30],[105,31],[106,32],[107,33],[108,34],[109,35],[110,36],[111,37],[112,38],[113,39],[114,40],[115,40],[116,41],[117,42],[119,43],[118,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,51],[127,52],[128,53],[129,54],[130,55],[131,56],[132,57],[133,58],[134,59],[218,1],[219,1],[220,1],[190,60],[245,61],[246,62],[221,63],[224,63],[243,61],[244,61],[234,61],[233,64],[231,61],[226,61],[239,61],[237,61],[241,61],[225,61],[238,61],[242,61],[227,61],[228,61],[240,61],[222,61],[229,61],[230,61],[232,61],[236,61],[247,65],[235,61],[223,61],[260,66],[259,1],[254,65],[256,67],[255,65],[248,65],[249,65],[251,65],[253,65],[257,67],[258,67],[250,67],[252,67],[263,68],[262,69],[261,1],[210,1],[264,70],[52,1],[137,71],[188,21],[199,72],[208,73],[197,1],[198,74],[209,75],[204,76],[205,77],[203,78],[207,79],[201,80],[200,81],[206,82],[202,73],[142,83],[140,84],[141,85],[138,1],[139,1],[143,86],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[68,87],[75,88],[67,87],[82,89],[59,90],[58,91],[81,92],[76,93],[79,94],[61,95],[60,96],[56,97],[55,98],[78,99],[57,100],[62,101],[63,1],[66,101],[53,1],[84,102],[83,101],[70,103],[71,104],[73,105],[69,106],[72,107],[77,92],[64,108],[65,109],[74,110],[54,111],[80,112],[149,113],[185,114],[186,133],[148,116],[146,117],[147,1],[145,117],[144,1],[184,118],[151,119],[153,120],[152,121],[183,1],[173,122],[172,123],[174,124],[157,120],[180,125],[175,120],[179,126],[176,127],[177,127],[178,127],[171,123],[154,1],[155,1],[159,128],[158,120],[168,129],[156,1],[169,130],[167,131],[170,120],[181,1],[182,132]],"semanticDiagnosticsPerFile":[150,187,191,193,192,162,161,165,194,195,196,164,163,166,160,189,211,212,213,214,215,216,217,50,51,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,85,135,102,103,104,136,105,106,107,108,109,110,111,112,113,114,115,116,117,119,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,218,219,220,190,245,246,221,224,243,244,234,233,231,226,239,237,241,225,238,242,227,228,240,222,229,230,232,236,247,235,223,260,259,254,256,255,248,249,251,253,257,258,250,252,263,262,261,210,264,52,137,188,199,208,197,198,209,204,205,203,207,201,200,206,202,142,140,141,138,139,143,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,68,75,67,82,59,58,81,76,79,61,60,56,55,78,57,62,63,66,53,84,83,70,71,73,69,72,77,64,65,74,54,80,149,185,186,148,146,147,145,144,184,151,153,152,183,173,172,174,157,180,175,179,176,177,178,171,154,155,159,158,168,156,169,167,170,181,182],"latestChangedDtsFile":"../types/adblocker.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js b/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js
new file mode 100644
index 0000000..d8a658e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js
@@ -0,0 +1,234 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { ipcMain } from 'electron';
+import { parse } from 'tldts-experimental';
+import { FiltersEngine, Request } from '@cliqz/adblocker';
+const PRELOAD_PATH = require.resolve('@cliqz/adblocker-electron-preload');
+// https://stackoverflow.com/questions/48854265/why-do-i-see-an-electron-security-warning-after-updating-my-electron-project-t
+process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';
+/**
+ * Create an instance of `Request` from `Electron.OnBeforeRequestDetails`.
+ */
+export function fromElectronDetails(details) {
+ const { id, url, resourceType, referrer, webContentsId } = details;
+ return Request.fromRawDetails(webContentsId
+ ? {
+ _originalRequestDetails: details,
+ requestId: `${id}`,
+ sourceUrl: referrer,
+ tabId: webContentsId,
+ type: (resourceType || 'other'),
+ url,
+ }
+ : {
+ _originalRequestDetails: details,
+ requestId: `${id}`,
+ sourceUrl: referrer,
+ type: (resourceType || 'other'),
+ url,
+ });
+}
+/**
+ * This abstraction takes care of blocking in one instance of `Electron.Session`.
+ */
+export class BlockingContext {
+ constructor(session, blocker) {
+ this.session = session;
+ this.blocker = blocker;
+ this.onBeforeRequest = (details, callback) => blocker.onBeforeRequest(details, callback);
+ this.onGetCosmeticFiltersFirst = (event, url) => blocker.onGetCosmeticFiltersFirst(event, url);
+ this.onGetCosmeticFiltersUpdated = (event, url, msg) => blocker.onGetCosmeticFiltersUpdated(event, url, msg);
+ this.onHeadersReceived = (details, callback) => blocker.onHeadersReceived(details, callback);
+ this.onIsMutationObserverEnabled = (event) => blocker.onIsMutationObserverEnabled(event);
+ }
+ enable() {
+ if (this.blocker.config.loadCosmeticFilters === true) {
+ this.session.setPreloads(this.session.getPreloads().concat([PRELOAD_PATH]));
+ ipcMain.on('get-cosmetic-filters-first', this.onGetCosmeticFiltersFirst);
+ ipcMain.on('get-cosmetic-filters', this.onGetCosmeticFiltersUpdated);
+ ipcMain.on('is-mutation-observer-enabled', this.onIsMutationObserverEnabled);
+ }
+ if (this.blocker.config.loadNetworkFilters === true) {
+ this.session.webRequest.onHeadersReceived({ urls: ['<all_urls>'] }, this.onHeadersReceived);
+ this.session.webRequest.onBeforeRequest({ urls: ['<all_urls>'] }, this.onBeforeRequest);
+ }
+ }
+ disable() {
+ if (this.blocker.config.loadNetworkFilters === true) {
+ // NOTE - there is currently no support in Electron for multiple
+ // webRequest listeners registered for the same event. This means that
+ // adblocker's listeners can be overriden by other ones in the same
+ // application (or that the adblocker can override another listener
+ // registered previously). Because of this, the only way to disable the
+ // adblocker is to remove all listeners for the events we are interested
+ // in. In the future, we should consider implementing a webRequest
+ // pipeline allowing to register multiple listeners for the same event.
+ this.session.webRequest.onHeadersReceived(null);
+ this.session.webRequest.onBeforeRequest(null);
+ }
+ if (this.blocker.config.loadCosmeticFilters === true) {
+ this.session.setPreloads(this.session.getPreloads().filter((p) => p !== PRELOAD_PATH));
+ ipcMain.removeListener('get-cosmetic-filters', this.onGetCosmeticFiltersUpdated);
+ }
+ }
+}
+/**
+ * Wrap `FiltersEngine` into a Electron-friendly helper class. It exposes
+ * methods to interface with Electron APIs needed to block ads.
+ */
+export class ElectronBlocker extends FiltersEngine {
+ constructor() {
+ super(...arguments);
+ this.contexts = new WeakMap();
+ // ----------------------------------------------------------------------- //
+ // ElectronBlocker-specific additions to FiltersEngine
+ // ----------------------------------------------------------------------- //
+ this.onIsMutationObserverEnabled = (event) => {
+ event.returnValue = this.config.enableMutationObserver;
+ };
+ this.onGetCosmeticFiltersFirst = (event, url) => {
+ // Extract hostname from sender's URL
+ const parsed = parse(url);
+ const hostname = parsed.hostname || '';
+ const domain = parsed.domain || '';
+ const { active, styles, scripts, extended } = this.getCosmeticsFilters({
+ domain,
+ hostname,
+ url,
+ // This needs to be done only once per frame
+ getBaseRules: true,
+ getInjectionRules: true,
+ getExtendedRules: true,
+ getRulesFromHostname: true,
+ getRulesFromDOM: false, // Only done on updates (see `onGetCosmeticFiltersUpdated`)
+ });
+ if (active === false) {
+ event.returnValue = null;
+ return;
+ }
+ // Inject custom stylesheets
+ this.injectStyles(event.sender, styles);
+ event.sender.send('get-cosmetic-filters-response', {
+ active,
+ extended,
+ styles: '',
+ });
+ // to execute Inject scripts synchronously, simply return scripts to renderer.
+ event.returnValue = scripts;
+ };
+ this.onGetCosmeticFiltersUpdated = (event, url, msg) => {
+ // Extract hostname from sender's URL
+ const parsed = parse(url);
+ const hostname = parsed.hostname || '';
+ const domain = parsed.domain || '';
+ const { active, styles, extended } = this.getCosmeticsFilters({
+ domain,
+ hostname,
+ url,
+ classes: msg.classes,
+ hrefs: msg.hrefs,
+ ids: msg.ids,
+ // Only done on first load in the frame, disable for updates
+ getBaseRules: false,
+ getInjectionRules: false,
+ getExtendedRules: false,
+ getRulesFromHostname: false,
+ // This will be done every time we get information about DOM mutation
+ getRulesFromDOM: true,
+ });
+ if (active === false) {
+ return;
+ }
+ // Inject custom stylesheets
+ this.injectStyles(event.sender, styles);
+ // Inject scripts from content script
+ event.sender.send('get-cosmetic-filters-response', {
+ active,
+ extended,
+ styles: '',
+ });
+ };
+ this.onHeadersReceived = (details, callback) => {
+ const CSP_HEADER_NAME = 'content-security-policy';
+ const policies = [];
+ const responseHeaders = details.responseHeaders || {};
+ if (details.resourceType === 'mainFrame' || details.resourceType === 'subFrame') {
+ const rawCSP = this.getCSPDirectives(fromElectronDetails(details));
+ if (rawCSP !== undefined) {
+ policies.push(...rawCSP.split(';').map((csp) => csp.trim()));
+ // Collect existing CSP headers from response
+ for (const [name, values] of Object.entries(responseHeaders)) {
+ if (name.toLowerCase() === CSP_HEADER_NAME) {
+ policies.push(...values);
+ delete responseHeaders[name];
+ }
+ }
+ responseHeaders[CSP_HEADER_NAME] = [policies.join(';')];
+ callback({ responseHeaders });
+ return;
+ }
+ }
+ callback({});
+ };
+ this.onBeforeRequest = (details, callback) => {
+ const request = fromElectronDetails(details);
+ if (this.config.guessRequestTypeFromUrl === true && request.type === 'other') {
+ request.guessTypeOfRequest();
+ }
+ if (request.isMainFrame()) {
+ callback({});
+ return;
+ }
+ const { redirect, match } = this.match(request);
+ if (redirect) {
+ callback({ redirectURL: redirect.dataUrl });
+ }
+ else if (match) {
+ callback({ cancel: true });
+ }
+ else {
+ callback({});
+ }
+ };
+ }
+ // ----------------------------------------------------------------------- //
+ // Helpers to enable and disable blocking for 'browser'
+ // ----------------------------------------------------------------------- //
+ enableBlockingInSession(session) {
+ let context = this.contexts.get(session);
+ if (context !== undefined) {
+ return context;
+ }
+ // Create new blocking context for `session`
+ context = new BlockingContext(session, this);
+ this.contexts.set(session, context);
+ context.enable();
+ return context;
+ }
+ disableBlockingInSession(session) {
+ const context = this.contexts.get(session);
+ if (context === undefined) {
+ throw new Error('Trying to disable blocking which was not enabled');
+ }
+ this.contexts.delete(session);
+ context.disable();
+ }
+ isBlockingEnabled(session) {
+ return this.contexts.has(session);
+ }
+ injectStyles(sender, styles) {
+ if (styles.length > 0) {
+ sender.insertCSS(styles, {
+ cssOrigin: 'user',
+ });
+ }
+ }
+}
+// re-export @cliqz/adblocker symbols for convenience
+export * from '@cliqz/adblocker';
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js.map b/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js.map
new file mode 100644
index 0000000..56254d5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/es6/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@cliqz/adblocker-electron/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..f481c38
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/electron/electron.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/interface.d.ts","../../../../node_modules/tldts-core/dist/types/src/options.d.ts","../../../../node_modules/tldts-core/dist/types/src/factory.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts","../../../../node_modules/tldts-core/dist/types/index.d.ts","../../../../node_modules/tldts-experimental/dist/types/index.d.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../../adblocker-content/dist/types/adblocker.d.ts","../../../../node_modules/@remusao/smaz/dist/types/index.d.ts","../../../adblocker/dist/types/src/compression.d.ts","../../../adblocker/dist/types/src/data-view.d.ts","../../../adblocker/dist/types/src/config.d.ts","../../../adblocker/dist/types/src/events.d.ts","../../../adblocker/dist/types/src/fetch.d.ts","../../../adblocker/dist/types/src/html-filtering.d.ts","../../../adblocker/dist/types/src/engine/domains.d.ts","../../../adblocker/dist/types/src/filters/interface.d.ts","../../../adblocker/dist/types/src/filters/cosmetic.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../adblocker/dist/types/src/request.d.ts","../../../adblocker/dist/types/src/filters/network.d.ts","../../../adblocker/dist/types/src/lists.d.ts","../../../adblocker/dist/types/src/resources.d.ts","../../../adblocker/dist/types/src/engine/reverse-index.d.ts","../../../adblocker/dist/types/src/engine/bucket/filters.d.ts","../../../adblocker/dist/types/src/engine/bucket/cosmetic.d.ts","../../../adblocker/dist/types/src/engine/bucket/network.d.ts","../../../adblocker/dist/types/src/engine/map.d.ts","../../../adblocker/dist/types/src/engine/metadata/categories.d.ts","../../../adblocker/dist/types/src/engine/metadata/organizations.d.ts","../../../adblocker/dist/types/src/engine/metadata/patterns.d.ts","../../../adblocker/dist/types/src/engine/metadata.d.ts","../../../adblocker/dist/types/src/engine/engine.d.ts","../../../adblocker/dist/types/src/tokens-buffer.d.ts","../../../adblocker/dist/types/src/utils.d.ts","../../../adblocker/dist/types/src/encoding.d.ts","../../../adblocker/dist/types/adblocker.d.ts","../../../adblocker-electron-preload/dist/types/preload.d.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447",{"version":"3a763d6c7b8157bc7efdd8a2088eff19c2642b79e167e108242de8f2800f4646","affectsGlobalScope":true},"863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc","4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a","45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7","899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941","5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d","5de310f85a2c8f027298730a918cdd1806092870d86e082720cbc8c23fb5bad3","385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb","e63ee0eae662a3bf7b0ab60491a0e14456767572c9c3b08c2af989494e0f90f5","28f88f7c33b670d94afd4a65fa5af7fdbd38e8c32d3000e06cbb7a8f9a3bab82","618da36d858f0dd4d457a34f62e0ba4e7b2764617976636b6489ce39f4ddfc64","e0e6737c0ce3083935d30bcd22d4b8af2b6fe72f2696beab397dc77fdd2b16aa","b2a7a50de31ffe5a4390b3d2bcf99e6e81ccfece35354a6912681a42e1cac48b","8bd37f7f08b62741bf88faf6849f99def812a8c91aa66e3b50e38ec07a39bd4c","429e3e4e842bef7d5e4d45500b28c8c2a5ea9c68a957712243c1752cb14f7f41","0eb47a3e571a0841e865f1888f6a4a179a997e265d4703276698dc5afe49c240","dbeee582c2a52b3a349b2840c9a128a7854fb3fbe05b5f83cccd851192bc5c3d","d8597736df18af240ff776133e4919808445d9dc5cc1a80a1b8a6886884740d3","d121fe39fb9afa2677d7054ca1f32d2c1282a723d04fe48f6a453edf44df4f44","b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"5ac84442e5a39f0a57cddd42bbd66ac478f379540b87a4cf0db46e86fe1d87a7","a4efcdcdc9072a6a3cb21dc15b168c37e27a132a9740845e7f0b086a91144fca","b36d70f516d598332594843aea4c1c8163e820caa1814c64cf22459f374862bf","b4c0e3ab949262e9c29bcc2fdbf7c6f3ad49e38ad16591d4595ce6ad9b8a1696","2743e0253f64452f059868823461a1f0ef8af28363af0861adc874c0814737c5","22b5724c25bd9566185ff22883c147c16499581bec943e375e7b46a11595ee00","5c9c59ce79c5c9bca344e74fd2b7d44f83d65ef471fb5495794259aae3f0d77a","d49b411fb57c78789536e4905821b2db9b462b40ee1010c7446ffdc7d643bffa","3acaad96234248f01cc61fc90ff2cffe4dcbace901489cb4d74fe049c1337916","28e0c1d633485f7aefad1131444ac028ed3aef56d81b290eb056af5cf44e4401","2e9f23889a6def36c6772831baca9e70f760cb1bd095c5d0cdc0687f50960781","20c55860fd1e116fbb3716d71aa94a8aa68c274093cbb85ef08c327bdd8a6fca","67e0ea43565acc65f5f76996524d8f1cdc7e173742199ed994496f7f727a5b0f","1964c0f2a99d8df6e546fd618e46438e7b76d58c276696a0636298f7617380e4","6bdc48c8bf4abf522a9e2743a19e0d52f68daabfd66d5e9b583b2e9acc94f23e","8dbfc689648d2a052fc129d7743a7f82d7cf6011babcd6df7af0b65149a27173","cbcb382febe1e6d4b073daf940cbc05daae10a05e342fe7be1949a40fc60a36b","22e6cb6e003230acbeaa3a3f3d124d6bcb95783451d7242cf384a31f976f3857","438918a4f12e1ecb593930ca4f56c95e180ec3875731b80f4e84d7f1e02b5bea","2836c652647ed63f83ab6f6dfff00faa66928f4999c1266050b498b583e92277","d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[186],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":false,"declaration":false,"declarationDir":"../..","declarationMap":false,"exactOptionalPropertyTypes":true,"module":5,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[129],[99,102,128,129,136,188,189,190],[129,192],[129,160],[129,161,162,164],[129,163],[99,129,131,136,209,210,212],[129,211],[99,129,136],[50,129],[86,129],[87,92,120,129],[88,99,100,107,117,128,129],[88,89,99,107,129],[90,129],[91,92,100,108,129],[92,117,125,129],[93,95,99,107,129],[94,129],[95,96,129],[99,129],[97,99,129],[86,99,129],[99,100,101,117,128,129],[99,100,101,114,117,120,129],[84,129,133],[95,99,102,107,117,128,129],[99,100,102,103,107,117,125,128,129],[102,104,117,125,128,129],[50,51,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135],[99,105,129],[106,128,129,133],[95,99,107,117,129],[108,129],[109,129],[86,110,129],[111,127,129,133],[112,129],[113,129],[99,114,115,129],[114,116,129,131],[87,99,117,118,119,120,129],[87,117,119,129],[117,118,129],[120,129],[121,129],[86,117,129],[99,123,124,129],[123,124,129],[92,107,117,125,129],[126,129],[107,127,129],[87,102,113,128,129],[92,129],[117,129,130],[106,129,131],[129,132],[87,92,99,101,110,117,128,129,131,133],[117,129,134],[102,117,129,136],[129,221,260],[129,221,245,260],[129,260],[129,221],[129,221,246,260],[129,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259],[129,246,260],[129,192,262],[129,261],[99,117,129,136],[99,100,129,136],[129,198],[129,197,198],[129,197],[129,197,198,199,201,202,205,206,207,208],[129,198,202],[129,197,198,199,201,202,203,204],[129,197,202],[129,202,206],[129,198,199,200],[129,199],[129,197,198,202],[129,138,139,140,141],[129,138,139],[129,138],[129,142],[61,65,128,129],[61,117,128,129],[56,129],[58,61,125,128,129],[107,125,129],[129,136],[56,129,136],[58,61,107,128,129],[53,54,57,60,87,99,117,128,129],[53,59,129],[57,61,87,120,128,129,136],[87,129,136],[77,87,129,136],[55,56,129,136],[61,129],[55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82,83,129],[61,68,69,129],[59,61,69,70,129],[60,129],[53,56,61,129],[61,65,69,70,129],[65,129],[59,61,64,128,129],[53,58,59,61,65,68,129],[87,117,129],[56,61,77,87,129,133,136],[129,148],[129,149],[129,137,143,184,185],[129,144,145,146,147],[129,144],[129,153,155,156,159,167,168,169,170,171,180,182,183],[129,150],[129,152],[129,151],[129,149,152,153,159,171,172],[129,152,153,158],[129,152,153,167,168,171,172],[129,149,153,154,155,156,159,167,168,169,170,173,174,179],[129,152,168,175,176,177,178],[129,152,175],[129,148,152,156,157,158],[129,152,157,158,167],[129,153,159,168],[129,165,166],[129,181]],"referencedMap":[[150,1],[187,1],[191,2],[193,3],[192,1],[162,1],[161,4],[165,5],[194,1],[195,1],[196,1],[164,6],[163,1],[166,1],[160,1],[189,1],[211,7],[212,8],[213,1],[214,9],[215,1],[216,1],[217,1],[50,10],[51,10],[86,11],[87,12],[88,13],[89,14],[90,15],[91,16],[92,17],[93,18],[94,19],[95,20],[96,20],[98,21],[97,22],[99,23],[100,24],[101,25],[85,26],[135,1],[102,27],[103,28],[104,29],[136,30],[105,31],[106,32],[107,33],[108,34],[109,35],[110,36],[111,37],[112,38],[113,39],[114,40],[115,40],[116,41],[117,42],[119,43],[118,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,51],[127,52],[128,53],[129,54],[130,55],[131,56],[132,57],[133,58],[134,59],[218,1],[219,1],[220,1],[190,60],[245,61],[246,62],[221,63],[224,63],[243,61],[244,61],[234,61],[233,64],[231,61],[226,61],[239,61],[237,61],[241,61],[225,61],[238,61],[242,61],[227,61],[228,61],[240,61],[222,61],[229,61],[230,61],[232,61],[236,61],[247,65],[235,61],[223,61],[260,66],[259,1],[254,65],[256,67],[255,65],[248,65],[249,65],[251,65],[253,65],[257,67],[258,67],[250,67],[252,67],[263,68],[262,69],[261,1],[210,1],[264,70],[52,1],[137,71],[188,21],[199,72],[208,73],[197,1],[198,74],[209,75],[204,76],[205,77],[203,78],[207,79],[201,80],[200,81],[206,82],[202,73],[142,83],[140,84],[141,85],[138,1],[139,1],[143,86],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[68,87],[75,88],[67,87],[82,89],[59,90],[58,91],[81,92],[76,93],[79,94],[61,95],[60,96],[56,97],[55,98],[78,99],[57,100],[62,101],[63,1],[66,101],[53,1],[84,102],[83,101],[70,103],[71,104],[73,105],[69,106],[72,107],[77,92],[64,108],[65,109],[74,110],[54,111],[80,112],[149,113],[185,114],[186,115],[148,116],[146,117],[147,1],[145,117],[144,1],[184,118],[151,119],[153,120],[152,121],[183,1],[173,122],[172,123],[174,124],[157,120],[180,125],[175,120],[179,126],[176,127],[177,127],[178,127],[171,123],[154,1],[155,1],[159,128],[158,120],[168,129],[156,1],[169,130],[167,131],[170,120],[181,1],[182,132]],"exportedModulesMap":[[150,1],[187,1],[191,2],[193,3],[192,1],[162,1],[161,4],[165,5],[194,1],[195,1],[196,1],[164,6],[163,1],[166,1],[160,1],[189,1],[211,7],[212,8],[213,1],[214,9],[215,1],[216,1],[217,1],[50,10],[51,10],[86,11],[87,12],[88,13],[89,14],[90,15],[91,16],[92,17],[93,18],[94,19],[95,20],[96,20],[98,21],[97,22],[99,23],[100,24],[101,25],[85,26],[135,1],[102,27],[103,28],[104,29],[136,30],[105,31],[106,32],[107,33],[108,34],[109,35],[110,36],[111,37],[112,38],[113,39],[114,40],[115,40],[116,41],[117,42],[119,43],[118,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,51],[127,52],[128,53],[129,54],[130,55],[131,56],[132,57],[133,58],[134,59],[218,1],[219,1],[220,1],[190,60],[245,61],[246,62],[221,63],[224,63],[243,61],[244,61],[234,61],[233,64],[231,61],[226,61],[239,61],[237,61],[241,61],[225,61],[238,61],[242,61],[227,61],[228,61],[240,61],[222,61],[229,61],[230,61],[232,61],[236,61],[247,65],[235,61],[223,61],[260,66],[259,1],[254,65],[256,67],[255,65],[248,65],[249,65],[251,65],[253,65],[257,67],[258,67],[250,67],[252,67],[263,68],[262,69],[261,1],[210,1],[264,70],[52,1],[137,71],[188,21],[199,72],[208,73],[197,1],[198,74],[209,75],[204,76],[205,77],[203,78],[207,79],[201,80],[200,81],[206,82],[202,73],[142,83],[140,84],[141,85],[138,1],[139,1],[143,86],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[68,87],[75,88],[67,87],[82,89],[59,90],[58,91],[81,92],[76,93],[79,94],[61,95],[60,96],[56,97],[55,98],[78,99],[57,100],[62,101],[63,1],[66,101],[53,1],[84,102],[83,101],[70,103],[71,104],[73,105],[69,106],[72,107],[77,92],[64,108],[65,109],[74,110],[54,111],[80,112],[149,113],[185,114],[186,115],[148,116],[146,117],[147,1],[145,117],[144,1],[184,118],[151,119],[153,120],[152,121],[183,1],[173,122],[172,123],[174,124],[157,120],[180,125],[175,120],[179,126],[176,127],[177,127],[178,127],[171,123],[154,1],[155,1],[159,128],[158,120],[168,129],[156,1],[169,130],[167,131],[170,120],[181,1],[182,132]],"semanticDiagnosticsPerFile":[150,187,191,193,192,162,161,165,194,195,196,164,163,166,160,189,211,212,213,214,215,216,217,50,51,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,85,135,102,103,104,136,105,106,107,108,109,110,111,112,113,114,115,116,117,119,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,218,219,220,190,245,246,221,224,243,244,234,233,231,226,239,237,241,225,238,242,227,228,240,222,229,230,232,236,247,235,223,260,259,254,256,255,248,249,251,253,257,258,250,252,263,262,261,210,264,52,137,188,199,208,197,198,209,204,205,203,207,201,200,206,202,142,140,141,138,139,143,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,68,75,67,82,59,58,81,76,79,61,60,56,55,78,57,62,63,66,53,84,83,70,71,73,69,72,77,64,65,74,54,80,149,185,186,148,146,147,145,144,184,151,153,152,183,173,172,174,157,180,175,179,176,177,178,171,154,155,159,158,168,156,169,167,170,181,182]},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts b/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts
new file mode 100644
index 0000000..ab28ec0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts
@@ -0,0 +1,46 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { FiltersEngine, Request } from '@cliqz/adblocker';
+import type { IBackgroundCallback } from '@cliqz/adblocker-electron-preload';
+/**
+ * Create an instance of `Request` from `Electron.OnBeforeRequestDetails`.
+ */
+export declare function fromElectronDetails(details: Electron.OnHeadersReceivedListenerDetails | Electron.OnBeforeRequestListenerDetails): Request;
+/**
+ * This abstraction takes care of blocking in one instance of `Electron.Session`.
+ */
+export declare class BlockingContext {
+ private readonly session;
+ private readonly blocker;
+ private readonly onBeforeRequest;
+ private readonly onGetCosmeticFiltersUpdated;
+ private readonly onGetCosmeticFiltersFirst;
+ private readonly onHeadersReceived;
+ private readonly onIsMutationObserverEnabled;
+ constructor(session: Electron.Session, blocker: ElectronBlocker);
+ enable(): void;
+ disable(): void;
+}
+/**
+ * Wrap `FiltersEngine` into a Electron-friendly helper class. It exposes
+ * methods to interface with Electron APIs needed to block ads.
+ */
+export declare class ElectronBlocker extends FiltersEngine {
+ private readonly contexts;
+ enableBlockingInSession(session: Electron.Session): BlockingContext;
+ disableBlockingInSession(session: Electron.Session): void;
+ isBlockingEnabled(session: Electron.Session): boolean;
+ onIsMutationObserverEnabled: (event: Electron.IpcMainEvent) => void;
+ onGetCosmeticFiltersFirst: (event: Electron.IpcMainEvent, url: string) => void;
+ onGetCosmeticFiltersUpdated: (event: Electron.IpcMainEvent, url: string, msg: IBackgroundCallback) => void;
+ onHeadersReceived: (details: Electron.OnHeadersReceivedListenerDetails, callback: (a: Electron.HeadersReceivedResponse) => void) => void;
+ onBeforeRequest: (details: Electron.OnBeforeRequestListenerDetails, callback: (a: Electron.CallbackResponse) => void) => void;
+ private injectStyles;
+}
+export * from '@cliqz/adblocker';
+//# sourceMappingURL=adblocker.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts.map b/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts.map
new file mode 100644
index 0000000..1ae2cbd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/dist/types/adblocker.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.d.ts","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAuB,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAO3C;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,QAAQ,CAAC,gCAAgC,GAAG,QAAQ,CAAC,8BAA8B,GAC3F,OAAO,CAoBT;AAED;;GAEG;AACH,qBAAa,eAAe;IAsBxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtB1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAGtB;IAEV,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAIlC;IAEV,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAsD;IAEhG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAGxB;IAEV,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAyC;gBAGlE,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,eAAe;IAWpC,MAAM,IAAI,IAAI;IAcd,OAAO,IAAI,IAAI;CAmBvB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6D;IAM/E,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,eAAe;IAcnE,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI;IAUzD,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO;IAQrD,2BAA2B,UAAW,SAAS,YAAY,KAAG,IAAI,CAEvE;IAEK,yBAAyB,UAAW,SAAS,YAAY,OAAO,MAAM,UAmC3E;IAEK,2BAA2B,UACzB,SAAS,YAAY,OACvB,MAAM,OACN,mBAAmB,KACvB,IAAI,CAsCL;IAEK,iBAAiB,YACb,SAAS,gCAAgC,gBACpC,SAAS,uBAAuB,KAAK,IAAI,KACtD,IAAI,CA0BL;IAEK,eAAe,YACX,SAAS,8BAA8B,gBAClC,SAAS,gBAAgB,KAAK,IAAI,KAC/C,IAAI,CAoBL;IAEF,OAAO,CAAC,YAAY;CAOrB;AAGD,cAAc,kBAAkB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-electron/package.json b/client/node_modules/@cliqz/adblocker-electron/package.json
new file mode 100644
index 0000000..25ea5ff
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-electron/package.json
@@ -0,0 +1,91 @@
+{
+ "name": "@cliqz/adblocker-electron",
+ "version": "1.26.12",
+ "description": "Cliqz adblocker Electron wrapper",
+ "author": {
+ "name": "Cliqz"
+ },
+ "homepage": "https://github.com/cliqz-oss/adblocker#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/adblocker.js",
+ "module": "dist/es6/adblocker.js",
+ "types": "dist/types/adblocker.d.ts",
+ "files": [
+ "LICENSE",
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/cliqz-oss/adblocker.git",
+ "directory": "packages/adblocker-electron"
+ },
+ "bugs": {
+ "url": "https://github.com/cliqz-oss/adblocker/issues"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "eslint adblocker.ts",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha --config ../../.mocharc.js"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ },
+ "dependencies": {
+ "@cliqz/adblocker": "^1.26.12",
+ "@cliqz/adblocker-electron-preload": "^1.26.12",
+ "tldts-experimental": "^6.0.14"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.3.6",
+ "@types/mocha": "^10.0.1",
+ "chai": "^4.3.8",
+ "electron": "^27.0.0",
+ "eslint": "^8.49.0",
+ "mocha": "^10.2.0",
+ "nyc": "^15.1.0",
+ "rimraf": "^5.0.1",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.2.2"
+ },
+ "contributors": [
+ {
+ "name": "Rémi Berson",
+ "email": "remi@cliqz.com"
+ },
+ {
+ "name": "Zhonghao Yu",
+ "email": "zhonghao@cliqz.com"
+ },
+ {
+ "name": "Krzysztof Jan Modras",
+ "email": "chrmod@chrmod.net"
+ },
+ {
+ "name": "Raymond Hill",
+ "email": "gorhill@users.noreply.github.com"
+ },
+ {
+ "name": "Eleni",
+ "email": "eleni@cliqz.com"
+ },
+ {
+ "name": "ecnmst",
+ "email": "ecnmst@users.noreply.github.com"
+ },
+ {
+ "name": "Asif",
+ "email": "arshadasif0312@gmail.com"
+ },
+ {
+ "name": "Anton Lazarev",
+ "email": "antonok35@gmail.com"
+ }
+ ],
+ "gitHead": "c4df10bc5ba2498ac5f1670c4a829709da7380e7"
+}
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/LICENSE b/client/node_modules/@cliqz/adblocker-extended-selectors/LICENSE
new file mode 100644
index 0000000..11ce717
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/LICENSE
@@ -0,0 +1,375 @@
+Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0. \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/README.md b/client/node_modules/@cliqz/adblocker-extended-selectors/README.md
new file mode 100644
index 0000000..62dd02e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/README.md
@@ -0,0 +1,46 @@
+<h1 align="center">@cliqz/adblocker-extended-selectors</h2>
+
+<p align="center">
+ <em>
+ Efficient
+ · Minimal
+ · JavaScript
+ · TypeScript
+ · uBlock Origin- and Easylist-compatible
+ </em>
+ <br />
+ <em>
+ <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker">Node.js</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-puppeteer">Puppeteer</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron">Electron</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-webextension">WebExtension</a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3ATests">
+ <img alt="Github Actions Build Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Tests?label=tests&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3Assets">
+ <img alt="Github Actions Assets Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Assets?label=assets&style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="npm version" src="https://img.shields.io/npm/v/@cliqz/adblocker.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/@cliqz/adblocker.svg?style=flat-square"></a>
+ <br/>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://twitter.com/cliqz">
+ <img alt="Follow Cliqz on Twitter" src="https://img.shields.io/twitter/follow/cliqz.svg?label=follow+cliqz&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker">
+ <img alt="Dependabot" src="https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/blob/master/LICENSE">
+ <img alt="License Badge" src="https://img.shields.io/github/license/cliqz-oss/adblocker?style=flat-square"></a>
+ <a href="https://lgtm.com/projects/g/cliqz-oss/adblocker?mode=list">
+ <img alt="LGTM Badge" src="https://img.shields.io/lgtm/alerts/github/cliqz-oss/adblocker?style=flat-square"></a>
+</p>
+
+---
+
+This package is part of [@cliqz/adblocker](https://github.com/cliqz-oss/adblocker).
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js
new file mode 100644
index 0000000..c44692c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js
@@ -0,0 +1,38 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.classifySelector = exports.SelectorType = exports.PSEUDO_ELEMENTS = exports.PSEUDO_CLASSES = exports.EXTENDED_PSEUDO_CLASSES = exports.matches = exports.querySelectorAll = exports.tokenize = exports.parse = void 0;
+var parse_1 = require("./src/parse");
+Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_1.parse; } });
+Object.defineProperty(exports, "tokenize", { enumerable: true, get: function () { return parse_1.tokenize; } });
+var eval_1 = require("./src/eval");
+Object.defineProperty(exports, "querySelectorAll", { enumerable: true, get: function () { return eval_1.querySelectorAll; } });
+Object.defineProperty(exports, "matches", { enumerable: true, get: function () { return eval_1.matches; } });
+__exportStar(require("./src/types"), exports);
+var extended_1 = require("./src/extended");
+Object.defineProperty(exports, "EXTENDED_PSEUDO_CLASSES", { enumerable: true, get: function () { return extended_1.EXTENDED_PSEUDO_CLASSES; } });
+Object.defineProperty(exports, "PSEUDO_CLASSES", { enumerable: true, get: function () { return extended_1.PSEUDO_CLASSES; } });
+Object.defineProperty(exports, "PSEUDO_ELEMENTS", { enumerable: true, get: function () { return extended_1.PSEUDO_ELEMENTS; } });
+Object.defineProperty(exports, "SelectorType", { enumerable: true, get: function () { return extended_1.SelectorType; } });
+Object.defineProperty(exports, "classifySelector", { enumerable: true, get: function () { return extended_1.classifySelector; } });
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js.map
new file mode 100644
index 0000000..1915c11
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,qCAA8C;AAArC,8FAAA,KAAK,OAAA;AAAE,iGAAA,QAAQ,OAAA;AACxB,mCAAuD;AAA9C,wGAAA,gBAAgB,OAAA;AAAE,+FAAA,OAAO,OAAA;AAClC,8CAA4B;AAC5B,2CAMwB;AALtB,mHAAA,uBAAuB,OAAA;AACvB,0GAAA,cAAc,OAAA;AACd,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA;AACZ,4GAAA,gBAAgB,OAAA"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js
new file mode 100644
index 0000000..805a59f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js
@@ -0,0 +1,167 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.querySelectorAll = exports.matches = exports.matchPattern = void 0;
+function matchPattern(pattern, text) {
+ // TODO - support 'm' RegExp argument
+ if (pattern.startsWith('/') && (pattern.endsWith('/') || pattern.endsWith('/i'))) {
+ let caseSensitive = true;
+ pattern = pattern.slice(1);
+ if (pattern.endsWith('/')) {
+ pattern = pattern.slice(0, -1);
+ }
+ else {
+ pattern = pattern.slice(0, -2);
+ caseSensitive = false;
+ }
+ return new RegExp(pattern, caseSensitive === false ? 'i' : undefined).test(text);
+ }
+ return text.includes(pattern);
+}
+exports.matchPattern = matchPattern;
+function matches(element, selector) {
+ if (selector.type === 'id' ||
+ selector.type === 'class' ||
+ selector.type === 'type' ||
+ selector.type === 'attribute') {
+ return element.matches(selector.content);
+ }
+ else if (selector.type === 'list') {
+ return selector.list.some((s) => matches(element, s));
+ }
+ else if (selector.type === 'compound') {
+ return selector.compound.every((s) => matches(element, s));
+ }
+ else if (selector.type === 'pseudo-class') {
+ if (selector.name === 'has' || selector.name === 'if') {
+ // TODO - is this a querySelectorAll or matches here?
+ return (selector.subtree !== undefined && querySelectorAll(element, selector.subtree).length !== 0);
+ }
+ else if (selector.name === 'not') {
+ return selector.subtree !== undefined && matches(element, selector.subtree) === false;
+ }
+ else if (selector.name === 'has-text') {
+ const { argument } = selector;
+ if (argument === undefined) {
+ return false;
+ }
+ const text = element.textContent;
+ if (text === null) {
+ return false;
+ }
+ return matchPattern(argument, text);
+ }
+ else if (selector.name === 'min-text-length') {
+ const minLength = Number(selector.argument);
+ if (Number.isNaN(minLength) || minLength < 0) {
+ return false;
+ }
+ const text = element.textContent;
+ if (text === null) {
+ return false;
+ }
+ return text.length >= minLength;
+ }
+ }
+ return false;
+}
+exports.matches = matches;
+function querySelectorAll(element, selector) {
+ const elements = [];
+ if (selector.type === 'id' ||
+ selector.type === 'class' ||
+ selector.type === 'type' ||
+ selector.type === 'attribute') {
+ elements.push(...element.querySelectorAll(selector.content));
+ }
+ else if (selector.type === 'list') {
+ for (const subSelector of selector.list) {
+ elements.push(...querySelectorAll(element, subSelector));
+ }
+ }
+ else if (selector.type === 'compound') {
+ // TODO - handling compound needs to be reworked...
+ // .cls:upward(1) for example will not work with this implementation.
+ // :upward is not about selecting, but transforming a set of nodes (i.e.
+ // uBO's transpose method).
+ if (selector.compound.length !== 0) {
+ elements.push(...querySelectorAll(element, selector.compound[0]).filter((e) => selector.compound.slice(1).every((s) => matches(e, s))));
+ }
+ }
+ else if (selector.type === 'complex') {
+ const elements2 = selector.left === undefined ? [element] : querySelectorAll(element, selector.left);
+ if (selector.combinator === ' ') {
+ for (const element2 of elements2) {
+ elements.push(...querySelectorAll(element2, selector.right));
+ }
+ }
+ else if (selector.combinator === '>') {
+ for (const element2 of elements2) {
+ for (const child of element2.children) {
+ if (matches(child, selector.right) === true) {
+ elements.push(child);
+ }
+ }
+ }
+ }
+ else if (selector.combinator === '~') {
+ for (const element2 of elements2) {
+ let sibling = element2;
+ while ((sibling = sibling.nextElementSibling) !== null) {
+ if (matches(sibling, selector.right) === true) {
+ elements.push(sibling);
+ }
+ }
+ }
+ }
+ else if (selector.combinator === '+') {
+ for (const element2 of elements2) {
+ const nextElementSibling = element2.nextElementSibling;
+ if (nextElementSibling !== null && matches(nextElementSibling, selector.right) === true) {
+ elements.push(nextElementSibling);
+ }
+ }
+ }
+ }
+ else if (selector.type === 'pseudo-class') {
+ // if (selector.name === 'upward') {
+ // let n = Number(selector.argument);
+ // console.log('upward', selector, n);
+ // if (Number.isNaN(n) === false) {
+ // if (n >= 1 && n < 256) {
+ // let ancestor: Element | null = element;
+ // while (ancestor !== null && n > 0) {
+ // ancestor = ancestor.parentElement;
+ // n -= 1;
+ // }
+ // if (ancestor !== null && n === 0) {
+ // elements.push(element);
+ // }
+ // }
+ // } else if (selector.argument !== undefined) {
+ // const parent = element.parentElement;
+ // if (parent !== null) {
+ // const ancestor = parent.closest(selector.argument);
+ // if (ancestor !== null) {
+ // elements.push(ancestor);
+ // }
+ // }
+ // }
+ // } else {
+ for (const subElement of element.querySelectorAll('*')) {
+ if (matches(subElement, selector) === true) {
+ elements.push(subElement);
+ }
+ }
+ // }
+ }
+ return elements;
+}
+exports.querySelectorAll = querySelectorAll;
+//# sourceMappingURL=eval.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js.map
new file mode 100644
index 0000000..f713d9e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/eval.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/eval.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js
new file mode 100644
index 0000000..0df2e20
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js
@@ -0,0 +1,134 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.classifySelector = exports.SelectorType = exports.PSEUDO_ELEMENTS = exports.PSEUDO_CLASSES = exports.EXTENDED_PSEUDO_CLASSES = void 0;
+const parse_1 = require("./parse");
+exports.EXTENDED_PSEUDO_CLASSES = new Set([
+ // '-abp-contains',
+ // '-abp-has',
+ // '-abp-properties',
+ 'has',
+ 'has-text',
+ 'if',
+ // 'if-not',
+ // 'matches-css',
+ // 'matches-css-after',
+ // 'matches-css-before',
+ // 'min-text-length',
+ // 'nth-ancestor',
+ // 'upward',
+ // 'watch-attr',
+ // 'watch-attrs',
+ // 'xpath',
+]);
+exports.PSEUDO_CLASSES = new Set([
+ 'active',
+ 'any',
+ 'any-link',
+ 'blank',
+ 'checked',
+ 'default',
+ 'defined',
+ 'dir',
+ 'disabled',
+ 'empty',
+ 'enabled',
+ 'first',
+ 'first-child',
+ 'first-of-type',
+ 'focus',
+ 'focus-visible',
+ 'focus-within',
+ 'fullscreen',
+ 'host',
+ 'host-context',
+ 'hover',
+ 'in-range',
+ 'indeterminate',
+ 'invalid',
+ 'is',
+ 'lang',
+ 'last-child',
+ 'last-of-type',
+ 'left',
+ 'link',
+ 'matches',
+ // NOTE: by default we consider `:not(...)` to be a normal CSS selector since,
+ // we are only interested in cases where the argument is an extended selector.
+ // If that is the case, it will still be detected as such.
+ 'not',
+ 'nth-child',
+ 'nth-last-child',
+ 'nth-last-of-type',
+ 'nth-of-type',
+ 'only-child',
+ 'only-of-type',
+ 'optional',
+ 'out-of-range',
+ 'placeholder-shown',
+ 'read-only',
+ 'read-write',
+ 'required',
+ 'right',
+ 'root',
+ 'scope',
+ 'target',
+ 'valid',
+ 'visited',
+ 'where',
+]);
+// NOTE: here we only need to list the pseudo-elements which can appear with a
+// single colon (e.g. :after or ::after are valid for backward compatibility
+// reasons). They can be misinterpreted as pseudo-classes by the tokenizer for
+// this reason.
+exports.PSEUDO_ELEMENTS = new Set(['after', 'before', 'first-letter', 'first-line']);
+var SelectorType;
+(function (SelectorType) {
+ SelectorType[SelectorType["Normal"] = 0] = "Normal";
+ SelectorType[SelectorType["Extended"] = 1] = "Extended";
+ SelectorType[SelectorType["Invalid"] = 2] = "Invalid";
+})(SelectorType || (exports.SelectorType = SelectorType = {}));
+function classifySelector(selector) {
+ // In most cases there is no pseudo-anything so we can quickly exit.
+ if (selector.indexOf(':') === -1) {
+ return SelectorType.Normal;
+ }
+ const tokens = (0, parse_1.tokenize)(selector);
+ // Detect pseudo-classes
+ let foundSupportedExtendedSelector = false;
+ for (const token of tokens) {
+ if (token.type === 'pseudo-class') {
+ const { name } = token;
+ if (exports.EXTENDED_PSEUDO_CLASSES.has(name) === true) {
+ foundSupportedExtendedSelector = true;
+ }
+ else if (exports.PSEUDO_CLASSES.has(name) === false && exports.PSEUDO_ELEMENTS.has(name) === false) {
+ return SelectorType.Invalid;
+ }
+ // Recursively
+ if (foundSupportedExtendedSelector === false &&
+ token.argument !== undefined &&
+ parse_1.RECURSIVE_PSEUDO_CLASSES.has(name) === true) {
+ const argumentType = classifySelector(token.argument);
+ if (argumentType === SelectorType.Invalid) {
+ return argumentType;
+ }
+ else if (argumentType === SelectorType.Extended) {
+ foundSupportedExtendedSelector = true;
+ }
+ }
+ }
+ }
+ if (foundSupportedExtendedSelector === true) {
+ return SelectorType.Extended;
+ }
+ return SelectorType.Normal;
+}
+exports.classifySelector = classifySelector;
+//# sourceMappingURL=extended.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js.map
new file mode 100644
index 0000000..2a07d2a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/extended.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extended.js","sourceRoot":"","sources":["../../../src/extended.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js
new file mode 100644
index 0000000..14112fc
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js
@@ -0,0 +1,501 @@
+"use strict";
+/*!
+ * Based on parsel. Extended by Rémi Berson for Ghostery (2021).
+ * https://github.com/LeaVerou/parsel
+ *
+ * MIT License
+ *
+ * Copyright (c) 2020 Lea Verou
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parse = exports.tokenize = exports.replace = exports.gobbleParens = exports.gobbleQuotes = exports.isEscaped = exports.RECURSIVE_PSEUDO_CLASSES = void 0;
+const types_1 = require("./types");
+exports.RECURSIVE_PSEUDO_CLASSES = new Set([
+ 'any',
+ 'dir',
+ 'has',
+ 'host-context',
+ 'if',
+ 'if-not',
+ 'is',
+ 'matches',
+ 'not',
+ 'where',
+]);
+const TOKENS = {
+ attribute: /\[\s*(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)\s*(?:(?<operator>\W?=)\s*(?<value>.+?)\s*(?<caseSensitive>[iIsS])?\s*)?\]/gu,
+ id: /#(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,
+ class: /\.(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,
+ comma: /\s*,\s*/g,
+ combinator: /\s*[\s>+~]\s*/g,
+ 'pseudo-element': /::(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?:¶*)\))?/gu,
+ 'pseudo-class': /:(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?<argument>¶*)\))?/gu,
+ type: /(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)|\*/gu, // this must be last
+};
+const TOKENS_WITH_PARENS = new Set(['pseudo-class', 'pseudo-element']);
+const TOKENS_WITH_STRINGS = new Set([...TOKENS_WITH_PARENS, 'attribute']);
+const TRIM_TOKENS = new Set(['combinator', 'comma']);
+const TOKENS_FOR_RESTORE = Object.assign({}, TOKENS);
+TOKENS_FOR_RESTORE['pseudo-element'] = RegExp(TOKENS['pseudo-element'].source.replace('(?<argument>¶*)', '(?<argument>.*?)'), 'gu');
+TOKENS_FOR_RESTORE['pseudo-class'] = RegExp(TOKENS['pseudo-class'].source.replace('(?<argument>¶*)', '(?<argument>.*)'), 'gu');
+// TODO - it feels like with some more typing shenanigans we could replace groups validation by generic logic in this function.
+function splitOnMatch(pattern, str) {
+ pattern.lastIndex = 0;
+ const match = pattern.exec(str);
+ if (match === null) {
+ return undefined;
+ }
+ const from = match.index - 1;
+ const content = match[0];
+ const before = str.slice(0, from + 1);
+ const after = str.slice(from + content.length + 1);
+ return [before, [content, match.groups || {}], after];
+}
+const GRAMMAR = [
+ // attribute
+ (str) => {
+ const match = splitOnMatch(TOKENS.attribute, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name, operator, value, namespace, caseSensitive }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'attribute',
+ content,
+ length: content.length,
+ namespace,
+ caseSensitive,
+ pos: [],
+ name,
+ operator,
+ value,
+ },
+ after,
+ ];
+ },
+ // #id
+ (str) => {
+ const match = splitOnMatch(TOKENS.id, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'id',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // .class
+ (str) => {
+ const match = splitOnMatch(TOKENS.class, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'class',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // comma ,
+ (str) => {
+ const match = splitOnMatch(TOKENS.comma, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content], after] = match;
+ return [
+ before,
+ {
+ type: 'comma',
+ content,
+ length: content.length,
+ pos: [],
+ },
+ after,
+ ];
+ },
+ // combinator
+ (str) => {
+ const match = splitOnMatch(TOKENS.combinator, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content], after] = match;
+ return [
+ before,
+ {
+ type: 'combinator',
+ content,
+ length: content.length,
+ pos: [],
+ },
+ after,
+ ];
+ },
+ // pseudo-element
+ (str) => {
+ const match = splitOnMatch(TOKENS['pseudo-element'], str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'pseudo-element',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // pseudo-class
+ (str) => {
+ const match = splitOnMatch(TOKENS['pseudo-class'], str);
+ if (match === undefined) {
+ return undefined;
+ }
+ // TODO - here `argument` can be undefined and should be rejected?
+ const [before, [content, { name, argument }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'pseudo-class',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ argument,
+ subtree: undefined,
+ },
+ after,
+ ];
+ },
+ // type
+ (str) => {
+ const match = splitOnMatch(TOKENS.type, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name, namespace }], after] = match;
+ return [
+ before,
+ {
+ type: 'type',
+ content,
+ length: content.length,
+ namespace,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+];
+function tokenizeBy(text) {
+ if (!text) {
+ return [];
+ }
+ const strarr = [text];
+ for (const tokenizer of GRAMMAR) {
+ for (let i = 0; i < strarr.length; i++) {
+ const str = strarr[i];
+ if (typeof str === 'string') {
+ const match = tokenizer(str);
+ if (match !== undefined) {
+ strarr.splice(i, 1, ...match.filter((a) => a.length !== 0));
+ }
+ }
+ }
+ }
+ let offset = 0;
+ for (const token of strarr) {
+ if (typeof token !== 'string') {
+ token.pos = [offset, offset + token.length];
+ if (TRIM_TOKENS.has(token.type)) {
+ token.content = token.content.trim() || ' ';
+ }
+ }
+ offset += token.length;
+ }
+ if ((0, types_1.isAtoms)(strarr)) {
+ return strarr;
+ }
+ // NOTE: here this means that parsing failed.
+ return [];
+}
+function restoreNested(tokens, strings, regex, types) {
+ // TODO - here from offsets in strings and tokens we should be able to find the exact spot without RegExp?
+ for (const str of strings) {
+ for (const token of tokens) {
+ if (types.has(token.type) && token.pos[0] < str.start && str.start < token.pos[1]) {
+ const content = token.content;
+ token.content = token.content.replace(regex, str.str);
+ if (token.content !== content) {
+ // actually changed?
+ // Re-evaluate groups
+ TOKENS_FOR_RESTORE[token.type].lastIndex = 0;
+ const match = TOKENS_FOR_RESTORE[token.type].exec(token.content);
+ if (match !== null) {
+ Object.assign(token, match.groups);
+ }
+ }
+ }
+ }
+ }
+}
+function isEscaped(str, index) {
+ let backslashes = 0;
+ index -= 1;
+ while (index >= 0 && str[index] === '\\') {
+ backslashes += 1;
+ index -= 1;
+ }
+ return backslashes % 2 !== 0;
+}
+exports.isEscaped = isEscaped;
+function gobbleQuotes(text, quote, start) {
+ // Find end of quote, taking care of ignoring escaped quotes
+ let end = start + 1;
+ while ((end = text.indexOf(quote, end)) !== -1 && isEscaped(text, end) === true) {
+ end += 1;
+ }
+ if (end === -1) {
+ // Opening quote without closing quote
+ return undefined;
+ }
+ return text.slice(start, end + 1);
+}
+exports.gobbleQuotes = gobbleQuotes;
+function gobbleParens(text, start) {
+ let stack = 0;
+ for (let i = start; i < text.length; i++) {
+ const char = text[i];
+ if (char === '(') {
+ stack += 1;
+ }
+ else if (char === ')') {
+ if (stack > 0) {
+ stack -= 1;
+ }
+ else {
+ // Closing paren without opening paren
+ return undefined;
+ }
+ }
+ if (stack === 0) {
+ return text.slice(start, i + 1);
+ }
+ }
+ // Opening paren without closing paren
+ return undefined;
+}
+exports.gobbleParens = gobbleParens;
+function replace(selector, replacement, opening, gobble) {
+ const strings = [];
+ let offset = 0;
+ while ((offset = selector.indexOf(opening, offset)) !== -1) {
+ const str = gobble(selector, offset);
+ if (str === undefined) {
+ break;
+ }
+ strings.push({ str, start: offset });
+ selector = `${selector.slice(0, offset + 1)}${replacement.repeat(str.length - 2)}${selector.slice(offset + str.length - 1)}`;
+ offset += str.length;
+ }
+ return [strings, selector];
+}
+exports.replace = replace;
+function tokenize(selector) {
+ if (typeof selector !== 'string') {
+ return [];
+ }
+ // Prevent leading/trailing whitespace be interpreted as combinators
+ selector = selector.trim();
+ if (selector.length === 0) {
+ return [];
+ }
+ // Replace strings with whitespace strings (to preserve offsets)
+ const [doubleQuotes, selectorWithoutDoubleQuotes] = replace(selector, '§', '"', (text, start) => gobbleQuotes(text, '"', start));
+ const [singleQuotes, selectorWithoutQuotes] = replace(selectorWithoutDoubleQuotes, '§', "'", (text, start) => gobbleQuotes(text, "'", start));
+ // Now that strings are out of the way, extract parens and replace them with parens with whitespace (to preserve offsets)
+ const [parens, selectorWithoutParens] = replace(selectorWithoutQuotes, '¶', '(', gobbleParens);
+ // Now we have no nested structures and we can parse with regexes
+ const tokens = tokenizeBy(selectorWithoutParens);
+ // Now restore parens and strings in reverse order
+ restoreNested(tokens, parens, /\(¶*\)/, TOKENS_WITH_PARENS);
+ restoreNested(tokens, doubleQuotes, /"§*"/, TOKENS_WITH_STRINGS);
+ restoreNested(tokens, singleQuotes, /'§*'/, TOKENS_WITH_STRINGS);
+ return tokens;
+}
+exports.tokenize = tokenize;
+// Convert a flat list of tokens into a tree of complex & compound selectors
+function nestTokens(tokens, { list = true } = {}) {
+ if (list === true && tokens.some((t) => t.type === 'comma')) {
+ const selectors = [];
+ const temp = [];
+ for (let i = 0; i < tokens.length; i += 1) {
+ const token = tokens[i];
+ if (token.type === 'comma') {
+ if (temp.length === 0) {
+ throw new Error('Incorrect comma at ' + i);
+ }
+ const sub = nestTokens(temp, { list: false });
+ if (sub !== undefined) {
+ selectors.push(sub);
+ }
+ temp.length = 0;
+ }
+ else {
+ temp.push(token);
+ }
+ }
+ if (temp.length === 0) {
+ throw new Error('Trailing comma');
+ }
+ else {
+ const sub = nestTokens(temp, { list: false });
+ if (sub !== undefined) {
+ selectors.push(sub);
+ }
+ }
+ return { type: 'list', list: selectors };
+ }
+ for (let i = tokens.length - 1; i >= 0; i--) {
+ const token = tokens[i];
+ if (token.type === 'combinator') {
+ const left = nestTokens(tokens.slice(0, i));
+ const right = nestTokens(tokens.slice(i + 1));
+ if (right === undefined) {
+ return undefined;
+ }
+ if (token.content !== ' ' &&
+ token.content !== '~' &&
+ token.content !== '+' &&
+ token.content !== '>') {
+ return undefined;
+ }
+ return {
+ type: 'complex',
+ combinator: token.content,
+ left,
+ right,
+ };
+ }
+ }
+ if (tokens.length === 0) {
+ return undefined;
+ }
+ if ((0, types_1.isAST)(tokens)) {
+ if (tokens.length === 1) {
+ return tokens[0];
+ }
+ // If we're here, there are no combinators, so it's just a list
+ return {
+ type: 'compound',
+ compound: [...tokens], // clone to avoid pointers messing up the AST
+ };
+ }
+ return undefined;
+}
+// Traverse an AST (or part thereof), in depth-first order
+function walk(node, callback, o, parent) {
+ if (node === undefined) {
+ return;
+ }
+ if (node.type === 'complex') {
+ walk(node.left, callback, o, node);
+ walk(node.right, callback, o, node);
+ }
+ else if (node.type === 'compound') {
+ for (const n of node.compound) {
+ walk(n, callback, o, node);
+ }
+ }
+ else if (node.type === 'pseudo-class' &&
+ node.subtree !== undefined &&
+ o !== undefined &&
+ o.type === 'pseudo-class' &&
+ o.subtree !== undefined) {
+ walk(node.subtree, callback, o, node);
+ }
+ callback(node, parent);
+}
+/**
+ * Parse a CSS selector
+ * @param selector {String} The selector to parse
+ * @param options.recursive {Boolean} Whether to parse the arguments of pseudo-classes like :is(), :has() etc. Defaults to true.
+ * @param options.list {Boolean} Whether this can be a selector list (A, B, C etc). Defaults to true.
+ */
+function parse(selector, { recursive = true, list = true } = {}) {
+ const tokens = tokenize(selector);
+ if (tokens.length === 0) {
+ return undefined;
+ }
+ const ast = nestTokens(tokens, { list });
+ if (recursive === true) {
+ walk(ast, (node) => {
+ if (node.type === 'pseudo-class' &&
+ node.argument &&
+ node.name !== undefined &&
+ exports.RECURSIVE_PSEUDO_CLASSES.has(node.name)) {
+ node.subtree = parse(node.argument, { recursive: true, list: true });
+ }
+ });
+ }
+ return ast;
+}
+exports.parse = parse;
+//# sourceMappingURL=parse.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js.map
new file mode 100644
index 0000000..e62d572
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/parse.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/parse.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js
new file mode 100644
index 0000000..d68432c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js
@@ -0,0 +1,29 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isAST = exports.isAtoms = void 0;
+const tokenTypes = [
+ 'attribute',
+ 'id',
+ 'class',
+ 'comma',
+ 'combinator',
+ 'pseudo-element',
+ 'pseudo-class',
+ 'type',
+];
+function isAtoms(tokens) {
+ return tokens.every((token) => typeof token !== 'string');
+}
+exports.isAtoms = isAtoms;
+function isAST(tokens) {
+ return tokens.every((token) => token.type !== 'comma' && token.type !== 'combinator');
+}
+exports.isAST = isAST;
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js.map
new file mode 100644
index 0000000..1a109f4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/src/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,MAAM,UAAU,GAAG;IACjB,WAAW;IACX,IAAI;IACJ,OAAO;IACP,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,cAAc;IACd,MAAM;CACE,CAAC;AA+GX,SAAgB,OAAO,CAAC,MAAsB;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK,CACnB,MAAa;IAEb,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;AACxF,CAAC;AAJD,sBAIC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..f37647a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../src/types.ts","../../src/parse.ts","../../src/eval.ts","../../src/extended.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586",{"version":"a80b28cef3e1c4b767b7ea52526402ad4856c9b42a0caba1411256b0e38e50bb","signature":"385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585"},{"version":"ebb60927a8752585dd7e4915fbaf34308fa13982dd65cd6fd5be68026128f2bb","signature":"a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079"},{"version":"08de39997b888b3d6a9a18c32c265518109126341a69ba5dc54b759101d6fc41","signature":"77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b"},{"version":"30e36ca7d013a0cb0160e0283de59b53df844caf8f31d1def7e813e15b276237","signature":"b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2"},{"version":"fadfdd2038ee3ea1395ed571367e3d12ec4a6990b0f9151b24f4f46599ee3b8b","signature":"d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[[50,54]],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":true,"declaration":true,"declarationDir":"../types","declarationMap":true,"exactOptionalPropertyTypes":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[135],[105,108,134,135,142,143,144,145],[135,147],[135,149],[135,150,151,153],[135,152],[105,135,137,142,171,172,174],[135,173],[105,135,142],[56,135],[92,135],[93,98,126,135],[94,105,106,113,123,134,135],[94,95,105,113,135],[96,135],[97,98,106,114,135],[98,123,131,135],[99,101,105,113,135],[100,135],[101,102,135],[105,135],[103,105,135],[92,105,135],[105,106,107,123,134,135],[105,106,107,120,123,126,135],[90,135,139],[101,105,108,113,123,134,135],[105,106,108,109,113,123,131,134,135],[108,110,123,131,134,135],[56,57,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141],[105,111,135],[112,134,135,139],[101,105,113,123,135],[114,135],[115,135],[92,116,135],[117,133,135,139],[118,135],[119,135],[105,120,121,135],[120,122,135,137],[93,105,123,124,125,126,135],[93,123,125,135],[123,124,135],[126,135],[127,135],[92,123,135],[105,129,130,135],[129,130,135],[98,113,123,131,135],[132,135],[113,133,135],[93,108,119,134,135],[98,135],[123,135,136],[112,135,137],[135,138],[93,98,105,107,116,123,134,135,137,139],[123,135,140],[108,123,135,142],[135,183,222],[135,183,207,222],[135,222],[135,183],[135,183,208,222],[135,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221],[135,208,222],[135,147,224],[135,223],[105,123,135,142],[135,160],[135,159,160],[135,159],[135,159,160,161,163,164,167,168,169,170],[135,160,164],[135,159,160,161,163,164,165,166],[135,159,164],[135,164,168],[135,160,161,162],[135,161],[135,159,160,164],[67,71,134,135],[67,123,134,135],[62,135],[64,67,131,134,135],[113,131,135],[135,142],[62,135,142],[64,67,113,134,135],[59,60,63,66,93,105,123,134,135],[59,65,135],[63,67,93,126,134,135,142],[93,135,142],[83,93,135,142],[61,62,135,142],[67,135],[61,62,63,64,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,135],[67,74,75,135],[65,67,75,76,135],[66,135],[59,62,67,135],[67,71,75,76,135],[71,135],[65,67,70,134,135],[59,64,65,67,71,74,135],[93,123,135],[62,67,83,93,135,139,142],[50,51,52,53,135],[50,135],[51,135],[50,51,52,53],[50]],"referencedMap":[[55,1],[146,2],[148,3],[147,1],[151,1],[150,4],[154,5],[155,1],[156,1],[157,1],[153,6],[152,1],[158,1],[149,1],[144,1],[173,7],[174,8],[175,1],[176,9],[177,1],[178,1],[179,1],[56,10],[57,10],[92,11],[93,12],[94,13],[95,14],[96,15],[97,16],[98,17],[99,18],[100,19],[101,20],[102,20],[104,21],[103,22],[105,23],[106,24],[107,25],[91,26],[141,1],[108,27],[109,28],[110,29],[142,30],[111,31],[112,32],[113,33],[114,34],[115,35],[116,36],[117,37],[118,38],[119,39],[120,40],[121,40],[122,41],[123,42],[125,43],[124,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[132,51],[133,52],[134,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[180,1],[181,1],[182,1],[145,60],[207,61],[208,62],[183,63],[186,63],[205,61],[206,61],[196,61],[195,64],[193,61],[188,61],[201,61],[199,61],[203,61],[187,61],[200,61],[204,61],[189,61],[190,61],[202,61],[184,61],[191,61],[192,61],[194,61],[198,61],[209,65],[197,61],[185,61],[222,66],[221,1],[216,65],[218,67],[217,65],[210,65],[211,65],[213,65],[215,65],[219,67],[220,67],[212,67],[214,67],[225,68],[224,69],[223,1],[172,1],[226,70],[58,1],[143,21],[161,71],[170,72],[159,1],[160,73],[171,74],[166,75],[167,76],[165,77],[169,78],[163,79],[162,80],[168,81],[164,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[74,82],[81,83],[73,82],[88,84],[65,85],[64,86],[87,87],[82,88],[85,89],[67,90],[66,91],[62,92],[61,93],[84,94],[63,95],[68,96],[69,1],[72,96],[59,1],[90,97],[89,96],[76,98],[77,99],[79,100],[75,101],[78,102],[83,87],[70,103],[71,104],[80,105],[60,106],[86,107],[54,108],[52,109],[53,110],[51,109],[50,1]],"exportedModulesMap":[[55,1],[146,2],[148,3],[147,1],[151,1],[150,4],[154,5],[155,1],[156,1],[157,1],[153,6],[152,1],[158,1],[149,1],[144,1],[173,7],[174,8],[175,1],[176,9],[177,1],[178,1],[179,1],[56,10],[57,10],[92,11],[93,12],[94,13],[95,14],[96,15],[97,16],[98,17],[99,18],[100,19],[101,20],[102,20],[104,21],[103,22],[105,23],[106,24],[107,25],[91,26],[141,1],[108,27],[109,28],[110,29],[142,30],[111,31],[112,32],[113,33],[114,34],[115,35],[116,36],[117,37],[118,38],[119,39],[120,40],[121,40],[122,41],[123,42],[125,43],[124,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[132,51],[133,52],[134,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[180,1],[181,1],[182,1],[145,60],[207,61],[208,62],[183,63],[186,63],[205,61],[206,61],[196,61],[195,64],[193,61],[188,61],[201,61],[199,61],[203,61],[187,61],[200,61],[204,61],[189,61],[190,61],[202,61],[184,61],[191,61],[192,61],[194,61],[198,61],[209,65],[197,61],[185,61],[222,66],[221,1],[216,65],[218,67],[217,65],[210,65],[211,65],[213,65],[215,65],[219,67],[220,67],[212,67],[214,67],[225,68],[224,69],[223,1],[172,1],[226,70],[58,1],[143,21],[161,71],[170,72],[159,1],[160,73],[171,74],[166,75],[167,76],[165,77],[169,78],[163,79],[162,80],[168,81],[164,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[74,82],[81,83],[73,82],[88,84],[65,85],[64,86],[87,87],[82,88],[85,89],[67,90],[66,91],[62,92],[61,93],[84,94],[63,95],[68,96],[69,1],[72,96],[59,1],[90,97],[89,96],[76,98],[77,99],[79,100],[75,101],[78,102],[83,87],[70,103],[71,104],[80,105],[60,106],[86,107],[54,111],[52,112],[51,112]],"semanticDiagnosticsPerFile":[55,146,148,147,151,150,154,155,156,157,153,152,158,149,144,173,174,175,176,177,178,179,56,57,92,93,94,95,96,97,98,99,100,101,102,104,103,105,106,107,91,141,108,109,110,142,111,112,113,114,115,116,117,118,119,120,121,122,123,125,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,180,181,182,145,207,208,183,186,205,206,196,195,193,188,201,199,203,187,200,204,189,190,202,184,191,192,194,198,209,197,185,222,221,216,218,217,210,211,213,215,219,220,212,214,225,224,223,172,226,58,143,161,170,159,160,171,166,167,165,169,163,162,168,164,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,74,81,73,88,65,64,87,82,85,67,66,62,61,84,63,68,69,72,59,90,89,76,77,79,75,78,83,70,71,80,60,86,54,52,53,51,50],"latestChangedDtsFile":"../types/adblocker.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js
new file mode 100644
index 0000000..ee67366
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js
@@ -0,0 +1,12 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export { parse, tokenize } from './src/parse';
+export { querySelectorAll, matches } from './src/eval';
+export * from './src/types';
+export { EXTENDED_PSEUDO_CLASSES, PSEUDO_CLASSES, PSEUDO_ELEMENTS, SelectorType, classifySelector, } from './src/extended';
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js.map
new file mode 100644
index 0000000..5a7563e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACvD,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js
new file mode 100644
index 0000000..b80c595
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js
@@ -0,0 +1,161 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export function matchPattern(pattern, text) {
+ // TODO - support 'm' RegExp argument
+ if (pattern.startsWith('/') && (pattern.endsWith('/') || pattern.endsWith('/i'))) {
+ let caseSensitive = true;
+ pattern = pattern.slice(1);
+ if (pattern.endsWith('/')) {
+ pattern = pattern.slice(0, -1);
+ }
+ else {
+ pattern = pattern.slice(0, -2);
+ caseSensitive = false;
+ }
+ return new RegExp(pattern, caseSensitive === false ? 'i' : undefined).test(text);
+ }
+ return text.includes(pattern);
+}
+export function matches(element, selector) {
+ if (selector.type === 'id' ||
+ selector.type === 'class' ||
+ selector.type === 'type' ||
+ selector.type === 'attribute') {
+ return element.matches(selector.content);
+ }
+ else if (selector.type === 'list') {
+ return selector.list.some((s) => matches(element, s));
+ }
+ else if (selector.type === 'compound') {
+ return selector.compound.every((s) => matches(element, s));
+ }
+ else if (selector.type === 'pseudo-class') {
+ if (selector.name === 'has' || selector.name === 'if') {
+ // TODO - is this a querySelectorAll or matches here?
+ return (selector.subtree !== undefined && querySelectorAll(element, selector.subtree).length !== 0);
+ }
+ else if (selector.name === 'not') {
+ return selector.subtree !== undefined && matches(element, selector.subtree) === false;
+ }
+ else if (selector.name === 'has-text') {
+ const { argument } = selector;
+ if (argument === undefined) {
+ return false;
+ }
+ const text = element.textContent;
+ if (text === null) {
+ return false;
+ }
+ return matchPattern(argument, text);
+ }
+ else if (selector.name === 'min-text-length') {
+ const minLength = Number(selector.argument);
+ if (Number.isNaN(minLength) || minLength < 0) {
+ return false;
+ }
+ const text = element.textContent;
+ if (text === null) {
+ return false;
+ }
+ return text.length >= minLength;
+ }
+ }
+ return false;
+}
+export function querySelectorAll(element, selector) {
+ const elements = [];
+ if (selector.type === 'id' ||
+ selector.type === 'class' ||
+ selector.type === 'type' ||
+ selector.type === 'attribute') {
+ elements.push(...element.querySelectorAll(selector.content));
+ }
+ else if (selector.type === 'list') {
+ for (const subSelector of selector.list) {
+ elements.push(...querySelectorAll(element, subSelector));
+ }
+ }
+ else if (selector.type === 'compound') {
+ // TODO - handling compound needs to be reworked...
+ // .cls:upward(1) for example will not work with this implementation.
+ // :upward is not about selecting, but transforming a set of nodes (i.e.
+ // uBO's transpose method).
+ if (selector.compound.length !== 0) {
+ elements.push(...querySelectorAll(element, selector.compound[0]).filter((e) => selector.compound.slice(1).every((s) => matches(e, s))));
+ }
+ }
+ else if (selector.type === 'complex') {
+ const elements2 = selector.left === undefined ? [element] : querySelectorAll(element, selector.left);
+ if (selector.combinator === ' ') {
+ for (const element2 of elements2) {
+ elements.push(...querySelectorAll(element2, selector.right));
+ }
+ }
+ else if (selector.combinator === '>') {
+ for (const element2 of elements2) {
+ for (const child of element2.children) {
+ if (matches(child, selector.right) === true) {
+ elements.push(child);
+ }
+ }
+ }
+ }
+ else if (selector.combinator === '~') {
+ for (const element2 of elements2) {
+ let sibling = element2;
+ while ((sibling = sibling.nextElementSibling) !== null) {
+ if (matches(sibling, selector.right) === true) {
+ elements.push(sibling);
+ }
+ }
+ }
+ }
+ else if (selector.combinator === '+') {
+ for (const element2 of elements2) {
+ const nextElementSibling = element2.nextElementSibling;
+ if (nextElementSibling !== null && matches(nextElementSibling, selector.right) === true) {
+ elements.push(nextElementSibling);
+ }
+ }
+ }
+ }
+ else if (selector.type === 'pseudo-class') {
+ // if (selector.name === 'upward') {
+ // let n = Number(selector.argument);
+ // console.log('upward', selector, n);
+ // if (Number.isNaN(n) === false) {
+ // if (n >= 1 && n < 256) {
+ // let ancestor: Element | null = element;
+ // while (ancestor !== null && n > 0) {
+ // ancestor = ancestor.parentElement;
+ // n -= 1;
+ // }
+ // if (ancestor !== null && n === 0) {
+ // elements.push(element);
+ // }
+ // }
+ // } else if (selector.argument !== undefined) {
+ // const parent = element.parentElement;
+ // if (parent !== null) {
+ // const ancestor = parent.closest(selector.argument);
+ // if (ancestor !== null) {
+ // elements.push(ancestor);
+ // }
+ // }
+ // }
+ // } else {
+ for (const subElement of element.querySelectorAll('*')) {
+ if (matches(subElement, selector) === true) {
+ elements.push(subElement);
+ }
+ }
+ // }
+ }
+ return elements;
+}
+//# sourceMappingURL=eval.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js.map
new file mode 100644
index 0000000..5ca4040
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/eval.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/eval.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js
new file mode 100644
index 0000000..65e576d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js
@@ -0,0 +1,130 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { tokenize, RECURSIVE_PSEUDO_CLASSES } from './parse';
+export const EXTENDED_PSEUDO_CLASSES = new Set([
+ // '-abp-contains',
+ // '-abp-has',
+ // '-abp-properties',
+ 'has',
+ 'has-text',
+ 'if',
+ // 'if-not',
+ // 'matches-css',
+ // 'matches-css-after',
+ // 'matches-css-before',
+ // 'min-text-length',
+ // 'nth-ancestor',
+ // 'upward',
+ // 'watch-attr',
+ // 'watch-attrs',
+ // 'xpath',
+]);
+export const PSEUDO_CLASSES = new Set([
+ 'active',
+ 'any',
+ 'any-link',
+ 'blank',
+ 'checked',
+ 'default',
+ 'defined',
+ 'dir',
+ 'disabled',
+ 'empty',
+ 'enabled',
+ 'first',
+ 'first-child',
+ 'first-of-type',
+ 'focus',
+ 'focus-visible',
+ 'focus-within',
+ 'fullscreen',
+ 'host',
+ 'host-context',
+ 'hover',
+ 'in-range',
+ 'indeterminate',
+ 'invalid',
+ 'is',
+ 'lang',
+ 'last-child',
+ 'last-of-type',
+ 'left',
+ 'link',
+ 'matches',
+ // NOTE: by default we consider `:not(...)` to be a normal CSS selector since,
+ // we are only interested in cases where the argument is an extended selector.
+ // If that is the case, it will still be detected as such.
+ 'not',
+ 'nth-child',
+ 'nth-last-child',
+ 'nth-last-of-type',
+ 'nth-of-type',
+ 'only-child',
+ 'only-of-type',
+ 'optional',
+ 'out-of-range',
+ 'placeholder-shown',
+ 'read-only',
+ 'read-write',
+ 'required',
+ 'right',
+ 'root',
+ 'scope',
+ 'target',
+ 'valid',
+ 'visited',
+ 'where',
+]);
+// NOTE: here we only need to list the pseudo-elements which can appear with a
+// single colon (e.g. :after or ::after are valid for backward compatibility
+// reasons). They can be misinterpreted as pseudo-classes by the tokenizer for
+// this reason.
+export const PSEUDO_ELEMENTS = new Set(['after', 'before', 'first-letter', 'first-line']);
+export var SelectorType;
+(function (SelectorType) {
+ SelectorType[SelectorType["Normal"] = 0] = "Normal";
+ SelectorType[SelectorType["Extended"] = 1] = "Extended";
+ SelectorType[SelectorType["Invalid"] = 2] = "Invalid";
+})(SelectorType || (SelectorType = {}));
+export function classifySelector(selector) {
+ // In most cases there is no pseudo-anything so we can quickly exit.
+ if (selector.indexOf(':') === -1) {
+ return SelectorType.Normal;
+ }
+ const tokens = tokenize(selector);
+ // Detect pseudo-classes
+ let foundSupportedExtendedSelector = false;
+ for (const token of tokens) {
+ if (token.type === 'pseudo-class') {
+ const { name } = token;
+ if (EXTENDED_PSEUDO_CLASSES.has(name) === true) {
+ foundSupportedExtendedSelector = true;
+ }
+ else if (PSEUDO_CLASSES.has(name) === false && PSEUDO_ELEMENTS.has(name) === false) {
+ return SelectorType.Invalid;
+ }
+ // Recursively
+ if (foundSupportedExtendedSelector === false &&
+ token.argument !== undefined &&
+ RECURSIVE_PSEUDO_CLASSES.has(name) === true) {
+ const argumentType = classifySelector(token.argument);
+ if (argumentType === SelectorType.Invalid) {
+ return argumentType;
+ }
+ else if (argumentType === SelectorType.Extended) {
+ foundSupportedExtendedSelector = true;
+ }
+ }
+ }
+ }
+ if (foundSupportedExtendedSelector === true) {
+ return SelectorType.Extended;
+ }
+ return SelectorType.Normal;
+}
+//# sourceMappingURL=extended.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js.map
new file mode 100644
index 0000000..93e9d9c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/extended.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extended.js","sourceRoot":"","sources":["../../../src/extended.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IAC7C,mBAAmB;IACnB,cAAc;IACd,qBAAqB;IACrB,KAAK;IACL,UAAU;IACV,IAAI;IACJ,YAAY;IACZ,iBAAiB;IACjB,uBAAuB;IACvB,wBAAwB;IACxB,qBAAqB;IACrB,kBAAkB;IAClB,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,KAAK;IACL,UAAU;IACV,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,aAAa;IACb,eAAe;IACf,OAAO;IACP,eAAe;IACf,cAAc;IACd,YAAY;IACZ,MAAM;IACN,cAAc;IACd,OAAO;IACP,UAAU;IACV,eAAe;IACf,SAAS;IACT,IAAI;IACJ,MAAM;IACN,YAAY;IACZ,cAAc;IACd,MAAM;IACN,MAAM;IACN,SAAS;IACT,8EAA8E;IAC9E,8EAA8E;IAC9E,0DAA0D;IAC1D,KAAK;IACL,WAAW;IACX,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,cAAc;IACd,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,YAAY;IACZ,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,eAAe;AACf,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;AAE1F,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mDAAM,CAAA;IACN,uDAAQ,CAAA;IACR,qDAAO,CAAA;AACT,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,oEAAoE;IACpE,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAChC,OAAO,YAAY,CAAC,MAAM,CAAC;KAC5B;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAElC,wBAAwB;IACxB,IAAI,8BAA8B,GAAG,KAAK,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;YACvB,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC9C,8BAA8B,GAAG,IAAI,CAAC;aACvC;iBAAM,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;gBACpF,OAAO,YAAY,CAAC,OAAO,CAAC;aAC7B;YAED,cAAc;YACd,IACE,8BAA8B,KAAK,KAAK;gBACxC,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAC5B,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAC3C;gBACA,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;oBACzC,OAAO,YAAY,CAAC;iBACrB;qBAAM,IAAI,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;oBACjD,8BAA8B,GAAG,IAAI,CAAC;iBACvC;aACF;SACF;KACF;IAED,IAAI,8BAA8B,KAAK,IAAI,EAAE;QAC3C,OAAO,YAAY,CAAC,QAAQ,CAAC;KAC9B;IAED,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js
new file mode 100644
index 0000000..73cd554
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js
@@ -0,0 +1,492 @@
+/*!
+ * Based on parsel. Extended by Rémi Berson for Ghostery (2021).
+ * https://github.com/LeaVerou/parsel
+ *
+ * MIT License
+ *
+ * Copyright (c) 2020 Lea Verou
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+import { isAST, isAtoms } from './types';
+export const RECURSIVE_PSEUDO_CLASSES = new Set([
+ 'any',
+ 'dir',
+ 'has',
+ 'host-context',
+ 'if',
+ 'if-not',
+ 'is',
+ 'matches',
+ 'not',
+ 'where',
+]);
+const TOKENS = {
+ attribute: /\[\s*(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)\s*(?:(?<operator>\W?=)\s*(?<value>.+?)\s*(?<caseSensitive>[iIsS])?\s*)?\]/gu,
+ id: /#(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,
+ class: /\.(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,
+ comma: /\s*,\s*/g,
+ combinator: /\s*[\s>+~]\s*/g,
+ 'pseudo-element': /::(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?:¶*)\))?/gu,
+ 'pseudo-class': /:(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?<argument>¶*)\))?/gu,
+ type: /(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)|\*/gu, // this must be last
+};
+const TOKENS_WITH_PARENS = new Set(['pseudo-class', 'pseudo-element']);
+const TOKENS_WITH_STRINGS = new Set([...TOKENS_WITH_PARENS, 'attribute']);
+const TRIM_TOKENS = new Set(['combinator', 'comma']);
+const TOKENS_FOR_RESTORE = Object.assign({}, TOKENS);
+TOKENS_FOR_RESTORE['pseudo-element'] = RegExp(TOKENS['pseudo-element'].source.replace('(?<argument>¶*)', '(?<argument>.*?)'), 'gu');
+TOKENS_FOR_RESTORE['pseudo-class'] = RegExp(TOKENS['pseudo-class'].source.replace('(?<argument>¶*)', '(?<argument>.*)'), 'gu');
+// TODO - it feels like with some more typing shenanigans we could replace groups validation by generic logic in this function.
+function splitOnMatch(pattern, str) {
+ pattern.lastIndex = 0;
+ const match = pattern.exec(str);
+ if (match === null) {
+ return undefined;
+ }
+ const from = match.index - 1;
+ const content = match[0];
+ const before = str.slice(0, from + 1);
+ const after = str.slice(from + content.length + 1);
+ return [before, [content, match.groups || {}], after];
+}
+const GRAMMAR = [
+ // attribute
+ (str) => {
+ const match = splitOnMatch(TOKENS.attribute, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name, operator, value, namespace, caseSensitive }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'attribute',
+ content,
+ length: content.length,
+ namespace,
+ caseSensitive,
+ pos: [],
+ name,
+ operator,
+ value,
+ },
+ after,
+ ];
+ },
+ // #id
+ (str) => {
+ const match = splitOnMatch(TOKENS.id, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'id',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // .class
+ (str) => {
+ const match = splitOnMatch(TOKENS.class, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'class',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // comma ,
+ (str) => {
+ const match = splitOnMatch(TOKENS.comma, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content], after] = match;
+ return [
+ before,
+ {
+ type: 'comma',
+ content,
+ length: content.length,
+ pos: [],
+ },
+ after,
+ ];
+ },
+ // combinator
+ (str) => {
+ const match = splitOnMatch(TOKENS.combinator, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content], after] = match;
+ return [
+ before,
+ {
+ type: 'combinator',
+ content,
+ length: content.length,
+ pos: [],
+ },
+ after,
+ ];
+ },
+ // pseudo-element
+ (str) => {
+ const match = splitOnMatch(TOKENS['pseudo-element'], str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'pseudo-element',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+ // pseudo-class
+ (str) => {
+ const match = splitOnMatch(TOKENS['pseudo-class'], str);
+ if (match === undefined) {
+ return undefined;
+ }
+ // TODO - here `argument` can be undefined and should be rejected?
+ const [before, [content, { name, argument }], after] = match;
+ if (name === undefined) {
+ return undefined;
+ }
+ return [
+ before,
+ {
+ type: 'pseudo-class',
+ content,
+ length: content.length,
+ pos: [],
+ name,
+ argument,
+ subtree: undefined,
+ },
+ after,
+ ];
+ },
+ // type
+ (str) => {
+ const match = splitOnMatch(TOKENS.type, str);
+ if (match === undefined) {
+ return undefined;
+ }
+ const [before, [content, { name, namespace }], after] = match;
+ return [
+ before,
+ {
+ type: 'type',
+ content,
+ length: content.length,
+ namespace,
+ pos: [],
+ name,
+ },
+ after,
+ ];
+ },
+];
+function tokenizeBy(text) {
+ if (!text) {
+ return [];
+ }
+ const strarr = [text];
+ for (const tokenizer of GRAMMAR) {
+ for (let i = 0; i < strarr.length; i++) {
+ const str = strarr[i];
+ if (typeof str === 'string') {
+ const match = tokenizer(str);
+ if (match !== undefined) {
+ strarr.splice(i, 1, ...match.filter((a) => a.length !== 0));
+ }
+ }
+ }
+ }
+ let offset = 0;
+ for (const token of strarr) {
+ if (typeof token !== 'string') {
+ token.pos = [offset, offset + token.length];
+ if (TRIM_TOKENS.has(token.type)) {
+ token.content = token.content.trim() || ' ';
+ }
+ }
+ offset += token.length;
+ }
+ if (isAtoms(strarr)) {
+ return strarr;
+ }
+ // NOTE: here this means that parsing failed.
+ return [];
+}
+function restoreNested(tokens, strings, regex, types) {
+ // TODO - here from offsets in strings and tokens we should be able to find the exact spot without RegExp?
+ for (const str of strings) {
+ for (const token of tokens) {
+ if (types.has(token.type) && token.pos[0] < str.start && str.start < token.pos[1]) {
+ const content = token.content;
+ token.content = token.content.replace(regex, str.str);
+ if (token.content !== content) {
+ // actually changed?
+ // Re-evaluate groups
+ TOKENS_FOR_RESTORE[token.type].lastIndex = 0;
+ const match = TOKENS_FOR_RESTORE[token.type].exec(token.content);
+ if (match !== null) {
+ Object.assign(token, match.groups);
+ }
+ }
+ }
+ }
+ }
+}
+export function isEscaped(str, index) {
+ let backslashes = 0;
+ index -= 1;
+ while (index >= 0 && str[index] === '\\') {
+ backslashes += 1;
+ index -= 1;
+ }
+ return backslashes % 2 !== 0;
+}
+export function gobbleQuotes(text, quote, start) {
+ // Find end of quote, taking care of ignoring escaped quotes
+ let end = start + 1;
+ while ((end = text.indexOf(quote, end)) !== -1 && isEscaped(text, end) === true) {
+ end += 1;
+ }
+ if (end === -1) {
+ // Opening quote without closing quote
+ return undefined;
+ }
+ return text.slice(start, end + 1);
+}
+export function gobbleParens(text, start) {
+ let stack = 0;
+ for (let i = start; i < text.length; i++) {
+ const char = text[i];
+ if (char === '(') {
+ stack += 1;
+ }
+ else if (char === ')') {
+ if (stack > 0) {
+ stack -= 1;
+ }
+ else {
+ // Closing paren without opening paren
+ return undefined;
+ }
+ }
+ if (stack === 0) {
+ return text.slice(start, i + 1);
+ }
+ }
+ // Opening paren without closing paren
+ return undefined;
+}
+export function replace(selector, replacement, opening, gobble) {
+ const strings = [];
+ let offset = 0;
+ while ((offset = selector.indexOf(opening, offset)) !== -1) {
+ const str = gobble(selector, offset);
+ if (str === undefined) {
+ break;
+ }
+ strings.push({ str, start: offset });
+ selector = `${selector.slice(0, offset + 1)}${replacement.repeat(str.length - 2)}${selector.slice(offset + str.length - 1)}`;
+ offset += str.length;
+ }
+ return [strings, selector];
+}
+export function tokenize(selector) {
+ if (typeof selector !== 'string') {
+ return [];
+ }
+ // Prevent leading/trailing whitespace be interpreted as combinators
+ selector = selector.trim();
+ if (selector.length === 0) {
+ return [];
+ }
+ // Replace strings with whitespace strings (to preserve offsets)
+ const [doubleQuotes, selectorWithoutDoubleQuotes] = replace(selector, '§', '"', (text, start) => gobbleQuotes(text, '"', start));
+ const [singleQuotes, selectorWithoutQuotes] = replace(selectorWithoutDoubleQuotes, '§', "'", (text, start) => gobbleQuotes(text, "'", start));
+ // Now that strings are out of the way, extract parens and replace them with parens with whitespace (to preserve offsets)
+ const [parens, selectorWithoutParens] = replace(selectorWithoutQuotes, '¶', '(', gobbleParens);
+ // Now we have no nested structures and we can parse with regexes
+ const tokens = tokenizeBy(selectorWithoutParens);
+ // Now restore parens and strings in reverse order
+ restoreNested(tokens, parens, /\(¶*\)/, TOKENS_WITH_PARENS);
+ restoreNested(tokens, doubleQuotes, /"§*"/, TOKENS_WITH_STRINGS);
+ restoreNested(tokens, singleQuotes, /'§*'/, TOKENS_WITH_STRINGS);
+ return tokens;
+}
+// Convert a flat list of tokens into a tree of complex & compound selectors
+function nestTokens(tokens, { list = true } = {}) {
+ if (list === true && tokens.some((t) => t.type === 'comma')) {
+ const selectors = [];
+ const temp = [];
+ for (let i = 0; i < tokens.length; i += 1) {
+ const token = tokens[i];
+ if (token.type === 'comma') {
+ if (temp.length === 0) {
+ throw new Error('Incorrect comma at ' + i);
+ }
+ const sub = nestTokens(temp, { list: false });
+ if (sub !== undefined) {
+ selectors.push(sub);
+ }
+ temp.length = 0;
+ }
+ else {
+ temp.push(token);
+ }
+ }
+ if (temp.length === 0) {
+ throw new Error('Trailing comma');
+ }
+ else {
+ const sub = nestTokens(temp, { list: false });
+ if (sub !== undefined) {
+ selectors.push(sub);
+ }
+ }
+ return { type: 'list', list: selectors };
+ }
+ for (let i = tokens.length - 1; i >= 0; i--) {
+ const token = tokens[i];
+ if (token.type === 'combinator') {
+ const left = nestTokens(tokens.slice(0, i));
+ const right = nestTokens(tokens.slice(i + 1));
+ if (right === undefined) {
+ return undefined;
+ }
+ if (token.content !== ' ' &&
+ token.content !== '~' &&
+ token.content !== '+' &&
+ token.content !== '>') {
+ return undefined;
+ }
+ return {
+ type: 'complex',
+ combinator: token.content,
+ left,
+ right,
+ };
+ }
+ }
+ if (tokens.length === 0) {
+ return undefined;
+ }
+ if (isAST(tokens)) {
+ if (tokens.length === 1) {
+ return tokens[0];
+ }
+ // If we're here, there are no combinators, so it's just a list
+ return {
+ type: 'compound',
+ compound: [...tokens], // clone to avoid pointers messing up the AST
+ };
+ }
+ return undefined;
+}
+// Traverse an AST (or part thereof), in depth-first order
+function walk(node, callback, o, parent) {
+ if (node === undefined) {
+ return;
+ }
+ if (node.type === 'complex') {
+ walk(node.left, callback, o, node);
+ walk(node.right, callback, o, node);
+ }
+ else if (node.type === 'compound') {
+ for (const n of node.compound) {
+ walk(n, callback, o, node);
+ }
+ }
+ else if (node.type === 'pseudo-class' &&
+ node.subtree !== undefined &&
+ o !== undefined &&
+ o.type === 'pseudo-class' &&
+ o.subtree !== undefined) {
+ walk(node.subtree, callback, o, node);
+ }
+ callback(node, parent);
+}
+/**
+ * Parse a CSS selector
+ * @param selector {String} The selector to parse
+ * @param options.recursive {Boolean} Whether to parse the arguments of pseudo-classes like :is(), :has() etc. Defaults to true.
+ * @param options.list {Boolean} Whether this can be a selector list (A, B, C etc). Defaults to true.
+ */
+export function parse(selector, { recursive = true, list = true } = {}) {
+ const tokens = tokenize(selector);
+ if (tokens.length === 0) {
+ return undefined;
+ }
+ const ast = nestTokens(tokens, { list });
+ if (recursive === true) {
+ walk(ast, (node) => {
+ if (node.type === 'pseudo-class' &&
+ node.argument &&
+ node.name !== undefined &&
+ RECURSIVE_PSEUDO_CLASSES.has(node.name)) {
+ node.subtree = parse(node.argument, { recursive: true, list: true });
+ }
+ });
+ }
+ return ast;
+}
+//# sourceMappingURL=parse.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js.map
new file mode 100644
index 0000000..841b087
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/parse.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/parse.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js
new file mode 100644
index 0000000..9363120
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js
@@ -0,0 +1,24 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+const tokenTypes = [
+ 'attribute',
+ 'id',
+ 'class',
+ 'comma',
+ 'combinator',
+ 'pseudo-element',
+ 'pseudo-class',
+ 'type',
+];
+export function isAtoms(tokens) {
+ return tokens.every((token) => typeof token !== 'string');
+}
+export function isAST(tokens) {
+ return tokens.every((token) => token.type !== 'comma' && token.type !== 'combinator');
+}
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js.map
new file mode 100644
index 0000000..7bb74ba
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/src/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,GAAG;IACjB,WAAW;IACX,IAAI;IACJ,OAAO;IACP,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,cAAc;IACd,MAAM;CACE,CAAC;AA+GX,MAAM,UAAU,OAAO,CAAC,MAAsB;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,MAAa;IAEb,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;AACxF,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..f6a2ec9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../src/types.ts","../../src/parse.ts","../../src/eval.ts","../../src/extended.ts","../../adblocker.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","a80b28cef3e1c4b767b7ea52526402ad4856c9b42a0caba1411256b0e38e50bb","ebb60927a8752585dd7e4915fbaf34308fa13982dd65cd6fd5be68026128f2bb","08de39997b888b3d6a9a18c32c265518109126341a69ba5dc54b759101d6fc41","30e36ca7d013a0cb0160e0283de59b53df844caf8f31d1def7e813e15b276237","fadfdd2038ee3ea1395ed571367e3d12ec4a6990b0f9151b24f4f46599ee3b8b","d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[[50,54]],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":false,"declaration":false,"declarationDir":"../..","declarationMap":false,"exactOptionalPropertyTypes":true,"module":5,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[135],[105,108,134,135,142,143,144,145],[135,147],[135,149],[135,150,151,153],[135,152],[105,135,137,142,171,172,174],[135,173],[105,135,142],[56,135],[92,135],[93,98,126,135],[94,105,106,113,123,134,135],[94,95,105,113,135],[96,135],[97,98,106,114,135],[98,123,131,135],[99,101,105,113,135],[100,135],[101,102,135],[105,135],[103,105,135],[92,105,135],[105,106,107,123,134,135],[105,106,107,120,123,126,135],[90,135,139],[101,105,108,113,123,134,135],[105,106,108,109,113,123,131,134,135],[108,110,123,131,134,135],[56,57,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141],[105,111,135],[112,134,135,139],[101,105,113,123,135],[114,135],[115,135],[92,116,135],[117,133,135,139],[118,135],[119,135],[105,120,121,135],[120,122,135,137],[93,105,123,124,125,126,135],[93,123,125,135],[123,124,135],[126,135],[127,135],[92,123,135],[105,129,130,135],[129,130,135],[98,113,123,131,135],[132,135],[113,133,135],[93,108,119,134,135],[98,135],[123,135,136],[112,135,137],[135,138],[93,98,105,107,116,123,134,135,137,139],[123,135,140],[108,123,135,142],[135,183,222],[135,183,207,222],[135,222],[135,183],[135,183,208,222],[135,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221],[135,208,222],[135,147,224],[135,223],[105,123,135,142],[135,160],[135,159,160],[135,159],[135,159,160,161,163,164,167,168,169,170],[135,160,164],[135,159,160,161,163,164,165,166],[135,159,164],[135,164,168],[135,160,161,162],[135,161],[135,159,160,164],[67,71,134,135],[67,123,134,135],[62,135],[64,67,131,134,135],[113,131,135],[135,142],[62,135,142],[64,67,113,134,135],[59,60,63,66,93,105,123,134,135],[59,65,135],[63,67,93,126,134,135,142],[93,135,142],[83,93,135,142],[61,62,135,142],[67,135],[61,62,63,64,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,135],[67,74,75,135],[65,67,75,76,135],[66,135],[59,62,67,135],[67,71,75,76,135],[71,135],[65,67,70,134,135],[59,64,65,67,71,74,135],[93,123,135],[62,67,83,93,135,139,142],[50,51,52,53,135],[50,135],[51,135]],"referencedMap":[[55,1],[146,2],[148,3],[147,1],[151,1],[150,4],[154,5],[155,1],[156,1],[157,1],[153,6],[152,1],[158,1],[149,1],[144,1],[173,7],[174,8],[175,1],[176,9],[177,1],[178,1],[179,1],[56,10],[57,10],[92,11],[93,12],[94,13],[95,14],[96,15],[97,16],[98,17],[99,18],[100,19],[101,20],[102,20],[104,21],[103,22],[105,23],[106,24],[107,25],[91,26],[141,1],[108,27],[109,28],[110,29],[142,30],[111,31],[112,32],[113,33],[114,34],[115,35],[116,36],[117,37],[118,38],[119,39],[120,40],[121,40],[122,41],[123,42],[125,43],[124,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[132,51],[133,52],[134,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[180,1],[181,1],[182,1],[145,60],[207,61],[208,62],[183,63],[186,63],[205,61],[206,61],[196,61],[195,64],[193,61],[188,61],[201,61],[199,61],[203,61],[187,61],[200,61],[204,61],[189,61],[190,61],[202,61],[184,61],[191,61],[192,61],[194,61],[198,61],[209,65],[197,61],[185,61],[222,66],[221,1],[216,65],[218,67],[217,65],[210,65],[211,65],[213,65],[215,65],[219,67],[220,67],[212,67],[214,67],[225,68],[224,69],[223,1],[172,1],[226,70],[58,1],[143,21],[161,71],[170,72],[159,1],[160,73],[171,74],[166,75],[167,76],[165,77],[169,78],[163,79],[162,80],[168,81],[164,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[74,82],[81,83],[73,82],[88,84],[65,85],[64,86],[87,87],[82,88],[85,89],[67,90],[66,91],[62,92],[61,93],[84,94],[63,95],[68,96],[69,1],[72,96],[59,1],[90,97],[89,96],[76,98],[77,99],[79,100],[75,101],[78,102],[83,87],[70,103],[71,104],[80,105],[60,106],[86,107],[54,108],[52,109],[53,110],[51,109],[50,1]],"exportedModulesMap":[[55,1],[146,2],[148,3],[147,1],[151,1],[150,4],[154,5],[155,1],[156,1],[157,1],[153,6],[152,1],[158,1],[149,1],[144,1],[173,7],[174,8],[175,1],[176,9],[177,1],[178,1],[179,1],[56,10],[57,10],[92,11],[93,12],[94,13],[95,14],[96,15],[97,16],[98,17],[99,18],[100,19],[101,20],[102,20],[104,21],[103,22],[105,23],[106,24],[107,25],[91,26],[141,1],[108,27],[109,28],[110,29],[142,30],[111,31],[112,32],[113,33],[114,34],[115,35],[116,36],[117,37],[118,38],[119,39],[120,40],[121,40],[122,41],[123,42],[125,43],[124,44],[126,45],[127,46],[128,47],[129,48],[130,49],[131,50],[132,51],[133,52],[134,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[180,1],[181,1],[182,1],[145,60],[207,61],[208,62],[183,63],[186,63],[205,61],[206,61],[196,61],[195,64],[193,61],[188,61],[201,61],[199,61],[203,61],[187,61],[200,61],[204,61],[189,61],[190,61],[202,61],[184,61],[191,61],[192,61],[194,61],[198,61],[209,65],[197,61],[185,61],[222,66],[221,1],[216,65],[218,67],[217,65],[210,65],[211,65],[213,65],[215,65],[219,67],[220,67],[212,67],[214,67],[225,68],[224,69],[223,1],[172,1],[226,70],[58,1],[143,21],[161,71],[170,72],[159,1],[160,73],[171,74],[166,75],[167,76],[165,77],[169,78],[163,79],[162,80],[168,81],[164,72],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[74,82],[81,83],[73,82],[88,84],[65,85],[64,86],[87,87],[82,88],[85,89],[67,90],[66,91],[62,92],[61,93],[84,94],[63,95],[68,96],[69,1],[72,96],[59,1],[90,97],[89,96],[76,98],[77,99],[79,100],[75,101],[78,102],[83,87],[70,103],[71,104],[80,105],[60,106],[86,107],[54,108],[52,109],[53,110],[51,109],[50,1]],"semanticDiagnosticsPerFile":[55,146,148,147,151,150,154,155,156,157,153,152,158,149,144,173,174,175,176,177,178,179,56,57,92,93,94,95,96,97,98,99,100,101,102,104,103,105,106,107,91,141,108,109,110,142,111,112,113,114,115,116,117,118,119,120,121,122,123,125,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,180,181,182,145,207,208,183,186,205,206,196,195,193,188,201,199,203,187,200,204,189,190,202,184,191,192,194,198,209,197,185,222,221,216,218,217,210,211,213,215,219,220,212,214,225,224,223,172,226,58,143,161,170,159,160,171,166,167,165,169,163,162,168,164,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,74,81,73,88,65,64,87,82,85,67,66,62,61,84,63,68,69,72,59,90,89,76,77,79,75,78,83,70,71,80,60,86,54,52,53,51,50]},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts
new file mode 100644
index 0000000..8a0f1ba
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts
@@ -0,0 +1,12 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export { parse, tokenize } from './src/parse';
+export { querySelectorAll, matches } from './src/eval';
+export * from './src/types';
+export { EXTENDED_PSEUDO_CLASSES, PSEUDO_CLASSES, PSEUDO_ELEMENTS, SelectorType, classifySelector, } from './src/extended';
+//# sourceMappingURL=adblocker.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts.map
new file mode 100644
index 0000000..2e4a25e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/adblocker.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.d.ts","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACvD,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts
new file mode 100644
index 0000000..cf0ff6f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts
@@ -0,0 +1,12 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import type { AST } from './types';
+export declare function matchPattern(pattern: string, text: string): boolean;
+export declare function matches(element: Element, selector: AST): boolean;
+export declare function querySelectorAll(element: Element, selector: AST): Element[];
+//# sourceMappingURL=eval.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts.map
new file mode 100644
index 0000000..bc3889f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/eval.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/eval.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBnE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAgDhE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,EAAE,CA8F3E"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts
new file mode 100644
index 0000000..75829ff
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts
@@ -0,0 +1,17 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export declare const EXTENDED_PSEUDO_CLASSES: Set<string>;
+export declare const PSEUDO_CLASSES: Set<string>;
+export declare const PSEUDO_ELEMENTS: Set<string>;
+export declare enum SelectorType {
+ Normal = 0,
+ Extended = 1,
+ Invalid = 2
+}
+export declare function classifySelector(selector: string): SelectorType;
+//# sourceMappingURL=extended.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts.map
new file mode 100644
index 0000000..0846300
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/extended.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"extended.d.ts","sourceRoot":"","sources":["../../../src/extended.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,eAAO,MAAM,uBAAuB,aAiBlC,CAAC;AAEH,eAAO,MAAM,cAAc,aAuDzB,CAAC;AAMH,eAAO,MAAM,eAAe,aAA6D,CAAC;AAE1F,oBAAY,YAAY;IACtB,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,OAAO,IAAA;CACR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAwC/D"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts
new file mode 100644
index 0000000..4a07f7c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts
@@ -0,0 +1,41 @@
+/*!
+ * Based on parsel. Extended by Rémi Berson for Ghostery (2021).
+ * https://github.com/LeaVerou/parsel
+ *
+ * MIT License
+ *
+ * Copyright (c) 2020 Lea Verou
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+import type { AST, Atoms, ParserOptions, Strings } from './types';
+export declare const RECURSIVE_PSEUDO_CLASSES: Set<string>;
+export declare function isEscaped(str: string, index: number): boolean;
+export declare function gobbleQuotes(text: string, quote: '"' | "'", start: number): string | undefined;
+export declare function gobbleParens(text: string, start: number): string | undefined;
+export declare function replace(selector: string, replacement: '¶' | '§', opening: '(' | '"' | "'", gobble: (text: string, start: number) => string | undefined): [Strings, string];
+export declare function tokenize(selector: string): Atoms;
+/**
+ * Parse a CSS selector
+ * @param selector {String} The selector to parse
+ * @param options.recursive {Boolean} Whether to parse the arguments of pseudo-classes like :is(), :has() etc. Defaults to true.
+ * @param options.list {Boolean} Whether this can be a selector list (A, B, C etc). Defaults to true.
+ */
+export declare function parse(selector: string, { recursive, list }?: ParserOptions): AST | undefined;
+//# sourceMappingURL=parse.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts.map
new file mode 100644
index 0000000..befd342
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/parse.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EACV,GAAG,EACH,KAAK,EAOL,aAAa,EAGb,OAAO,EAGR,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,wBAAwB,aAWnC,CAAC;AAqTH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAU7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc9F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAwB5E;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,GAAG,GAAG,GAAG,EACtB,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC1D,CAAC,OAAO,EAAE,MAAM,CAAC,CAkBnB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAuChD;AAsHD;;;;;GAKG;AACH,wBAAgB,KAAK,CACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,SAAgB,EAAE,IAAW,EAAE,GAAE,aAAkB,GACpD,GAAG,GAAG,SAAS,CAuBjB"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts
new file mode 100644
index 0000000..196b06a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts
@@ -0,0 +1,82 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const tokenTypes: readonly ["attribute", "id", "class", "comma", "combinator", "pseudo-element", "pseudo-class", "type"];
+export type TokenType = (typeof tokenTypes)[number];
+export type Base = {
+ length: number;
+ content: string;
+ pos: number[];
+};
+export type Type = Base & {
+ type: 'type';
+ name?: string;
+ namespace?: string;
+};
+export type PseudoClass = Base & {
+ type: 'pseudo-class';
+ name: string;
+ argument: string | undefined;
+ subtree: AST | undefined;
+};
+export type PseudoElement = Base & {
+ type: 'pseudo-element';
+ name: string;
+};
+export type Combinator = Base & {
+ type: 'combinator';
+};
+export type Comma = Base & {
+ type: 'comma';
+};
+export type Class = Base & {
+ type: 'class';
+ name: string;
+};
+export type Id = Base & {
+ type: 'id';
+ name: string;
+};
+export type Attribute = Base & {
+ type: 'attribute';
+ namespace?: string;
+ caseSensitive?: string;
+ name: string;
+ operator?: string;
+ value?: string;
+};
+export type Atom = Attribute | Id | Class | Comma | Combinator | PseudoClass | PseudoElement | Type;
+export type Atoms = Atom[];
+export type AtomOrString = Atom | string;
+export type AtomsOrStrings = AtomOrString[];
+export type Strings = {
+ str: string;
+ start: number;
+}[];
+export interface Complex {
+ type: 'complex';
+ combinator: ' ' | '+' | '~' | '>';
+ right: AST;
+ left: AST | undefined;
+}
+export interface Compound {
+ type: 'compound';
+ compound: AST[];
+}
+export interface List {
+ type: 'list';
+ list: AST[];
+}
+export type AST = Attribute | Id | Class | PseudoClass | PseudoElement | Type | Complex | Compound | List;
+export interface ParserOptions {
+ recursive?: boolean;
+ list?: boolean;
+}
+export declare function isAtoms(tokens: AtomsOrStrings): tokens is Atoms;
+export declare function isAST(tokens: Atoms): tokens is (Attribute | Id | Class | PseudoClass | PseudoElement | Type)[];
+export {};
+//# sourceMappingURL=types.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts.map b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts.map
new file mode 100644
index 0000000..3b5e79f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/dist/types/src/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker-extended-selectors/package.json b/client/node_modules/@cliqz/adblocker-extended-selectors/package.json
new file mode 100644
index 0000000..0831820
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker-extended-selectors/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@cliqz/adblocker-extended-selectors",
+ "version": "1.26.12",
+ "description": "Cliqz adblocker library (extended CSS selectors implementation)",
+ "author": {
+ "name": "Cliqz"
+ },
+ "homepage": "https://github.com/cliqz-oss/adblocker#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/adblocker.js",
+ "module": "dist/es6/adblocker.js",
+ "types": "dist/types/adblocker.d.ts",
+ "files": [
+ "LICENSE",
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/cliqz-oss/adblocker.git",
+ "directory": "packages/adblocker-extended-selectors"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "eslint src adblocker.ts",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha --config ../../.mocharc.js"
+ },
+ "bugs": {
+ "url": "https://github.com/cliqz-oss/adblocker/issues"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.3.6",
+ "@types/chai-as-promised": "^7.1.6",
+ "@types/jsdom": "^21.1.3",
+ "@types/mocha": "^10.0.1",
+ "@types/node": "^20.6.2",
+ "chai": "^4.3.8",
+ "chai-as-promised": "^7.1.1",
+ "eslint": "^8.49.0",
+ "jsdom": "^22.1.0",
+ "mocha": "^10.2.0",
+ "nyc": "^15.1.0",
+ "rimraf": "^5.0.1",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.2.2"
+ },
+ "contributors": [
+ {
+ "name": "Rémi Berson",
+ "email": "remi@cliqz.com"
+ }
+ ],
+ "gitHead": "c4df10bc5ba2498ac5f1670c4a829709da7380e7"
+}
diff --git a/client/node_modules/@cliqz/adblocker/LICENSE b/client/node_modules/@cliqz/adblocker/LICENSE
new file mode 100644
index 0000000..11ce717
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/LICENSE
@@ -0,0 +1,375 @@
+Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0. \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/README.md b/client/node_modules/@cliqz/adblocker/README.md
new file mode 100644
index 0000000..a28cc70
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/README.md
@@ -0,0 +1,242 @@
+<h1 align="center">Adblocker</h2>
+
+<p align="center">
+ <em>
+ Efficient
+ · Minimal
+ · JavaScript
+ · TypeScript
+ · uBlock Origin- and Easylist-compatible
+ </em>
+ <br />
+ <em>
+ <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker">Node.js</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-puppeteer">Puppeteer</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron">Electron</a>
+ · <a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-webextension">WebExtension</a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3ATests">
+ <img alt="Github Actions Build Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Tests?label=tests&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/actions?query=workflow%3Assets">
+ <img alt="Github Actions Assets Status" src="https://img.shields.io/github/workflow/status/cliqz-oss/adblocker/Assets?label=assets&style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="npm version" src="https://img.shields.io/npm/v/@cliqz/adblocker.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/@cliqz/adblocker">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/@cliqz/adblocker.svg?style=flat-square"></a>
+ <br/>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://twitter.com/cliqz">
+ <img alt="Follow Cliqz on Twitter" src="https://img.shields.io/twitter/follow/cliqz.svg?label=follow+cliqz&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker">
+ <img alt="Dependabot" src="https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot&style=flat-square"></a>
+ <a href="https://github.com/cliqz-oss/adblocker/blob/master/LICENSE">
+ <img alt="License Badge" src="https://img.shields.io/github/license/cliqz-oss/adblocker?style=flat-square"></a>
+ <a href="https://lgtm.com/projects/g/cliqz-oss/adblocker?mode=list">
+ <img alt="LGTM Badge" src="https://img.shields.io/lgtm/alerts/github/cliqz-oss/adblocker?style=flat-square"></a>
+</p>
+
+---
+
+## Getting Started
+
+Install: `npm install --save @cliqz/adblocker`.
+
+## Usage
+
+There are multiple ways you can *create an instance of the blocking engine* to
+start blocking ads:
+
+If you already have filters locally:
+```javascript
+import { FiltersEngine } from '@cliqz/adblocker';
+const engine = FiltersEngine.parse(fs.readFileSync('easylist.txt', 'utf-8'));
+```
+
+Fetching lists from URLs:
+```javascript
+import { FiltersEngine } from '@cliqz/adblocker';
+engine = await FiltersEngine.fromLists(fetch, [
+ 'https://easylist.to/easylist/easylist.txt'
+]);
+```
+
+Use ready-made configs to block ads and optionally trackers:
+```javascript
+import { FiltersEngine } from '@cliqz/adblocker';
+engine = await FiltersEngine.fromPrebuiltAdsOnly(fetch); // ads only
+engine = await FiltersEngine.fromPrebuiltAdsAndTracking(fetch); // ads and tracking
+```
+
+Once you have your `engine`, start matching requests and block ads:
+
+```javascript
+import { Request } from '@cliqz/adblocker';
+
+const { match } = engine.match(Request.fromRawDetails({
+ type: 'script',
+ url: 'https://domain.com/ads.js',
+}));
+```
+
+### Request Abstraction
+
+To abstract over network requests independently from platforms (Node.js,
+WebExtension, etc.), the `Request` provides a unified APIs and helpers functions
+for initialization on different platforms:
+
+```javascript
+import { Request } from '@cliqz/adblocker';
+
+const request = Request.fromRawDetails({
+ url: 'https://sub.example.com',
+ type: 'main_frame',
+});
+
+console.log(request.isMainFrame()); // true
+console.log(request.url); // https://sub.example.com
+console.log(request.hostname); // sub.example.com
+console.log(request.domain); // example.com
+```
+
+### Manipulating Individual Filters
+
+Content blockers usually manipulate two kinds of filters: *network*
+and *cosmetics*. The former allows to specify which network requests
+should be blocked (or redirected), usually from the `WebRequest` API of
+extensions. The later allows to alter the DOM of pages directly, hiding
+elements or injecting scripts.
+
+#### Network Filters
+
+Here is how one can parse and match individual *network filters* using
+the [NetworkFilter](https://github.com/cliqz-oss/adblocker/blob/master/packages/adblocker/src/filters/network.ts) class. It offers multiple
+accessors and helpers to parse, match and manipulate network filters.
+
+```javascript
+import { NetworkFilter } from '@cliqz/adblocker';
+
+// Parse filter from string
+const filter = NetworkFilter.parse('||domain.com/ads.js$script');
+
+// Filter attributes
+console.log(filter.isHostnameAnchor()); // true
+console.log(filter.getHostname()); // 'domain.com'
+console.log(filter.getFilter()); // '/ads.js'
+
+// Request options
+console.log(filter.fromScript()); // true = can match 'script' requests
+console.log(filter.fromImage()); // false = cannot match 'image' requests
+```
+
+Matching network filter against requests:
+```javascript
+import { Request } from '@cliqz/adblocker';
+
+const request = Request.fromRawDetails({
+ type: 'script',
+ url: 'https://sub.domain.com/ads.js?param=42',
+ sourceUrl: 'https://frame-domain.com',
+});
+
+console.log(filter.match(request)); // true
+```
+
+#### Cosmetic Filters
+
+Similarly, one can parse cosmetic filters using the [CosmeticFilter](https://github.com/cliqz-oss/adblocker/blob/master/packages/adblocker/src/filters/cosmetic.ts) class.
+
+```javascript
+const { CosmeticFilter } = require('@cliqz/adblocker');
+
+// Parsing filter from string
+const filter = CosmeticFilter.parse('domain.*,domain2.com###selector');
+
+// Properties
+console.log(filter.hasHostnameConstraint()); // true
+console.log(filter.getSelector()); // '#selector'
+console.log(filter.isUnhide()); // false
+
+// Matching a cosmetic filter requires both a hostname and domain
+filter.match('sub.domain.com', 'domain.com'); // true
+```
+
+### Filters Engine
+
+Manipulating filters at a low level is useful to build tooling or
+debugging, but they are not appropriate for efficient blocking of
+requests (it would require iterating on all the filters to know if
+a request needs to be blocked). Instead, we can make use of the
+[FiltersEngine](https://github.com/cliqz-oss/adblocker/blob/master/packages/adblocker/src/engine/engine.ts) class which can be seen as a "container" for both
+network and cosmetic filters. The filters are organized in a very
+compact way which also enables fast matching.
+
+```javascript
+import { FiltersEngine, NetworkFilter, CosmeticFilter, Request } from '@cliqz/adblocker';
+
+// Parse multiple filters at once
+let engine = FiltersEngine.parse(`
+! This is a custom list
+||domain.com/ads.js$script
+
+###selector
+domain.com,entity.*##+js(script,args1)
+`);
+```
+
+Updating an existing engine with new filters:
+```javascript
+// Update with individual filters
+engine.update({
+ newNetworkFilters: [NetworkFilter.parse('/ads.js')]
+ newCosmeticFilters: [CosmeticFilter.parse('###selector')],
+});
+```
+
+Serializing an engine to `Uint8Array` and reloading it to its original form:
+```javascript
+// Serialize the full engine to a Uint8Array for caching
+const serialized = engine.serialize();
+engine = FiltersEngine.deserialize(serialized);
+```
+
+Matching requests:
+```javascript
+// Matching network filters
+const {
+ match, // `true` if there is a match
+ redirect, // data url to redirect to if any
+ exception, // instance of NetworkFilter exception if any
+ filter, // instance of NetworkFilter which matched
+} = engine.match(Request.fromRawDetails({
+ type: 'script',
+ url: 'https://sub.domain.com/ads.js',
+}));
+```
+
+Checking for CSP injection rules for a given frame:
+```javascript
+// Matching CSP (content security policy) filters.
+const directives = engine.getCSPDirectives(Request.fromRawDetails({
+ type: 'main_frame',
+ url: 'https://sub.domain.com/',
+}));
+```
+
+Checking for cosmetics injection:
+```javascript
+// Matching cosmetic filters
+const {
+ styles, // stylesheet to inject in the page
+ scripts, // Array of scriptlets to inject in the page
+} = engine.getCosmeticsFilters({
+ url: 'https://sub.domain.com/path',
+ hostname: 'sub.domain.com',
+ domain: 'domain.com',
+});
+```
diff --git a/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js b/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js
new file mode 100644
index 0000000..4f8efa6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js
@@ -0,0 +1,2 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).adblocker={})}(this,(function(t){"use strict";function e(){return{chars:new Map,code:void 0}}const s=new Uint8Array(0);class i{constructor(t,s=3e4){this.trie=function(t){const s=e();for(let i=0;i<t.length;i+=1){const n=t[i];let r=s;for(let t=0;t<n.length;t+=1){const s=n.charCodeAt(t);let i=r.chars.get(s);void 0===i&&(i=e(),r.chars.set(s,i)),r=i}r.code=i}return s}(t),this.buffer=new Uint8Array(s),this.verbatim=new Uint8Array(255)}getCompressedSize(t){if(0===t.length)return 0;let e=0,s=0,i=0;for(;i<t.length;){let n=-1,r=-1,o=this.trie;for(let e=i;e<t.length&&(o=o.chars.get(t.charCodeAt(e)),void 0!==o);e+=1)void 0!==o.code&&(r=o.code,n=e+1);-1===r?(s++,i++,255===s&&(e+=2+s,s=0)):(0!==s&&(e+=2+(1===s?0:s),s=0),e++,i=n)}return 0!==s&&(e+=2+(1===s?0:s)),e}compress(t){if(0===t.length)return s;let e=0,i=0,n=0;const r=t.length;for(;n<t.length;){let s=-1,o=-1,a=this.trie;for(let e=n;e<r&&(a=a.chars.get(t.charCodeAt(e)),void 0!==a);e+=1)void 0!==a.code&&(o=a.code,s=e+1);-1===o?(this.verbatim[i++]=t.charCodeAt(n++),255===i&&(e=this.flushVerbatim(i,e),i=0)):(0!==i&&(e=this.flushVerbatim(i,e),i=0),this.buffer[e++]=o,n=s)}return 0!==i&&(e=this.flushVerbatim(i,e)),this.buffer.slice(0,e)}flushVerbatim(t,e){if(1===t)this.buffer[e++]=254,this.buffer[e++]=this.verbatim[0];else{this.buffer[e++]=255,this.buffer[e++]=t;for(let s=0;s<t;s+=1)this.buffer[e++]=this.verbatim[s]}return e}}class n{constructor(t){this.codebook=t}decompress(t){if(0===t.byteLength)return"";let e="",s=0;for(;s<t.byteLength;)if(254===t[s])e+=String.fromCharCode(t[s+1]),s+=2;else if(255===t[s]){const i=s+t[s+1]+2;for(s+=2;s<i;s+=1)e+=String.fromCharCode(t[s])}else e+=this.codebook[t[s]],s+=1;return e}}class r{constructor(t,e=3e4){this.codebook=t,this.compressor=new i(t,e),this.decompressor=new n(t)}compress(t){return this.compressor.compress(t)}getCompressedSize(t){return this.compressor.getCompressedSize(t)}decompress(t){return this.decompressor.decompress(t)}}var o=['div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"]',"acs, document.createElement, /l\\.parentNode\\.insertBefore\\(s/","acs, document.addEventListener, google_ad_client","acs, document.querySelectorAll, popMagic","acs, addEventListener, google_ad_client","aost, String.prototype.charCodeAt, ai_","aopr, app_vars.force_disable_adblock","aeld, DOMContentLoaded, adsBlocked",'paid.outbrain.com/network/redir?"]',"acs, document.getElementById, ","no-fetch-if, googlesyndication","acs, document.createElement, ","aopr, document.dispatchEvent","acs, String.fromCharCode, ","nosiif, visibility, 1000","set, Object.prototype.","set, blurred, false","acs, eval, replace",'[target="_blank"]',"^script:has-text(",'[href^="https://','[href^="http://',"set, flashvars.","rmnt, script, ","#custom_html-","BlockDetected","no-fetch-if, ",'div[class^="',"notification","leaderboard","no-xhr-if, ","noeval-if, ",", noopFunc",":has-text(","AaDetector","aopw, _pop","background","horizontal","nano-sib, ","container","Container","decodeURI",'div[id^="',"ompliance","placehold","rectangle",'[href*="',"#wpsafe-","backdrop","disclaim","https://","nextFunc","nostif, ","Notifica","nowebrtc",'.com/"]',"300x250","article","consent","content","message","Message","privacy","Privacy","sidebar","sponsor","wrapper","[class","[data-","[style","728x90","accept","Accept","aeld, ","aopr, ","aopw, ","banner","billbo","bottom","cookie","Cookie","google","notice","nowoif","policy","Policy","sticky","widget",":has(",":not(","acs, ","block","Block","click","cript","docum","fixed","frame","modal","popup","set, ","width","0px;","body","foot","gdpr","html","ight","page","show","tion","true","www."," > ","box","Box","div","dow","ent","ide","img","lay","out","rap","sby","top","utt","__","--",", ",": ",".j",".m",".t",'"]','="',"00","ab","ac","ad","Ad","ag","al","am","an","ar","at","d-","de","e-","ed","el","en","er","et","fo","g-","he","id","il","in","is","it","la","le","lo","o-","od","ol","om","on","op","or","ot","ov","p-","re","s_","s-","se","si","st","t-","te","ti","un"," ","_","-",";",":",".","'",")","[","]","*","/","#","^","0","1","2","3","4","5","6","7","8","9","a","A","b","B","c","C","d","D","e","E","f","F","g","h","H","i","I","j","k","l","L","m","M","n","N","o","O","p","P","q","r","R","s","S","t","T","u","U","v","w","W","x","y","z"],a=["sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation","script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:","script-src 'self' 'unsafe-inline' 'unsafe-eval' data:"," *.google.com *.gstatic.com *.googleapis.com",".com *.google.com *.googletagmanager.com *.","script-src 'self' '*' 'unsafe-inline'","default-src 'unsafe-inline' 'self'","*.gstatic.com *.googleapis.com *.","t-src 'self' 'unsafe-inline' ","script-src * 'unsafe-inline'",".com *.google-analytics.com"," *.googletagmanager.com"," *.cloudflare.com *.","*.googleapis.com *.","default-src 'self'","frame-src 'self' *"," *.gstatic.com *.","child-src 'none';","worker-src 'none'"," 'unsafe-inline'","bootstrapcdn.com","'unsafe-eval'","connect-src ","child-src *","style-src *","google.com","jquery.com","script-src","frame-src","facebook","https://",".com *.",".net *.","addthis","captcha","gstatic","youtube"," data:","'self'","defaul","disqus","google","scrip","ytimg",".com","n.cc"," *.","age","dia","tag","vic"," *","er","es","im","in","la","lo","me","ne","nt","pi","ra","re","tt","wi","wp"," ","-",";",":",".","'","*","/","3","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"],A=["\\/[a-d][-\\.\\/_A-Za-z][DHWXm][-\\.\\/_A-Za-z][59FVZ][-\\.\\/_A-Za-z][6swyz][-\\.\\/_A-Za-z][-\\/_0-9a-zA-Z][-\\.\\/_A-Za-z][-\\/_0-9a-zA-Z]{22,162}$/","\\/(?=[\\/a-zA-Z]*[+0-9])(?=[+\\/0-9a-z]*[A-Z])[+\\/0-9a-zA-Z]{","/homad-global-configs.schneevonmorgen.com/global_config","/videojs-vast-vpaid@2.0.2/bin/videojs_5.vast.vpaid.min","/etc.clientlibs/logitech-common/clientlibs/onetrust.","\\/(?=[a-z]{0,6}[0-9A-Z])[0-9a-zA-Z]{7}\\","/pagead/managed/js/gpt/*/pubads_impl","\\?aHR0c[\\/0-9a-zA-Z]{33,}=?=?$/","\\.pussyspace\\.(?:com|net)\\/","/pagead/js/adsbygoogle.js","\\/[+\\/0-9a-zA-Z]{400,}$/","/fileadmin/user_upload/","/js/sdkloader/ima3_dai","/js/sdkloader/ima3.js","/sites/default/files/","/wp-content/plugins/","/wp-content/uploads/","/detroitchicago/","*/satellitelib-","/appmeasurement","/img/linklist2/","/(https?:\\/\\/)","/cdn-cgi/trace","/^https?:\\/\\/","[a-zA-Z0-9]{","/^https:\\/\\/","/wp-content/","impression","[0-9a-f]{","[0-9a-z]{","/template","affiliate","analytics","collector","/assets/","/collect","/images/","tracking","300x250","captcha","consent","content","counter","privacy","sponsor","visitor",".aspx?","/media","0-9a-z","728x90","banner","bundle","client","cookie","detect","google","metric","prebid","public","script","source","widget",".cgi?",".com/",".html","/api/","/file","/img/","/java","/page","/stat","/uplo","a-z]{","block","click","count","event","frame","image","manag","pixel","popup","theme","track","video",".gif",".jpg",".min",".php",".png","/jqu","/js/","/lib","/log","/web","468x","bung","gdpr","gi-b","ight","page","play","show","view",".js","(?:","}\\.","/ad","/js","=*&","com","ext","ive","jax","log","lug","sdk","tag","web","*/","*^","/_","/?","/*","/d","/f","/g","/h","/l","/m","/n","/r","/w","\\/","20","a-","ac","ad","ag","al","am","an","ap","ar","as","at","be","bo","ce","ch","co","de","e-","e/","ed","el","em","en","er","et","ic","id","ig","il","im","in","is","it","js","la","le","li","lo","ma","mp","ol","om","on","op","or","ot","p-","re","ro","s_","s-","s?","s/","sp","ss","st","t/","te","tm","tr","ub","um","un","ur","us","ut","_","-",",",":","?",".",")","[","}","*","/","\\","&","^","=","|","$","0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],c=["securepubads.g.doubleclick","googlesyndication","imasdk.googleapis","googletagmanager",".cloudfront.net",".actonservice",".rsc.cdn77.","doubleclick","marketing.","analytics","smetrics.",".website","metrics.","digital",".co.uk","a8clk.","stats.","a8cv.","media","space","track",".com",".net",".xyz","ight","www.",".de",".io",".jp","aff","app","cdn","new","pro","web",".b",".c",".f",".h",".k",".m",".n",".p",".t",".v",".w","a1","a8","ab","ac","ad","af","ag","ah","ai","ak","al","am","an","ap","ar","as","at","au","av","aw","ax","ay","az","be","bl","bo","br","bu","ca","ce","ch","ci","ck","cl","cr","ct","cu","da","de","di","do","dr","ds","du","dy","e-","eb","ec","ed","ef","eg","ek","el","em","en","ep","er","es","et","eu","ev","ew","ex","ey","fe","fi","fl","fo","fr","ge","gh","gl","go","gr","gu","he","ho","ia","ib","ic","id","ie","if","ig","ik","il","im","in","ip","ir","is","it","iv","ix","iz","jo","ks","la","ld","le","li","lo","lu","ly","ma","me","mo","mp","my","nd","ne","no","ob","of","ok","ol","om","on","oo","op","or","ot","ou","ow","ph","pl","po","pr","qu","re","ro","ru","s-","sc","se","sh","si","sk","sm","sn","so","sp","ss","st","su","sw","sy","t-","ta","te","th","ti","tn","to","tr","ts","tu","tw","ty","ub","ul","um","un","up","ur","us","ut","ve","vi","we","-",".","0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],h=["google-analytics.com/analytics.js","googlesyndication_adsbygoogle.js","googletagmanager.com/gtm.js","googletagservices_gpt.js","googletagmanager_gtm.js","fuckadblock.js-3.2.0","amazon_apstag.js","google-analytics","fingerprint2.js","-transparent.","google-ima.js","prebid-ads.js","nobab2.js:10","noopmp3-0.1s","noop-1s.mp4","hd-main.js","noopmp4-1s","32x32.png","noop.html","noopframe","noop.txt","nooptext","1x1.gif","2x2.png","noop.js","noopjs",".com/",".js:5","noop",":10",".js","ads",":5","ad","am","et","ic","in","mp","re","st","_","-",":",".","/","0","1","2","3","4","5","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","w","x","y","z"],l=["||imasdk.googleapis.com/js","image,redirect-rule=1x1.gi","redirect-rule=google-ima.j","securepubads.g.doubleclick","/pagead/js/adsbygoogle.js","*$script,3p,denyallow=","/wp-content/plugins/","/wp-content/uploads/",",redirect-rule=noop","/sdkloader/ima3.js",".com^$third-party","googlesyndication",".cloudfront.net^","$script,domain=",",redirect=noop","xmlhttprequest",".actonservice","/^https?:\\/\\/","^$third-party","||smetrics.","|downdetect","third-party","-9a-zA-Z]{","marketing.",".website^","$subdocum","analytics","/assets/","cloudfla","tracking","$script","domain=","metrics",".co.uk","$ghide","a8clk.","cookie","google","script",".com^",".top^",".xyz^","a-z]{","a8cv.","image","media","track","video",".com",".gif",".jp^",".net",".php","/js/","$doc","$xhr","html","ight","stat","view","www.",",1p",".de",".io",".jp",".js","$3p","aff","cdn","new","pro","web","-c",".b",".c",".m",".n",".p",".s","@@","*/","/*","/b","/p","||","ab","ac","ad","af","ag","ak","al","am","an","ap","ar","as","at","au","av","aw","ay","az","be","bo","br","ce","ch","ck","cl","ct","de","di","do","e-","e^","eb","ec","ed","el","em","en","ep","er","es","et","ev","ex","ff","fi","fo","fr","g^","ge","go","gr","he","ho","ib","ic","id","if","ig","ik","il","im","in","ip","ir","is","it","iv","ix","iz","js","le","lo","ly","ma","mo","mp","no","ob","od","ok","ol","om","on","op","or","ot","pl","po","pr","qu","re","ro","ru","s/","sc","se","sh","sm","so","sp","ss","st","th","ti","to","tr","ts","tv","ub","ud","ug","ul","um","un","up","ur","us","ut","ve","yo","_","-",",","?",".","*","/","\\","^","=","|","~","$","0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],u=[":style(display: block !imp","+js(acs, addEventListener,","+js(acs, document.querySel","+js(nosiif, visibility, 10","app_vars.force_disable_adb","+js(set, blurred, false)","+js(acs, eval, replace)","ectorAll, popMagic)","+js(acs, document.","+js(rmnt, script, ","decodeURIComponent","^script:has-text(","+js(no-fetch-if, ",'[href^="https://','[href^="http://',"+js(aopw, _pop)","+js(no-xhr-if, ","createElement, ","+js(nano-sib","+js(nostif, ",'div[class^="',"notification"," !important",", noopFunc)","+js(nowoif)","+js(aeld, ","+js(aopr, ","+js(aopw, ","background","+js(acs, ","+js(set, ","container",'div[id^="',"div[style",",amazon.",",google.","https://",".*,xham","300x250","consent","content","message","privacy","wrapper",".co.uk",".com##","[data-","accept","banner","bottom","cookie","Cookie","google","notice","policy","widget",".com,","block","click","movie","popup","video","width",",img",".com",".net",".nl,",".xyz","#@#.","+js(","0px;","gdpr","html","ight","news","side","tube","www."," > ",".*,",".de","age","box","ent","top","web","xxx","__",", ",",p",": ",".*",".f",".p",".s",".t",'"]',"##",'="',"00","ab","ac","ad","Ad","al","am","an","ap","ar","at","au","bi","bo","ca","ch","ck","co","ct","d-","da","de","di","do","e-","ed","el","en","er","es","et","fi","fo","ft","g-","ga","go","he","ho","ic","id","il","im","in","it","la","le","li","lo","ma","me","mi","mo","mp","na","ne","no","ol","on","op","or","ot","ov","po","ra","re","ro","ru","s_","s-","sc","se","sh","si","sk","so","sp","ss","st","t-","ta","te","ti","to","ub","ul","um","un","up","ur","us","ut","ve","vi","xt","y-"," ","_","-",",",";",":",".","(",")","[","/","#","^","0","1","2","3","4","5","6","7","8","9","a","A","b","B","c","C","d","D","e","f","g","h","i","j","k","l","L","m","M","n","o","p","P","q","r","R","s","S","t","T","u","v","w","x","y","z"];class d{constructor(){this.cosmeticSelector=new r(o),this.networkCSP=new r(a),this.networkRedirect=new r(h),this.networkHostname=new r(c),this.networkFilter=new r(A),this.networkRaw=new r(l),this.cosmeticRaw=new r(u)}}const f=(()=>{let t=0;const e=new Int32Array(256);for(let s=0;256!==s;s+=1)t=s,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,t=1&t?-306674912^t>>>1:t>>>1,e[s]=t;return e})();const p=2147483647,g=36,m=1,y=26,b=38,v=700,w=72,k=128,x="-",S=/[^\0-\x7E]/,z=/[\x2E\u3002\uFF0E\uFF61]/g,C={"invalid-input":"Invalid input","not-basic":"Illegal input >= 0x80 (not a basic code point)",overflow:"Overflow: input needs wider integers to process"},I=g-m;function F(t){throw new RangeError(C[t])}function j(t,e){return t+22+75*(t<26?1:0)-((0!==e?1:0)<<5)}function U(t,e,s){let i=0;for(t=s?Math.floor(t/v):t>>1,t+=Math.floor(t/e);t>I*y>>1;i+=g)t=Math.floor(t/I);return Math.floor(i+(I+1)*t/(t+b))}function R(t){const e=[],s=t.length;let i=0,n=k,r=w,o=t.lastIndexOf(x);o<0&&(o=0);for(let s=0;s<o;++s)t.charCodeAt(s)>=128&&F("not-basic"),e.push(t.charCodeAt(s));for(let A=o>0?o+1:0;A<s;){const o=i;for(let e=1,n=g;;n+=g){A>=s&&F("invalid-input");const o=(a=t.charCodeAt(A++))-48<10?a-22:a-65<26?a-65:a-97<26?a-97:g;(o>=g||o>Math.floor((p-i)/e))&&F("overflow"),i+=o*e;const c=n<=r?m:n>=r+y?y:n-r;if(o<c)break;const h=g-c;e>Math.floor(p/h)&&F("overflow"),e*=h}const c=e.length+1;r=U(i-o,c,0===o),Math.floor(i/c)>p-n&&F("overflow"),n+=Math.floor(i/c),i%=c,e.splice(i++,0,n)}var a;return String.fromCodePoint.apply(null,e)}function E(t){const e=[],s=function(t){const e=[];let s=0;const i=t.length;for(;s<i;){const n=t.charCodeAt(s++);if(n>=55296&&n<=56319&&s<i){const i=t.charCodeAt(s++);56320==(64512&i)?e.push(((1023&n)<<10)+(1023&i)+65536):(e.push(n),s--)}else e.push(n)}return e}(t),i=s.length;let n=k,r=0,o=w;for(let t=0;t<s.length;t+=1){const i=s[t];i<128&&e.push(String.fromCharCode(i))}const a=e.length;let A=a;for(a&&e.push(x);A<i;){let t=p;for(let e=0;e<s.length;e+=1){const i=s[e];i>=n&&i<t&&(t=i)}const i=A+1;t-n>Math.floor((p-r)/i)&&F("overflow"),r+=(t-n)*i,n=t;for(let t=0;t<s.length;t+=1){const c=s[t];if(c<n&&++r>p&&F("overflow"),c===n){let t=r;for(let s=g;;s+=g){const i=s<=o?m:s>=o+y?y:s-o;if(t<i)break;const n=t-i,r=g-i;e.push(String.fromCharCode(j(i+n%r,0))),t=Math.floor(n/r)}e.push(String.fromCharCode(j(t,0))),o=U(r,i,A===a),r=0,++A}}++r,++n}return e.join("")}function B(t){const e=t.replace(z,".").split("."),s=[];for(let t=0;t<e.length;t+=1)s.push(S.test(e[t])?"xn--"+E(e[t]):e[t]);return s.join(".")}const H=new Uint8Array(0),L=new Uint32Array(0),T=1===new Int8Array(new Int16Array([1]).buffer)[0];let M,O=()=>{const t=new d;return O=()=>t,t};function $(t){return t<=127?1:5}function W(t,e){return P(t.length,e)}function P(t,e){return(e?3:0)+t+$(t)}function _(t){return t.length+$(t.length)}function D(t){const e=E(t).length;return e+$(e)}function G(t){return t.byteLength+$(t.length)}class Q{static empty(t){return Q.fromUint8Array(H,t)}static fromUint8Array(t,e){return new Q(t,e)}static allocate(t,e){return new Q(new Uint8Array(t),e)}constructor(t,{enableCompression:e}){if(!1===T)throw new Error("Adblocker currently does not support Big-endian systems");!0===e&&this.enableCompression(),this.buffer=t,this.pos=0}enableCompression(){this.compression=O()}checksum(){return function(t,e,s){let i=-1;const n=s-7;let r=e;for(;r<n;)i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])],i=i>>>8^f[255&(i^t[r++])];for(;r<n+7;)i=i>>>8^f[255&(i^t[r++])];return(-1^i)>>>0}(this.buffer,0,this.pos)}dataAvailable(){return this.pos<this.buffer.byteLength}setPos(t){this.pos=t}getPos(){return this.pos}seekZero(){this.pos=0}slice(){return this.checkSize(),this.buffer.slice(0,this.pos)}subarray(){return this.pos===this.buffer.byteLength?this.buffer:(this.checkSize(),this.buffer.subarray(0,this.pos))}align4(){this.pos=this.pos+3&-4}set(t){this.buffer=new Uint8Array(t),this.seekZero()}pushBool(t){this.pushByte(Number(t))}getBool(){return Boolean(this.getByte())}setByte(t,e){this.buffer[t]=e}pushByte(t){this.pushUint8(t)}getByte(){return this.getUint8()}pushBytes(t,e=!1){this.pushLength(t.length),!0===e&&this.align4(),this.buffer.set(t,this.pos),this.pos+=t.byteLength}getBytes(t=!1){const e=this.getLength();!0===t&&this.align4();const s=this.buffer.subarray(this.pos,this.pos+e);return this.pos+=e,s}getUint32ArrayView(t){if(this.align4(),0===t)return L;const e=new Uint32Array(this.buffer.buffer,this.pos+this.buffer.byteOffset,t);return this.pos+=4*t,e}pushUint8(t){this.buffer[this.pos++]=t}getUint8(){return this.buffer[this.pos++]}pushUint16(t){this.buffer[this.pos++]=t>>>8,this.buffer[this.pos++]=t}getUint16(){return(this.buffer[this.pos++]<<8|this.buffer[this.pos++])>>>0}pushUint32(t){this.buffer[this.pos++]=t>>>24,this.buffer[this.pos++]=t>>>16,this.buffer[this.pos++]=t>>>8,this.buffer[this.pos++]=t}getUint32(){return(this.buffer[this.pos++]<<24>>>0)+(this.buffer[this.pos++]<<16|this.buffer[this.pos++]<<8|this.buffer[this.pos++])>>>0}pushUint32Array(t){this.pushLength(t.length);for(const e of t)this.pushUint32(e)}getUint32Array(){const t=this.getLength(),e=new Uint32Array(t);for(let s=0;s<t;s+=1)e[s]=this.getUint32();return e}pushUTF8(t){const e=E(t);this.pushLength(e.length);for(let t=0;t<e.length;t+=1)this.buffer[this.pos++]=e.charCodeAt(t)}getUTF8(){const t=this.getLength();return this.pos+=t,R(String.fromCharCode.apply(null,this.buffer.subarray(this.pos-t,this.pos)))}pushASCII(t){this.pushLength(t.length);for(let e=0;e<t.length;e+=1)this.buffer[this.pos++]=t.charCodeAt(e)}getASCII(){const t=this.getLength();return this.pos+=t,String.fromCharCode.apply(null,this.buffer.subarray(this.pos-t,this.pos))}pushNetworkRedirect(t){void 0!==this.compression?this.pushBytes(this.compression.networkRedirect.compress(t)):this.pushASCII(t)}getNetworkRedirect(){return void 0!==this.compression?this.compression.networkRedirect.decompress(this.getBytes()):this.getASCII()}pushNetworkHostname(t){void 0!==this.compression?this.pushBytes(this.compression.networkHostname.compress(t)):this.pushASCII(t)}getNetworkHostname(){return void 0!==this.compression?this.compression.networkHostname.decompress(this.getBytes()):this.getASCII()}pushNetworkCSP(t){void 0!==this.compression?this.pushBytes(this.compression.networkCSP.compress(t)):this.pushASCII(t)}getNetworkCSP(){return void 0!==this.compression?this.compression.networkCSP.decompress(this.getBytes()):this.getASCII()}pushNetworkFilter(t){void 0!==this.compression?this.pushBytes(this.compression.networkFilter.compress(t)):this.pushASCII(t)}getNetworkFilter(){return void 0!==this.compression?this.compression.networkFilter.decompress(this.getBytes()):this.getASCII()}pushCosmeticSelector(t){void 0!==this.compression?this.pushBytes(this.compression.cosmeticSelector.compress(t)):this.pushASCII(t)}getCosmeticSelector(){return void 0!==this.compression?this.compression.cosmeticSelector.decompress(this.getBytes()):this.getASCII()}pushRawCosmetic(t){void 0!==this.compression?this.pushBytes(this.compression.cosmeticRaw.compress(E(t))):this.pushUTF8(t)}getRawCosmetic(){return void 0!==this.compression?R(this.compression.cosmeticRaw.decompress(this.getBytes())):this.getUTF8()}pushRawNetwork(t){void 0!==this.compression?this.pushBytes(this.compression.networkRaw.compress(E(t))):this.pushUTF8(t)}getRawNetwork(){return void 0!==this.compression?R(this.compression.networkRaw.decompress(this.getBytes())):this.getUTF8()}checkSize(){if(0!==this.pos&&this.pos>this.buffer.byteLength)throw new Error(`StaticDataView too small: ${this.buffer.byteLength}, but required ${this.pos} bytes`)}pushLength(t){t<=127?this.pushUint8(t):(this.pushUint8(128),this.pushUint32(t))}getLength(){const t=this.getUint8();return 128===t?this.getUint32():t}}class N{static deserialize(t){return new N({debug:t.getBool(),enableCompression:t.getBool(),enableHtmlFiltering:t.getBool(),enableInMemoryCache:t.getBool(),enableMutationObserver:t.getBool(),enableOptimizations:t.getBool(),enablePushInjectionsOnNavigationEvents:t.getBool(),guessRequestTypeFromUrl:t.getBool(),integrityCheck:t.getBool(),loadCSPFilters:t.getBool(),loadCosmeticFilters:t.getBool(),loadExceptionFilters:t.getBool(),loadExtendedSelectors:t.getBool(),loadGenericCosmeticsFilters:t.getBool(),loadNetworkFilters:t.getBool()})}constructor({debug:t=!1,enableCompression:e=!1,enableHtmlFiltering:s=!1,enableInMemoryCache:i=!0,enableMutationObserver:n=!0,enableOptimizations:r=!0,enablePushInjectionsOnNavigationEvents:o=!0,guessRequestTypeFromUrl:a=!1,integrityCheck:A=!0,loadCSPFilters:c=!0,loadCosmeticFilters:h=!0,loadExceptionFilters:l=!0,loadExtendedSelectors:u=!1,loadGenericCosmeticsFilters:d=!0,loadNetworkFilters:f=!0}={}){this.debug=t,this.enableCompression=e,this.enableHtmlFiltering=s,this.enableInMemoryCache=i,this.enableMutationObserver=n,this.enableOptimizations=r,this.enablePushInjectionsOnNavigationEvents=o,this.guessRequestTypeFromUrl=a,this.integrityCheck=A,this.loadCSPFilters=c,this.loadCosmeticFilters=h,this.loadExceptionFilters=l,this.loadExtendedSelectors=u,this.loadGenericCosmeticsFilters=d,this.loadNetworkFilters=f}getSerializedSize(){return 15}serialize(t){t.pushBool(this.debug),t.pushBool(this.enableCompression),t.pushBool(this.enableHtmlFiltering),t.pushBool(this.enableInMemoryCache),t.pushBool(this.enableMutationObserver),t.pushBool(this.enableOptimizations),t.pushBool(this.enablePushInjectionsOnNavigationEvents),t.pushBool(this.guessRequestTypeFromUrl),t.pushBool(this.integrityCheck),t.pushBool(this.loadCSPFilters),t.pushBool(this.loadCosmeticFilters),t.pushBool(this.loadExceptionFilters),t.pushBool(this.loadExtendedSelectors),t.pushBool(this.loadGenericCosmeticsFilters),t.pushBool(this.loadNetworkFilters)}}const q="undefined"!=typeof window&&"function"==typeof window.queueMicrotask?t=>window.queueMicrotask(t):t=>(M||(M=Promise.resolve())).then(t).catch((t=>setTimeout((()=>{throw t}),0)));function Z(t,e,s){let i=s.get(t);void 0===i&&(i=[],s.set(t,i)),i.push(e)}function V(t,e,s){const i=s.get(t);if(void 0!==i){const t=i.indexOf(e);-1!==t&&i.splice(t,1)}}function Y(t,e,s){if(0===s.size)return!1;const i=s.get(t);return void 0!==i&&(q((()=>{for(const t of i)t(...e)})),!0)}class X{constructor(){this.onceListeners=new Map,this.onListeners=new Map}on(t,e){Z(t,e,this.onListeners)}once(t,e){Z(t,e,this.onceListeners)}unsubscribe(t,e){V(t,e,this.onListeners),V(t,e,this.onceListeners)}emit(t,...e){Y(t,e,this.onListeners),!0===Y(t,e,this.onceListeners)&&this.onceListeners.delete(t)}}function J(t,e){let s=3;const i=()=>t(e).catch((t=>{if(s>0)return s-=1,new Promise(((t,e)=>{setTimeout((()=>{i().then(t).catch(e)}),500)}));throw t}));return i()}function K(t,e){return J(t,e).then((t=>t.text()))}const tt="https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets",et=[`${tt}/easylist/easylist.txt`,`${tt}/easylist/easylistgermany.txt`,`${tt}/peter-lowe/serverlist.txt`,`${tt}/ublock-origin/annoyances.txt`,`${tt}/ublock-origin/badware.txt`,`${tt}/ublock-origin/filters.txt`,`${tt}/ublock-origin/filters-2020.txt`,`${tt}/ublock-origin/filters-2021.txt`,`${tt}/ublock-origin/filters-2022.txt`,`${tt}/ublock-origin/filters-2023.txt`,`${tt}/ublock-origin/resource-abuse.txt`,`${tt}/ublock-origin/unbreak.txt`],st=[...et,`${tt}/easylist/easyprivacy.txt`,`${tt}/ublock-origin/privacy.txt`],it=[...st,`${tt}/easylist/easylist-cookie.txt`];function nt(t,e){return Promise.all(e.map((e=>K(t,e))))}function rt(t){return K(t,`${tt}/ublock-origin/resources.txt`)}class ot{constructor(){this.options=new Set,this.prefix=void 0,this.infix=void 0,this.suffix=void 0,this.redirect=void 0}blockRequestsWithType(t){if(this.options.has(t))throw new Error(`Already blocking type ${t}`);return this.options.add(t),this}images(){return this.blockRequestsWithType("image")}scripts(){return this.blockRequestsWithType("script")}frames(){return this.blockRequestsWithType("frame")}fonts(){return this.blockRequestsWithType("font")}medias(){return this.blockRequestsWithType("media")}styles(){return this.blockRequestsWithType("css")}redirectTo(t){if(void 0!==this.redirect)throw new Error(`Already redirecting: ${this.redirect}`);return this.redirect=`redirect=${t}`,this}urlContains(t){if(void 0!==this.infix)throw new Error(`Already matching pattern: ${this.infix}`);return this.infix=t,this}urlStartsWith(t){if(void 0!==this.prefix)throw new Error(`Already matching prefix: ${this.prefix}`);return this.prefix=`|${t}`,this}urlEndsWith(t){if(void 0!==this.suffix)throw new Error(`Already matching suffix: ${this.suffix}`);return this.suffix=`${t}|`,this}withHostname(t){if(void 0!==this.prefix)throw new Error(`Cannot match hostname if filter already has prefix: ${this.prefix}`);return this.prefix=`||${t}^`,this}toString(){const t=[];void 0!==this.prefix&&t.push(this.prefix),void 0!==this.infix&&t.push(this.infix),void 0!==this.suffix&&t.push(this.suffix);const e=["important"];if(0!==this.options.size)for(const t of this.options)e.push(t);return void 0!==this.redirect&&e.push(this.redirect),`${0===t.length?"*":t.join("*")}$${e.join(",")}`}}function at(){return new ot}const At=new Set(["any","dir","has","host-context","if","if-not","is","matches","not","where"]),ct={attribute:/\[\s*(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)\s*(?:(?<operator>\W?=)\s*(?<value>.+?)\s*(?<caseSensitive>[iIsS])?\s*)?\]/gu,id:/#(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,class:/\.(?<name>(?:[-\w\u{0080}-\u{FFFF}]|\\.)+)/gu,comma:/\s*,\s*/g,combinator:/\s*[\s>+~]\s*/g,"pseudo-element":/::(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?:¶*)\))?/gu,"pseudo-class":/:(?<name>[-\w\u{0080}-\u{FFFF}]+)(?:\((?<argument>¶*)\))?/gu,type:/(?:(?<namespace>\*|[-\w]*)\|)?(?<name>[-\w\u{0080}-\u{FFFF}]+)|\*/gu},ht=new Set(["pseudo-class","pseudo-element"]),lt=new Set([...ht,"attribute"]),ut=new Set(["combinator","comma"]),dt=Object.assign({},ct);function ft(t,e){t.lastIndex=0;const s=t.exec(e);if(null===s)return;const i=s.index-1,n=s[0],r=e.slice(0,i+1),o=e.slice(i+n.length+1);return[r,[n,s.groups||{}],o]}dt["pseudo-element"]=RegExp(ct["pseudo-element"].source.replace("(?<argument>¶*)","(?<argument>.*?)"),"gu"),dt["pseudo-class"]=RegExp(ct["pseudo-class"].source.replace("(?<argument>¶*)","(?<argument>.*)"),"gu");const pt=[t=>{const e=ft(ct.attribute,t);if(void 0===e)return;const[s,[i,{name:n,operator:r,value:o,namespace:a,caseSensitive:A}],c]=e;return void 0!==n?[s,{type:"attribute",content:i,length:i.length,namespace:a,caseSensitive:A,pos:[],name:n,operator:r,value:o},c]:void 0},t=>{const e=ft(ct.id,t);if(void 0===e)return;const[s,[i,{name:n}],r]=e;return void 0!==n?[s,{type:"id",content:i,length:i.length,pos:[],name:n},r]:void 0},t=>{const e=ft(ct.class,t);if(void 0===e)return;const[s,[i,{name:n}],r]=e;return void 0!==n?[s,{type:"class",content:i,length:i.length,pos:[],name:n},r]:void 0},t=>{const e=ft(ct.comma,t);if(void 0===e)return;const[s,[i],n]=e;return[s,{type:"comma",content:i,length:i.length,pos:[]},n]},t=>{const e=ft(ct.combinator,t);if(void 0===e)return;const[s,[i],n]=e;return[s,{type:"combinator",content:i,length:i.length,pos:[]},n]},t=>{const e=ft(ct["pseudo-element"],t);if(void 0===e)return;const[s,[i,{name:n}],r]=e;return void 0!==n?[s,{type:"pseudo-element",content:i,length:i.length,pos:[],name:n},r]:void 0},t=>{const e=ft(ct["pseudo-class"],t);if(void 0===e)return;const[s,[i,{name:n,argument:r}],o]=e;return void 0!==n?[s,{type:"pseudo-class",content:i,length:i.length,pos:[],name:n,argument:r,subtree:void 0},o]:void 0},t=>{const e=ft(ct.type,t);if(void 0===e)return;const[s,[i,{name:n,namespace:r}],o]=e;return[s,{type:"type",content:i,length:i.length,namespace:r,pos:[],name:n},o]}];function gt(t,e,s,i){for(const n of e)for(const e of t)if(i.has(e.type)&&e.pos[0]<n.start&&n.start<e.pos[1]){const t=e.content;if(e.content=e.content.replace(s,n.str),e.content!==t){dt[e.type].lastIndex=0;const t=dt[e.type].exec(e.content);null!==t&&Object.assign(e,t.groups)}}}function mt(t,e){let s=0;for(e-=1;e>=0&&"\\"===t[e];)s+=1,e-=1;return s%2!=0}function yt(t,e,s){let i=s+1;for(;-1!==(i=t.indexOf(e,i))&&!0===mt(t,i);)i+=1;if(-1!==i)return t.slice(s,i+1)}function bt(t,e){let s=0;for(let i=e;i<t.length;i++){const n=t[i];if("("===n)s+=1;else if(")"===n){if(!(s>0))return;s-=1}if(0===s)return t.slice(e,i+1)}}function vt(t,e,s,i){const n=[];let r=0;for(;-1!==(r=t.indexOf(s,r));){const s=i(t,r);if(void 0===s)break;n.push({str:s,start:r}),t=`${t.slice(0,r+1)}${e.repeat(s.length-2)}${t.slice(r+s.length-1)}`,r+=s.length}return[n,t]}function wt(t){if("string"!=typeof t)return[];if(0===(t=t.trim()).length)return[];const[e,s]=vt(t,"§",'"',((t,e)=>yt(t,'"',e))),[i,n]=vt(s,"§","'",((t,e)=>yt(t,"'",e))),[r,o]=vt(n,"¶","(",bt),a=function(t){if(!t)return[];const e=[t];for(const t of pt)for(let s=0;s<e.length;s++){const i=e[s];if("string"==typeof i){const n=t(i);void 0!==n&&e.splice(s,1,...n.filter((t=>0!==t.length)))}}let s=0;for(const t of e)"string"!=typeof t&&(t.pos=[s,s+t.length],ut.has(t.type)&&(t.content=t.content.trim()||" ")),s+=t.length;return e.every((t=>"string"!=typeof t))?e:[]}(o);return gt(a,r,/\(¶*\)/,ht),gt(a,e,/"§*"/,lt),gt(a,i,/'§*'/,lt),a}function kt(t,{list:e=!0}={}){if(!0===e&&t.some((t=>"comma"===t.type))){const e=[],s=[];for(let i=0;i<t.length;i+=1){const n=t[i];if("comma"===n.type){if(0===s.length)throw new Error("Incorrect comma at "+i);const t=kt(s,{list:!1});void 0!==t&&e.push(t),s.length=0}else s.push(n)}if(0===s.length)throw new Error("Trailing comma");{const t=kt(s,{list:!1});void 0!==t&&e.push(t)}return{type:"list",list:e}}for(let e=t.length-1;e>=0;e--){const s=t[e];if("combinator"===s.type){const i=kt(t.slice(0,e)),n=kt(t.slice(e+1));if(void 0===n)return;if(" "!==s.content&&"~"!==s.content&&"+"!==s.content&&">"!==s.content)return;return{type:"complex",combinator:s.content,left:i,right:n}}}if(0!==t.length)return function(t){return t.every((t=>"comma"!==t.type&&"combinator"!==t.type))}(t)?1===t.length?t[0]:{type:"compound",compound:[...t]}:void 0}function xt(t,e,s,i){if(void 0!==t){if("complex"===t.type)xt(t.left,e,s,t),xt(t.right,e,s,t);else if("compound"===t.type)for(const i of t.compound)xt(i,e,s,t);else"pseudo-class"===t.type&&void 0!==t.subtree&&void 0!==s&&"pseudo-class"===s.type&&void 0!==s.subtree&&xt(t.subtree,e,s,t);e(t,i)}}function St(t,{recursive:e=!0,list:s=!0}={}){const i=wt(t);if(0===i.length)return;const n=kt(i,{list:s});return!0===e&&xt(n,(t=>{"pseudo-class"===t.type&&t.argument&&void 0!==t.name&&At.has(t.name)&&(t.subtree=St(t.argument,{recursive:!0,list:!0}))})),n}const zt=new Set(["has","has-text","if"]),Ct=new Set(["active","any","any-link","blank","checked","default","defined","dir","disabled","empty","enabled","first","first-child","first-of-type","focus","focus-visible","focus-within","fullscreen","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","matches","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","placeholder-shown","read-only","read-write","required","right","root","scope","target","valid","visited","where"]),It=new Set(["after","before","first-letter","first-line"]);var Ft;function jt(t){if(-1===t.indexOf(":"))return Ft.Normal;const e=wt(t);let s=!1;for(const t of e)if("pseudo-class"===t.type){const{name:e}=t;if(!0===zt.has(e))s=!0;else if(!1===Ct.has(e)&&!1===It.has(e))return Ft.Invalid;if(!1===s&&void 0!==t.argument&&!0===At.has(e)){const e=jt(t.argument);if(e===Ft.Invalid)return e;e===Ft.Extended&&(s=!0)}}return!0===s?Ft.Extended:Ft.Normal}!function(t){t[t.Normal=0]="Normal",t[t.Extended=1]="Extended",t[t.Invalid=2]="Invalid"}(Ft||(Ft={}));const Ut=new Set(["htm","html","xhtml"]),Rt=new Set(["eot","otf","sfnt","ttf","woff","woff2"]),Et=new Set(["apng","bmp","cur","dib","eps","gif","heic","heif","ico","j2k","jfi","jfif","jif","jp2","jpe","jpeg","jpf","jpg","jpm","jpx","mj2","pjp","pjpeg","png","svg","svgz","tif","tiff","webp"]),Bt=new Set(["avi","flv","mp3","mp4","ogg","wav","weba","webm","wmv"]),Ht=new Set(["js","ts","jsx","esm"]),Lt=new Set(["css","scss"]);function Tt(t,e){let s=0,i=t.length,n=!1;if(!e){if(t.startsWith("data:"))return null;for(;s<t.length&&t.charCodeAt(s)<=32;)s+=1;for(;i>s+1&&t.charCodeAt(i-1)<=32;)i-=1;if(47===t.charCodeAt(s)&&47===t.charCodeAt(s+1))s+=2;else{const e=t.indexOf(":/",s);if(-1!==e){const i=e-s,n=t.charCodeAt(s),r=t.charCodeAt(s+1),o=t.charCodeAt(s+2),a=t.charCodeAt(s+3),A=t.charCodeAt(s+4);if(5===i&&104===n&&116===r&&116===o&&112===a&&115===A);else if(4===i&&104===n&&116===r&&116===o&&112===a);else if(3===i&&119===n&&115===r&&115===o);else if(2===i&&119===n&&115===r);else for(let i=s;i<e;i+=1){const e=32|t.charCodeAt(i);if(!(e>=97&&e<=122||e>=48&&e<=57||46===e||45===e||43===e))return null}for(s=e+2;47===t.charCodeAt(s);)s+=1}}let e=-1,r=-1,o=-1;for(let a=s;a<i;a+=1){const s=t.charCodeAt(a);if(35===s||47===s||63===s){i=a;break}64===s?e=a:93===s?r=a:58===s?o=a:s>=65&&s<=90&&(n=!0)}if(-1!==e&&e>s&&e<i&&(s=e+1),91===t.charCodeAt(s))return-1!==r?t.slice(s+1,r).toLowerCase():null;-1!==o&&o>s&&o<i&&(i=o)}for(;i>s+1&&46===t.charCodeAt(i-1);)i-=1;const r=0!==s||i!==t.length?t.slice(s,i):t;return n?r.toLowerCase():r}function Mt(t){return t>=97&&t<=122||t>=48&&t<=57||t>127}function Ot(t){if(t.length>255)return!1;if(0===t.length)return!1;if(!Mt(t.charCodeAt(0))&&46!==t.charCodeAt(0)&&95!==t.charCodeAt(0))return!1;let e=-1,s=-1;const i=t.length;for(let n=0;n<i;n+=1){const i=t.charCodeAt(n);if(46===i){if(n-e>64||46===s||45===s||95===s)return!1;e=n}else if(!Mt(i)&&45!==i&&95!==i)return!1;s=i}return i-e-1<=63&&45!==s}const $t=function({allowIcannDomains:t=!0,allowPrivateDomains:e=!1,detectIp:s=!0,extractHostname:i=!0,mixedInputs:n=!0,validHosts:r=null,validateHostname:o=!0}){return{allowIcannDomains:t,allowPrivateDomains:e,detectIp:s,extractHostname:i,mixedInputs:n,validHosts:r,validateHostname:o}}({});function Wt(t,e,s,i,n){const r=function(t){return void 0===t?$t:function({allowIcannDomains:t=!0,allowPrivateDomains:e=!1,detectIp:s=!0,extractHostname:i=!0,mixedInputs:n=!0,validHosts:r=null,validateHostname:o=!0}){return{allowIcannDomains:t,allowPrivateDomains:e,detectIp:s,extractHostname:i,mixedInputs:n,validHosts:r,validateHostname:o}}(t)}(i);return"string"!=typeof t?n:(r.extractHostname?r.mixedInputs?n.hostname=Tt(t,Ot(t)):n.hostname=Tt(t,!1):n.hostname=t,0===e||null===n.hostname||r.detectIp&&(n.isIp=function(t){if(t.length<3)return!1;let e=t.startsWith("[")?1:0,s=t.length;if("]"===t[s-1]&&(s-=1),s-e>39)return!1;let i=!1;for(;e<s;e+=1){const s=t.charCodeAt(e);if(58===s)i=!0;else if(!(s>=48&&s<=57||s>=97&&s<=102||s>=65&&s<=90))return!1}return i}(o=n.hostname)||function(t){if(t.length<7)return!1;if(t.length>15)return!1;let e=0;for(let s=0;s<t.length;s+=1){const i=t.charCodeAt(s);if(46===i)e+=1;else if(i<48||i>57)return!1}return 3===e&&46!==t.charCodeAt(0)&&46!==t.charCodeAt(t.length-1)}(o),n.isIp)?n:r.validateHostname&&r.extractHostname&&!Ot(n.hostname)?(n.hostname=null,n):(s(n.hostname,r,n),2===e||null===n.publicSuffix?n:(n.domain=function(t,e,s){if(null!==s.validHosts){const t=s.validHosts;for(const s of t)if(function(t,e){return!!t.endsWith(e)&&(t.length===e.length||"."===t[t.length-e.length-1])}(e,s))return s}let i=0;if(e.startsWith("."))for(;i<e.length&&"."===e[i];)i+=1;return t.length===e.length-i?null:function(t,e){const s=t.length-e.length-2,i=t.lastIndexOf(".",s);return-1===i?t:t.slice(i+1)}(e,t)}(n.publicSuffix,n.hostname,r),3===e||null===n.domain?n:(n.subdomain=function(t,e){return e.length===t.length?"":t.slice(0,-e.length-1)}(n.hostname,n.domain),4===e||(n.domainWithoutSuffix=(a=n.domain,A=n.publicSuffix,a.slice(0,-A.length-1))),n))));var o,a,A}var Pt=new Uint32Array([5,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,57,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1675555530,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294e3,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583e3,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607e3,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124e3,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1640,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994e3,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501e3,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,349,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852957,1222628504,1230410191,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1866278547,1867401367,1936236019,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041816,3319967633,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,2,343511425,4233599295,4,989615076,1348282182,2372695675,2793429742,73,2516160,83460346,113271207,134752460,257089230,310748895,373240553,387546555,465045723,528158848,599016891,599034260,599035482,745170160,748886222,771634050,771637032,1049173028,1156523661,1264600767,1542981532,1557499238,1644040136,1645084619,1709094170,1740118996,1778504542,1807895638,1836295865,1964668429,2086817070,2091822363,2368015199,2707054618,2757714990,2842899363,2873826097,2875201553,2889802328,2938675535,2942499160,3012594373,3068421535,3068451149,3097180103,3250117513,3276067803,3303582289,3303582897,3303582994,3303614961,3346748653,3371744816,3577832733,3577832874,3719669200,3737867596,3737869333,3737882439,3755463030,3789613664,3804622433,3829814476,3847110230,3927045026,3974478460,3990612749,3994206764,3994206767,4069710253,4103392506,4130682685,4197651626,0,0,0,0,0,86,14034108,23188555,69988957,176179919,181602757,286917352,303225044,436746473,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,688229624,733631603,804592434,820388681,834351359,838060561,871806992,907959623,917609192,936253712,1097991931,1188365042,1322375458,1389219463,1544881072,1554252850,1566036640,1637844009,1668922875,1697481902,1779722906,1817679755,1874439438,1942164974,1953292144,2171493616,2174172768,2232538822,2253530761,2307427283,2356867634,2454582508,2471444403,2478294033,2487762682,2513007594,2523046044,2645305307,2697781106,2713921343,2858583336,2869381059,2877426354,2941854634,3033841873,3036938981,3090851e3,3173697968,3175256934,3193365922,3293334302,3298593e3,3336190368,3391640312,3415553447,3505446608,3554833241,3594782899,3710380917,3803370028,3804920752,3894082090,3928753122,4065646590,4180315949,4196008531,4241738188,4265459019]);function _t(t,e,s,i){if(s>=i)return!1;let n=s,r=i-1;for(;n<=r;){const s=n+r>>>1,i=t[s];if(i<e)n=s+1;else{if(!(i>e))return!0;r=s-1}}return!1}const Dt=new Uint32Array(20);function Gt(t,e,s){if(function(t,e,s){if(!e.allowPrivateDomains&&t.length>3){const e=t.length-1,i=t.charCodeAt(e),n=t.charCodeAt(e-1),r=t.charCodeAt(e-2),o=t.charCodeAt(e-3);if(109===i&&111===n&&99===r&&46===o)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(103===i&&114===n&&111===r&&46===o)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(117===i&&100===n&&101===r&&46===o)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(118===i&&111===n&&103===r&&46===o)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(116===i&&101===n&&110===r&&46===o)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(101===i&&100===n&&46===r)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}(t,e,s))return;const{allowIcannDomains:i,allowPrivateDomains:n}=e;let r=-1,o=0,a=0,A=1;const c=function(t,e){let s=5381,i=0;for(let n=t.length-1;n>=0;n-=1){const r=t.charCodeAt(n);if(46===r&&(Dt[i<<1]=s>>>0,Dt[1+(i<<1)]=n+1,i+=1,i===e))return i;s=33*s^r}return Dt[i<<1]=s>>>0,Dt[1+(i<<1)]=0,i+=1,i}(t,Pt[0]);for(let t=0;t<c;t+=1){const e=Dt[t<<1],s=Dt[1+(t<<1)];let c=0;i&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?5:0),A+=Pt[A]+1,n&&0===c&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?6:0),A+=Pt[A]+1,i&&0===c&&0==(4&o)&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?17:0),A+=Pt[A]+1,n&&0===c&&0==(4&o)&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?18:0),A+=Pt[A]+1,i&&0===c&&0==(4&o)&&a<=t&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?9:0),A+=Pt[A]+1,n&&0===c&&0==(4&o)&&a<=t&&(c=_t(Pt,e,A+1,A+Pt[A]+1)?10:0),A+=Pt[A]+1,0!==c&&(o=c,a=t+(0!=(16&c)?2:1),r=s)}if(s.isIcann=0!=(1&o),s.isPrivate=0!=(2&o),-1!==r)if(0==(4&o))if(0==(16&o))s.publicSuffix=t.slice(r);else{if(a<c)return void(s.publicSuffix=t.slice(Dt[1+(a-1<<1)]));const e=t.split(".");for(;e.length>a;)e.shift();s.publicSuffix=e.join(".")}else s.publicSuffix=t.slice(Dt[1+(a-2<<1)]);else s.publicSuffix=1===c?t:t.slice(Dt[1])}function Qt(t,e={}){return Wt(t,5,Gt,e,{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null})}const Nt=new class{constructor(t){this.pos=0,this.buffer=new Uint32Array(t)}reset(){this.pos=0}slice(){return this.buffer.slice(0,this.pos)}push(t){this.buffer[this.pos++]=t}empty(){return 0===this.pos}full(){return this.pos===this.buffer.length}remaining(){return this.buffer.length-this.pos}}(1024),qt=7877;function Zt(t){return 16843009*((t=(858993459&(t-=t>>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135)>>24}function Vt(t,e){return!!(t&e)}function Yt(t,e){return t|e}function Xt(t,e){return t&~e}function Jt(t,e,s){let i=qt;for(let n=e;n<s;n+=1)i=33*i^t.charCodeAt(n);return i>>>0}function Kt(t){return"string"!=typeof t||0===t.length?qt:Jt(t,0,t.length)}function te(t){const e=new Uint32Array(t.length);let s=0;for(const i of t)e[s++]=Kt(i);return e}function ee(t,e){if(t.length<e.length)return!1;const s=e.length;for(let i=0;i<s;i+=1)if(t[i]!==e[i])return!1;return!0}function se(t,e,s){if(t.length-s<e.length)return!1;const i=s+e.length;for(let n=s;n<i;n+=1)if(t[n]!==e[n-s])return!1;return!0}function ie(t){return t>=48&&t<=57}function ne(t){return t>=97&&t<=122||t>=65&&t<=90}function re(t){return ne(t)||ie(t)||37===t||function(t){return t>=192&&t<=450}(t)||function(t){return t>=1024&&t<=1279}(t)}function oe(t,e,s,i){const n=Math.min(t.length,2*i.remaining());let r=!1,o=0,a=qt;for(let s=0;s<n;s+=1){const n=t.charCodeAt(s);!0===re(n)?(!1===r&&(a=qt,r=!0,o=s),a=33*a^n):!0===r&&(r=!1,s-o>1&&(!1===e||0!==o)&&i.push(a>>>0))}!0===r&&!1===s&&t.length-o>1&&!1===i.full()&&i.push(a>>>0)}function ae(t,e){const s=Math.min(t.length,2*e.remaining());let i=!1,n=0,r=qt;for(let o=0;o<s;o+=1){const s=t.charCodeAt(o);!0===re(s)?(!1===i&&(r=qt,i=!0,n=o),r=33*r^s):!0===i&&(i=!1,o-n>1&&e.push(r>>>0))}!0===i&&t.length-n>1&&!1===e.full()&&e.push(r>>>0)}function Ae(t){return Nt.reset(),ae(t,Nt),Nt.slice()}function ce(t,e){return-1!==function(t,e){if(0===t.length)return-1;let s=0,i=t.length-1;for(;s<=i;){const n=s+i>>>1,r=t[n];if(r<e)s=n+1;else{if(!(r>e))return n;i=n-1}}return-1}(t,e)}const he=/[^\u0000-\u00ff]/;function le(t){return he.test(t)}const ue={extractHostname:!0,mixedInputs:!1,validateHostname:!1},de={beacon:Kt("type:beacon"),cspReport:Kt("type:csp"),csp_report:Kt("type:csp"),cspviolationreport:Kt("type:cspviolationreport"),document:Kt("type:document"),eventsource:Kt("type:other"),fetch:Kt("type:xhr"),font:Kt("type:font"),image:Kt("type:image"),imageset:Kt("type:image"),mainFrame:Kt("type:document"),main_frame:Kt("type:document"),manifest:Kt("type:other"),media:Kt("type:media"),object:Kt("type:object"),object_subrequest:Kt("type:object"),other:Kt("type:other"),ping:Kt("type:ping"),prefetch:Kt("type:other"),preflight:Kt("type:preflight"),script:Kt("type:script"),signedexchange:Kt("type:signedexchange"),speculative:Kt("type:other"),stylesheet:Kt("type:stylesheet"),subFrame:Kt("type:subdocument"),sub_frame:Kt("type:subdocument"),texttrack:Kt("type:other"),webSocket:Kt("type:websocket"),web_manifest:Kt("type:other"),websocket:Kt("type:websocket"),xhr:Kt("type:xhr"),xml_dtd:Kt("type:other"),xmlhttprequest:Kt("type:xhr"),xslt:Kt("type:other")};function fe(t){let e=qt;for(let s=t.length-1;s>=0;s-=1)e=33*e^t.charCodeAt(s);return e>>>0}function pe(t,e,s){Nt.reset();let i=qt;for(let n=e-1;n>=0;n-=1){const e=t.charCodeAt(n);46===e&&n<s&&Nt.push(i>>>0),i=33*i^e}return Nt.push(i>>>0),Nt.slice()}function ge(t,e){const s=function(t,e){let s=null;const i=e.indexOf(".");if(-1!==i){const n=e.slice(i+1);s=t.slice(0,-n.length-1)}return s}(t,e);return null!==s?pe(s,s.length,s.length):L}function me(t,e){return pe(t,t.length,t.length-e.length)}class ye{static fromRawDetails({requestId:t="0",tabId:e=0,url:s="",hostname:i,domain:n,sourceUrl:r="",sourceHostname:o,sourceDomain:a,type:A="main_frame",_originalRequestDetails:c}){if(s=s.toLowerCase(),void 0===i||void 0===n){const t=Qt(s,ue);i=i||t.hostname||"",n=n||t.domain||""}if(void 0===o||void 0===a){const t=Qt(o||a||r,ue);o=o||t.hostname||"",a=a||t.domain||o||""}return new ye({requestId:t,tabId:e,domain:n,hostname:i,url:s,sourceDomain:a,sourceHostname:o,sourceUrl:r,type:A,_originalRequestDetails:c})}constructor({requestId:t,tabId:e,type:s,domain:i,hostname:n,url:r,sourceDomain:o,sourceHostname:a,_originalRequestDetails:A}){if(this.tokens=void 0,this.hostnameHashes=void 0,this.entityHashes=void 0,this._originalRequestDetails=A,this.id=t,this.tabId=e,this.type=s,this.url=r,this.hostname=n,this.domain=i,this.sourceHostnameHashes=0===a.length?L:me(a,o),this.sourceEntityHashes=0===a.length?L:ge(a,o),this.isThirdParty=function(t,e,s,i,n){return"main_frame"!==n&&"mainFrame"!==n&&(0!==e.length&&0!==i.length?e!==i:0!==e.length&&0!==s.length?e!==s:0!==i.length&&0!==t.length&&t!==i)}(n,i,a,o,s),this.isFirstParty=!this.isThirdParty,this.isSupported=!0,"websocket"===this.type||this.url.startsWith("ws:")||this.url.startsWith("wss:"))this.isHttp=!1,this.isHttps=!1,this.type="websocket",this.isSupported=!0;else if(this.url.startsWith("http:"))this.isHttp=!0,this.isHttps=!1;else if(this.url.startsWith("https:"))this.isHttps=!0,this.isHttp=!1;else if(this.url.startsWith("data:")){this.isHttp=!1,this.isHttps=!1;const t=this.url.indexOf(",");-1!==t&&(this.url=this.url.slice(0,t))}else this.isHttp=!1,this.isHttps=!1,this.isSupported=!1}getHostnameHashes(){return void 0===this.hostnameHashes&&(this.hostnameHashes=0===this.hostname.length?L:me(this.hostname,this.domain)),this.hostnameHashes}getEntityHashes(){return void 0===this.entityHashes&&(this.entityHashes=0===this.hostname.length?L:ge(this.hostname,this.domain)),this.entityHashes}getTokens(){if(void 0===this.tokens){Nt.reset();for(const t of this.sourceHostnameHashes)Nt.push(t);Nt.push(de[this.type]),ae(this.url,Nt),this.tokens=Nt.slice()}return this.tokens}isMainFrame(){return"main_frame"===this.type||"mainFrame"===this.type}isSubFrame(){return"sub_frame"===this.type||"subFrame"===this.type}guessTypeOfRequest(){const t=this.type;return this.type=function(t){const e=function(t){let e=t.length;const s=t.indexOf("#");-1!==s&&(e=s);const i=t.indexOf("?");-1!==i&&i<e&&(e=i);let n=e-1,r=0;for(;n>=0&&(r=t.charCodeAt(n),0!=(r>=65&&r<=90||r>=97&&r<=122||r>=48&&r<=57));n-=1);return 46!==r||n<0||e-n>=10?"":t.slice(n+1,e)}(t);return Et.has(e)||t.startsWith("data:image/")||t.startsWith("https://frog.wix.com/bt")?"image":Bt.has(e)||t.startsWith("data:audio/")||t.startsWith("data:video/")?"media":Lt.has(e)||t.startsWith("data:text/css")?"stylesheet":Ht.has(e)||t.startsWith("data:")&&(t.startsWith("data:application/ecmascript")||t.startsWith("data:application/javascript")||t.startsWith("data:application/x-ecmascript")||t.startsWith("data:application/x-javascript")||t.startsWith("data:text/ecmascript")||t.startsWith("data:text/javascript")||t.startsWith("data:text/javascript1.0")||t.startsWith("data:text/javascript1.1")||t.startsWith("data:text/javascript1.2")||t.startsWith("data:text/javascript1.3")||t.startsWith("data:text/javascript1.4")||t.startsWith("data:text/javascript1.5")||t.startsWith("data:text/jscript")||t.startsWith("data:text/livescript")||t.startsWith("data:text/x-ecmascript")||t.startsWith("data:text/x-javascript"))||t.startsWith("https://maps.googleapis.com/maps/api/js")||t.startsWith("https://www.googletagmanager.com/gtag/js")?"script":Ut.has(e)||t.startsWith("data:text/html")||t.startsWith("data:application/xhtml")||t.startsWith("https://www.youtube.com/embed/")||t.startsWith("https://www.google.com/gen_204")?"document":Rt.has(e)||t.startsWith("data:font/")?"font":"other"}(this.url),t!==this.type&&(this.tokens=void 0),this.type}}class be{static parse(t,e=!1){if(0===t.length)return;const s=[],i=[],n=[],r=[];for(let e of t){le(e)&&(e=B(e));const t=126===e.charCodeAt(0),o=42===e.charCodeAt(e.length-1)&&46===e.charCodeAt(e.length-2),a=t?1:0,A=o?e.length-2:e.length,c=fe(!0===t||!0===o?e.slice(a,A):e);t?o?i.push(c):r.push(c):o?s.push(c):n.push(c)}return new be({entities:0!==s.length?new Uint32Array(s).sort():void 0,hostnames:0!==n.length?new Uint32Array(n).sort():void 0,notEntities:0!==i.length?new Uint32Array(i).sort():void 0,notHostnames:0!==r.length?new Uint32Array(r).sort():void 0,parts:!0===e?t.join(","):void 0})}static deserialize(t){const e=t.getUint8();return new be({entities:1==(1&e)?t.getUint32Array():void 0,hostnames:2==(2&e)?t.getUint32Array():void 0,notEntities:4==(4&e)?t.getUint32Array():void 0,notHostnames:8==(8&e)?t.getUint32Array():void 0,parts:16==(16&e)?t.getUTF8():void 0})}constructor({entities:t,hostnames:e,notEntities:s,notHostnames:i,parts:n}){this.entities=t,this.hostnames=e,this.notEntities=s,this.notHostnames=i,this.parts=n}updateId(t){const{hostnames:e,entities:s,notHostnames:i,notEntities:n}=this;if(void 0!==e)for(const s of e)t=33*t^s;if(void 0!==s)for(const e of s)t=33*t^e;if(void 0!==i)for(const e of i)t=33*t^e;if(void 0!==n)for(const e of n)t=33*t^e;return t}serialize(t){const e=t.getPos();t.pushUint8(0);let s=0;void 0!==this.entities&&(s|=1,t.pushUint32Array(this.entities)),void 0!==this.hostnames&&(s|=2,t.pushUint32Array(this.hostnames)),void 0!==this.notEntities&&(s|=4,t.pushUint32Array(this.notEntities)),void 0!==this.notHostnames&&(s|=8,t.pushUint32Array(this.notHostnames)),void 0!==this.parts&&(s|=16,t.pushUTF8(this.parts)),t.setByte(e,s)}getSerializedSize(){let t=1;return void 0!==this.entities&&(t+=G(this.entities)),void 0!==this.hostnames&&(t+=G(this.hostnames)),void 0!==this.notHostnames&&(t+=G(this.notHostnames)),void 0!==this.notEntities&&(t+=G(this.notEntities)),void 0!==this.parts&&(t+=D(this.parts)),t}match(t,e){if(void 0!==this.notHostnames)for(const e of t)if(ce(this.notHostnames,e))return!1;if(void 0!==this.notEntities)for(const t of e)if(ce(this.notEntities,t))return!1;if(void 0!==this.hostnames||void 0!==this.entities){if(void 0!==this.hostnames)for(const e of t)if(ce(this.hostnames,e))return!0;if(void 0!==this.entities)for(const t of e)if(ce(this.entities,t))return!0;return!1}return!0}}function ve(t){if(!1===t.startsWith("^script"))return;const e=":has-text(",s=[];let i=7;for(;t.startsWith(e,i);){i+=10;let e=1;const n=i;let r=-1;for(;i<t.length&&0!==e;i+=1){const s=t.charCodeAt(i);92!==r&&(40===s&&(e+=1),41===s&&(e-=1)),r=s}s.push(t.slice(n,i-1))}return i===t.length?["script",s]:void 0}function we(t,e,s){for(const s of e)if(-1===t.indexOf(s))return!1;for(const e of s)if(!1===e.test(t))return!1;return!0}const ke=[L],xe="display: none !important;",Se=new RegExp(/\\u002C/,"g"),ze=new RegExp(/\\u005C/,"g");function Ce(t){for(let e=1;e<t.length;e+=1){const s=t.charCodeAt(e);if(!(45===s||95===s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)){if(e<t.length-1){const i=t.charCodeAt(e+1);if(91===s||46===s||58===s||32===s&&(62===i||43===i||126===i||46===i||35===i))return!0}return!1}}return!0}function Ie(t,e){return t.startsWith('href^="',e)||t.startsWith('href*="',e)||t.startsWith('href="',e)}const Fe=(()=>{const t="undefined"!=typeof document?document.createElement("div"):{matches:()=>{}},e=/^[#.]?[\w-.]+$/;return function(s){if(e.test(s))return!0;try{(e=>{t.matches(e)})(s)}catch(t){return!1}return!0}})();class je{static parse(t,e=!1){const s=t;let i,n,r,o=0;const a=t.indexOf("#"),A=a+1;let c=A+1;if(t.length>A&&("@"===t[A]?(o=Yt(o,1),c+=1):"?"===t[A]&&(c+=1)),c>=t.length)return null;if(a>0&&(n=be.parse(t.slice(0,a).split(","),e)),t.endsWith(":remove()"))o=Yt(o,64),o=Yt(o,128),t=t.slice(0,-9);else if(t.length-c>=8&&t.endsWith(")")&&-1!==t.indexOf(":style(",c)){const e=t.indexOf(":style(",c);r=t.slice(e+7,-1),t=t.slice(0,e)}if(94===t.charCodeAt(c)){if(!1===se(t,"script:has-text(",c+1)||41!==t.charCodeAt(t.length-1))return null;if(i=t.slice(c,t.length),void 0===ve(i))return null}else if(t.length-c>4&&43===t.charCodeAt(c)&&se(t,"+js(",c)){if((void 0===n||void 0===n.hostnames&&void 0===n.entities)&&!1===Vt(o,1))return null;if(o=Yt(o,2),i=t.slice(c+4,t.length-1),!1===Vt(o,1)&&0===i.length)return null}else{i=t.slice(c);const e=jt(i);if(e===Ft.Extended)o=Yt(o,128);else if(e===Ft.Invalid||!Fe(i))return null}if(void 0===n&&!0===Vt(o,128))return null;if(void 0!==i&&(le(i)&&(o=Yt(o,4)),!1===Vt(o,2)&&!1===Vt(o,64)&&!1===Vt(o,128)&&!1===i.startsWith("^"))){const t=i.charCodeAt(0),e=i.charCodeAt(1),s=i.charCodeAt(2);!1===Vt(o,2)&&(46===t&&Ce(i)?o=Yt(o,8):35===t&&Ce(i)?o=Yt(o,16):(97===t&&91===e&&104===s&&Ie(i,2)||91===t&&104===e&&Ie(i,1))&&(o=Yt(o,32)))}return new je({mask:o,rawLine:!0===e?s:void 0,selector:i,style:r,domains:n})}static deserialize(t){const e=t.getUint8(),s=Vt(e,4),i=t.getUint8(),n=s?t.getUTF8():t.getCosmeticSelector();return new je({mask:e,selector:n,domains:1==(1&i)?be.deserialize(t):void 0,rawLine:2==(2&i)?t.getRawCosmetic():void 0,style:4==(4&i)?t.getASCII():void 0})}constructor({mask:t,selector:e,domains:s,rawLine:i,style:n}){this.mask=t,this.selector=e,this.domains=s,this.style=n,this.id=void 0,this.rawLine=i}isCosmeticFilter(){return!0}isNetworkFilter(){return!1}serialize(t){t.pushUint8(this.mask);const e=t.getPos();t.pushUint8(0),this.isUnicode()?t.pushUTF8(this.selector):t.pushCosmeticSelector(this.selector);let s=0;void 0!==this.domains&&(s|=1,this.domains.serialize(t)),void 0!==this.rawLine&&(s|=2,t.pushRawCosmetic(this.rawLine)),void 0!==this.style&&(s|=4,t.pushASCII(this.style)),t.setByte(e,s)}getSerializedSize(t){let e=2;return this.isUnicode()?e+=D(this.selector):e+=function(t,e){return!0===e?P(O().cosmeticSelector.getCompressedSize(t),!1):_(t)}(this.selector,t),void 0!==this.domains&&(e+=this.domains.getSerializedSize()),void 0!==this.rawLine&&(e+=function(t,e){return!0===e?P(O().cosmeticRaw.getCompressedSize(E(t)),!1):D(t)}(this.rawLine,t)),void 0!==this.style&&(e+=_(this.style)),e}toString(){if(void 0!==this.rawLine)return this.rawLine;let t="";return void 0!==this.domains&&(void 0!==this.domains.parts?t+=this.domains.parts:t+="<hostnames>"),this.isUnhide()?t+="#@#":t+="##",this.isScriptInject()?(t+="+js(",t+=this.selector,t+=")"):t+=this.selector,t}match(t,e){return!1===this.hasHostnameConstraint()||!(!t&&this.hasHostnameConstraint())&&(void 0===this.domains||this.domains.match(0===t.length?L:me(t,e),0===t.length?L:ge(t,e)))}getTokens(){const t=[];if(void 0!==this.domains){const{hostnames:e,entities:s}=this.domains;if(void 0!==e)for(const s of e)t.push(new Uint32Array([s]));if(void 0!==s)for(const e of s)t.push(new Uint32Array([e]))}if(0===t.length&&!1===this.isUnhide())if(this.isIdSelector()||this.isClassSelector()){let e=1;const s=this.selector;for(;e<s.length;e+=1){const t=s.charCodeAt(e);if(32===t||46===t||58===t||91===t)break}const i=new Uint32Array(1);i[0]=Jt(s,1,e),t.push(i)}else if(!0===this.isHrefSelector()){const e=this.getSelector();let s=e.indexOf("href");if(-1===s)return ke;s+=4;let i=!1,n=!0;42===e.charCodeAt(s)?(i=!0,s+=1):94===e.charCodeAt(s)?s+=1:n=!1,s+=2;const r=e.indexOf('"',s);if(-1===r)return ke;t.push(function(t,e,s){return Nt.reset(),oe(t,e,s,Nt),Nt.slice()}(this.selector.slice(s,r),i,n))}return 0===t.length?ke:t}parseScript(){const t=this.getSelector();if(0===t.length)return;const e=[];let s=0,i=-1,n=!1,r=!1,o=!1,a=0,A=!1,c=!1;for(;s<t.length;s+=1){const h=t[s];!1===A&&(!0===n?'"'===h&&(n=!1):!0===r?"'"===h&&(r=!1):0!==a?"{"===h?a+=1:"}"===h?a-=1:'"'===h?n=!0:"'"===h&&(r=!0):!0===o?"/"===h&&(o=!1):(!1===c&&(" "===h||('"'===h&&t.indexOf('"',s+1)>0?n=!0:"'"===h&&t.indexOf("'",s+1)>0?r=!0:"{"===h&&t.indexOf("}",s+1)>0?a+=1:"/"===h&&t.indexOf("/",s+1)>0?o=!0:c=!0)),","===h&&(e.push(t.slice(i+1,s).trim()),i=s,c=!1))),A="\\"===h}if(e.push(t.slice(i+1).trim()),0===e.length)return;const h=e.slice(1).map((t=>t.startsWith("'")&&t.endsWith("'")||t.startsWith('"')&&t.endsWith('"')?t.substring(1,t.length-1):t)).map((t=>t.replace(Se,",").replace(ze,"\\")));return{name:e[0],args:h}}getScript(t){const e=this.parseScript();if(void 0===e)return;const{name:s,args:i}=e;let n=t.get(s);if(void 0!==n){for(let t=0;t<i.length;t+=1){const e=i[t].replace(/[.*+?^${}()|[\]\\]/g,"\\$&");n=n.replace(`{{${t+1}}}`,e)}return n}}hasHostnameConstraint(){return void 0!==this.domains}getId(){return void 0===this.id&&(this.id=function(t,e,s,i){let n=179421^t;if(void 0!==e)for(let t=0;t<e.length;t+=1)n=33*n^e.charCodeAt(t);if(void 0!==s&&(n=s.updateId(n)),void 0!==i)for(let t=0;t<i.length;t+=1)n=33*n^i.charCodeAt(t);return n>>>0}(this.mask,this.selector,this.domains,this.style)),this.id}hasCustomStyle(){return void 0!==this.style}getStyle(){return this.style||xe}getStyleAttributeHash(){return`s${Kt(this.getStyle())}`}getSelector(){return this.selector}getSelectorAST(){return St(this.getSelector())}getExtendedSelector(){return ve(this.selector)}isExtended(){return Vt(this.mask,128)}isRemove(){return Vt(this.mask,64)}isUnhide(){return Vt(this.mask,1)}isScriptInject(){return Vt(this.mask,2)}isCSS(){return!1===this.isScriptInject()}isIdSelector(){return Vt(this.mask,16)}isClassSelector(){return Vt(this.mask,8)}isHrefSelector(){return Vt(this.mask,32)}isUnicode(){return Vt(this.mask,4)}isHtmlFiltering(){return this.getSelector().startsWith("^")}isGenericHide(){var t,e;return void 0===(null===(t=null==this?void 0:this.domains)||void 0===t?void 0:t.hostnames)&&void 0===(null===(e=null==this?void 0:this.domains)||void 0===e?void 0:e.entities)}}const Ue=Kt("http"),Re=Kt("https");const Ee=16371,Be={beacon:256,document:1,cspviolationreport:128,fetch:8192,font:2,image:16,imageset:16,mainFrame:1,main_frame:1,media:32,object:64,object_subrequest:64,ping:256,script:512,stylesheet:1024,subFrame:2048,sub_frame:2048,webSocket:4096,websocket:4096,xhr:8192,xmlhttprequest:8192,cspReport:128,csp_report:128,eventsource:128,manifest:128,other:128,prefetch:128,preflight:128,signedexchange:128,speculative:128,texttrack:128,web_manifest:128,xml_dtd:128,xslt:128};function He(t){const e=[];return t.fromDocument()&&e.push("document"),t.fromImage()&&e.push("image"),t.fromMedia()&&e.push("media"),t.fromObject()&&e.push("object"),t.fromOther()&&e.push("other"),t.fromPing()&&e.push("ping"),t.fromScript()&&e.push("script"),t.fromStylesheet()&&e.push("stylesheet"),t.fromSubdocument()&&e.push("sub_frame"),t.fromWebsocket()&&e.push("websocket"),t.fromXmlHttpRequest()&&e.push("xhr"),t.fromFont()&&e.push("font"),e}function Le(t,e,s,i,n,r,o){let a=260931^e;if(void 0!==t)for(let e=0;e<t.length;e+=1)a=33*a^t.charCodeAt(e);if(void 0!==n&&(a=n.updateId(a)),void 0!==r&&(a=r.updateId(a)),void 0!==s)for(let t=0;t<s.length;t+=1)a=33*a^s.charCodeAt(t);if(void 0!==i)for(let t=0;t<i.length;t+=1)a=33*a^i.charCodeAt(t);if(void 0!==o)for(let t=0;t<o.length;t+=1)a=33*a^o.charCodeAt(t);return a>>>0}function Te(t,e,s,i){return!0===i?new RegExp(t.slice(1,t.length-1),"i"):(t=(t=(t=t.replace(/([|.$+?{}()[\]\\])/g,"\\$1")).replace(/\*/g,".*")).replace(/\^/g,"(?:[^\\w\\d_.%-]|$)"),s&&(t=`${t}$`),e&&(t=`^${t}`),new RegExp(t))}const Me=new RegExp("");class Oe{static parse(t,e=!1){let s,i,n,r,o,a=49164,A=0,c=Ee,h=0,l=t.length;64===t.charCodeAt(0)&&64===t.charCodeAt(1)&&(h+=2,a=Yt(a,134217728));const u=t.lastIndexOf("$");if(-1!==u&&47!==t.charCodeAt(u+1)){l=u;for(const s of t.slice(u+1).split(",")){const t=126===s.charCodeAt(0);let h=!0===t?s.slice(1):s,l="";const u=h.indexOf("=");switch(-1!==u&&(l=h.slice(u+1),h=h.slice(0,u)),h){case"denyallow":n=be.parse(l.split("|"),e);break;case"domain":if(124===l.charCodeAt(0)||124===l.charCodeAt(l.length-1))return null;i=be.parse(l.split("|"),e);break;case"badfilter":a=Yt(a,131072);break;case"important":if(t)return null;a=Yt(a,1048576);break;case"match-case":if(t)return null;break;case"3p":case"third-party":a=Xt(a,t?32768:16384);break;case"1p":case"first-party":a=Xt(a,t?16384:32768);break;case"redirect-rule":case"redirect":if(t)return null;if(0===l.length)return null;"redirect-rule"===h&&(a=Yt(a,536870912)),r=l;break;case"csp":if(t)return null;a=Yt(a,262144),l.length>0&&(o=l);break;case"ehide":case"elemhide":if(t)return null;a=Yt(a,524288),a=Yt(a,2097152);break;case"shide":case"specifichide":if(t)return null;a=Yt(a,2097152);break;case"ghide":case"generichide":if(t)return null;a=Yt(a,524288);break;case"inline-script":if(t)return null;a=Yt(a,262144),o="script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:";break;case"inline-font":if(t)return null;a=Yt(a,262144),o="font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:";break;default:{let e=0;switch(h){case"all":if(t)return null;break;case"image":e=16;break;case"media":e=32;break;case"object":case"object-subrequest":e=64;break;case"other":e=128;break;case"ping":case"beacon":e=256;break;case"script":e=512;break;case"css":case"stylesheet":e=1024;break;case"frame":case"subdocument":e=2048;break;case"xhr":case"xmlhttprequest":e=8192;break;case"websocket":e=4096;break;case"font":e=2;break;case"doc":case"document":e=1;break;default:return null}t?c=Xt(c,e):A=Yt(A,e);break}}}}let d;if(a|=0===A?c:c===Ee?A:A&c,l-h>=2&&47===t.charCodeAt(h)&&47===t.charCodeAt(l-1)){d=t.slice(h,l);try{Te(d,!1,!1,!0)}catch(t){return null}a=Yt(a,4194304)}else{if(l>0&&124===t.charCodeAt(l-1)&&(a=Yt(a,67108864),l-=1),h<l&&124===t.charCodeAt(h)&&(h<l-1&&124===t.charCodeAt(h+1)?(a=Yt(a,268435456),h+=2):(a=Yt(a,33554432),h+=1)),Vt(a,268435456)){let e=h;for(;e<l&&!0===(ie(f=t.charCodeAt(e))||ne(f)||95===f||45===f||46===f);)e+=1;if(e===l)s=t.slice(h,l),h=l;else{s=t.slice(h,e),h=e;const i=t.charCodeAt(e);94===i?l-h==1?(h=l,a=Yt(a,67108864)):(a=Yt(a,8388608),a=Yt(a,33554432)):a=Yt(a,42===i?8388608:33554432)}}l-h>0&&42===t.charCodeAt(l-1)&&(l-=1),!1===Vt(a,268435456)&&l-h>0&&42===t.charCodeAt(h)&&(a=Xt(a,33554432),h+=1),Vt(a,33554432)&&(l-h==5&&se(t,"ws://",h)?(a=Yt(a,4096),a=Xt(a,33554432),a=Xt(a,4),a=Xt(a,8),h=l):l-h==7&&se(t,"http://",h)?(a=Yt(a,4),a=Xt(a,8),a=Xt(a,33554432),h=l):l-h==8&&se(t,"https://",h)?(a=Yt(a,8),a=Xt(a,4),a=Xt(a,33554432),h=l):l-h==8&&se(t,"http*://",h)&&(a=Yt(a,8),a=Yt(a,4),a=Xt(a,33554432),h=l)),l-h>0&&(d=t.slice(h,l).toLowerCase(),a=$e(a,16777216,le(d)),!1===Vt(a,8388608)&&(a=$e(a,8388608,function(t,e,s){const i=t.indexOf("^",e);if(-1!==i&&i<s)return!0;const n=t.indexOf("*",e);return-1!==n&&n<s}(d,0,d.length)))),void 0!==s&&(s=s.toLowerCase(),le(s)&&(a=$e(a,16777216,!0),s=B(s)))}var f;return new Oe({csp:o,filter:d,hostname:s,mask:a,domains:i,denyallow:n,rawLine:!0===e?t:void 0,redirect:r,regex:void 0})}static deserialize(t){const e=t.getUint32(),s=t.getUint8(),i=Vt(e,16777216);return new Oe({mask:e,csp:1==(1&s)?t.getNetworkCSP():void 0,filter:2==(2&s)?i?t.getUTF8():t.getNetworkFilter():void 0,hostname:4==(4&s)?t.getNetworkHostname():void 0,domains:8==(8&s)?be.deserialize(t):void 0,rawLine:16==(16&s)?t.getRawNetwork():void 0,redirect:32==(32&s)?t.getNetworkRedirect():void 0,denyallow:64==(64&s)?be.deserialize(t):void 0,regex:void 0})}constructor({csp:t,filter:e,hostname:s,mask:i,domains:n,denyallow:r,rawLine:o,redirect:a,regex:A}){this.csp=t,this.filter=e,this.hostname=s,this.mask=i,this.domains=n,this.denyallow=r,this.redirect=a,this.rawLine=o,this.id=void 0,this.regex=A}isCosmeticFilter(){return!1}isNetworkFilter(){return!0}match(t){return function(t,e){if(!1===t.isCptAllowed(e.type)||!0===e.isHttps&&!1===t.fromHttps()||!0===e.isHttp&&!1===t.fromHttp()||!1===t.firstParty()&&!0===e.isFirstParty||!1===t.thirdParty()&&!0===e.isThirdParty)return!1;if(void 0!==t.domains&&!1===t.domains.match(e.sourceHostnameHashes,e.sourceEntityHashes))return!1;if(void 0!==t.denyallow&&!0===t.denyallow.match(e.getHostnameHashes(),e.getEntityHashes()))return!1;return!0}(this,t)&&function(t,e){const s=t.getFilter();if(!0===t.isHostnameAnchor()){const i=t.getHostname();if(!1===function(t,e,s){if(0===t.length)return!0;if(t.length>e.length)return!1;if(t.length===e.length)return t===e;const i=e.indexOf(t);if(-1===i)return!1;if(0===i)return!0===s||46===e.charCodeAt(t.length)||46===t.charCodeAt(t.length-1);if(e.length===i+t.length)return 46===e.charCodeAt(i-1)||46===t.charCodeAt(0);return!(!0!==s&&46!==e.charCodeAt(t.length)&&46!==t.charCodeAt(t.length-1)||46!==e.charCodeAt(i-1)&&46!==t.charCodeAt(0))}(i,e.hostname,void 0!==t.filter&&42===t.filter.charCodeAt(0)))return!1;if(t.isRegex())return t.getRegex().test(e.url.slice(e.url.indexOf(i)+i.length));if(t.isRightAnchor()&&t.isLeftAnchor()){return s===e.url.slice(e.url.indexOf(i)+i.length)}if(t.isRightAnchor()){const n=e.hostname;return!1===t.hasFilter()?i.length===n.length||n.endsWith(i):e.url.endsWith(s)}return t.isLeftAnchor()?se(e.url,s,e.url.indexOf(i)+i.length):!1===t.hasFilter()||-1!==e.url.indexOf(s,e.url.indexOf(i)+i.length)}if(t.isRegex())return t.getRegex().test(e.url);if(t.isLeftAnchor()&&t.isRightAnchor())return e.url===s;if(t.isLeftAnchor())return ee(e.url,s);if(t.isRightAnchor())return e.url.endsWith(s);if(!1===t.hasFilter())return!0;return-1!==e.url.indexOf(s)}(this,t)}serialize(t){t.pushUint32(this.mask);const e=t.getPos();t.pushUint8(0);let s=0;void 0!==this.csp&&(s|=1,t.pushNetworkCSP(this.csp)),void 0!==this.filter&&(s|=2,this.isUnicode()?t.pushUTF8(this.filter):t.pushNetworkFilter(this.filter)),void 0!==this.hostname&&(s|=4,t.pushNetworkHostname(this.hostname)),void 0!==this.domains&&(s|=8,this.domains.serialize(t)),void 0!==this.rawLine&&(s|=16,t.pushRawNetwork(this.rawLine)),void 0!==this.redirect&&(s|=32,t.pushNetworkRedirect(this.redirect)),void 0!==this.denyallow&&(s|=64,this.denyallow.serialize(t)),t.setByte(e,s)}getSerializedSize(t){let e=5;return void 0!==this.csp&&(e+=function(t,e){return!0===e?P(O().networkCSP.getCompressedSize(t),!1):_(t)}(this.csp,t)),void 0!==this.filter&&(!0===this.isUnicode()?e+=D(this.filter):e+=function(t,e){return!0===e?P(O().networkFilter.getCompressedSize(t),!1):_(t)}(this.filter,t)),void 0!==this.hostname&&(e+=function(t,e){return!0===e?P(O().networkHostname.getCompressedSize(t),!1):_(t)}(this.hostname,t)),void 0!==this.domains&&(e+=this.domains.getSerializedSize()),void 0!==this.rawLine&&(e+=function(t,e){return!0===e?P(O().networkRaw.getCompressedSize(E(t)),!1):D(t)}(this.rawLine,t)),void 0!==this.redirect&&(e+=function(t,e){return!0===e?P(O().networkRedirect.getCompressedSize(t),!1):_(t)}(this.redirect,t)),void 0!==this.denyallow&&(e+=this.denyallow.getSerializedSize()),e}toString(){if(void 0!==this.rawLine)return this.rawLine;let t="";this.isException()&&(t+="@@"),this.isHostnameAnchor()?t+="||":this.fromHttp()!==this.fromHttps()?this.fromHttp()?t+="|http://":t+="|https://":this.isLeftAnchor()&&(t+="|"),this.hasHostname()&&(t+=this.getHostname(),t+="^"),this.isFullRegex()?t+=`/${this.getRegex().source}/`:this.isRegex()?t+=this.getRegex().source:t+=this.getFilter(),this.isRightAnchor()&&(t+="|");const e=[];if(!1===this.fromAny()){const t=Zt(this.getCptMask());if(Zt(Ee)-t<t)for(const t of function(t){const e=[];return!1===t.fromDocument()&&e.push("document"),!1===t.fromImage()&&e.push("image"),!1===t.fromMedia()&&e.push("media"),!1===t.fromObject()&&e.push("object"),!1===t.fromOther()&&e.push("other"),!1===t.fromPing()&&e.push("ping"),!1===t.fromScript()&&e.push("script"),!1===t.fromStylesheet()&&e.push("stylesheet"),!1===t.fromSubdocument()&&e.push("sub_frame"),!1===t.fromWebsocket()&&e.push("websocket"),!1===t.fromXmlHttpRequest()&&e.push("xhr"),!1===t.fromFont()&&e.push("font"),e}(this))e.push(`~${t}`);else for(const t of He(this))e.push(t)}return this.isImportant()&&e.push("important"),this.isRedirectRule()?e.push(`redirect-rule=${this.getRedirect()}`):this.isRedirect()&&e.push(`redirect=${this.getRedirect()}`),this.isCSP()&&e.push(`csp=${this.csp}`),this.isElemHide()&&e.push("elemhide"),this.isSpecificHide()&&e.push("specifichide"),this.isGenericHide()&&e.push("generichide"),this.firstParty()!==this.thirdParty()&&(this.firstParty()&&e.push("1p"),this.thirdParty()&&e.push("3p")),void 0!==this.domains&&(void 0!==this.domains.parts?e.push(`domain=${this.domains.parts}`):e.push("domain=<hashed>")),void 0!==this.denyallow&&(void 0!==this.denyallow.parts?e.push(`denyallow=${this.denyallow.parts}`):e.push("denyallow=<hashed>")),this.isBadFilter()&&e.push("badfilter"),e.length>0&&(t+=`$${e.join(",")}`),t}getIdWithoutBadFilter(){return Le(this.csp,-131073&this.mask,this.filter,this.hostname,this.domains,this.denyallow,this.redirect)}getId(){return void 0===this.id&&(this.id=Le(this.csp,this.mask,this.filter,this.hostname,this.domains,this.denyallow,this.redirect)),this.id}hasFilter(){return void 0!==this.filter}hasDomains(){return void 0!==this.domains}getMask(){return this.mask}getCptMask(){return this.getMask()&Ee}isRedirect(){return void 0!==this.redirect}isRedirectRule(){return Vt(this.mask,536870912)}getRedirect(){return this.redirect||""}hasHostname(){return void 0!==this.hostname}getHostname(){return this.hostname||""}getFilter(){return this.filter||""}getRegex(){return void 0===this.regex&&(this.regex=void 0!==this.filter&&this.isRegex()?Te(this.filter,this.isLeftAnchor(),this.isRightAnchor(),this.isFullRegex()):Me),this.regex}getTokens(){if(Nt.reset(),void 0!==this.domains&&void 0!==this.domains.hostnames&&void 0===this.domains.entities&&void 0===this.domains.notHostnames&&void 0===this.domains.notEntities&&1===this.domains.hostnames.length&&Nt.push(this.domains.hostnames[0]),!1===this.isFullRegex()){if(void 0!==this.filter){const t=!this.isRightAnchor(),e=!this.isLeftAnchor();!function(t,e,s,i){const n=Math.min(t.length,2*i.remaining());let r=!1,o=0,a=0,A=qt;for(let s=0;s<n;s+=1){const n=t.charCodeAt(s);!0===re(n)?(!1===r&&(A=qt,r=!0,a=s),A=33*A^n):(!0===r&&(r=!1,s-a>1&&42!==n&&42!==o&&(!1===e||0!==a)&&i.push(A>>>0)),o=n)}!1===s&&!0===r&&42!==o&&t.length-a>1&&!1===i.full()&&i.push(A>>>0)}(this.filter,e,t,Nt)}void 0!==this.hostname&&oe(this.hostname,!1,void 0!==this.filter&&42===this.filter.charCodeAt(0),Nt)}else void 0!==this.filter&&function(t,e){let s=t.length-1,i=1,n=0;for(;i<s;i+=1){const e=t.charCodeAt(i);if(124===e)return;if(40===e||42===e||43===e||63===e||91===e||123===e||46===e&&92!==n||92===e&&ne(t.charCodeAt(i+1)))break;n=e}for(n=0;s>=i;s-=1){const e=t.charCodeAt(s);if(124===e)return;if(41===e||42===e||43===e||63===e||93===e||125===e||46===e&&92!==t.charCodeAt(s-1)||92===e&&ne(n))break;n=e}if(s<i){const s=94!==t.charCodeAt(1),i=36!==t.charCodeAt(t.length-1);oe(t.slice(1,t.length-1),s,i,e)}else i>1&&oe(t.slice(1,i),94!==t.charCodeAt(1),!0,e),s<t.length-1&&oe(t.slice(s+1,t.length-1),!0,94!==t.charCodeAt(t.length-1),e)}(this.filter,Nt);if(!0===Nt.empty()&&void 0!==this.domains&&void 0!==this.domains.hostnames&&void 0===this.domains.entities&&void 0===this.domains.notHostnames&&void 0===this.domains.notEntities){const t=[];for(const e of this.domains.hostnames){const s=new Uint32Array(1);s[0]=e,t.push(s)}return t}if(!0===Nt.empty()&&!1===this.fromAny()){const t=He(this);if(0!==t.length){const e=[];for(const s of t){const t=new Uint32Array(1);t[0]=de[s],e.push(t)}return e}}return!0===this.fromHttp()&&!1===this.fromHttps()?Nt.push(Ue):!0===this.fromHttps()&&!1===this.fromHttp()&&Nt.push(Re),[Nt.slice()]}isCptAllowed(t){const e=Be[t];return void 0!==e?Vt(this.mask,e):this.fromAny()}isException(){return Vt(this.mask,134217728)}isHostnameAnchor(){return Vt(this.mask,268435456)}isRightAnchor(){return Vt(this.mask,67108864)}isLeftAnchor(){return Vt(this.mask,33554432)}isImportant(){return Vt(this.mask,1048576)}isFullRegex(){return Vt(this.mask,4194304)}isRegex(){return Vt(this.mask,8388608)||Vt(this.mask,4194304)}isPlain(){return!this.isRegex()}isCSP(){return Vt(this.mask,262144)}isElemHide(){return this.isSpecificHide()&&this.isGenericHide()}isSpecificHide(){return Vt(this.mask,2097152)}isGenericHide(){return Vt(this.mask,524288)}isBadFilter(){return Vt(this.mask,131072)}isUnicode(){return Vt(this.mask,16777216)}fromAny(){return this.getCptMask()===Ee}thirdParty(){return Vt(this.mask,32768)}firstParty(){return Vt(this.mask,16384)}fromImage(){return Vt(this.mask,16)}fromMedia(){return Vt(this.mask,32)}fromObject(){return Vt(this.mask,64)}fromOther(){return Vt(this.mask,128)}fromPing(){return Vt(this.mask,256)}fromScript(){return Vt(this.mask,512)}fromStylesheet(){return Vt(this.mask,1024)}fromDocument(){return Vt(this.mask,1)}fromSubdocument(){return Vt(this.mask,2048)}fromWebsocket(){return Vt(this.mask,4096)}fromHttp(){return Vt(this.mask,4)}fromHttps(){return Vt(this.mask,8)}fromXmlHttpRequest(){return Vt(this.mask,8192)}fromFont(){return Vt(this.mask,2)}}function $e(t,e,s){return!0===s?Yt(t,e):Xt(t,e)}function We(t){if(0===t.length||1===t.length)return 0;const e=t.charCodeAt(0),s=t.charCodeAt(1);if(33===e||35===e&&s<=32||91===e&&ee(t,"[Adblock"))return 0;const i=t.charCodeAt(t.length-1);if(36===e||38===e||42===e||45===e||46===e||47===e||58===e||61===e||63===e||64===e||95===e||124===e||124===i)return 1;const n=t.indexOf("$");if(-1!==n&&n!==t.length-1){const e=n+1,s=t.charCodeAt(e);if(36===s||64===s&&se(t,"@$",e))return 0}const r=t.indexOf("#");if(-1!==r&&r!==t.length-1){const e=r+1,s=t.charCodeAt(e);if(35===s||64===s&&se(t,"@#",e))return 2;if(64===s&&(se(t,"@$#",e)||se(t,"@%#",e))||37===s&&se(t,"%#",e)||36===s&&se(t,"$#",e)||63===s&&se(t,"?#",e))return 0}return 1}function Pe(t){const e=We(t);return 1===e?Oe.parse(t,!0):2===e?je.parse(t,!0):null}function _e(t,e=new N){e=new N(e);const s=[],i=[],n=t.split("\n");for(let t=0;t<n.length;t+=1){let r=n[t];if(0!==r.length&&r.charCodeAt(0)<=32&&(r=r.trim()),r.length>2)for(;t<n.length-1&&92===r.charCodeAt(r.length-1)&&32===r.charCodeAt(r.length-2);){r=r.slice(0,-2);const e=n[t+1];if(!(e.length>4&&32===e.charCodeAt(0)&&32===e.charCodeAt(1)&&32===e.charCodeAt(2)&&32===e.charCodeAt(3)&&32!==e.charCodeAt(4)))break;r+=e.slice(4),t+=1}0!==r.length&&r.charCodeAt(r.length-1)<=32&&(r=r.trim());const o=We(r);if(1===o&&!0===e.loadNetworkFilters){const t=Oe.parse(r,e.debug);null!==t&&s.push(t)}else if(2===o&&!0===e.loadCosmeticFilters){const t=je.parse(r,e.debug);null!==t&&(!0!==e.loadGenericCosmeticsFilters&&!1!==t.isGenericHide()||i.push(t))}}return{networkFilters:s,cosmeticFilters:i}}function De(t,e){const{networkFilters:s,cosmeticFilters:i}=_e(t,e);return[].concat(s).concat(i)}const Ge="video/flv";var Qe={contentType:`${Ge};base64`,aliases:[Ge,".flv","flv"],body:"RkxWAQEAAAAJAAAAABIAALgAAAAAAAAAAgAKb25NZXRhRGF0YQgAAAAIAAhkdXJhdGlvbgAAAAAAAAAAAAAFd2lkdGgAP/AAAAAAAAAABmhlaWdodAA/8AAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAaGoAAAAAAAAJZnJhbWVyYXRlAEBZAAAAAAAAAAx2aWRlb2NvZGVjaWQAQAAAAAAAAAAAB2VuY29kZXICAA1MYXZmNTcuNDEuMTAwAAhmaWxlc2l6ZQBAaoAAAAAAAAAACQAAAMM="};const Ne="image/gif";var qe={contentType:`${Ne};base64`,aliases:[Ne,".gif","gif"],body:"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"};const Ze="text/html";var Ve={contentType:Ze,aliases:[Ze,".html","html",".htm","htm","noopframe","noop.html"],body:"<!DOCTYPE html>"};const Ye="image/vnd.microsoft.icon";var Xe={contentType:`${Ye};base64`,aliases:[Ye,".ico","ico"],body:"AAABAAEAAQEAAAEAGAAwAAAAFgAAACgAAAABAAAAAgAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAA=="};const Je="image/jpeg";var Ke={contentType:`${Je};base64`,aliases:[Je,".jpg","jpg",".jpeg","jpeg"],body:"/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k="};const ts="application/javascript";var es={contentType:ts,aliases:[ts,".js","js","javascript",".jsx","jsx","typescript",".ts","ts","noop.js","noopjs"],body:""};const ss="application/json";var is={contentType:ss,aliases:[ss,".json","json"],body:"0"};const ns="audio/mpeg";var rs={contentType:`${ns};base64`,aliases:[ns,".mp3","mp3","noop-0.1s.mp3","noopmp3-0.1s"],body:"/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"};const os="video/mp4";var as={contentType:`${os};base64`,aliases:[os,".mp4","mp4",".m4a","m4a",".m4p","m4p",".m4b","m4b",".m4r","m4r",".m4v","m4v","noop-1s.mp4","noopmp4-1s"],body:"AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE="};const As="application/pdf";var cs={contentType:`${As};base64`,aliases:[As,".pdf","pdf"],body:"JVBERi0xLgoxIDAgb2JqPDwvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqPDwvS2lkc1szIDAgUl0vQ291bnQgMT4+ZW5kb2JqCjMgMCBvYmo8PC9QYXJlbnQgMiAwIFI+PmVuZG9iagp0cmFpbGVyIDw8L1Jvb3QgMSAwIFI+Pg=="};const hs="image/png";var ls={contentType:`${hs};base64`,aliases:[hs,".png","png"],body:"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="};const us="image/svg+xml";var ds={contentType:us,aliases:[us,".svg","svg"],body:"https://raw.githubusercontent.com/mathiasbynens/small/master/svg.svg"};const fs="text/plain";var ps={contentType:fs,aliases:[fs,".txt","txt","text","nooptext","noop.txt"],body:""};const gs="audio/wav";var ms={contentType:`${gs};base64`,aliases:[gs,".wav","wav"],body:"UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA="};const ys="video/webm";var bs={contentType:`${ys};base64`,aliases:[ys,".webm","webm"],body:"GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA="};const vs="image/webp";var ws={contentType:`${vs};base64`,aliases:[vs,".webp","webp"],body:"UklGRhIAAABXRUJQVlA4TAYAAAAvQWxvAGs="};const ks="video/wmv";var xs={contentType:`${ks};base64`,aliases:[ks,".wmv","wmv"],body:"MCaydY5mzxGm2QCqAGLObOUBAAAAAAAABQAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcCAAAAAAAAAIA+1d6xnQEAAAAAAAAAAMAF2QEAAAAAAAAAAAAAAAAcDAAAAAAAAAIAAACADAAAgAwAAEANAwC1A79fLqnPEY7jAMAMIFNlLgAAAAAAAAAR0tOruqnPEY7mAMAMIFNlBgAAAAAAQKTQ0gfj0hGX8ACgyV6oUGQAAAAAAAAAAQAoAFcATQAvAEUAbgBjAG8AZABpAG4AZwBTAGUAdAB0AGkAbgBnAHMAAAAAABwATABhAHYAZgA1ADcALgA0ADEALgAxADAAMAAAAJEH3Le3qc8RjuYAwAwgU2WBAAAAAAAAAMDvGbxNW88RqP0AgF9cRCsAV/sgVVvPEaj9AIBfXEQrAAAAAAAAAAAzAAAAAAAAAAEAAAAAAAEAAAABAAAAAigAKAAAAAEAAAABAAAAAQAYAE1QNDMDAAAAAAAAAAAAAAAAAAAAAAAAAEBS0YYdMdARo6QAoMkDSPZMAAAAAAAAAEFS0YYdMdARo6QAoMkDSPYBAAAAAQAKAG0AcwBtAHAAZQBnADQAdgAzAAAAAAAEAE1QNDM2JrJ1jmbPEabZAKoAYs5sMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ=="};const Ss=(()=>{const t={};for(const e of[Qe,qe,Ve,Xe,Ke,es,is,rs,as,cs,ls,ds,ps,ms,bs,ws,xs])for(const s of e.aliases)t[s]=e;return t})();function zs(t){return Ss[t]||ps}class Cs{static deserialize(t){const e=t.getASCII(),s=new Map,i=t.getUint16();for(let e=0;e<i;e+=1)s.set(t.getASCII(),{contentType:t.getASCII(),body:t.getASCII()});const n=new Map;return s.forEach((({contentType:t,body:e},s)=>{"application/javascript"===t&&n.set(s,e)})),new Cs({checksum:e,js:n,resources:s})}static parse(t,{checksum:e}){const s=new Map,i=t.split("\n\n");for(const t of i){const e=(n=t,n.replace(/^\s*#.*$/gm,"")).trim();if(0!==e.length){const t=e.indexOf("\n"),i=e.slice(0,t).split(/\s+/),n=i[0],r=i[1],o=e.slice(t+1);if(void 0===n||void 0===r||void 0===o)continue;let a=s.get(r);void 0===a&&(a=new Map,s.set(r,a)),a.set(n,o)}}var n;const r=s.get("application/javascript")||new Map;for(const[t,e]of r.entries())t.endsWith(".js")&&r.set(t.slice(0,-3),e);const o=new Map;return s.forEach(((t,e)=>{t.forEach(((t,s)=>{o.set(s,{contentType:e,body:t})}))})),new Cs({checksum:e,js:r,resources:o})}constructor({checksum:t="",js:e=new Map,resources:s=new Map}={}){this.checksum=t,this.js=e,this.resources=s}getResource(t){const{body:e,contentType:s}=this.resources.get(t)||zs(t);let i;var n;return i=-1!==s.indexOf(";")?`data:${s},${e}`:`data:${s};base64,${n=e,"undefined"!=typeof btoa?btoa(n):"undefined"!=typeof Buffer?Buffer.from(n).toString("base64"):n}`,{body:e,contentType:s,dataUrl:i}}getSerializedSize(){let t=_(this.checksum)+2;return this.resources.forEach((({contentType:e,body:s},i)=>{t+=_(i)+_(e)+_(s)})),t}serialize(t){t.pushASCII(this.checksum),t.pushUint16(this.resources.size),this.resources.forEach((({contentType:e,body:s},i)=>{t.pushASCII(i),t.pushASCII(e),t.pushASCII(s)}))}}const Is=new Uint32Array(0);function Fs(t){return`(?:${t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})`}function js(t,e,s){let i=t.get(e);void 0===i&&(i=[],t.set(e,i)),i.push(s)}function Us(t,e){const s=new Map;for(const i of t)js(s,e(i),i);return Array.from(s.values())}function Rs(t,e){const s=[],i=[];for(const n of t)e(n)?s.push(n):i.push(n);return{negative:i,positive:s}}const Es=[{description:"Remove duplicated filters by ID",fusion:t=>t[0],groupByCriteria:t=>""+t.getId(),select:()=>!0},{description:"Group idential filter with same mask but different domains in single filters",fusion:t=>{const e=[],s=new Set,i=new Set,n=new Set,r=new Set;for(const{domains:o}of t)if(void 0!==o){if(void 0!==o.parts&&e.push(o.parts),void 0!==o.hostnames)for(const t of o.hostnames)s.add(t);if(void 0!==o.entities)for(const t of o.entities)n.add(t);if(void 0!==o.notHostnames)for(const t of o.notHostnames)i.add(t);if(void 0!==o.notEntities)for(const t of o.notEntities)r.add(t)}return new Oe(Object.assign({},t[0],{domains:new be({hostnames:0!==s.size?new Uint32Array(s).sort():void 0,entities:0!==n.size?new Uint32Array(n).sort():void 0,notHostnames:0!==i.size?new Uint32Array(i).sort():void 0,notEntities:0!==r.size?new Uint32Array(r).sort():void 0,parts:0!==e.length?e.join(","):void 0}),rawLine:void 0!==t[0].rawLine?t.map((({rawLine:t})=>t)).join(" <+> "):void 0}))},groupByCriteria:t=>t.getHostname()+t.getFilter()+t.getMask()+t.getRedirect(),select:t=>!t.isCSP()&&void 0===t.denyallow&&void 0!==t.domains},{description:"Group simple patterns, into a single filter",fusion:t=>{const e=[];for(const s of t)s.isRegex()?e.push(`(?:${s.getRegex().source})`):s.isRightAnchor()?e.push(`${Fs(s.getFilter())}$`):s.isLeftAnchor()?e.push(`^${Fs(s.getFilter())}`):e.push(Fs(s.getFilter()));return new Oe(Object.assign({},t[0],{mask:Yt(t[0].mask,8388608),rawLine:void 0!==t[0].rawLine?t.map((({rawLine:t})=>t)).join(" <+> "):void 0,regex:new RegExp(e.join("|"))}))},groupByCriteria:t=>""+(-8388609&t.getMask()&-4194305),select:t=>void 0===t.domains&&void 0===t.denyallow&&!t.isHostnameAnchor()&&!t.isRedirect()&&!t.isCSP()}];function Bs(t){return t}function Hs(t){return t}function Ls(t){const e=[];let s=t;for(const{select:t,fusion:i,groupByCriteria:n}of Es){const{positive:r,negative:o}=Rs(s,t);s=o;const a=Us(r,n);for(const t of a)t.length>1?e.push(i(t)):s.push(t[0])}for(const t of s)e.push(t);return e}function Ts(t){return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t}let Ms=1;const Os=Number.MAX_SAFE_INTEGER>>>0;class $s{static deserialize(t,e,s,i){const n=t.getUint32(),r=t.getUint32(),o=t.getUint32(),a=Q.fromUint8Array(t.getBytes(!0),i),A=a.getUint32ArrayView(n),c=a.getUint32ArrayView(r),h=a.pos;return a.seekZero(),new $s({config:i,deserialize:e,filters:[],optimize:s}).updateInternals({bucketsIndex:c,filtersIndexStart:h,numberOfFilters:o,tokensLookupIndex:A,view:a})}constructor({deserialize:t,filters:e,optimize:s,config:i}){this.bucketsIndex=L,this.filtersIndexStart=0,this.numberOfFilters=0,this.tokensLookupIndex=L,this.cache=new Map,this.view=Q.empty(i),this.deserializeFilter=t,this.optimize=s,this.config=i,0!==e.length&&this.update(e,void 0)}getFilters(){const t=[];if(0===this.numberOfFilters)return t;this.view.setPos(this.filtersIndexStart);for(let e=0;e<this.numberOfFilters;e+=1)t.push(this.deserializeFilter(this.view));return this.view.seekZero(),t}getTokens(){const t=new Set;for(let e=0;e<this.bucketsIndex.length;e+=2)t.add(this.bucketsIndex[e]);return new Uint32Array(t)}getSerializedSize(){return 12+W(this.view.buffer,!0)}serialize(t){t.pushUint32(this.tokensLookupIndex.length),t.pushUint32(this.bucketsIndex.length),t.pushUint32(this.numberOfFilters),t.pushBytes(this.view.buffer,!0)}iterMatchingFilters(t,e){const s=function(){const t=Ms;return Ms=(Ms+1)%1e9,t}();for(const i of t)if(!1===this.iterBucket(i,s,e))return;this.iterBucket(0,s,e)}update(t,e){0!==this.cache.size&&this.cache.clear();const s=this.config.enableCompression;let i=0,n=0;const r=[];let o=0,a=this.view.buffer.byteLength-this.filtersIndexStart,A=this.getFilters();if(0!==A.length){void 0!==e&&0!==e.size&&(A=A.filter((t=>!e.has(t.getId())||(a-=t.getSerializedSize(s),!1))));for(const e of t)a+=e.getSerializedSize(s),A.push(e)}else{A=t;for(const e of t)a+=e.getSerializedSize(s)}if(0===A.length)return void this.updateInternals({bucketsIndex:L,filtersIndexStart:0,numberOfFilters:0,tokensLookupIndex:L,view:Q.empty(this.config)});!0===this.config.debug&&A.sort(((t,e)=>t.getId()-e.getId()));const c=new Uint32Array(Math.max(Ts(2*A.length),256));for(const t of A){const e=t.getTokens();r.push(e),o+=2*e.length,n+=e.length;for(const t of e){i+=t.length;for(const e of t)c[e%c.length]+=1}}a+=4*o;const h=Math.max(2,Ts(n)),l=h-1,u=[];for(let t=0;t<h;t+=1)u.push([]);a+=4*h;const d=Q.allocate(a,this.config),f=d.getUint32ArrayView(h),p=d.getUint32ArrayView(o),g=d.getPos();for(let t=0;t<r.length;t+=1){const e=A[t],s=r[t],n=d.pos;e.serialize(d);for(const t of s){let e=0,s=i+1;for(const i of t){const t=c[i%c.length];if(t<s&&(s=t,e=i,1===s))break}u[e&l].push([e,n])}}let m=0;for(let t=0;t<h;t+=1){const e=u[t];f[t]=m;for(const[t,s]of e)p[m++]=t,p[m++]=s}d.seekZero(),this.updateInternals({bucketsIndex:p,filtersIndexStart:g,numberOfFilters:r.length,tokensLookupIndex:f,view:d})}updateInternals({bucketsIndex:t,filtersIndexStart:e,numberOfFilters:s,tokensLookupIndex:i,view:n}){return this.bucketsIndex=t,this.filtersIndexStart=e,this.numberOfFilters=s,this.tokensLookupIndex=i,this.view=n,n.seekZero(),this}iterBucket(t,e,s){let i=!0===this.config.enableInMemoryCache?this.cache.get(t):void 0;if(void 0===i){const e=t&this.tokensLookupIndex.length-1,s=this.tokensLookupIndex[e];if(s===Os)return!0;const n=e===this.tokensLookupIndex.length-1?this.bucketsIndex.length:this.tokensLookupIndex[e+1],r=[];for(let e=s;e<n;e+=2){this.bucketsIndex[e]===t&&r.push(this.bucketsIndex[e+1])}if(0===r.length)return!0;const o=[],a=this.view;for(let t=0;t<r.length;t+=1)a.setPos(r[t]),o.push(this.deserializeFilter(a));i={filters:o.length>1?this.optimize(o):o,lastRequestSeen:-1},!0===this.config.enableInMemoryCache&&this.cache.set(t,i)}if(i.lastRequestSeen!==e){i.lastRequestSeen=e;const t=i.filters;for(let e=0;e<t.length;e+=1)if(!1===s(t[e])){if(e>0){const s=t[e];t[e]=t[e-1],t[e-1]=s}return!1}}return!0}}const Ws=new Uint8Array(4);class Ps{static deserialize(t,e,s){const i=new Ps({deserialize:e,config:s,filters:[]});return i.filters=t.getBytes(),i}constructor({config:t,deserialize:e,filters:s}){this.deserialize=e,this.filters=Ws,this.config=t,0!==s.length&&this.update(s,void 0)}update(t,e){let s=this.filters.byteLength,i=[];const n=this.config.enableCompression,r=this.getFilters();if(0!==r.length)if(void 0===e||0===e.size)i=r;else for(const t of r)!1===e.has(t.getId())?i.push(t):s-=t.getSerializedSize(n);const o=i.length!==r.length,a=i.length;for(const e of t)s+=e.getSerializedSize(n),i.push(e);const A=i.length>a;if(0===i.length)this.filters=Ws;else if(!0===A||!0===o){const t=Q.allocate(s,this.config);t.pushUint32(i.length),!0===this.config.debug&&i.sort(((t,e)=>t.getId()-e.getId()));for(const e of i)e.serialize(t);this.filters=t.buffer}}getSerializedSize(){return W(this.filters,!1)}serialize(t){t.pushBytes(this.filters)}getFilters(){if(this.filters.byteLength<=4)return[];const t=[],e=Q.fromUint8Array(this.filters,this.config),s=e.getUint32();for(let i=0;i<s;i+=1)t.push(this.deserialize(e));return t}}function _s(t,e){if(0===t.length)return"";const s=1024,i=[],n=` { ${e} }`;for(let e=0;e<t.length;e+=s){let r=t[e];for(let i=e+1,n=Math.min(t.length,e+s);i<n;i+=1)r+=",\n"+t[i];if(r+=n,t.length<s)return r;i.push(r)}return i.join("\n")}function Ds(t){const e=new Map;for(const s of t){const t=s.getStyle(),i=e.get(t);void 0===i?e.set(t,[s.getSelector()]):i.push(s.getSelector())}const s=[],i=Array.from(e.entries());for(const[t,e]of i)s.push(_s(e,t));return s.join("\n\n")}function Gs(t){const e=[];for(const s of t){if(s.hasCustomStyle())return Ds(t);e.push(s.selector)}return _s(e,xe)}function Qs(t,e){const s=me(t,e),i=ge(t,e),n=new Uint32Array(s.length+i.length);let r=0;for(const t of s)n[r++]=t;for(const t of i)n[r++]=t;return n}class Ns{static deserialize(t,e){const s=new Ns({config:e});return s.genericRules=Ps.deserialize(t,je.deserialize,e),s.classesIndex=$s.deserialize(t,je.deserialize,Hs,e),s.hostnameIndex=$s.deserialize(t,je.deserialize,Hs,e),s.hrefsIndex=$s.deserialize(t,je.deserialize,Hs,e),s.htmlIndex=$s.deserialize(t,je.deserialize,Hs,e),s.idsIndex=$s.deserialize(t,je.deserialize,Hs,e),s.unhideIndex=$s.deserialize(t,je.deserialize,Hs,e),s}constructor({filters:t=[],config:e}){this.genericRules=new Ps({config:e,deserialize:je.deserialize,filters:[]}),this.classesIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.hostnameIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.hrefsIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.htmlIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.idsIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.unhideIndex=new $s({config:e,deserialize:je.deserialize,filters:[],optimize:Hs}),this.baseStylesheet=null,this.extraGenericRules=null,0!==t.length&&this.update(t,void 0,e)}getFilters(){return[].concat(this.genericRules.getFilters(),this.classesIndex.getFilters(),this.hostnameIndex.getFilters(),this.hrefsIndex.getFilters(),this.htmlIndex.getFilters(),this.idsIndex.getFilters(),this.unhideIndex.getFilters())}update(t,e,s){const i=[],n=[],r=[],o=[],a=[],A=[],c=[];for(const e of t)e.isUnhide()?c.push(e):e.isHtmlFiltering()?a.push(e):e.isGenericHide()?e.isClassSelector()?i.push(e):e.isIdSelector()?A.push(e):e.isHrefSelector()?o.push(e):n.push(e):!1!==e.isExtended()&&!0!==s.loadExtendedSelectors||r.push(e);this.genericRules.update(n,e),this.classesIndex.update(i,e),this.hostnameIndex.update(r,e),this.hrefsIndex.update(o,e),this.htmlIndex.update(a,e),this.idsIndex.update(A,e),this.unhideIndex.update(c,e)}getSerializedSize(){return this.genericRules.getSerializedSize()+this.classesIndex.getSerializedSize()+this.hostnameIndex.getSerializedSize()+this.hrefsIndex.getSerializedSize()+this.htmlIndex.getSerializedSize()+this.idsIndex.getSerializedSize()+this.unhideIndex.getSerializedSize()}serialize(t){this.genericRules.serialize(t),this.classesIndex.serialize(t),this.hostnameIndex.serialize(t),this.hrefsIndex.serialize(t),this.htmlIndex.serialize(t),this.idsIndex.serialize(t),this.unhideIndex.serialize(t)}getHtmlRules({domain:t,hostname:e}){const s=Qs(e,t),i=[];this.htmlIndex.iterMatchingFilters(s,(s=>(s.match(e,t)&&i.push(s),!0)));const n=new Set;return 0!==i.length&&this.unhideIndex.iterMatchingFilters(s,(s=>(s.match(e,t)&&n.add(s.getSelector()),!0))),i.filter((t=>0===n.size||!1===n.has(t.getSelector())))}getCosmeticsFilters({domain:t,hostname:e,classes:s=[],hrefs:i=[],ids:n=[],allowGenericHides:r=!0,allowSpecificHides:o=!0,getBaseRules:a=!0,getInjectionRules:A=!0,getExtendedRules:c=!0,getRulesFromDOM:h=!0,getRulesFromHostname:l=!0}){const u=Qs(e,t),d=[];if(!0===l&&this.hostnameIndex.iterMatchingFilters(u,(s=>(!0!==o&&!0!==s.isScriptInject()||!s.match(e,t)||d.push(s),!0))),!0===r&&!0===l){const s=this.getGenericRules();for(const i of s)!0===i.match(e,t)&&d.push(i)}!0===r&&!0===h&&0!==s.length&&this.classesIndex.iterMatchingFilters(te(s),(s=>(s.match(e,t)&&d.push(s),!0))),!0===r&&!0===h&&0!==n.length&&this.idsIndex.iterMatchingFilters(te(n),(s=>(s.match(e,t)&&d.push(s),!0))),!0===r&&!0===h&&0!==i.length&&this.hrefsIndex.iterMatchingFilters(function(t){const e=t.sort();let s=1;for(let t=1;t<e.length;t+=1)e[s-1]!==e[t]&&(e[s++]=e[t]);return e.subarray(0,s)}(function(t){if(0===t.length)return Is;if(1===t.length)return t[0];let e=0;for(let s=0;s<t.length;s+=1)e+=t[s].length;const s=new Uint32Array(e);let i=0;for(let e=0;e<t.length;e+=1){const n=t[e];for(let t=0;t<n.length;t+=1)s[i++]=n[t]}return s}(i.map((t=>Ae(t))))),(s=>(s.match(e,t)&&d.push(s),!0)));const f=[],p=[],g=[];if(0!==d.length){let s=!1;const i=new Set;this.unhideIndex.iterMatchingFilters(u,(n=>(n.match(e,t)&&(i.add(n.getSelector()),!0===n.isScriptInject()&&!0===n.isUnhide()&&0===n.getSelector().length&&(s=!0)),!0)));for(const t of d)0!==i.size&&i.has(t.getSelector())||(!0===t.isScriptInject()?!0===A&&!1===s&&p.push(t):t.isExtended()?!0===c&&f.push(t):g.push(t))}let m=!1===a||!1===r?"":this.getBaseStylesheet();0!==g.length&&(0!==m.length&&(m+="\n\n"),m+=Gs(g));const y=[];if(0!==f.length){const t=new Map;for(const e of f){const s=e.getSelectorAST();if(void 0!==s){const i=e.isRemove()?void 0:e.getStyleAttributeHash();void 0!==i&&t.set(e.getStyle(),i),y.push({ast:s,remove:e.isRemove(),attribute:i})}}0!==t.size&&(0!==m.length&&(m+="\n\n"),m+=[...t.entries()].map((([t,e])=>`[${e}] { ${t} }`)).join("\n\n"))}return{extended:y,injections:p,stylesheet:m}}getGenericRules(){return null===this.extraGenericRules?this.lazyPopulateGenericRulesCache().genericRules:this.extraGenericRules}getBaseStylesheet(){return null===this.baseStylesheet?this.lazyPopulateGenericRulesCache().baseStylesheet:this.baseStylesheet}lazyPopulateGenericRulesCache(){if(null===this.baseStylesheet||null===this.extraGenericRules){const t=this.unhideIndex.getFilters(),e=new Set;for(const s of t)e.add(s.getSelector());const s=this.genericRules.getFilters(),i=[],n=[];for(const t of s)t.hasCustomStyle()||t.isScriptInject()||t.hasHostnameConstraint()||e.has(t.getSelector())?n.push(t):i.push(t);this.baseStylesheet=Gs(i),this.extraGenericRules=n}return{baseStylesheet:this.baseStylesheet,genericRules:this.extraGenericRules}}}class qs{static deserialize(t,e){const s=new qs({config:e});return s.index=$s.deserialize(t,Oe.deserialize,e.enableOptimizations?Ls:Bs,e),s.badFilters=Ps.deserialize(t,Oe.deserialize,e),s}constructor({filters:t=[],config:e}){this.index=new $s({config:e,deserialize:Oe.deserialize,filters:[],optimize:e.enableOptimizations?Ls:Bs}),this.badFiltersIds=null,this.badFilters=new Ps({config:e,deserialize:Oe.deserialize,filters:[]}),0!==t.length&&this.update(t,void 0)}getFilters(){return[].concat(this.badFilters.getFilters(),this.index.getFilters())}update(t,e){const s=[],i=[];for(const e of t)e.isBadFilter()?s.push(e):i.push(e);this.badFilters.update(s,e),this.index.update(i,e),this.badFiltersIds=null}getSerializedSize(){return this.badFilters.getSerializedSize()+this.index.getSerializedSize()}serialize(t){this.index.serialize(t),this.badFilters.serialize(t)}matchAll(t){const e=[];return this.index.iterMatchingFilters(t.getTokens(),(s=>(s.match(t)&&!1===this.isFilterDisabled(s)&&e.push(s),!0))),e}match(t){let e;return this.index.iterMatchingFilters(t.getTokens(),(s=>!s.match(t)||!1!==this.isFilterDisabled(s)||(e=s,!1))),e}isFilterDisabled(t){if(null===this.badFiltersIds){const t=this.badFilters.getFilters();if(0===t.length)return!1;const e=new Set;for(const s of t)e.add(s.getIdWithoutBadFilter());this.badFiltersIds=e}return this.badFiltersIds.has(t.getId())}}const Zs=Number.MAX_SAFE_INTEGER>>>0;class Vs{static deserialize(t,e){const s=t.getUint32(),i=t.getUint32(),n=t.getUint32(),r=Q.fromUint8Array(t.getBytes(!0),{enableCompression:!1}),o=r.getUint32ArrayView(s),a=r.getUint32ArrayView(i),A=r.pos;return r.seekZero(),new Vs({deserialize:e,values:[],getKeys:()=>[],getSerializedSize:()=>0,serialize:()=>{}}).updateInternals({bucketsIndex:a,valuesIndexStart:A,numberOfValues:n,tokensLookupIndex:o,view:r})}constructor({serialize:t,deserialize:e,getKeys:s,getSerializedSize:i,values:n}){if(this.cache=new Map,this.bucketsIndex=L,this.tokensLookupIndex=L,this.valuesIndexStart=0,this.numberOfValues=0,this.view=Q.empty({enableCompression:!1}),this.deserializeValue=e,0!==n.length){const e=[];let r=0,o=0;for(const t of n)o+=i(t);if(0===n.length)return void this.updateInternals({bucketsIndex:L,valuesIndexStart:0,numberOfValues:0,tokensLookupIndex:L,view:Q.empty({enableCompression:!1})});for(const t of n){const i=s(t);e.push(i),r+=2*i.length}o+=4*r;const a=Math.max(2,Ts(n.length)),A=a-1,c=[];for(let t=0;t<a;t+=1)c.push([]);o+=4*a;const h=Q.allocate(o,{enableCompression:!1}),l=h.getUint32ArrayView(a),u=h.getUint32ArrayView(r),d=h.getPos();for(let s=0;s<e.length;s+=1){const i=n[s],r=e[s],o=h.pos;t(i,h);for(const t of r)c[t&A].push([t,o])}let f=0;for(let t=0;t<a;t+=1){const e=c[t];l[t]=f;for(const[t,s]of e)u[f++]=t,u[f++]=s}this.updateInternals({bucketsIndex:u,valuesIndexStart:d,numberOfValues:e.length,tokensLookupIndex:l,view:h})}}updateInternals({bucketsIndex:t,valuesIndexStart:e,numberOfValues:s,tokensLookupIndex:i,view:n}){return this.bucketsIndex=t,this.valuesIndexStart=e,this.numberOfValues=s,this.tokensLookupIndex=i,this.view=n,n.seekZero(),this}getValues(){const t=[];if(0===this.numberOfValues)return t;this.view.setPos(this.valuesIndexStart);for(let e=0;e<this.numberOfValues;e+=1)t.push(this.deserializeValue(this.view));return this.view.seekZero(),t}getSerializedSize(){return 12+W(this.view.buffer,!0)}serialize(t){t.pushUint32(this.tokensLookupIndex.length),t.pushUint32(this.bucketsIndex.length),t.pushUint32(this.numberOfValues),t.pushBytes(this.view.buffer,!0)}get(t){const e=this.cache.get(t);if(void 0!==e)return e;const s=t&this.tokensLookupIndex.length-1,i=this.tokensLookupIndex[s];if(i===Zs)return[];const n=s===this.tokensLookupIndex.length-1?this.bucketsIndex.length:this.tokensLookupIndex[s+1],r=[];for(let e=i;e<n;e+=2){this.bucketsIndex[e]===t&&r.push(this.bucketsIndex[e+1])}if(0===r.length)return[];const o=[],a=this.view;for(let t=0;t<r.length;t+=1)a.setPos(r[t]),o.push(this.deserializeValue(a));return this.cache.set(t,o),o}}function Ys(t){if(null===t)return!1;if("object"!=typeof t)return!1;const{key:e,name:s,color:i,description:n}=t;return"string"==typeof e&&("string"==typeof s&&("string"==typeof i&&"string"==typeof n))}function Xs(t){return Kt(t.key)}function Js(t){return D(t.key)+D(t.name)+D(t.color)+D(t.description)}function Ks(t,e){e.pushUTF8(t.key),e.pushUTF8(t.name),e.pushUTF8(t.color),e.pushUTF8(t.description)}function ti(t){return{key:t.getUTF8(),name:t.getUTF8(),color:t.getUTF8(),description:t.getUTF8()}}function ei(t){return new Vs({getSerializedSize:Js,getKeys:t=>[Xs(t)],serialize:Ks,deserialize:ti,values:t})}function si(t){if(null===t)return!1;if("object"!=typeof t)return!1;const{key:e,name:s,description:i,country:n,website_url:r,privacy_policy_url:o,privacy_contact:a,ghostery_id:A}=t;return"string"==typeof e&&("string"==typeof s&&((null===i||"string"==typeof i)&&((null===n||"string"==typeof n)&&((null===r||"string"==typeof r)&&((null===o||"string"==typeof o)&&((null===a||"string"==typeof a)&&(null===A||"string"==typeof A)))))))}function ii(t){return Kt(t.key)}function ni(t){return D(t.key)+D(t.name)+D(t.description||"")+D(t.website_url||"")+D(t.country||"")+D(t.privacy_policy_url||"")+D(t.privacy_contact||"")+D(t.ghostery_id||"")}function ri(t,e){e.pushUTF8(t.key),e.pushUTF8(t.name),e.pushUTF8(t.description||""),e.pushUTF8(t.website_url||""),e.pushUTF8(t.country||""),e.pushUTF8(t.privacy_policy_url||""),e.pushUTF8(t.privacy_contact||""),e.pushUTF8(t.ghostery_id||"")}function oi(t){return{key:t.getUTF8(),name:t.getUTF8(),description:t.getUTF8()||null,website_url:t.getUTF8()||null,country:t.getUTF8()||null,privacy_policy_url:t.getUTF8()||null,privacy_contact:t.getUTF8()||null,ghostery_id:t.getUTF8()||null}}function ai(t){return new Vs({getSerializedSize:ni,getKeys:t=>[ii(t)],serialize:ri,deserialize:oi,values:t})}function Ai(t){if(null===t)return!1;if("object"!=typeof t)return!1;const{key:e,name:s,category:i,organization:n,alias:r,website_url:o,domains:a,filters:A}=t;return"string"==typeof e&&("string"==typeof s&&("string"==typeof i&&((null===n||"string"==typeof n)&&(("string"==typeof r||null===r)&&((null===o||"string"==typeof o)&&(!(!Array.isArray(a)||!a.every((t=>"string"==typeof t)))&&!(!Array.isArray(A)||!A.every((t=>"string"==typeof t)))))))))}function ci(t){const e=[];for(const s of t.filters){const t=Oe.parse(s);null!==t&&e.push(t.getId())}for(const s of t.domains){const t=Oe.parse(`||${s}^`);null!==t&&e.push(t.getId())}return[...new Set(e)]}function hi(t){let e=$(t.domains.length);for(const s of t.domains)e+=D(s);let s=$(t.filters.length);for(const e of t.filters)s+=D(e);return D(t.key)+D(t.name)+D(t.category)+D(t.organization||"")+D(t.alias||"")+D(t.website_url||"")+D(t.ghostery_id||"")+e+s}function li(t,e){e.pushUTF8(t.key),e.pushUTF8(t.name),e.pushUTF8(t.category),e.pushUTF8(t.organization||""),e.pushUTF8(t.alias||""),e.pushUTF8(t.website_url||""),e.pushUTF8(t.ghostery_id||""),e.pushLength(t.domains.length);for(const s of t.domains)e.pushUTF8(s);e.pushLength(t.filters.length);for(const s of t.filters)e.pushUTF8(s)}function ui(t){const e=t.getUTF8(),s=t.getUTF8(),i=t.getUTF8(),n=t.getUTF8()||null,r=t.getUTF8()||null,o=t.getUTF8()||null,a=t.getUTF8()||null,A=t.getLength(),c=[];for(let e=0;e<A;e+=1)c.push(t.getUTF8());const h=t.getLength(),l=[];for(let e=0;e<h;e+=1)l.push(t.getUTF8());return{key:e,name:s,category:i,organization:n,alias:r,website_url:o,ghostery_id:a,domains:c,filters:l}}function di(t){return new Vs({getSerializedSize:hi,getKeys:ci,serialize:li,deserialize:ui,values:t})}class fi{static deserialize(t){const e=new fi(null);return e.categories=Vs.deserialize(t,ti),e.organizations=Vs.deserialize(t,oi),e.patterns=Vs.deserialize(t,ui),e}constructor(t){if(!t)return this.organizations=ai([]),this.categories=ei([]),void(this.patterns=di([]));const{patterns:e,organizations:s,categories:i}=t,n=[];if("object"==typeof i)for(const[t,e]of Object.entries(i)){if("object"!=typeof e)continue;const s=Object.assign({key:t},e);Ys(s)?n.push(s):console.error("?? invalid category",s)}this.categories=ei(n);const r=[];if("object"==typeof s)for(const[t,e]of Object.entries(s)){if("object"!=typeof e)continue;const s=Object.assign({key:t},e);si(s)?r.push(s):console.error("?? invalid organization",s)}this.organizations=ai(r);const o=[];if("object"==typeof e)for(const[t,s]of Object.entries(e)){if("object"!=typeof s)continue;const e=Object.assign({key:t},s);Ai(e)?o.push(e):console.error("?? invalid pattern",e)}this.patterns=di(o)}getCategories(){return this.categories.getValues()}getOrganizations(){return this.organizations.getValues()}getPatterns(){return this.patterns.getValues()}getSerializedSize(){return this.categories.getSerializedSize()+this.organizations.getSerializedSize()+this.patterns.getSerializedSize()}serialize(t){this.categories.serialize(t),this.organizations.serialize(t),this.patterns.serialize(t)}fromFilter(t){return this.fromId(t.getId())}fromDomain(t){const e=t.split(".");for(;e.length>=2;e.shift()){const t=e.join("."),s=Oe.parse(`||${t}^`);if(null===s)continue;const i=this.fromId(s.getId());if(i.length>0)return i}return[]}fromId(t){var e,s;const i=[];for(const n of this.patterns.get(t))i.push({pattern:n,category:null===(e=this.categories.get(Xs({key:n.category})))||void 0===e?void 0:e[0],organization:null!==n.organization?null===(s=this.organizations.get(ii({key:n.organization})))||void 0===s?void 0:s[0]:null});return i}}const pi=619;function gi(t){if(0===t.length)return!1;let e,s=0;for(const i of t){const t=(i.isImportant()?4:0)|(i.isException()?1:2);t>=s&&(s=t,e=i)}return void 0!==e&&e.isException()}const mi=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,1,2,3,5,8,7,1,1,1,4,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1]);t.Config=N,t.CosmeticFilter=je,t.ENGINE_VERSION=pi,t.FiltersEngine=class extends X{static fromCached(t,e){if(void 0===e)return t();const{path:s,read:i,write:n}=e;return i(s).then((t=>this.deserialize(t))).catch((()=>t().then((t=>n(s,t.serialize()).then((()=>t))))))}static empty(t={}){return new this({config:t})}static fromLists(t,e,s={},i){return this.fromCached((()=>{const i=nt(t,e),n=rt(t);return Promise.all([i,n]).then((([t,e])=>{const i=this.parse(t.join("\n"),s);return void 0!==e&&i.updateResources(e,""+e.length),i}))}),i)}static fromPrebuiltAdsOnly(t=fetch,e){return this.fromLists(t,et,{},e)}static fromPrebuiltAdsAndTracking(t=fetch,e){return this.fromLists(t,st,{},e)}static fromPrebuiltFull(t=fetch,e){return this.fromLists(t,it,{},e)}static fromTrackerDB(t,e={}){const s=new N(e),i=new fi(t),n=[];for(const t of i.getPatterns())n.push(...t.filters);const r=this.parse(n.join("\n"),s);return r.metadata=i,r}static parse(t,e={}){const s=new N(e);return new this(Object.assign(Object.assign({},_e(t,s)),{config:s}))}static deserialize(t){const e=Q.fromUint8Array(t,{enableCompression:!1}),s=e.getUint16();if(pi!==s)throw new Error(`serialized engine version mismatch, expected 619 but got ${s}`);const i=N.deserialize(e);if(i.enableCompression&&e.enableCompression(),i.integrityCheck){const s=e.pos;e.pos=t.length-4;const i=e.checksum(),n=e.getUint32();if(i!==n)throw new Error(`serialized engine checksum mismatch, expected ${n} but got ${i}`);e.pos=s}const n=new this({config:i});n.resources=Cs.deserialize(e);const r=new Map,o=e.getUint16();for(let t=0;t<o;t+=1)r.set(e.getASCII(),e.getASCII());n.lists=r,n.importants=qs.deserialize(e,i),n.redirects=qs.deserialize(e,i),n.filters=qs.deserialize(e,i),n.exceptions=qs.deserialize(e,i),n.csp=qs.deserialize(e,i),n.cosmetics=Ns.deserialize(e,i),n.hideExceptions=qs.deserialize(e,i);return e.getBool()&&(n.metadata=fi.deserialize(e)),e.seekZero(),n}constructor({cosmeticFilters:t=[],networkFilters:e=[],config:s=new N,lists:i=new Map}={}){super(),this.config=new N(s),this.lists=i,this.csp=new qs({config:this.config}),this.hideExceptions=new qs({config:this.config}),this.exceptions=new qs({config:this.config}),this.importants=new qs({config:this.config}),this.redirects=new qs({config:this.config}),this.filters=new qs({config:this.config}),this.cosmetics=new Ns({config:this.config}),this.resources=new Cs,0===e.length&&0===t.length||this.update({newCosmeticFilters:t,newNetworkFilters:e})}getSerializedSize(){let t=1+this.config.getSerializedSize()+this.resources.getSerializedSize()+this.filters.getSerializedSize()+this.exceptions.getSerializedSize()+this.importants.getSerializedSize()+this.redirects.getSerializedSize()+this.csp.getSerializedSize()+this.cosmetics.getSerializedSize()+this.hideExceptions.getSerializedSize()+4;for(const[e,s]of this.lists)t+=_(e)+_(s);return t+=1,void 0!==this.metadata&&(t+=this.metadata.getSerializedSize()),t}serialize(t){const e=Q.fromUint8Array(t||new Uint8Array(this.getSerializedSize()),this.config);e.pushUint16(pi),this.config.serialize(e),this.resources.serialize(e),e.pushUint16(this.lists.size);for(const[t,s]of Array.from(this.lists.entries()).sort())e.pushASCII(t),e.pushASCII(s);return this.importants.serialize(e),this.redirects.serialize(e),this.filters.serialize(e),this.exceptions.serialize(e),this.csp.serialize(e),this.cosmetics.serialize(e),this.hideExceptions.serialize(e),e.pushBool(void 0!==this.metadata),void 0!==this.metadata&&this.metadata.serialize(e),this.config.integrityCheck&&e.pushUint32(e.checksum()),e.subarray()}loadedLists(){return Array.from(this.lists.keys())}hasList(t,e){return this.lists.has(t)&&this.lists.get(t)===e}updateResources(t,e){return this.resources.checksum!==e&&(this.resources=Cs.parse(t,{checksum:e}),!0)}getFilters(){return{cosmeticFilters:[].concat(this.cosmetics.getFilters()),networkFilters:[].concat(this.filters.getFilters(),this.exceptions.getFilters(),this.importants.getFilters(),this.redirects.getFilters(),this.csp.getFilters(),this.hideExceptions.getFilters())}}update({newNetworkFilters:t=[],newCosmeticFilters:e=[],removedCosmeticFilters:s=[],removedNetworkFilters:i=[]}){let n=!1;if(!this.config.loadCosmeticFilters||0===e.length&&0===s.length||(n=!0,this.cosmetics.update(e,0===s.length?void 0:new Set(s),this.config)),this.config.loadNetworkFilters&&(0!==t.length||0!==i.length)){n=!0;const e=[],s=[],r=[],o=[],a=[],A=[];for(const i of t)i.isCSP()?s.push(i):i.isGenericHide()||i.isSpecificHide()?A.push(i):i.isException()?r.push(i):i.isImportant()?o.push(i):i.isRedirect()?a.push(i):e.push(i);const c=0===i.length?void 0:new Set(i);this.importants.update(o,c),this.redirects.update(a,c),this.filters.update(e,c),!0===this.config.loadExceptionFilters&&this.exceptions.update(r,c),!0===this.config.loadCSPFilters&&this.csp.update(s,c),this.hideExceptions.update(A,c)}return n}updateFromDiff({added:t,removed:e}){const s=[],i=[],n=[],r=[];if(void 0!==e&&0!==e.length){const{networkFilters:t,cosmeticFilters:s}=_e(e.join("\n"),this.config);Array.prototype.push.apply(n,s),Array.prototype.push.apply(r,t)}if(void 0!==t&&0!==t.length){const{networkFilters:e,cosmeticFilters:n}=_e(t.join("\n"),this.config);Array.prototype.push.apply(s,n),Array.prototype.push.apply(i,e)}return this.update({newCosmeticFilters:s,newNetworkFilters:i,removedCosmeticFilters:n.map((t=>t.getId())),removedNetworkFilters:r.map((t=>t.getId()))})}getHtmlFilters({url:t,hostname:e,domain:s}){const i=[];if(!1===this.config.enableHtmlFiltering||!1===this.config.loadCosmeticFilters)return i;const n=this.cosmetics.getHtmlRules({domain:s||"",hostname:e});for(const t of n){const e=t.getExtendedSelector();void 0!==e&&i.push(e)}return 0!==i.length&&this.emit("html-filtered",i,t),i}getCosmeticsFilters({url:t,hostname:e,domain:s,classes:i,hrefs:n,ids:r,getBaseRules:o=!0,getInjectionRules:a=!0,getExtendedRules:A=!0,getRulesFromDOM:c=!0,getRulesFromHostname:h=!0}){if(!1===this.config.loadCosmeticFilters)return{active:!1,extended:[],scripts:[],styles:""};let l=!0,u=!0;const d=this.hideExceptions.matchAll(ye.fromRawDetails({domain:s||"",hostname:e,url:t,sourceDomain:"",sourceHostname:"",sourceUrl:""})),f=[],p=[];for(const t of d){if(t.isElemHide()){l=!1,u=!1;break}t.isSpecificHide()?p.push(t):t.isGenericHide()&&f.push(t)}!0===l&&(l=!1===gi(f)),!0===u&&(u=!1===gi(p));const{injections:g,stylesheet:m,extended:y}=this.cosmetics.getCosmeticsFilters({domain:s||"",hostname:e,classes:i,hrefs:n,ids:r,allowGenericHides:l,allowSpecificHides:u,getBaseRules:o,getInjectionRules:a,getExtendedRules:A,getRulesFromDOM:c,getRulesFromHostname:h}),b=[];for(const e of g){const s=e.getScript(this.resources.js);void 0!==s&&(this.emit("script-injected",s,t),b.push(s))}return 0!==m.length&&this.emit("style-injected",m,t),{active:!0,extended:y,scripts:b,styles:m}}matchAll(t){const e=[];return t.isSupported&&(Array.prototype.push.apply(e,this.importants.matchAll(t)),Array.prototype.push.apply(e,this.filters.matchAll(t)),Array.prototype.push.apply(e,this.exceptions.matchAll(t)),Array.prototype.push.apply(e,this.csp.matchAll(t)),Array.prototype.push.apply(e,this.hideExceptions.matchAll(t)),Array.prototype.push.apply(e,this.redirects.matchAll(t))),new Set(e)}getCSPDirectives(t){if(!this.config.loadNetworkFilters)return;if(!0!==t.isSupported||!1===t.isMainFrame())return;const e=this.csp.matchAll(t);if(0===e.length)return;const s=new Set,i=new Set;for(const t of e)if(t.isException()){if(void 0===t.csp)return;s.add(t.csp)}else i.add(t.csp);const n=Array.from(i).filter((t=>!s.has(t))).join("; ")||void 0;return void 0!==n&&this.emit("csp-injected",n,t),n}match(t,e=!1){const s={exception:void 0,filter:void 0,match:!1,redirect:void 0,metadata:void 0};if(!this.config.loadNetworkFilters)return s;if(t.isSupported){let e,i;if(s.filter=this.importants.match(t),void 0===s.filter){const n=this.redirects.matchAll(t);if(0!==n.length)for(const t of n)"none"===t.getRedirect()?e=t:t.isRedirectRule()?i=t:s.filter=t;void 0===s.filter&&(s.filter=this.filters.match(t),void 0!==i&&void 0!==s.filter&&(s.filter=i)),void 0!==s.filter&&(s.exception=this.exceptions.match(t))}void 0!==s.filter&&void 0===s.exception&&s.filter.isRedirect()&&(void 0!==e?s.exception=e:s.redirect=this.resources.getResource(s.filter.getRedirect()))}return s.match=void 0===s.exception&&void 0!==s.filter,void 0!==s.exception?this.emit("request-whitelisted",t,s):void 0!==s.redirect?this.emit("request-redirected",t,s):void 0!==s.filter?this.emit("request-blocked",t,s):this.emit("request-allowed",t,s),!0===e&&void 0!==s.filter&&this.metadata&&(s.metadata=this.metadata.fromFilter(s.filter)),s}getPatternMetadata(t,{getDomainMetadata:e=!1}={}){if(void 0===this.metadata)return[];const s=new Set,i=[];for(const e of this.matchAll(t))for(const t of this.metadata.fromFilter(e))s.has(t.pattern.key)||(s.add(t.pattern.key),i.push(t));if(e)for(const e of this.metadata.fromDomain(t.hostname))s.has(e.pattern.key)||(s.add(e.pattern.key),i.push(e));return i}blockScripts(){return this.updateFromDiff({added:[at().scripts().redirectTo("javascript").toString()]}),this}blockImages(){return this.updateFromDiff({added:[at().images().redirectTo("png").toString()]}),this}blockMedias(){return this.updateFromDiff({added:[at().medias().redirectTo("mp4").toString()]}),this}blockFrames(){return this.updateFromDiff({added:[at().frames().redirectTo("html").toString()]}),this}blockFonts(){return this.updateFromDiff({added:[at().fonts().toString()]}),this}blockStyles(){return this.updateFromDiff({added:[at().styles().toString()]}),this}},t.NetworkFilter=Oe,t.Request=ye,t.Resources=Cs,t.ReverseIndex=$s,t.StreamingHtmlFilter=class{constructor(t){this.buffer="",this.patterns=function(t){const e=[];for(const[,s]of t){const t=[],i=[];for(const e of s)47===e.charCodeAt(0)?e.endsWith("/")?i.push(new RegExp(e.slice(1,-1))):e.endsWith("/i")&&i.push(new RegExp(e.slice(1,-2),"i")):t.push(e);0===t.length&&0===i.length||e.push([t,i])}return e}(t)}flush(){return this.buffer}write(t){if(0===this.patterns.length)return t;if(0===t.length)return t;this.buffer+=t;const[e,s,i]=function(t,e){const s=[],i=`<${e}`,n=`</${e}>`;let r=t.indexOf(i),o=0;for(;-1!==r;){const e=t.indexOf(">",r+i.length);if(-1===e)return[s,t.slice(0,r),t.slice(r)];if(47===t.charCodeAt(e-1))o=e+1,s.push([r,t.slice(r,o)]);else{const i=t.indexOf(n,e);if(-1===i)return[s,t.slice(0,r),t.slice(r)];s.push([r,t.slice(r,i+n.length)]),o=i+n.length}r=t.indexOf(i,o)}let a=t.lastIndexOf(">");-1===a&&(a=o);const A=t.indexOf("<",a);return-1===A||t.length-A>=i.length||!1===i.startsWith(t.slice(A))?[s,t,""]:[s,t.slice(0,A),t.slice(A)]}(this.buffer,"script");return this.buffer=i,0===e.length?s:function(t,e){if(0===e.length)return t;let s=t;e.reverse();for(const[t,i]of e)s=s.slice(0,t)+s.slice(t+i.length);return s}(s,function(t,e){const s=[];for(const i of e)for(const[e,n]of t)if(we(i[1],e,n)){s.push(i);break}return s}(this.patterns,e))}},t.adsAndTrackingLists=st,t.adsLists=et,t.detectFilterType=We,t.f=function(t){return Pe(t[0])},t.fetchLists=nt,t.fetchResources=rt,t.fetchWithRetry=J,t.fullLists=it,t.generateDiff=function(t,e,s=new N){const i=new N(Object.assign({},s,{debug:!0})),n=De(t,i),r=new Set(n.map((t=>t.getId()))),o=De(e,i),a=new Set(o.map((t=>t.getId()))),A=new Set;for(const t of o)r.has(t.getId())||A.add(t.rawLine);const c=new Set;for(const t of n)a.has(t.getId())||c.add(t.rawLine);return{added:Array.from(A),removed:Array.from(c)}},t.getHostnameHashesFromLabelsBackward=me,t.getLinesWithFilters=function(t,e=new N){return new Set(De(t,new N(Object.assign({},e,{debug:!0}))).map((({rawLine:t})=>t)))},t.hasUnicode=le,t.isUTF8=function(t){if(0===t.length)return!0;if(!0===function(t){if(0===t.length)return!0;for(let e=0;e<t.length;e+=1)if(t[e]>127)return!1;return!0}(t))return!0;let e=0;for(let s=0;s<t.length;s+=1){const i=mi[t[s]];if(e=mi[256+16*e+i],1===e||void 0===e)return!1}return!0},t.makeRequest=function(t){return ye.fromRawDetails(t)},t.mergeDiffs=function(t){const e=new Set,s=new Set;for(const{added:i,removed:n}of t){if(void 0!==i)for(const t of i)s.has(t)&&s.delete(t),e.add(t);if(void 0!==n)for(const t of n)e.has(t)&&e.delete(t),s.add(t)}return{added:Array.from(e),removed:Array.from(s)}},t.parseFilter=Pe,t.parseFilters=_e,t.tokenize=Ae}));
+//# sourceMappingURL=adblocker.umd.min.js.map
diff --git a/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js.map b/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js.map
new file mode 100644
index 0000000..6d2f09d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/adblocker.umd.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.umd.min.js","sources":["../../../node_modules/@remusao/trie/index.ts","../../../node_modules/@remusao/smaz-compress/index.ts","../../../node_modules/@remusao/smaz-decompress/index.ts","../../../node_modules/@remusao/smaz/index.ts","../src/codebooks/cosmetic-selector.ts","../src/codebooks/network-csp.ts","../src/codebooks/network-filter.ts","../src/codebooks/network-hostname.ts","../src/codebooks/network-redirect.ts","../src/codebooks/raw-network.ts","../src/codebooks/raw-cosmetic.ts","../src/compression.ts","../src/crc32.ts","../src/punycode.ts","../src/data-view.ts","../src/queue-microtask.ts","../src/config.ts","../src/events.ts","../src/fetch.ts","../src/filters/dsl.ts","../../adblocker-extended-selectors/src/parse.ts","../../adblocker-extended-selectors/src/types.ts","../../adblocker-extended-selectors/src/extended.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/documents.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/fonts.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/images.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/medias.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/scripts.ts","../../../node_modules/@remusao/guess-url-type/src/extensions/stylesheets.ts","../../../node_modules/tldts-core/src/extract-hostname.ts","../../../node_modules/tldts-core/src/is-valid.ts","../../../node_modules/tldts-core/src/options.ts","../../../node_modules/tldts-core/src/factory.ts","../../../node_modules/tldts-core/src/is-ip.ts","../../../node_modules/tldts-core/src/domain.ts","../../../node_modules/tldts-core/src/subdomain.ts","../../../node_modules/tldts-core/src/domain-without-suffix.ts","../../../node_modules/tldts-experimental/src/data/hashes.ts","../../../node_modules/tldts-experimental/src/packed-hashes.ts","../../../node_modules/tldts-core/src/lookup/fast-path.ts","../../../node_modules/tldts-experimental/index.ts","../src/tokens-buffer.ts","../src/utils.ts","../src/request.ts","../../../node_modules/@remusao/guess-url-type/index.ts","../../../node_modules/@remusao/guess-url-type/src/extname.ts","../src/engine/domains.ts","../src/html-filtering.ts","../src/filters/cosmetic.ts","../src/filters/network.ts","../src/lists.ts","../../../node_modules/@remusao/small/src/flv.ts","../../../node_modules/@remusao/small/src/gif.ts","../../../node_modules/@remusao/small/src/html.ts","../../../node_modules/@remusao/small/src/ico.ts","../../../node_modules/@remusao/small/src/jpeg.ts","../../../node_modules/@remusao/small/src/javascript.ts","../../../node_modules/@remusao/small/src/json.ts","../../../node_modules/@remusao/small/src/mp3.ts","../../../node_modules/@remusao/small/src/mp4.ts","../../../node_modules/@remusao/small/src/pdf.ts","../../../node_modules/@remusao/small/src/png.ts","../../../node_modules/@remusao/small/src/svg.ts","../../../node_modules/@remusao/small/src/txt.ts","../../../node_modules/@remusao/small/src/wav.ts","../../../node_modules/@remusao/small/src/webm.ts","../../../node_modules/@remusao/small/src/webp.ts","../../../node_modules/@remusao/small/src/wmv.ts","../../../node_modules/@remusao/small/index.ts","../src/resources.ts","../src/compact-set.ts","../src/engine/optimizer.ts","../src/engine/reverse-index.ts","../src/engine/bucket/filters.ts","../src/engine/bucket/cosmetic.ts","../src/engine/bucket/network.ts","../src/engine/map.ts","../src/engine/metadata/categories.ts","../src/engine/metadata/organizations.ts","../src/engine/metadata/patterns.ts","../src/engine/metadata.ts","../src/engine/engine.ts","../src/encoding.ts"],"sourcesContent":[null,null,null,null,"/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"div[style=\\\"position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;\\\"]\",\n \"acs, document.createElement, /l\\\\.parentNode\\\\.insertBefore\\\\(s/\",\n \"acs, document.addEventListener, google_ad_client\",\n \"acs, document.querySelectorAll, popMagic\",\n \"acs, addEventListener, google_ad_client\",\n \"aost, String.prototype.charCodeAt, ai_\",\n \"aopr, app_vars.force_disable_adblock\",\n \"aeld, DOMContentLoaded, adsBlocked\",\n \"paid.outbrain.com/network/redir?\\\"]\",\n \"acs, document.getElementById, \",\n \"no-fetch-if, googlesyndication\",\n \"acs, document.createElement, \",\n \"aopr, document.dispatchEvent\",\n \"acs, String.fromCharCode, \",\n \"nosiif, visibility, 1000\",\n \"set, Object.prototype.\",\n \"set, blurred, false\",\n \"acs, eval, replace\",\n \"[target=\\\"_blank\\\"]\",\n \"^script:has-text(\",\n \"[href^=\\\"https://\",\n \"[href^=\\\"http://\",\n \"set, flashvars.\",\n \"rmnt, script, \",\n \"#custom_html-\",\n \"BlockDetected\",\n \"no-fetch-if, \",\n \"div[class^=\\\"\",\n \"notification\",\n \"leaderboard\",\n \"no-xhr-if, \",\n \"noeval-if, \",\n \", noopFunc\",\n \":has-text(\",\n \"AaDetector\",\n \"aopw, _pop\",\n \"background\",\n \"horizontal\",\n \"nano-sib, \",\n \"container\",\n \"Container\",\n \"decodeURI\",\n \"div[id^=\\\"\",\n \"ompliance\",\n \"placehold\",\n \"rectangle\",\n \"[href*=\\\"\",\n \"#wpsafe-\",\n \"backdrop\",\n \"disclaim\",\n \"https://\",\n \"nextFunc\",\n \"nostif, \",\n \"Notifica\",\n \"nowebrtc\",\n \".com/\\\"]\",\n \"300x250\",\n \"article\",\n \"consent\",\n \"content\",\n \"message\",\n \"Message\",\n \"privacy\",\n \"Privacy\",\n \"sidebar\",\n \"sponsor\",\n \"wrapper\",\n \"[class\",\n \"[data-\",\n \"[style\",\n \"728x90\",\n \"accept\",\n \"Accept\",\n \"aeld, \",\n \"aopr, \",\n \"aopw, \",\n \"banner\",\n \"billbo\",\n \"bottom\",\n \"cookie\",\n \"Cookie\",\n \"google\",\n \"notice\",\n \"nowoif\",\n \"policy\",\n \"Policy\",\n \"sticky\",\n \"widget\",\n \":has(\",\n \":not(\",\n \"acs, \",\n \"block\",\n \"Block\",\n \"click\",\n \"cript\",\n \"docum\",\n \"fixed\",\n \"frame\",\n \"modal\",\n \"popup\",\n \"set, \",\n \"width\",\n \"0px;\",\n \"body\",\n \"foot\",\n \"gdpr\",\n \"html\",\n \"ight\",\n \"page\",\n \"show\",\n \"tion\",\n \"true\",\n \"www.\",\n \" > \",\n \"box\",\n \"Box\",\n \"div\",\n \"dow\",\n \"ent\",\n \"ide\",\n \"img\",\n \"lay\",\n \"out\",\n \"rap\",\n \"sby\",\n \"top\",\n \"utt\",\n \"__\",\n \"--\",\n \", \",\n \": \",\n \".j\",\n \".m\",\n \".t\",\n \"\\\"]\",\n \"=\\\"\",\n \"00\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"Ad\",\n \"ag\",\n \"al\",\n \"am\",\n \"an\",\n \"ar\",\n \"at\",\n \"d-\",\n \"de\",\n \"e-\",\n \"ed\",\n \"el\",\n \"en\",\n \"er\",\n \"et\",\n \"fo\",\n \"g-\",\n \"he\",\n \"id\",\n \"il\",\n \"in\",\n \"is\",\n \"it\",\n \"la\",\n \"le\",\n \"lo\",\n \"o-\",\n \"od\",\n \"ol\",\n \"om\",\n \"on\",\n \"op\",\n \"or\",\n \"ot\",\n \"ov\",\n \"p-\",\n \"re\",\n \"s_\",\n \"s-\",\n \"se\",\n \"si\",\n \"st\",\n \"t-\",\n \"te\",\n \"ti\",\n \"un\",\n \" \",\n \"_\",\n \"-\",\n \";\",\n \":\",\n \".\",\n \"'\",\n \")\",\n \"[\",\n \"]\",\n \"*\",\n \"/\",\n \"#\",\n \"^\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"A\",\n \"b\",\n \"B\",\n \"c\",\n \"C\",\n \"d\",\n \"D\",\n \"e\",\n \"E\",\n \"f\",\n \"F\",\n \"g\",\n \"h\",\n \"H\",\n \"i\",\n \"I\",\n \"j\",\n \"k\",\n \"l\",\n \"L\",\n \"m\",\n \"M\",\n \"n\",\n \"N\",\n \"o\",\n \"O\",\n \"p\",\n \"P\",\n \"q\",\n \"r\",\n \"R\",\n \"s\",\n \"S\",\n \"t\",\n \"T\",\n \"u\",\n \"U\",\n \"v\",\n \"w\",\n \"W\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation\",\n \"script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:\",\n \"script-src 'self' 'unsafe-inline' 'unsafe-eval' data:\",\n \" *.google.com *.gstatic.com *.googleapis.com\",\n \".com *.google.com *.googletagmanager.com *.\",\n \"script-src 'self' '*' 'unsafe-inline'\",\n \"default-src 'unsafe-inline' 'self'\",\n \"*.gstatic.com *.googleapis.com *.\",\n \"t-src 'self' 'unsafe-inline' \",\n \"script-src * 'unsafe-inline'\",\n \".com *.google-analytics.com\",\n \" *.googletagmanager.com\",\n \" *.cloudflare.com *.\",\n \"*.googleapis.com *.\",\n \"default-src 'self'\",\n \"frame-src 'self' *\",\n \" *.gstatic.com *.\",\n \"child-src 'none';\",\n \"worker-src 'none'\",\n \" 'unsafe-inline'\",\n \"bootstrapcdn.com\",\n \"'unsafe-eval'\",\n \"connect-src \",\n \"child-src *\",\n \"style-src *\",\n \"google.com\",\n \"jquery.com\",\n \"script-src\",\n \"frame-src\",\n \"facebook\",\n \"https://\",\n \".com *.\",\n \".net *.\",\n \"addthis\",\n \"captcha\",\n \"gstatic\",\n \"youtube\",\n \" data:\",\n \"'self'\",\n \"defaul\",\n \"disqus\",\n \"google\",\n \"scrip\",\n \"ytimg\",\n \".com\",\n \"n.cc\",\n \" *.\",\n \"age\",\n \"dia\",\n \"tag\",\n \"vic\",\n \" *\",\n \"er\",\n \"es\",\n \"im\",\n \"in\",\n \"la\",\n \"lo\",\n \"me\",\n \"ne\",\n \"nt\",\n \"pi\",\n \"ra\",\n \"re\",\n \"tt\",\n \"wi\",\n \"wp\",\n \" \",\n \"-\",\n \";\",\n \":\",\n \".\",\n \"'\",\n \"*\",\n \"/\",\n \"3\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"\\\\/[a-d][-\\\\.\\\\/_A-Za-z][DHWXm][-\\\\.\\\\/_A-Za-z][59FVZ][-\\\\.\\\\/_A-Za-z][6swyz][-\\\\.\\\\/_A-Za-z][-\\\\/_0-9a-zA-Z][-\\\\.\\\\/_A-Za-z][-\\\\/_0-9a-zA-Z]{22,162}$/\",\n \"\\\\/(?=[\\\\/a-zA-Z]*[+0-9])(?=[+\\\\/0-9a-z]*[A-Z])[+\\\\/0-9a-zA-Z]{\",\n \"/homad-global-configs.schneevonmorgen.com/global_config\",\n \"/videojs-vast-vpaid@2.0.2/bin/videojs_5.vast.vpaid.min\",\n \"/etc.clientlibs/logitech-common/clientlibs/onetrust.\",\n \"\\\\/(?=[a-z]{0,6}[0-9A-Z])[0-9a-zA-Z]{7}\\\\\",\n \"/pagead/managed/js/gpt/*/pubads_impl\",\n \"\\\\?aHR0c[\\\\/0-9a-zA-Z]{33,}=?=?$/\",\n \"\\\\.pussyspace\\\\.(?:com|net)\\\\/\",\n \"/pagead/js/adsbygoogle.js\",\n \"\\\\/[+\\\\/0-9a-zA-Z]{400,}$/\",\n \"/fileadmin/user_upload/\",\n \"/js/sdkloader/ima3_dai\",\n \"/js/sdkloader/ima3.js\",\n \"/sites/default/files/\",\n \"/wp-content/plugins/\",\n \"/wp-content/uploads/\",\n \"/detroitchicago/\",\n \"*/satellitelib-\",\n \"/appmeasurement\",\n \"/img/linklist2/\",\n \"/(https?:\\\\/\\\\/)\",\n \"/cdn-cgi/trace\",\n \"/^https?:\\\\/\\\\/\",\n \"[a-zA-Z0-9]{\",\n \"/^https:\\\\/\\\\/\",\n \"/wp-content/\",\n \"impression\",\n \"[0-9a-f]{\",\n \"[0-9a-z]{\",\n \"/template\",\n \"affiliate\",\n \"analytics\",\n \"collector\",\n \"/assets/\",\n \"/collect\",\n \"/images/\",\n \"tracking\",\n \"300x250\",\n \"captcha\",\n \"consent\",\n \"content\",\n \"counter\",\n \"privacy\",\n \"sponsor\",\n \"visitor\",\n \".aspx?\",\n \"/media\",\n \"0-9a-z\",\n \"728x90\",\n \"banner\",\n \"bundle\",\n \"client\",\n \"cookie\",\n \"detect\",\n \"google\",\n \"metric\",\n \"prebid\",\n \"public\",\n \"script\",\n \"source\",\n \"widget\",\n \".cgi?\",\n \".com/\",\n \".html\",\n \"/api/\",\n \"/file\",\n \"/img/\",\n \"/java\",\n \"/page\",\n \"/stat\",\n \"/uplo\",\n \"a-z]{\",\n \"block\",\n \"click\",\n \"count\",\n \"event\",\n \"frame\",\n \"image\",\n \"manag\",\n \"pixel\",\n \"popup\",\n \"theme\",\n \"track\",\n \"video\",\n \".gif\",\n \".jpg\",\n \".min\",\n \".php\",\n \".png\",\n \"/jqu\",\n \"/js/\",\n \"/lib\",\n \"/log\",\n \"/web\",\n \"468x\",\n \"bung\",\n \"gdpr\",\n \"gi-b\",\n \"ight\",\n \"page\",\n \"play\",\n \"show\",\n \"view\",\n \".js\",\n \"(?:\",\n \"}\\\\.\",\n \"/ad\",\n \"/js\",\n \"=*&\",\n \"com\",\n \"ext\",\n \"ive\",\n \"jax\",\n \"log\",\n \"lug\",\n \"sdk\",\n \"tag\",\n \"web\",\n \"*/\",\n \"*^\",\n \"/_\",\n \"/?\",\n \"/*\",\n \"/d\",\n \"/f\",\n \"/g\",\n \"/h\",\n \"/l\",\n \"/m\",\n \"/n\",\n \"/r\",\n \"/w\",\n \"\\\\/\",\n \"20\",\n \"a-\",\n \"ac\",\n \"ad\",\n \"ag\",\n \"al\",\n \"am\",\n \"an\",\n \"ap\",\n \"ar\",\n \"as\",\n \"at\",\n \"be\",\n \"bo\",\n \"ce\",\n \"ch\",\n \"co\",\n \"de\",\n \"e-\",\n \"e/\",\n \"ed\",\n \"el\",\n \"em\",\n \"en\",\n \"er\",\n \"et\",\n \"ic\",\n \"id\",\n \"ig\",\n \"il\",\n \"im\",\n \"in\",\n \"is\",\n \"it\",\n \"js\",\n \"la\",\n \"le\",\n \"li\",\n \"lo\",\n \"ma\",\n \"mp\",\n \"ol\",\n \"om\",\n \"on\",\n \"op\",\n \"or\",\n \"ot\",\n \"p-\",\n \"re\",\n \"ro\",\n \"s_\",\n \"s-\",\n \"s?\",\n \"s/\",\n \"sp\",\n \"ss\",\n \"st\",\n \"t/\",\n \"te\",\n \"tm\",\n \"tr\",\n \"ub\",\n \"um\",\n \"un\",\n \"ur\",\n \"us\",\n \"ut\",\n \"_\",\n \"-\",\n \",\",\n \":\",\n \"?\",\n \".\",\n \")\",\n \"[\",\n \"}\",\n \"*\",\n \"/\",\n \"\\\\\",\n \"&\",\n \"^\",\n \"=\",\n \"|\",\n \"$\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"securepubads.g.doubleclick\",\n \"googlesyndication\",\n \"imasdk.googleapis\",\n \"googletagmanager\",\n \".cloudfront.net\",\n \".actonservice\",\n \".rsc.cdn77.\",\n \"doubleclick\",\n \"marketing.\",\n \"analytics\",\n \"smetrics.\",\n \".website\",\n \"metrics.\",\n \"digital\",\n \".co.uk\",\n \"a8clk.\",\n \"stats.\",\n \"a8cv.\",\n \"media\",\n \"space\",\n \"track\",\n \".com\",\n \".net\",\n \".xyz\",\n \"ight\",\n \"www.\",\n \".de\",\n \".io\",\n \".jp\",\n \"aff\",\n \"app\",\n \"cdn\",\n \"new\",\n \"pro\",\n \"web\",\n \".b\",\n \".c\",\n \".f\",\n \".h\",\n \".k\",\n \".m\",\n \".n\",\n \".p\",\n \".t\",\n \".v\",\n \".w\",\n \"a1\",\n \"a8\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"af\",\n \"ag\",\n \"ah\",\n \"ai\",\n \"ak\",\n \"al\",\n \"am\",\n \"an\",\n \"ap\",\n \"ar\",\n \"as\",\n \"at\",\n \"au\",\n \"av\",\n \"aw\",\n \"ax\",\n \"ay\",\n \"az\",\n \"be\",\n \"bl\",\n \"bo\",\n \"br\",\n \"bu\",\n \"ca\",\n \"ce\",\n \"ch\",\n \"ci\",\n \"ck\",\n \"cl\",\n \"cr\",\n \"ct\",\n \"cu\",\n \"da\",\n \"de\",\n \"di\",\n \"do\",\n \"dr\",\n \"ds\",\n \"du\",\n \"dy\",\n \"e-\",\n \"eb\",\n \"ec\",\n \"ed\",\n \"ef\",\n \"eg\",\n \"ek\",\n \"el\",\n \"em\",\n \"en\",\n \"ep\",\n \"er\",\n \"es\",\n \"et\",\n \"eu\",\n \"ev\",\n \"ew\",\n \"ex\",\n \"ey\",\n \"fe\",\n \"fi\",\n \"fl\",\n \"fo\",\n \"fr\",\n \"ge\",\n \"gh\",\n \"gl\",\n \"go\",\n \"gr\",\n \"gu\",\n \"he\",\n \"ho\",\n \"ia\",\n \"ib\",\n \"ic\",\n \"id\",\n \"ie\",\n \"if\",\n \"ig\",\n \"ik\",\n \"il\",\n \"im\",\n \"in\",\n \"ip\",\n \"ir\",\n \"is\",\n \"it\",\n \"iv\",\n \"ix\",\n \"iz\",\n \"jo\",\n \"ks\",\n \"la\",\n \"ld\",\n \"le\",\n \"li\",\n \"lo\",\n \"lu\",\n \"ly\",\n \"ma\",\n \"me\",\n \"mo\",\n \"mp\",\n \"my\",\n \"nd\",\n \"ne\",\n \"no\",\n \"ob\",\n \"of\",\n \"ok\",\n \"ol\",\n \"om\",\n \"on\",\n \"oo\",\n \"op\",\n \"or\",\n \"ot\",\n \"ou\",\n \"ow\",\n \"ph\",\n \"pl\",\n \"po\",\n \"pr\",\n \"qu\",\n \"re\",\n \"ro\",\n \"ru\",\n \"s-\",\n \"sc\",\n \"se\",\n \"sh\",\n \"si\",\n \"sk\",\n \"sm\",\n \"sn\",\n \"so\",\n \"sp\",\n \"ss\",\n \"st\",\n \"su\",\n \"sw\",\n \"sy\",\n \"t-\",\n \"ta\",\n \"te\",\n \"th\",\n \"ti\",\n \"tn\",\n \"to\",\n \"tr\",\n \"ts\",\n \"tu\",\n \"tw\",\n \"ty\",\n \"ub\",\n \"ul\",\n \"um\",\n \"un\",\n \"up\",\n \"ur\",\n \"us\",\n \"ut\",\n \"ve\",\n \"vi\",\n \"we\",\n \"-\",\n \".\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"google-analytics.com/analytics.js\",\n \"googlesyndication_adsbygoogle.js\",\n \"googletagmanager.com/gtm.js\",\n \"googletagservices_gpt.js\",\n \"googletagmanager_gtm.js\",\n \"fuckadblock.js-3.2.0\",\n \"amazon_apstag.js\",\n \"google-analytics\",\n \"fingerprint2.js\",\n \"-transparent.\",\n \"google-ima.js\",\n \"prebid-ads.js\",\n \"nobab2.js:10\",\n \"noopmp3-0.1s\",\n \"noop-1s.mp4\",\n \"hd-main.js\",\n \"noopmp4-1s\",\n \"32x32.png\",\n \"noop.html\",\n \"noopframe\",\n \"noop.txt\",\n \"nooptext\",\n \"1x1.gif\",\n \"2x2.png\",\n \"noop.js\",\n \"noopjs\",\n \".com/\",\n \".js:5\",\n \"noop\",\n \":10\",\n \".js\",\n \"ads\",\n \":5\",\n \"ad\",\n \"am\",\n \"et\",\n \"ic\",\n \"in\",\n \"mp\",\n \"re\",\n \"st\",\n \"_\",\n \"-\",\n \":\",\n \".\",\n \"/\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \"||imasdk.googleapis.com/js\",\n \"image,redirect-rule=1x1.gi\",\n \"redirect-rule=google-ima.j\",\n \"securepubads.g.doubleclick\",\n \"/pagead/js/adsbygoogle.js\",\n \"*$script,3p,denyallow=\",\n \"/wp-content/plugins/\",\n \"/wp-content/uploads/\",\n \",redirect-rule=noop\",\n \"/sdkloader/ima3.js\",\n \".com^$third-party\",\n \"googlesyndication\",\n \".cloudfront.net^\",\n \"$script,domain=\",\n \",redirect=noop\",\n \"xmlhttprequest\",\n \".actonservice\",\n \"/^https?:\\\\/\\\\/\",\n \"^$third-party\",\n \"||smetrics.\",\n \"|downdetect\",\n \"third-party\",\n \"-9a-zA-Z]{\",\n \"marketing.\",\n \".website^\",\n \"$subdocum\",\n \"analytics\",\n \"/assets/\",\n \"cloudfla\",\n \"tracking\",\n \"$script\",\n \"domain=\",\n \"metrics\",\n \".co.uk\",\n \"$ghide\",\n \"a8clk.\",\n \"cookie\",\n \"google\",\n \"script\",\n \".com^\",\n \".top^\",\n \".xyz^\",\n \"a-z]{\",\n \"a8cv.\",\n \"image\",\n \"media\",\n \"track\",\n \"video\",\n \".com\",\n \".gif\",\n \".jp^\",\n \".net\",\n \".php\",\n \"/js/\",\n \"$doc\",\n \"$xhr\",\n \"html\",\n \"ight\",\n \"stat\",\n \"view\",\n \"www.\",\n \",1p\",\n \".de\",\n \".io\",\n \".jp\",\n \".js\",\n \"$3p\",\n \"aff\",\n \"cdn\",\n \"new\",\n \"pro\",\n \"web\",\n \"-c\",\n \".b\",\n \".c\",\n \".m\",\n \".n\",\n \".p\",\n \".s\",\n \"@@\",\n \"*/\",\n \"/*\",\n \"/b\",\n \"/p\",\n \"||\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"af\",\n \"ag\",\n \"ak\",\n \"al\",\n \"am\",\n \"an\",\n \"ap\",\n \"ar\",\n \"as\",\n \"at\",\n \"au\",\n \"av\",\n \"aw\",\n \"ay\",\n \"az\",\n \"be\",\n \"bo\",\n \"br\",\n \"ce\",\n \"ch\",\n \"ck\",\n \"cl\",\n \"ct\",\n \"de\",\n \"di\",\n \"do\",\n \"e-\",\n \"e^\",\n \"eb\",\n \"ec\",\n \"ed\",\n \"el\",\n \"em\",\n \"en\",\n \"ep\",\n \"er\",\n \"es\",\n \"et\",\n \"ev\",\n \"ex\",\n \"ff\",\n \"fi\",\n \"fo\",\n \"fr\",\n \"g^\",\n \"ge\",\n \"go\",\n \"gr\",\n \"he\",\n \"ho\",\n \"ib\",\n \"ic\",\n \"id\",\n \"if\",\n \"ig\",\n \"ik\",\n \"il\",\n \"im\",\n \"in\",\n \"ip\",\n \"ir\",\n \"is\",\n \"it\",\n \"iv\",\n \"ix\",\n \"iz\",\n \"js\",\n \"le\",\n \"lo\",\n \"ly\",\n \"ma\",\n \"mo\",\n \"mp\",\n \"no\",\n \"ob\",\n \"od\",\n \"ok\",\n \"ol\",\n \"om\",\n \"on\",\n \"op\",\n \"or\",\n \"ot\",\n \"pl\",\n \"po\",\n \"pr\",\n \"qu\",\n \"re\",\n \"ro\",\n \"ru\",\n \"s/\",\n \"sc\",\n \"se\",\n \"sh\",\n \"sm\",\n \"so\",\n \"sp\",\n \"ss\",\n \"st\",\n \"th\",\n \"ti\",\n \"to\",\n \"tr\",\n \"ts\",\n \"tv\",\n \"ub\",\n \"ud\",\n \"ug\",\n \"ul\",\n \"um\",\n \"un\",\n \"up\",\n \"ur\",\n \"us\",\n \"ut\",\n \"ve\",\n \"yo\",\n \"_\",\n \"-\",\n \",\",\n \"?\",\n \".\",\n \"*\",\n \"/\",\n \"\\\\\",\n \"^\",\n \"=\",\n \"|\",\n \"~\",\n \"$\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n/* eslint-disable prettier/prettier */\nexport default [\n \":style(display: block !imp\",\n \"+js(acs, addEventListener,\",\n \"+js(acs, document.querySel\",\n \"+js(nosiif, visibility, 10\",\n \"app_vars.force_disable_adb\",\n \"+js(set, blurred, false)\",\n \"+js(acs, eval, replace)\",\n \"ectorAll, popMagic)\",\n \"+js(acs, document.\",\n \"+js(rmnt, script, \",\n \"decodeURIComponent\",\n \"^script:has-text(\",\n \"+js(no-fetch-if, \",\n \"[href^=\\\"https://\",\n \"[href^=\\\"http://\",\n \"+js(aopw, _pop)\",\n \"+js(no-xhr-if, \",\n \"createElement, \",\n \"+js(nano-sib\",\n \"+js(nostif, \",\n \"div[class^=\\\"\",\n \"notification\",\n \" !important\",\n \", noopFunc)\",\n \"+js(nowoif)\",\n \"+js(aeld, \",\n \"+js(aopr, \",\n \"+js(aopw, \",\n \"background\",\n \"+js(acs, \",\n \"+js(set, \",\n \"container\",\n \"div[id^=\\\"\",\n \"div[style\",\n \",amazon.\",\n \",google.\",\n \"https://\",\n \".*,xham\",\n \"300x250\",\n \"consent\",\n \"content\",\n \"message\",\n \"privacy\",\n \"wrapper\",\n \".co.uk\",\n \".com##\",\n \"[data-\",\n \"accept\",\n \"banner\",\n \"bottom\",\n \"cookie\",\n \"Cookie\",\n \"google\",\n \"notice\",\n \"policy\",\n \"widget\",\n \".com,\",\n \"block\",\n \"click\",\n \"movie\",\n \"popup\",\n \"video\",\n \"width\",\n \",img\",\n \".com\",\n \".net\",\n \".nl,\",\n \".xyz\",\n \"#@#.\",\n \"+js(\",\n \"0px;\",\n \"gdpr\",\n \"html\",\n \"ight\",\n \"news\",\n \"side\",\n \"tube\",\n \"www.\",\n \" > \",\n \".*,\",\n \".de\",\n \"age\",\n \"box\",\n \"ent\",\n \"top\",\n \"web\",\n \"xxx\",\n \"__\",\n \", \",\n \",p\",\n \": \",\n \".*\",\n \".f\",\n \".p\",\n \".s\",\n \".t\",\n \"\\\"]\",\n \"##\",\n \"=\\\"\",\n \"00\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"Ad\",\n \"al\",\n \"am\",\n \"an\",\n \"ap\",\n \"ar\",\n \"at\",\n \"au\",\n \"bi\",\n \"bo\",\n \"ca\",\n \"ch\",\n \"ck\",\n \"co\",\n \"ct\",\n \"d-\",\n \"da\",\n \"de\",\n \"di\",\n \"do\",\n \"e-\",\n \"ed\",\n \"el\",\n \"en\",\n \"er\",\n \"es\",\n \"et\",\n \"fi\",\n \"fo\",\n \"ft\",\n \"g-\",\n \"ga\",\n \"go\",\n \"he\",\n \"ho\",\n \"ic\",\n \"id\",\n \"il\",\n \"im\",\n \"in\",\n \"it\",\n \"la\",\n \"le\",\n \"li\",\n \"lo\",\n \"ma\",\n \"me\",\n \"mi\",\n \"mo\",\n \"mp\",\n \"na\",\n \"ne\",\n \"no\",\n \"ol\",\n \"on\",\n \"op\",\n \"or\",\n \"ot\",\n \"ov\",\n \"po\",\n \"ra\",\n \"re\",\n \"ro\",\n \"ru\",\n \"s_\",\n \"s-\",\n \"sc\",\n \"se\",\n \"sh\",\n \"si\",\n \"sk\",\n \"so\",\n \"sp\",\n \"ss\",\n \"st\",\n \"t-\",\n \"ta\",\n \"te\",\n \"ti\",\n \"to\",\n \"ub\",\n \"ul\",\n \"um\",\n \"un\",\n \"up\",\n \"ur\",\n \"us\",\n \"ut\",\n \"ve\",\n \"vi\",\n \"xt\",\n \"y-\",\n \" \",\n \"_\",\n \"-\",\n \",\",\n \";\",\n \":\",\n \".\",\n \"(\",\n \")\",\n \"[\",\n \"/\",\n \"#\",\n \"^\",\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"A\",\n \"b\",\n \"B\",\n \"c\",\n \"C\",\n \"d\",\n \"D\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"L\",\n \"m\",\n \"M\",\n \"n\",\n \"o\",\n \"p\",\n \"P\",\n \"q\",\n \"r\",\n \"R\",\n \"s\",\n \"S\",\n \"t\",\n \"T\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\"\n];","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { Smaz } from '@remusao/smaz';\n\nimport cosmeticSelectorCodebook from './codebooks/cosmetic-selector';\nimport networkCSPCodebook from './codebooks/network-csp';\nimport networkFilterCodebook from './codebooks/network-filter';\nimport networkHostnameCodebook from './codebooks/network-hostname';\nimport networkRedirectCodebook from './codebooks/network-redirect';\nimport networkRawCodebook from './codebooks/raw-network';\nimport cosmeticRawCodebook from './codebooks/raw-cosmetic';\n\nexport default class Compression {\n public readonly cosmeticSelector: Smaz = new Smaz(cosmeticSelectorCodebook);\n public readonly networkCSP: Smaz = new Smaz(networkCSPCodebook);\n public readonly networkRedirect: Smaz = new Smaz(networkRedirectCodebook);\n public readonly networkHostname: Smaz = new Smaz(networkHostnameCodebook);\n public readonly networkFilter: Smaz = new Smaz(networkFilterCodebook);\n public readonly networkRaw: Smaz = new Smaz(networkRawCodebook);\n public readonly cosmeticRaw: Smaz = new Smaz(cosmeticRawCodebook);\n}\n","/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* From: https://github.com/SheetJS/js-crc32/ */\n\nconst T: Int32Array = (() => {\n let c: number = 0;\n const table: Int32Array = new Int32Array(256);\n\n for (let n: number = 0; n !== 256; n += 1) {\n c = n;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;\n table[n] = c;\n }\n\n return table;\n})();\n\nexport default function crc32(buf: Uint8Array, start: number, end: number): number {\n let C: number = 0 ^ -1;\n const L: number = end - 7;\n let i: number = start;\n while (i < L) {\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n }\n\n while (i < L + 7) {\n C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];\n }\n\n return (C ^ -1) >>> 0;\n}\n","/*!\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\ntype errorNames = 'overflow' | 'invalid-input' | 'not-basic';\nconst errors: {\n [name: string]: string;\n} = {\n 'invalid-input': 'Invalid input',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'overflow': 'Overflow: input needs wider integers to process',\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type: errorNames): void {\n throw new RangeError(errors[type]);\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(str: string): number[] {\n const output = [];\n let counter = 0;\n const length = str.length;\n while (counter < length) {\n const value = str.charCodeAt(counter++);\n if (value >= 0xd800 && value <= 0xdbff && counter < length) {\n // It's a high surrogate, and there is a next character.\n const extra = str.charCodeAt(counter++);\n if ((extra & 0xfc00) === 0xdc00) {\n // Low surrogate.\n output.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nfunction basicToDigit(codePoint: number): number {\n if (codePoint - 0x30 < 0x0a) {\n return codePoint - 0x16;\n }\n if (codePoint - 0x41 < 0x1a) {\n return codePoint - 0x41;\n }\n if (codePoint - 0x61 < 0x1a) {\n return codePoint - 0x61;\n }\n return base;\n}\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nfunction digitToBasic(digit: number, flag: number): number {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26 ? 1 : 0) - ((flag !== 0 ? 1 : 0) << 5);\n}\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nfunction adapt(delta: number, numPoints: number, firstTime: boolean): number {\n let k = 0;\n delta = firstTime ? Math.floor(delta / damp) : delta >> 1;\n delta += Math.floor(delta / numPoints);\n for (; /* no initialization */ delta > (baseMinusTMin * tMax) >> 1; k += base) {\n delta = Math.floor(delta / baseMinusTMin);\n }\n return Math.floor(k + ((baseMinusTMin + 1) * delta) / (delta + skew));\n}\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nexport function decode(input: string): string {\n // Don't use UCS-2.\n const output = [];\n const inputLength = input.length;\n let i = 0;\n let n = initialN;\n let bias = initialBias;\n\n // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n let basic = input.lastIndexOf(delimiter);\n if (basic < 0) {\n basic = 0;\n }\n\n for (let j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n output.push(input.charCodeAt(j));\n }\n\n // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n for (let index = basic > 0 ? basic + 1 : 0; index < inputLength /* no final expression */; ) {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n const oldi = i;\n for (let w = 1, k = base /* no condition */; ; k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n const digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > Math.floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n const baseMinusT = base - t;\n if (w > Math.floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n const out = output.length + 1;\n bias = adapt(i - oldi, out, oldi === 0);\n\n // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n if (Math.floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += Math.floor(i / out);\n i %= out;\n\n // Insert `n` at position `i` of the output.\n output.splice(i++, 0, n);\n }\n\n return String.fromCodePoint.apply(null, output);\n}\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nexport function encode(str: string): string {\n const output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n const input = ucs2decode(str);\n\n // Cache the length.\n const inputLength = input.length;\n\n // Initialize the state.\n let n = initialN;\n let delta = 0;\n let bias = initialBias;\n\n // Handle the basic code points.\n for (let i = 0; i < input.length; i += 1) {\n const currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(String.fromCharCode(currentValue));\n }\n }\n\n const basicLength = output.length;\n let handledCPCount = basicLength;\n\n // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n let m = maxInt;\n for (let i = 0; i < input.length; i += 1) {\n const currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow.\n const handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > Math.floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (let i = 0; i < input.length; i += 1) {\n const currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n if (currentValue === n) {\n // Represent delta as a generalized variable-length integer.\n let q = delta;\n for (let k = base /* no condition */; ; k += base) {\n const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t) {\n break;\n }\n const qMinusT = q - t;\n const baseMinusT = base - t;\n output.push(String.fromCharCode(digitToBasic(t + (qMinusT % baseMinusT), 0)));\n q = Math.floor(qMinusT / baseMinusT);\n }\n\n output.push(String.fromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n}\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nexport function toUnicode(input: string): string {\n const labels = input.replace(regexSeparators, '\\x2E').split('.');\n const encoded: string[] = [];\n for (let i = 0; i < labels.length; i += 1) {\n encoded.push(\n labels[i].startsWith('xn--') ? decode(labels[i].slice(4).toLowerCase()) : labels[i],\n );\n }\n return encoded.join('.');\n}\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nexport function toASCII(input: string): string {\n // Avoid `split(regex)` for IE8 compatibility. See #17.\n const labels = input.replace(regexSeparators, '\\x2E').split('.');\n const encoded: string[] = [];\n for (let i = 0; i < labels.length; i += 1) {\n encoded.push(regexNonASCII.test(labels[i]) ? 'xn--' + encode(labels[i]) : labels[i]);\n }\n return encoded.join('.');\n}\n\n/**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\nexport const version = '2.1.0';\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport Compression from './compression';\nimport crc32 from './crc32';\nimport { decode, encode } from './punycode';\n\ninterface IDataViewOptions {\n enableCompression: boolean;\n}\n\nexport const EMPTY_UINT8_ARRAY = new Uint8Array(0);\nexport const EMPTY_UINT32_ARRAY = new Uint32Array(0);\n\n// Check if current architecture is little endian\nconst LITTLE_ENDIAN: boolean = new Int8Array(new Int16Array([1]).buffer)[0] === 1;\n\n// Store compression in a lazy, global singleton\nlet getCompressionSingleton: () => Compression = () => {\n const COMPRESSION = new Compression();\n getCompressionSingleton = () => COMPRESSION;\n return COMPRESSION;\n};\n\nfunction align4(pos: number): number {\n // From: https://stackoverflow.com/a/2022194\n return (pos + 3) & ~0x03;\n}\n\n/**\n * Return size of of a serialized byte value.\n */\nexport function sizeOfByte(): number {\n return 1;\n}\n\n/**\n * Return size of of a serialized boolean value.\n */\nexport function sizeOfBool(): number {\n return 1;\n}\n\n/**\n * Return number of bytes needed to serialize `length`.\n */\nexport function sizeOfLength(length: number): number {\n return length <= 127 ? 1 : 5;\n}\n\n/**\n * Return number of bytes needed to serialize `array` Uint8Array typed array.\n *\n * WARNING: this only returns the correct size if `align` is `false`.\n */\nexport function sizeOfBytes(array: Uint8Array, align: boolean): number {\n return sizeOfBytesWithLength(array.length, align);\n}\n\n/**\n * Return number of bytes needed to serialize `array` Uint8Array typed array.\n *\n * WARNING: this only returns the correct size if `align` is `false`.\n */\nexport function sizeOfBytesWithLength(length: number, align: boolean): number {\n // Alignment is a tricky thing because it depends on the current offset in\n // the buffer at the time of serialization; which we cannot anticipate\n // before actually starting serialization. This means that we need to\n // potentially over-estimate the size (at most by 3 bytes) to make sure the\n // final size is at least equal or a bit bigger than necessary.\n return (align ? 3 : 0) + length + sizeOfLength(length);\n}\n\n/**\n * Return number of bytes needed to serialize `str` ASCII string.\n */\nexport function sizeOfASCII(str: string): number {\n return str.length + sizeOfLength(str.length);\n}\n\n/**\n * Return number of bytes needed to serialize `str` UTF8 string.\n */\nexport function sizeOfUTF8(str: string): number {\n const encodedLength = encode(str).length;\n return encodedLength + sizeOfLength(encodedLength);\n}\n\n/**\n * Return number of bytes needed to serialize `array`.\n */\nexport function sizeOfUint32Array(array: Uint32Array): number {\n return array.byteLength + sizeOfLength(array.length);\n}\n\nexport function sizeOfNetworkRedirect(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().networkRedirect.getCompressedSize(str),\n false, // align\n )\n : sizeOfASCII(str);\n}\n\nexport function sizeOfNetworkHostname(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().networkHostname.getCompressedSize(str),\n false, // align\n )\n : sizeOfASCII(str);\n}\n\nexport function sizeOfNetworkCSP(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().networkCSP.getCompressedSize(str),\n false, // align\n )\n : sizeOfASCII(str);\n}\n\nexport function sizeOfNetworkFilter(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().networkFilter.getCompressedSize(str),\n false, // align\n )\n : sizeOfASCII(str);\n}\n\nexport function sizeOfCosmeticSelector(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().cosmeticSelector.getCompressedSize(str),\n false, // align\n )\n : sizeOfASCII(str);\n}\n\nexport function sizeOfRawNetwork(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().networkRaw.getCompressedSize(encode(str)),\n false, // align\n )\n : sizeOfUTF8(str);\n}\n\nexport function sizeOfRawCosmetic(str: string, compression: boolean): number {\n return compression === true\n ? sizeOfBytesWithLength(\n getCompressionSingleton().cosmeticRaw.getCompressedSize(encode(str)),\n false, // align\n )\n : sizeOfUTF8(str);\n}\n\n/**\n * This abstraction allows to serialize efficiently low-level values of types:\n * string, uint8, uint16, uint32, etc. while hiding the complexity of managing\n * the current offset and growing. It should always be instantiated with a\n * big-enough length because this will not allow for resizing. To allow\n * deciding the required total size, function estimating the size needed to\n * store different primitive values are exposes as static methods.\n *\n * This class is also more efficient than the built-in `DataView`.\n *\n * The way this is used in practice is that you write pairs of function to\n * serialize and deserialize a given structure/class (with code being pretty\n * symetrical). In the serializer you `pushX` values, and in the deserializer\n * you use `getX` functions to get back the values.\n */\nexport class StaticDataView {\n /**\n * Create an empty (i.e.: size = 0) StaticDataView.\n */\n public static empty(options: IDataViewOptions): StaticDataView {\n return StaticDataView.fromUint8Array(EMPTY_UINT8_ARRAY, options);\n }\n\n /**\n * Instantiate a StaticDataView instance from `array` of type Uint8Array.\n */\n public static fromUint8Array(array: Uint8Array, options: IDataViewOptions): StaticDataView {\n return new StaticDataView(array, options);\n }\n\n /**\n * Instantiate a StaticDataView with given `capacity` number of bytes.\n */\n public static allocate(capacity: number, options: IDataViewOptions): StaticDataView {\n return new StaticDataView(new Uint8Array(capacity), options);\n }\n\n public pos: number;\n public buffer: Uint8Array;\n public compression: Compression | undefined;\n\n constructor(buffer: Uint8Array, { enableCompression }: IDataViewOptions) {\n if (LITTLE_ENDIAN === false) {\n // This check makes sure that we will not load the adblocker on a\n // big-endian system. This would not work since byte ordering is important\n // at the moment (mainly for performance reasons).\n throw new Error('Adblocker currently does not support Big-endian systems');\n }\n\n if (enableCompression === true) {\n this.enableCompression();\n }\n\n this.buffer = buffer;\n this.pos = 0;\n }\n\n public enableCompression(): void {\n this.compression = getCompressionSingleton();\n }\n\n public checksum(): number {\n return crc32(this.buffer, 0, this.pos);\n }\n\n public dataAvailable(): boolean {\n return this.pos < this.buffer.byteLength;\n }\n\n public setPos(pos: number): void {\n this.pos = pos;\n }\n\n public getPos(): number {\n return this.pos;\n }\n\n public seekZero(): void {\n this.pos = 0;\n }\n\n public slice(): Uint8Array {\n this.checkSize();\n return this.buffer.slice(0, this.pos);\n }\n\n public subarray(): Uint8Array {\n if (this.pos === this.buffer.byteLength) {\n return this.buffer;\n }\n\n this.checkSize();\n return this.buffer.subarray(0, this.pos);\n }\n\n /**\n * Make sure that `this.pos` is aligned on a multiple of 4.\n */\n public align4(): void {\n this.pos = align4(this.pos);\n }\n\n public set(buffer: Uint8Array): void {\n this.buffer = new Uint8Array(buffer);\n this.seekZero();\n }\n\n public pushBool(bool: boolean): void {\n this.pushByte(Number(bool));\n }\n\n public getBool(): boolean {\n return Boolean(this.getByte());\n }\n\n public setByte(pos: number, byte: number): void {\n this.buffer[pos] = byte;\n }\n\n public pushByte(octet: number): void {\n this.pushUint8(octet);\n }\n\n public getByte(): number {\n return this.getUint8();\n }\n\n public pushBytes(bytes: Uint8Array, align: boolean = false): void {\n this.pushLength(bytes.length);\n\n if (align === true) {\n this.align4();\n }\n\n this.buffer.set(bytes, this.pos);\n this.pos += bytes.byteLength;\n }\n\n public getBytes(align: boolean = false): Uint8Array {\n const numberOfBytes = this.getLength();\n\n if (align === true) {\n this.align4();\n }\n\n const bytes = this.buffer.subarray(this.pos, this.pos + numberOfBytes);\n this.pos += numberOfBytes;\n\n return bytes;\n }\n\n /**\n * Allows row access to the internal buffer through a Uint32Array acting like\n * a view. This is used for super fast writing/reading of large chunks of\n * Uint32 numbers in the byte array.\n */\n public getUint32ArrayView(desiredSize: number): Uint32Array {\n // Round this.pos to next multiple of 4 for alignement\n this.align4();\n\n // Short-cut when empty array\n if (desiredSize === 0) {\n return EMPTY_UINT32_ARRAY;\n }\n\n // Create non-empty view\n const view = new Uint32Array(\n this.buffer.buffer,\n this.pos + this.buffer.byteOffset,\n desiredSize,\n );\n this.pos += desiredSize * 4;\n return view;\n }\n\n public pushUint8(uint8: number): void {\n this.buffer[this.pos++] = uint8;\n }\n\n public getUint8(): number {\n return this.buffer[this.pos++];\n }\n\n public pushUint16(uint16: number): void {\n this.buffer[this.pos++] = uint16 >>> 8;\n this.buffer[this.pos++] = uint16;\n }\n\n public getUint16(): number {\n return ((this.buffer[this.pos++] << 8) | this.buffer[this.pos++]) >>> 0;\n }\n\n public pushUint32(uint32: number): void {\n this.buffer[this.pos++] = uint32 >>> 24;\n this.buffer[this.pos++] = uint32 >>> 16;\n this.buffer[this.pos++] = uint32 >>> 8;\n this.buffer[this.pos++] = uint32;\n }\n\n public getUint32(): number {\n return (\n (((this.buffer[this.pos++] << 24) >>> 0) +\n ((this.buffer[this.pos++] << 16) |\n (this.buffer[this.pos++] << 8) |\n this.buffer[this.pos++])) >>>\n 0\n );\n }\n\n public pushUint32Array(arr: Uint32Array): void {\n this.pushLength(arr.length);\n // TODO - use `set` to push the full buffer at once?\n for (const n of arr) {\n this.pushUint32(n);\n }\n }\n\n public getUint32Array(): Uint32Array {\n const length = this.getLength();\n const arr = new Uint32Array(length);\n // TODO - use `subarray`?\n for (let i = 0; i < length; i += 1) {\n arr[i] = this.getUint32();\n }\n return arr;\n }\n\n public pushUTF8(raw: string): void {\n const str = encode(raw);\n this.pushLength(str.length);\n\n for (let i = 0; i < str.length; i += 1) {\n this.buffer[this.pos++] = str.charCodeAt(i);\n }\n }\n\n public getUTF8(): string {\n const byteLength = this.getLength();\n this.pos += byteLength;\n return decode(\n String.fromCharCode.apply(\n null,\n // @ts-ignore\n this.buffer.subarray(this.pos - byteLength, this.pos),\n ),\n );\n }\n\n public pushASCII(str: string): void {\n this.pushLength(str.length);\n\n for (let i = 0; i < str.length; i += 1) {\n this.buffer[this.pos++] = str.charCodeAt(i);\n }\n }\n\n public getASCII(): string {\n const byteLength = this.getLength();\n this.pos += byteLength;\n\n // @ts-ignore\n return String.fromCharCode.apply(null, this.buffer.subarray(this.pos - byteLength, this.pos));\n }\n\n public pushNetworkRedirect(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.networkRedirect.compress(str));\n } else {\n this.pushASCII(str);\n }\n }\n\n public getNetworkRedirect(): string {\n if (this.compression !== undefined) {\n return this.compression.networkRedirect.decompress(this.getBytes());\n }\n return this.getASCII();\n }\n\n public pushNetworkHostname(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.networkHostname.compress(str));\n } else {\n this.pushASCII(str);\n }\n }\n\n public getNetworkHostname(): string {\n if (this.compression !== undefined) {\n return this.compression.networkHostname.decompress(this.getBytes());\n }\n return this.getASCII();\n }\n\n public pushNetworkCSP(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.networkCSP.compress(str));\n } else {\n this.pushASCII(str);\n }\n }\n\n public getNetworkCSP(): string {\n if (this.compression !== undefined) {\n return this.compression.networkCSP.decompress(this.getBytes());\n }\n return this.getASCII();\n }\n\n public pushNetworkFilter(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.networkFilter.compress(str));\n } else {\n this.pushASCII(str);\n }\n }\n\n public getNetworkFilter(): string {\n if (this.compression !== undefined) {\n return this.compression.networkFilter.decompress(this.getBytes());\n }\n return this.getASCII();\n }\n\n public pushCosmeticSelector(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.cosmeticSelector.compress(str));\n } else {\n this.pushASCII(str);\n }\n }\n\n public getCosmeticSelector(): string {\n if (this.compression !== undefined) {\n return this.compression.cosmeticSelector.decompress(this.getBytes());\n }\n return this.getASCII();\n }\n\n public pushRawCosmetic(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.cosmeticRaw.compress(encode(str)));\n } else {\n this.pushUTF8(str);\n }\n }\n\n public getRawCosmetic(): string {\n if (this.compression !== undefined) {\n return decode(this.compression.cosmeticRaw.decompress(this.getBytes()));\n }\n return this.getUTF8();\n }\n\n public pushRawNetwork(str: string): void {\n if (this.compression !== undefined) {\n this.pushBytes(this.compression.networkRaw.compress(encode(str)));\n } else {\n this.pushUTF8(str);\n }\n }\n\n public getRawNetwork(): string {\n if (this.compression !== undefined) {\n return decode(this.compression.networkRaw.decompress(this.getBytes()));\n }\n return this.getUTF8();\n }\n\n private checkSize() {\n if (this.pos !== 0 && this.pos > this.buffer.byteLength) {\n throw new Error(\n `StaticDataView too small: ${this.buffer.byteLength}, but required ${this.pos} bytes`,\n );\n }\n }\n\n // Serialiez `length` with variable encoding to save space\n public pushLength(length: number): void {\n if (length <= 127) {\n this.pushUint8(length);\n } else {\n this.pushUint8(128);\n this.pushUint32(length);\n }\n }\n\n public getLength(): number {\n const lengthShort = this.getUint8();\n return lengthShort === 128 ? this.getUint32() : lengthShort;\n }\n}\n","/**\n * The MIT License (MIT)\n *\n * Copyright (c) Feross Aboukhadijeh\n *\n * Originally from: https://github.com/feross/queue-microtask\n */\n\nlet promise: Promise<void> | undefined;\n\ntype Callback = () => void;\n\nexport const queueMicrotask: (cb: Callback) => void =\n typeof window !== 'undefined' && typeof window.queueMicrotask === 'function'\n ? (cb: Callback) => window.queueMicrotask(cb)\n : // reuse resolved promise, and allocate it lazily\n (cb: Callback) =>\n (promise || (promise = Promise.resolve())).then(cb).catch((err) =>\n setTimeout(() => {\n throw err;\n }, 0),\n );\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { StaticDataView, sizeOfBool } from './data-view';\n\nexport default class Config {\n public static deserialize(buffer: StaticDataView): Config {\n return new Config({\n debug: buffer.getBool(),\n enableCompression: buffer.getBool(),\n enableHtmlFiltering: buffer.getBool(),\n enableInMemoryCache: buffer.getBool(),\n enableMutationObserver: buffer.getBool(),\n enableOptimizations: buffer.getBool(),\n enablePushInjectionsOnNavigationEvents: buffer.getBool(),\n guessRequestTypeFromUrl: buffer.getBool(),\n integrityCheck: buffer.getBool(),\n loadCSPFilters: buffer.getBool(),\n loadCosmeticFilters: buffer.getBool(),\n loadExceptionFilters: buffer.getBool(),\n loadExtendedSelectors: buffer.getBool(),\n loadGenericCosmeticsFilters: buffer.getBool(),\n loadNetworkFilters: buffer.getBool(),\n });\n }\n\n public readonly debug: boolean;\n public readonly enableCompression: boolean;\n public readonly enableHtmlFiltering: boolean;\n public readonly enableInMemoryCache: boolean;\n public readonly enableMutationObserver: boolean;\n public readonly enableOptimizations: boolean;\n public readonly enablePushInjectionsOnNavigationEvents: boolean;\n public readonly guessRequestTypeFromUrl: boolean;\n public readonly integrityCheck: boolean;\n public readonly loadCSPFilters: boolean;\n public readonly loadCosmeticFilters: boolean;\n public readonly loadExceptionFilters: boolean;\n public readonly loadExtendedSelectors: boolean;\n public readonly loadGenericCosmeticsFilters: boolean;\n public readonly loadNetworkFilters: boolean;\n\n constructor({\n debug = false,\n enableCompression = false,\n enableHtmlFiltering = false,\n enableInMemoryCache = true,\n enableMutationObserver = true,\n enableOptimizations = true,\n enablePushInjectionsOnNavigationEvents = true,\n guessRequestTypeFromUrl = false,\n integrityCheck = true,\n loadCSPFilters = true,\n loadCosmeticFilters = true,\n loadExceptionFilters = true,\n loadExtendedSelectors = false,\n loadGenericCosmeticsFilters = true,\n loadNetworkFilters = true,\n }: Partial<Config> = {}) {\n this.debug = debug;\n this.enableCompression = enableCompression;\n this.enableHtmlFiltering = enableHtmlFiltering;\n this.enableInMemoryCache = enableInMemoryCache;\n this.enableMutationObserver = enableMutationObserver;\n this.enableOptimizations = enableOptimizations;\n this.enablePushInjectionsOnNavigationEvents = enablePushInjectionsOnNavigationEvents;\n this.guessRequestTypeFromUrl = guessRequestTypeFromUrl;\n this.integrityCheck = integrityCheck;\n this.loadCSPFilters = loadCSPFilters;\n this.loadCosmeticFilters = loadCosmeticFilters;\n this.loadExceptionFilters = loadExceptionFilters;\n this.loadExtendedSelectors = loadExtendedSelectors;\n this.loadGenericCosmeticsFilters = loadGenericCosmeticsFilters;\n this.loadNetworkFilters = loadNetworkFilters;\n }\n\n public getSerializedSize(): number {\n // NOTE: this should always be the number of attributes and needs to be\n // updated when `Config` changes.\n return 15 * sizeOfBool();\n }\n\n public serialize(buffer: StaticDataView): void {\n buffer.pushBool(this.debug);\n buffer.pushBool(this.enableCompression);\n buffer.pushBool(this.enableHtmlFiltering);\n buffer.pushBool(this.enableInMemoryCache);\n buffer.pushBool(this.enableMutationObserver);\n buffer.pushBool(this.enableOptimizations);\n buffer.pushBool(this.enablePushInjectionsOnNavigationEvents);\n buffer.pushBool(this.guessRequestTypeFromUrl);\n buffer.pushBool(this.integrityCheck);\n buffer.pushBool(this.loadCSPFilters);\n buffer.pushBool(this.loadCosmeticFilters);\n buffer.pushBool(this.loadExceptionFilters);\n buffer.pushBool(this.loadExtendedSelectors);\n buffer.pushBool(this.loadGenericCosmeticsFilters);\n buffer.pushBool(this.loadNetworkFilters);\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { queueMicrotask } from './queue-microtask';\n\n/**\n * Type of an event listener (i.e.: callback). It accepts arbitrary arguments\n * and is not expected to return any result.\n */\ntype EventListener = (...args: any[]) => void;\n\n/**\n * Type of event listeners for all events. It maps event names (from a set of\n * type-level string literals) to list of event listeners.\n */\ntype EventListeners<EventNames> = Map<EventNames, EventListener[]>;\n\n/**\n * Add `callback` listener for `event` in `listeners` Map.\n */\nfunction registerCallback<EventNames>(\n event: EventNames,\n callback: EventListener,\n listeners: EventListeners<EventNames>,\n): void {\n let listenersForEvent = listeners.get(event);\n\n if (listenersForEvent === undefined) {\n listenersForEvent = [];\n listeners.set(event, listenersForEvent);\n }\n\n listenersForEvent.push(callback);\n}\n\n/**\n * Remove `callback` listener for `event` from `listeners` Map.\n */\nfunction unregisterCallback<EventNames>(\n event: EventNames,\n callback: EventListener,\n listeners: EventListeners<EventNames>,\n): void {\n const listenersForEvent = listeners.get(event);\n if (listenersForEvent !== undefined) {\n const indexOfCallback = listenersForEvent.indexOf(callback);\n if (indexOfCallback !== -1) {\n listenersForEvent.splice(indexOfCallback, 1);\n }\n }\n}\n\n/**\n * Call all registered listeners for `event` with `args` as arguments. Return\n * `true` if at least one callback was registered and `false` otherwise.\n */\nfunction triggerCallback<EventNames>(\n event: EventNames,\n args: any[],\n listeners: EventListeners<EventNames>,\n): boolean {\n // Fast-path for cases where no listener is registered\n if (listeners.size === 0) {\n return false;\n }\n\n const listenersForEvent = listeners.get(event);\n if (listenersForEvent !== undefined) {\n queueMicrotask(() => {\n for (const listener of listenersForEvent) {\n listener(...args);\n }\n });\n return true;\n }\n\n return false;\n}\n\n/**\n * Simple and efficient `EventEmitter` abstraction (following conventions from\n * Node.js) allowing partially typed event emitting. The set of event names is\n * specified as a type parameter while instantiating the event emitter.\n */\nexport class EventEmitter<EventNames> {\n private onceListeners: EventListeners<EventNames> = new Map();\n private onListeners: EventListeners<EventNames> = new Map();\n\n /**\n * Register an event listener for `event`.\n */\n public on(event: EventNames, callback: EventListener): void {\n registerCallback(event, callback, this.onListeners);\n }\n\n /**\n * Register an event listener for `event`; but only listen to first instance\n * of this event. The listener is automatically deleted afterwards.\n */\n public once(event: EventNames, callback: EventListener): void {\n registerCallback(event, callback, this.onceListeners);\n }\n\n /**\n * Remove `callback` from list of listeners for `event`.\n */\n public unsubscribe(event: EventNames, callback: EventListener): void {\n unregisterCallback(event, callback, this.onListeners);\n unregisterCallback(event, callback, this.onceListeners);\n }\n\n /**\n * Emit an event. Call all registered listeners to this event.\n */\n public emit(event: EventNames, ...args: any[]): void {\n triggerCallback(event, args, this.onListeners);\n if (triggerCallback(event, args, this.onceListeners) === true) {\n this.onceListeners.delete(event);\n }\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\ninterface FetchResponse {\n text: () => Promise<string>;\n arrayBuffer: () => Promise<ArrayBuffer>;\n json: () => Promise<any>;\n}\n\nexport type Fetch = (url: string) => Promise<FetchResponse>;\n\n/**\n * Built-in fetch helpers can be used to initialize the adblocker from\n * pre-built presets or raw lists (fetched from multiple sources). In case of\n * failure (e.g. timeout), the whole process of initialization fails. Timeouts\n * are not so uncommon, and retrying to fetch usually succeeds.\n */\nexport function fetchWithRetry(fetch: Fetch, url: string): Promise<FetchResponse> {\n let retry = 3;\n\n // Wrap `fetch` into a lightweight retry function which makes sure that if\n // fetching fails, it can be retried up to three times. Failure can happen if\n // the remote server times-out, but retrying fetching of the same URL will\n // usually succeed.\n const fetchWrapper = (): Promise<FetchResponse> => {\n return fetch(url).catch((ex) => {\n if (retry > 0) {\n retry -= 1;\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n fetchWrapper().then(resolve).catch(reject);\n }, 500);\n });\n }\n\n throw ex;\n });\n };\n\n return fetchWrapper();\n}\n\nfunction fetchResource(fetch: Fetch, url: string): Promise<string> {\n return fetchWithRetry(fetch, url).then((response) => response.text());\n}\n\nconst PREFIX =\n 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';\n\nexport const adsLists = [\n `${PREFIX}/easylist/easylist.txt`,\n `${PREFIX}/easylist/easylistgermany.txt`,\n `${PREFIX}/peter-lowe/serverlist.txt`,\n `${PREFIX}/ublock-origin/annoyances.txt`,\n `${PREFIX}/ublock-origin/badware.txt`,\n `${PREFIX}/ublock-origin/filters.txt`,\n `${PREFIX}/ublock-origin/filters-2020.txt`,\n `${PREFIX}/ublock-origin/filters-2021.txt`,\n `${PREFIX}/ublock-origin/filters-2022.txt`,\n `${PREFIX}/ublock-origin/filters-2023.txt`,\n `${PREFIX}/ublock-origin/resource-abuse.txt`,\n `${PREFIX}/ublock-origin/unbreak.txt`,\n];\n\nexport const adsAndTrackingLists = [\n ...adsLists,\n `${PREFIX}/easylist/easyprivacy.txt`,\n `${PREFIX}/ublock-origin/privacy.txt`,\n];\n\nexport const fullLists = [...adsAndTrackingLists, `${PREFIX}/easylist/easylist-cookie.txt`];\n\n/**\n * Fetch latest version of enabledByDefault blocking lists.\n */\nexport function fetchLists(fetch: Fetch, urls: string[]): Promise<string[]> {\n return Promise.all(urls.map((url) => fetchResource(fetch, url)));\n}\n\n/**\n * Fetch latest version of uBlock Origin's resources, used to inject scripts in\n * the page or redirect request to data URLs.\n */\nexport function fetchResources(fetch: Fetch): Promise<string> {\n return fetchResource(fetch, `${PREFIX}/ublock-origin/resources.txt`);\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nclass HidingBuilder {}\n\ntype RequestType = 'image' | 'script' | 'font' | 'frame' | 'media' | 'font' | 'css';\n\nclass NetworkBuilder {\n private options: Set<RequestType> = new Set();\n\n private prefix: string | undefined = undefined;\n private infix: string | undefined = undefined;\n private suffix: string | undefined = undefined;\n\n private redirect: string | undefined = undefined;\n\n private blockRequestsWithType(t: RequestType): NetworkBuilder {\n if (this.options.has(t)) {\n throw new Error(`Already blocking type ${t}`);\n }\n\n this.options.add(t);\n return this;\n }\n\n public images(): NetworkBuilder {\n return this.blockRequestsWithType('image');\n }\n\n public scripts(): NetworkBuilder {\n return this.blockRequestsWithType('script');\n }\n\n public frames(): NetworkBuilder {\n return this.blockRequestsWithType('frame');\n }\n\n public fonts(): NetworkBuilder {\n return this.blockRequestsWithType('font');\n }\n\n public medias(): NetworkBuilder {\n return this.blockRequestsWithType('media');\n }\n\n public styles(): NetworkBuilder {\n return this.blockRequestsWithType('css');\n }\n\n public redirectTo(redirect: string): NetworkBuilder {\n if (this.redirect !== undefined) {\n throw new Error(`Already redirecting: ${this.redirect}`);\n }\n this.redirect = `redirect=${redirect}`;\n return this;\n }\n\n public urlContains(infix: string): NetworkBuilder {\n if (this.infix !== undefined) {\n throw new Error(`Already matching pattern: ${this.infix}`);\n }\n this.infix = infix;\n return this;\n }\n\n public urlStartsWith(prefix: string): NetworkBuilder {\n if (this.prefix !== undefined) {\n throw new Error(`Already matching prefix: ${this.prefix}`);\n }\n this.prefix = `|${prefix}`;\n return this;\n }\n\n public urlEndsWith(suffix: string): NetworkBuilder {\n if (this.suffix !== undefined) {\n throw new Error(`Already matching suffix: ${this.suffix}`);\n }\n this.suffix = `${suffix}|`;\n return this;\n }\n\n public withHostname(hostname: string): NetworkBuilder {\n if (this.prefix !== undefined) {\n throw new Error(`Cannot match hostname if filter already has prefix: ${this.prefix}`);\n }\n this.prefix = `||${hostname}^`;\n return this;\n }\n\n public toString(): string {\n const parts: string[] = [];\n\n if (this.prefix !== undefined) {\n parts.push(this.prefix);\n }\n\n if (this.infix !== undefined) {\n parts.push(this.infix);\n }\n\n if (this.suffix !== undefined) {\n parts.push(this.suffix);\n }\n\n const options: string[] = ['important'];\n\n if (this.options.size !== 0) {\n for (const option of this.options) {\n options.push(option);\n }\n }\n\n if (this.redirect !== undefined) {\n options.push(this.redirect);\n }\n\n return `${parts.length === 0 ? '*' : parts.join('*')}$${options.join(',')}`;\n }\n}\n\nexport function block(): NetworkBuilder {\n return new NetworkBuilder();\n}\n\nexport function hide(): HidingBuilder {\n return new HidingBuilder();\n}\n","/*!\n * Based on parsel. Extended by Rémi Berson for Ghostery (2021).\n * https://github.com/LeaVerou/parsel\n *\n * MIT License\n *\n * Copyright (c) 2020 Lea Verou\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { isAST, isAtoms } from './types';\nimport type {\n AST,\n Atoms,\n AtomsOrStrings,\n Attribute,\n Class,\n Combinator,\n Comma,\n Id,\n ParserOptions,\n PseudoClass,\n PseudoElement,\n Strings,\n TokenType,\n Type,\n} from './types';\n\nexport const RECURSIVE_PSEUDO_CLASSES = new Set([\n 'any',\n 'dir',\n 'has',\n 'host-context',\n 'if',\n 'if-not',\n 'is',\n 'matches',\n 'not',\n 'where',\n]);\n\nconst TOKENS: { [T in TokenType]: RegExp } = {\n attribute:\n /\\[\\s*(?:(?<namespace>\\*|[-\\w]*)\\|)?(?<name>[-\\w\\u{0080}-\\u{FFFF}]+)\\s*(?:(?<operator>\\W?=)\\s*(?<value>.+?)\\s*(?<caseSensitive>[iIsS])?\\s*)?\\]/gu,\n id: /#(?<name>(?:[-\\w\\u{0080}-\\u{FFFF}]|\\\\.)+)/gu,\n class: /\\.(?<name>(?:[-\\w\\u{0080}-\\u{FFFF}]|\\\\.)+)/gu,\n comma: /\\s*,\\s*/g, // must be before combinator\n combinator: /\\s*[\\s>+~]\\s*/g, // this must be after attribute\n 'pseudo-element': /::(?<name>[-\\w\\u{0080}-\\u{FFFF}]+)(?:\\((?:¶*)\\))?/gu, // this must be before pseudo-class\n 'pseudo-class': /:(?<name>[-\\w\\u{0080}-\\u{FFFF}]+)(?:\\((?<argument>¶*)\\))?/gu,\n type: /(?:(?<namespace>\\*|[-\\w]*)\\|)?(?<name>[-\\w\\u{0080}-\\u{FFFF}]+)|\\*/gu, // this must be last\n};\n\nconst TOKENS_WITH_PARENS: Set<TokenType> = new Set(['pseudo-class', 'pseudo-element']);\nconst TOKENS_WITH_STRINGS: Set<TokenType> = new Set([...TOKENS_WITH_PARENS, 'attribute']);\nconst TRIM_TOKENS: Set<TokenType> = new Set(['combinator', 'comma']);\n\nconst TOKENS_FOR_RESTORE: { [T in TokenType]: RegExp } = Object.assign({}, TOKENS);\nTOKENS_FOR_RESTORE['pseudo-element'] = RegExp(\n TOKENS['pseudo-element'].source.replace('(?<argument>¶*)', '(?<argument>.*?)'),\n 'gu',\n);\nTOKENS_FOR_RESTORE['pseudo-class'] = RegExp(\n TOKENS['pseudo-class'].source.replace('(?<argument>¶*)', '(?<argument>.*)'),\n 'gu',\n);\n\n// TODO - it feels like with some more typing shenanigans we could replace groups validation by generic logic in this function.\nfunction splitOnMatch(\n pattern: RegExp,\n str: string,\n): [string, [string, { [name: string]: string }], string] | undefined {\n pattern.lastIndex = 0;\n const match = pattern.exec(str);\n\n if (match === null) {\n return undefined;\n }\n\n const from = match.index - 1;\n const content = match[0];\n const before = str.slice(0, from + 1);\n const after = str.slice(from + content.length + 1);\n\n return [before, [content, match.groups || {}], after];\n}\n\nconst GRAMMAR = [\n // attribute\n (str: string): [string, Attribute, string] | undefined => {\n const match = splitOnMatch(TOKENS.attribute, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content, { name, operator, value, namespace, caseSensitive }], after] = match;\n if (name === undefined) {\n return undefined;\n }\n\n return [\n before,\n {\n type: 'attribute',\n content,\n length: content.length,\n namespace,\n caseSensitive,\n pos: [],\n name,\n operator,\n value,\n },\n after,\n ];\n },\n\n // #id\n (str: string): [string, Id, string] | undefined => {\n const match = splitOnMatch(TOKENS.id, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content, { name }], after] = match;\n if (name === undefined) {\n return undefined;\n }\n\n return [\n before,\n {\n type: 'id',\n content,\n length: content.length,\n pos: [],\n name,\n },\n after,\n ];\n },\n\n // .class\n (str: string): [string, Class, string] | undefined => {\n const match = splitOnMatch(TOKENS.class, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content, { name }], after] = match;\n if (name === undefined) {\n return undefined;\n }\n\n return [\n before,\n {\n type: 'class',\n content,\n length: content.length,\n pos: [],\n name,\n },\n after,\n ];\n },\n\n // comma ,\n (str: string): [string, Comma, string] | undefined => {\n const match = splitOnMatch(TOKENS.comma, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content], after] = match;\n\n return [\n before,\n {\n type: 'comma',\n content,\n length: content.length,\n pos: [],\n },\n after,\n ];\n },\n\n // combinator\n (str: string): [string, Combinator, string] | undefined => {\n const match = splitOnMatch(TOKENS.combinator, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content], after] = match;\n\n return [\n before,\n {\n type: 'combinator',\n content,\n length: content.length,\n pos: [],\n },\n after,\n ];\n },\n\n // pseudo-element\n (str: string): [string, PseudoElement, string] | undefined => {\n const match = splitOnMatch(TOKENS['pseudo-element'], str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content, { name }], after] = match;\n\n if (name === undefined) {\n return undefined;\n }\n\n return [\n before,\n {\n type: 'pseudo-element',\n content,\n length: content.length,\n pos: [],\n name,\n },\n after,\n ];\n },\n\n // pseudo-class\n (str: string): [string, PseudoClass, string] | undefined => {\n const match = splitOnMatch(TOKENS['pseudo-class'], str);\n if (match === undefined) {\n return undefined;\n }\n\n // TODO - here `argument` can be undefined and should be rejected?\n const [before, [content, { name, argument }], after] = match;\n\n if (name === undefined) {\n return undefined;\n }\n\n return [\n before,\n {\n type: 'pseudo-class',\n content,\n length: content.length,\n pos: [],\n name,\n argument,\n subtree: undefined,\n },\n after,\n ];\n },\n\n // type\n (str: string): [string, Type, string] | undefined => {\n const match = splitOnMatch(TOKENS.type, str);\n if (match === undefined) {\n return undefined;\n }\n\n const [before, [content, { name, namespace }], after] = match;\n\n return [\n before,\n {\n type: 'type',\n content,\n length: content.length,\n namespace,\n pos: [],\n name,\n },\n after,\n ];\n },\n];\n\nfunction tokenizeBy(text: string): Atoms {\n if (!text) {\n return [];\n }\n\n const strarr: AtomsOrStrings = [text];\n for (const tokenizer of GRAMMAR) {\n for (let i = 0; i < strarr.length; i++) {\n const str = strarr[i];\n if (typeof str === 'string') {\n const match = tokenizer(str);\n if (match !== undefined) {\n strarr.splice(i, 1, ...(match as AtomsOrStrings).filter((a) => a.length !== 0));\n }\n }\n }\n }\n\n let offset = 0;\n for (const token of strarr) {\n if (typeof token !== 'string') {\n token.pos = [offset, offset + token.length];\n if (TRIM_TOKENS.has(token.type)) {\n token.content = token.content.trim() || ' ';\n }\n }\n\n offset += token.length;\n }\n\n if (isAtoms(strarr)) {\n return strarr;\n }\n\n // NOTE: here this means that parsing failed.\n return [];\n}\n\nfunction restoreNested(tokens: Atoms, strings: Strings, regex: RegExp, types: Set<TokenType>) {\n // TODO - here from offsets in strings and tokens we should be able to find the exact spot without RegExp?\n for (const str of strings) {\n for (const token of tokens) {\n if (types.has(token.type) && token.pos[0] < str.start && str.start < token.pos[1]) {\n const content = token.content;\n token.content = token.content.replace(regex, str.str);\n\n if (token.content !== content) {\n // actually changed?\n // Re-evaluate groups\n TOKENS_FOR_RESTORE[token.type].lastIndex = 0;\n const match = TOKENS_FOR_RESTORE[token.type].exec(token.content);\n if (match !== null) {\n Object.assign(token, match.groups);\n }\n }\n }\n }\n }\n}\n\nexport function isEscaped(str: string, index: number): boolean {\n let backslashes = 0;\n\n index -= 1;\n while (index >= 0 && str[index] === '\\\\') {\n backslashes += 1;\n index -= 1;\n }\n\n return backslashes % 2 !== 0;\n}\n\nexport function gobbleQuotes(text: string, quote: '\"' | \"'\", start: number): string | undefined {\n // Find end of quote, taking care of ignoring escaped quotes\n let end = start + 1;\n\n while ((end = text.indexOf(quote, end)) !== -1 && isEscaped(text, end) === true) {\n end += 1;\n }\n\n if (end === -1) {\n // Opening quote without closing quote\n return undefined;\n }\n\n return text.slice(start, end + 1);\n}\n\nexport function gobbleParens(text: string, start: number): string | undefined {\n let stack = 0;\n\n for (let i = start; i < text.length; i++) {\n const char = text[i];\n\n if (char === '(') {\n stack += 1;\n } else if (char === ')') {\n if (stack > 0) {\n stack -= 1;\n } else {\n // Closing paren without opening paren\n return undefined;\n }\n }\n\n if (stack === 0) {\n return text.slice(start, i + 1);\n }\n }\n\n // Opening paren without closing paren\n return undefined;\n}\n\nexport function replace(\n selector: string,\n replacement: '¶' | '§',\n opening: '(' | '\"' | \"'\",\n gobble: (text: string, start: number) => string | undefined,\n): [Strings, string] {\n const strings: Strings = [];\n\n let offset = 0;\n while ((offset = selector.indexOf(opening, offset)) !== -1) {\n const str = gobble(selector, offset);\n if (str === undefined) {\n break;\n }\n\n strings.push({ str, start: offset });\n selector = `${selector.slice(0, offset + 1)}${replacement.repeat(\n str.length - 2,\n )}${selector.slice(offset + str.length - 1)}`;\n offset += str.length;\n }\n\n return [strings, selector];\n}\n\nexport function tokenize(selector: string): Atoms {\n if (typeof selector !== 'string') {\n return [];\n }\n\n // Prevent leading/trailing whitespace be interpreted as combinators\n selector = selector.trim();\n\n if (selector.length === 0) {\n return [];\n }\n\n // Replace strings with whitespace strings (to preserve offsets)\n const [doubleQuotes, selectorWithoutDoubleQuotes] = replace(\n selector,\n '§',\n '\"',\n (text: string, start: number) => gobbleQuotes(text, '\"', start),\n );\n\n const [singleQuotes, selectorWithoutQuotes] = replace(\n selectorWithoutDoubleQuotes,\n '§',\n \"'\",\n (text: string, start: number) => gobbleQuotes(text, \"'\", start),\n );\n\n // Now that strings are out of the way, extract parens and replace them with parens with whitespace (to preserve offsets)\n const [parens, selectorWithoutParens] = replace(selectorWithoutQuotes, '¶', '(', gobbleParens);\n\n // Now we have no nested structures and we can parse with regexes\n const tokens = tokenizeBy(selectorWithoutParens);\n\n // Now restore parens and strings in reverse order\n restoreNested(tokens, parens, /\\(¶*\\)/, TOKENS_WITH_PARENS);\n restoreNested(tokens, doubleQuotes, /\"§*\"/, TOKENS_WITH_STRINGS);\n restoreNested(tokens, singleQuotes, /'§*'/, TOKENS_WITH_STRINGS);\n\n return tokens;\n}\n\n// Convert a flat list of tokens into a tree of complex & compound selectors\nfunction nestTokens(\n tokens: Atoms,\n { list = true }: Pick<ParserOptions, 'list'> = {},\n): AST | undefined {\n if (list === true && tokens.some((t) => t.type === 'comma')) {\n const selectors: AST[] = [];\n const temp: Atoms = [];\n\n for (let i = 0; i < tokens.length; i += 1) {\n const token = tokens[i];\n if (token.type === 'comma') {\n if (temp.length === 0) {\n throw new Error('Incorrect comma at ' + i);\n }\n\n const sub = nestTokens(temp, { list: false });\n if (sub !== undefined) {\n selectors.push(sub);\n }\n temp.length = 0;\n } else {\n temp.push(token);\n }\n }\n\n if (temp.length === 0) {\n throw new Error('Trailing comma');\n } else {\n const sub = nestTokens(temp, { list: false });\n if (sub !== undefined) {\n selectors.push(sub);\n }\n }\n\n return { type: 'list', list: selectors };\n }\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n const token = tokens[i];\n\n if (token.type === 'combinator') {\n const left = nestTokens(tokens.slice(0, i));\n const right = nestTokens(tokens.slice(i + 1));\n if (right === undefined) {\n return undefined;\n }\n\n if (\n token.content !== ' ' &&\n token.content !== '~' &&\n token.content !== '+' &&\n token.content !== '>'\n ) {\n return undefined;\n }\n\n return {\n type: 'complex',\n combinator: token.content,\n left,\n right,\n };\n }\n }\n\n if (tokens.length === 0) {\n return undefined;\n }\n\n if (isAST(tokens)) {\n if (tokens.length === 1) {\n return tokens[0];\n }\n\n // If we're here, there are no combinators, so it's just a list\n return {\n type: 'compound',\n compound: [...tokens], // clone to avoid pointers messing up the AST\n };\n }\n\n return undefined;\n}\n\n// Traverse an AST (or part thereof), in depth-first order\nfunction walk(\n node: AST | undefined,\n callback: (node: AST, parentNode?: AST) => void,\n o?: AST,\n parent?: AST,\n): void {\n if (node === undefined) {\n return;\n }\n\n if (node.type === 'complex') {\n walk(node.left, callback, o, node);\n walk(node.right, callback, o, node);\n } else if (node.type === 'compound') {\n for (const n of node.compound) {\n walk(n, callback, o, node);\n }\n } else if (\n node.type === 'pseudo-class' &&\n node.subtree !== undefined &&\n o !== undefined &&\n o.type === 'pseudo-class' &&\n o.subtree !== undefined\n ) {\n walk(node.subtree, callback, o, node);\n }\n\n callback(node, parent);\n}\n\n/**\n * Parse a CSS selector\n * @param selector {String} The selector to parse\n * @param options.recursive {Boolean} Whether to parse the arguments of pseudo-classes like :is(), :has() etc. Defaults to true.\n * @param options.list {Boolean} Whether this can be a selector list (A, B, C etc). Defaults to true.\n */\nexport function parse(\n selector: string,\n { recursive = true, list = true }: ParserOptions = {},\n): AST | undefined {\n const tokens = tokenize(selector);\n\n if (tokens.length === 0) {\n return undefined;\n }\n\n const ast = nestTokens(tokens, { list });\n\n if (recursive === true) {\n walk(ast, (node) => {\n if (\n node.type === 'pseudo-class' &&\n node.argument &&\n node.name !== undefined &&\n RECURSIVE_PSEUDO_CLASSES.has(node.name)\n ) {\n node.subtree = parse(node.argument, { recursive: true, list: true });\n }\n });\n }\n\n return ast;\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nconst tokenTypes = [\n 'attribute',\n 'id',\n 'class',\n 'comma',\n 'combinator',\n 'pseudo-element',\n 'pseudo-class',\n 'type',\n] as const;\n\nexport type TokenType = (typeof tokenTypes)[number];\n\nexport type Base = {\n length: number;\n content: string;\n pos: number[];\n};\n\nexport type Type = Base & {\n type: 'type';\n name?: string;\n namespace?: string;\n};\n\nexport type PseudoClass = Base & {\n type: 'pseudo-class';\n name: string;\n argument: string | undefined;\n subtree: AST | undefined;\n};\n\nexport type PseudoElement = Base & {\n type: 'pseudo-element';\n name: string;\n};\n\nexport type Combinator = Base & {\n type: 'combinator';\n};\n\nexport type Comma = Base & {\n type: 'comma';\n};\n\nexport type Class = Base & {\n type: 'class';\n name: string;\n};\n\nexport type Id = Base & {\n type: 'id';\n name: string;\n};\n\nexport type Attribute = Base & {\n type: 'attribute';\n namespace?: string;\n caseSensitive?: string;\n name: string;\n operator?: string;\n value?: string;\n};\n\nexport type Atom =\n | Attribute\n | Id\n | Class\n | Comma\n | Combinator\n | PseudoClass\n | PseudoElement\n | Type;\n\nexport type Atoms = Atom[];\n\nexport type AtomOrString = Atom | string;\n\nexport type AtomsOrStrings = AtomOrString[];\n\nexport type Strings = { str: string; start: number }[];\n\n// Complex selectors with combinators (e.g. ~, >, +)\nexport interface Complex {\n type: 'complex';\n combinator: ' ' | '+' | '~' | '>';\n right: AST;\n left: AST | undefined;\n}\n\n// Multiple selectors together\n// i.e. selector1selector2 (should match both at the same time)\nexport interface Compound {\n type: 'compound';\n compound: AST[];\n}\n\n// Comma-separated list of selectors\n// i.e. selector1, selector2, etc.\nexport interface List {\n type: 'list';\n list: AST[];\n}\n\nexport type AST =\n | Attribute\n | Id\n | Class\n | PseudoClass\n | PseudoElement\n | Type\n | Complex\n | Compound\n | List;\n\nexport interface ParserOptions {\n recursive?: boolean;\n list?: boolean;\n}\n\nexport function isAtoms(tokens: AtomsOrStrings): tokens is Atoms {\n return tokens.every((token) => typeof token !== 'string');\n}\n\nexport function isAST(\n tokens: Atoms,\n): tokens is (Attribute | Id | Class | PseudoClass | PseudoElement | Type)[] {\n return tokens.every((token) => token.type !== 'comma' && token.type !== 'combinator');\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { tokenize, RECURSIVE_PSEUDO_CLASSES } from './parse';\n\nexport const EXTENDED_PSEUDO_CLASSES = new Set([\n // '-abp-contains',\n // '-abp-has',\n // '-abp-properties',\n 'has',\n 'has-text',\n 'if',\n // 'if-not',\n // 'matches-css',\n // 'matches-css-after',\n // 'matches-css-before',\n // 'min-text-length',\n // 'nth-ancestor',\n // 'upward',\n // 'watch-attr',\n // 'watch-attrs',\n // 'xpath',\n]);\n\nexport const PSEUDO_CLASSES = new Set([\n 'active',\n 'any',\n 'any-link',\n 'blank',\n 'checked',\n 'default',\n 'defined',\n 'dir',\n 'disabled',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'fullscreen',\n 'host',\n 'host-context',\n 'hover',\n 'in-range',\n 'indeterminate',\n 'invalid',\n 'is',\n 'lang',\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'matches',\n // NOTE: by default we consider `:not(...)` to be a normal CSS selector since,\n // we are only interested in cases where the argument is an extended selector.\n // If that is the case, it will still be detected as such.\n 'not',\n 'nth-child',\n 'nth-last-child',\n 'nth-last-of-type',\n 'nth-of-type',\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'valid',\n 'visited',\n 'where',\n]);\n\n// NOTE: here we only need to list the pseudo-elements which can appear with a\n// single colon (e.g. :after or ::after are valid for backward compatibility\n// reasons). They can be misinterpreted as pseudo-classes by the tokenizer for\n// this reason.\nexport const PSEUDO_ELEMENTS = new Set(['after', 'before', 'first-letter', 'first-line']);\n\nexport enum SelectorType {\n Normal,\n Extended,\n Invalid,\n}\n\nexport function classifySelector(selector: string): SelectorType {\n // In most cases there is no pseudo-anything so we can quickly exit.\n if (selector.indexOf(':') === -1) {\n return SelectorType.Normal;\n }\n\n const tokens = tokenize(selector);\n\n // Detect pseudo-classes\n let foundSupportedExtendedSelector = false;\n for (const token of tokens) {\n if (token.type === 'pseudo-class') {\n const { name } = token;\n if (EXTENDED_PSEUDO_CLASSES.has(name) === true) {\n foundSupportedExtendedSelector = true;\n } else if (PSEUDO_CLASSES.has(name) === false && PSEUDO_ELEMENTS.has(name) === false) {\n return SelectorType.Invalid;\n }\n\n // Recursively\n if (\n foundSupportedExtendedSelector === false &&\n token.argument !== undefined &&\n RECURSIVE_PSEUDO_CLASSES.has(name) === true\n ) {\n const argumentType = classifySelector(token.argument);\n if (argumentType === SelectorType.Invalid) {\n return argumentType;\n } else if (argumentType === SelectorType.Extended) {\n foundSupportedExtendedSelector = true;\n }\n }\n }\n }\n\n if (foundSupportedExtendedSelector === true) {\n return SelectorType.Extended;\n }\n\n return SelectorType.Normal;\n}\n",null,null,null,null,null,null,"/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","\n// Code automatically generated using ./bin/builders/hashes.ts\nexport default new Uint32Array([5,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,57,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1675555530,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1640,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,349,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852957,1222628504,1230410191,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1866278547,1867401367,1936236019,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041816,3319967633,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,2,343511425,4233599295,4,989615076,1348282182,2372695675,2793429742,73,2516160,83460346,113271207,134752460,257089230,310748895,373240553,387546555,465045723,528158848,599016891,599034260,599035482,745170160,748886222,771634050,771637032,1049173028,1156523661,1264600767,1542981532,1557499238,1644040136,1645084619,1709094170,1740118996,1778504542,1807895638,1836295865,1964668429,2086817070,2091822363,2368015199,2707054618,2757714990,2842899363,2873826097,2875201553,2889802328,2938675535,2942499160,3012594373,3068421535,3068451149,3097180103,3250117513,3276067803,3303582289,3303582897,3303582994,3303614961,3346748653,3371744816,3577832733,3577832874,3719669200,3737867596,3737869333,3737882439,3755463030,3789613664,3804622433,3829814476,3847110230,3927045026,3974478460,3990612749,3994206764,3994206767,4069710253,4103392506,4130682685,4197651626,0,0,0,0,0,86,14034108,23188555,69988957,176179919,181602757,286917352,303225044,436746473,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,688229624,733631603,804592434,820388681,834351359,838060561,871806992,907959623,917609192,936253712,1097991931,1188365042,1322375458,1389219463,1544881072,1554252850,1566036640,1637844009,1668922875,1697481902,1779722906,1817679755,1874439438,1942164974,1953292144,2171493616,2174172768,2232538822,2253530761,2307427283,2356867634,2454582508,2471444403,2478294033,2487762682,2513007594,2523046044,2645305307,2697781106,2713921343,2858583336,2869381059,2877426354,2941854634,3033841873,3036938981,3090851000,3173697968,3175256934,3193365922,3293334302,3298593000,3336190368,3391640312,3415553447,3505446608,3554833241,3594782899,3710380917,3803370028,3804920752,3894082090,3928753122,4065646590,4180315949,4196008531,4241738188,4265459019]);\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport packed from './data/hashes';\n\n/**\n * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)\n * using a binary search algorithm.\n */\nfunction binSearch(\n arr: Uint32Array,\n elt: number,\n start: number,\n end: number,\n): boolean {\n if (start >= end) {\n return false;\n }\n\n let low = start;\n let high = end - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid]!;\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return true;\n }\n }\n\n return false;\n}\n\n// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To\n// avoid having to allocate an array to store them at every invocation, we\n// create one global one that can be reused.\nconst BUFFER = new Uint32Array(20);\n\n/**\n * Iterate on hashes of labels from `hostname` backward (from last label to\n * first label), stopping after `maximumNumberOfLabels` have been extracted and\n * calling `cb` on each of them.\n *\n * The `maximumNumberOfLabels` argument is typically used to specify the number\n * of labels seen in the longest public suffix. We do not need to check further\n * in very long hostnames.\n */\nfunction hashHostnameLabelsBackward(\n hostname: string,\n maximumNumberOfLabels: number,\n): number {\n let hash = 5381;\n let index = 0;\n\n // Compute hash backward, label per label\n for (let i = hostname.length - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n // Process label\n if (code === 46 /* '.' */) {\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = i + 1;\n index += 1;\n\n if (index === maximumNumberOfLabels) {\n return index;\n }\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n // Let's not forget about last label\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = 0;\n index += 1;\n\n return index;\n}\n\nconst enum Result {\n NO_MATCH = 0,\n ICANN_MATCH = 1,\n PRIVATE_MATCH = 2,\n EXCEPTION_MATCH = 4,\n NORMAL_MATCH = 8,\n WILDCARD_MATCH = 16,\n}\n\n/**\n * Perform a public suffix lookup for `hostname` using the packed hashes\n * data-structure. The `options` allows to specify if ICANN/PRIVATE sections\n * should be considered. By default, both are.\n *\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const { allowIcannDomains, allowPrivateDomains } = options;\n\n // Keep track of longest match\n let matchIndex = -1;\n let matchKind = Result.NO_MATCH;\n let matchLabels = 0; // Keep track of number of labels currently matched\n\n // Index in the packed array data-structure\n let index = 1;\n\n const numberOfHashes = hashHostnameLabelsBackward(\n hostname,\n packed[0]! /* maximumNumberOfLabels */,\n );\n\n for (let label = 0; label < numberOfHashes; label += 1) {\n const hash = BUFFER[label << 1]!;\n const labelStart = BUFFER[(label << 1) + 1]!;\n // For each label, matching proceeds in the following way:\n //\n // 1. check exceptions\n // 2. check wildcards\n // 3. check normal rules\n //\n // For each of these, we also perform the lookup in two parts, once for\n // the ICANN section and one for the PRIVATE section. Both of which are\n // optional and can be enabled/disabled using the `options` argument.\n //\n // We start with exceptions because if an exception is found, we do not\n // need to continue matching wildcards or normal rules; the exception will\n // always have priority.\n //\n // Similarly, if we find a wildcard match, we do not need to check the\n // rules for the same label as the wildcard match is always longer (one\n // more label is matched).\n //\n // **WARNING**: the structure of this code follows exactly the structure\n // of the packed data structure as create in ./bin/builders/hashes.js\n\n let match = Result.NO_MATCH;\n\n // ========================================================================\n // Lookup exceptions\n // ========================================================================\n // ICANN\n if (allowIcannDomains) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (allowPrivateDomains && match === Result.NO_MATCH) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup wildcards\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup rules\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // If we found a match, the longest match that is being tracked for this\n // hostname. We need to remember which kind of match it was (exception,\n // wildcard, normal rule), the index where the suffix starts in `hostname`\n // as well as the number of labels contained in this suffix (this is\n // important to make sure that we always keep the longest match if there\n // are both a wildcard and a normal rule matching).\n if (match !== Result.NO_MATCH) {\n matchKind = match;\n matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);\n matchIndex = labelStart;\n }\n }\n\n out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;\n out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;\n\n // No match found\n if (matchIndex === -1) {\n out.publicSuffix =\n numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);\n return;\n }\n\n // If match is an exception, this means that we need to count less label.\n // For example, exception rule !foo.com would yield suffix 'com', so we need\n // to locate the next dot and slice from there.\n if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);\n return;\n }\n\n // If match is a wildcard, we need to match one more label. If wildcard rule\n // was *.com, we would have stored only 'com' in the packed structure and we\n // need to take one extra label on the left.\n if ((matchKind & Result.WILDCARD_MATCH) !== 0) {\n if (matchLabels < numberOfHashes) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);\n return;\n }\n\n const parts = hostname.split('.');\n while (parts.length > matchLabels) {\n parts.shift();\n }\n out.publicSuffix = parts.join('.');\n return;\n }\n\n // if ((matchKind & Result.NORMAL_MATCH) !== 0)\n // For normal match, we just slice the hostname at the beginning of suffix.\n out.publicSuffix = hostname.slice(matchIndex);\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/packed-hashes';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial<IOptions> = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n/**\n * Thin abstraction around a Uint32Array which allows to push tokens\n * whithout caring for the offset. It is used as a way to avoid multiple\n * allocations while calling tokenization (mostly beneficitial for\n * `NetworkFilter.getTokens()`).\n */\nexport class TokensBuffer {\n private readonly buffer: Uint32Array;\n public pos: number = 0;\n\n constructor(size: number) {\n this.buffer = new Uint32Array(size);\n }\n\n public reset(): void {\n this.pos = 0;\n }\n\n public slice(): Uint32Array {\n return this.buffer.slice(0, this.pos);\n }\n\n public push(token: number): void {\n this.buffer[this.pos++] = token;\n }\n\n public empty(): boolean {\n return this.pos === 0;\n }\n\n public full(): boolean {\n return this.pos === this.buffer.length;\n }\n\n public remaining(): number {\n return this.buffer.length - this.pos;\n }\n}\n\nexport const TOKENS_BUFFER = new TokensBuffer(1024);\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { TokensBuffer, TOKENS_BUFFER } from './tokens-buffer';\n\nexport const HASH_SEED = 7877;\n\n/***************************************************************************\n * Bitwise helpers\n * ************************************************************************* */\n\n// From: https://stackoverflow.com/a/43122214/1185079\nexport function bitCount(n: number): number {\n n = n - ((n >> 1) & 0x55555555);\n n = (n & 0x33333333) + ((n >> 2) & 0x33333333);\n return (((n + (n >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;\n}\n\nexport function getBit(n: number, mask: number): boolean {\n return !!(n & mask);\n}\n\nexport function setBit(n: number, mask: number): number {\n return n | mask;\n}\n\nexport function clearBit(n: number, mask: number): number {\n return n & ~mask;\n}\n\nexport function fastHashBetween(str: string, begin: number, end: number): number {\n let hash = HASH_SEED;\n\n for (let i = begin; i < end; i += 1) {\n hash = (hash * 33) ^ str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport function fastHash(str: string): number {\n if (typeof str !== 'string') {\n return HASH_SEED;\n }\n\n if (str.length === 0) {\n return HASH_SEED;\n }\n\n return fastHashBetween(str, 0, str.length);\n}\n\nexport function hashStrings(strings: string[]): Uint32Array {\n const result = new Uint32Array(strings.length);\n let index = 0;\n for (const str of strings) {\n result[index++] = fastHash(str);\n }\n return result;\n}\n\n// https://jsperf.com/string-startswith/21\nexport function fastStartsWith(haystack: string, needle: string): boolean {\n if (haystack.length < needle.length) {\n return false;\n }\n\n const ceil = needle.length;\n for (let i = 0; i < ceil; i += 1) {\n if (haystack[i] !== needle[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function fastStartsWithFrom(haystack: string, needle: string, start: number): boolean {\n if (haystack.length - start < needle.length) {\n return false;\n }\n\n const ceil = start + needle.length;\n for (let i = start; i < ceil; i += 1) {\n if (haystack[i] !== needle[i - start]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isDigit(ch: number): boolean {\n // 48 == '0'\n // 57 == '9'\n return ch >= 48 && ch <= 57;\n}\n\nexport function isAlpha(ch: number): boolean {\n // 65 == 'A'\n // 90 == 'Z'\n // 97 == 'a'\n // 122 === 'z'\n return (ch >= 97 && ch <= 122) || (ch >= 65 && ch <= 90);\n}\n\nfunction isAlphaExtended(ch: number): boolean {\n // 192 -> 450\n // À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø\n // Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ\n // ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ\n // ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ\n // Ĥ ĥ Ħ ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ\n // Ľ ľ Ŀ ŀ Ł ł Ń ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ\n // Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů\n // ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ſ ƀ Ɓ Ƃ ƃ Ƅ ƅ Ɔ Ƈ\n // ƈ Ɖ Ɗ Ƌ ƌ ƍ Ǝ Ə Ɛ Ƒ ƒ Ɠ Ɣ ƕ Ɩ Ɨ Ƙ ƙ ƚ ƛ Ɯ Ɲ ƞ Ɵ Ơ\n // ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ\n // ƺ ƻ Ƽ ƽ ƾ ƿ ǀ ǁ ǂ\n return ch >= 192 && ch <= 450;\n}\n\nfunction isCyrillic(ch: number): boolean {\n // 1024 -> 1279\n // Ѐ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х\n // Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы\n // ь э ю я ѐ ё ђ ѓ є ѕ і ї ј љ њ ћ ќ ѝ ў џ Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ\n // Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ Ҁ ҁ ҂ ҃ ҄ ҅ ҆ ҇ ҈ ҉ Ҋ ҋ Ҍ ҍ Ҏ ҏ Ґ ґ Ғ ғ Ҕ ҕ Җ җ Ҙ ҙ\n // Қ қ Ҝ ҝ Ҟ ҟ Ҡ ҡ Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ Ү ү Ұ ұ Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ Ҿ\n // ҿ Ӏ Ӂ ӂ Ӄ ӄ Ӆ ӆ Ӈ ӈ Ӊ ӊ Ӌ ӌ Ӎ ӎ ӏ Ӑ ӑ Ӓ ӓ Ӕ ӕ Ӗ ӗ Ә ә Ӛ ӛ Ӝ ӝ Ӟ ӟ Ӡ ӡ Ӣ ӣ Ӥ\n // ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ Ӱ ӱ Ӳ ӳ Ӵ ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ\n return ch >= 1024 && ch <= 1279;\n}\n\nfunction isAllowedCode(ch: number): boolean {\n return (\n isAlpha(ch) || isDigit(ch) || ch === 37 /* '%' */ || isAlphaExtended(ch) || isCyrillic(ch)\n );\n}\n\nexport function tokenizeWithWildcardsInPlace(\n pattern: string,\n skipFirstToken: boolean,\n skipLastToken: boolean,\n buffer: TokensBuffer,\n): void {\n // TODO maybe better to check if buffer is full?\n // Otherwise we are under-using the space.\n const len = Math.min(pattern.length, buffer.remaining() * 2);\n let inside = false;\n let precedingCh = 0;\n let start = 0;\n let hash = HASH_SEED;\n\n for (let i = 0; i < len; i += 1) {\n const ch = pattern.charCodeAt(i);\n if (isAllowedCode(ch) === true) {\n if (inside === false) {\n hash = HASH_SEED;\n inside = true;\n start = i;\n }\n hash = (hash * 33) ^ ch;\n } else {\n if (inside === true) {\n inside = false;\n\n if (\n i - start > 1 && // Ignore tokens of 1 character\n ch !== 42 && // Ignore tokens followed by a '*'\n precedingCh !== 42 && // Ignore tokens preceeded by a '*'\n (skipFirstToken === false || start !== 0)\n ) {\n buffer.push(hash >>> 0);\n }\n }\n\n precedingCh = ch;\n }\n }\n\n if (\n skipLastToken === false &&\n inside === true &&\n precedingCh !== 42 && // Ignore tokens preceeded by a '*'\n pattern.length - start > 1 && // Ignore tokens of 1 character\n buffer.full() === false\n ) {\n buffer.push(hash >>> 0);\n }\n}\n\nexport function tokenizeInPlace(\n pattern: string,\n skipFirstToken: boolean,\n skipLastToken: boolean,\n buffer: TokensBuffer,\n): void {\n const len = Math.min(pattern.length, buffer.remaining() * 2);\n let inside = false;\n let start = 0;\n let hash = HASH_SEED;\n\n for (let i = 0; i < len; i += 1) {\n const ch = pattern.charCodeAt(i);\n if (isAllowedCode(ch) === true) {\n if (inside === false) {\n hash = HASH_SEED;\n inside = true;\n start = i;\n }\n hash = (hash * 33) ^ ch;\n } else if (inside === true) {\n inside = false;\n if (\n i - start > 1 && // Ignore tokens of 1 character\n (skipFirstToken === false || start !== 0)\n ) {\n buffer.push(hash >>> 0);\n }\n }\n }\n\n if (\n inside === true &&\n skipLastToken === false &&\n pattern.length - start > 1 && // Ignore tokens of 1 character\n buffer.full() === false\n ) {\n buffer.push(hash >>> 0);\n }\n}\n\nexport function tokenizeNoSkipInPlace(pattern: string, buffer: TokensBuffer): void {\n const len = Math.min(pattern.length, buffer.remaining() * 2);\n let inside = false;\n let start = 0;\n let hash = HASH_SEED;\n\n for (let i = 0; i < len; i += 1) {\n const ch = pattern.charCodeAt(i);\n if (isAllowedCode(ch) === true) {\n if (inside === false) {\n hash = HASH_SEED;\n inside = true;\n start = i;\n }\n hash = (hash * 33) ^ ch;\n } else if (inside === true) {\n inside = false;\n if (i - start > 1) {\n buffer.push(hash >>> 0);\n }\n }\n }\n\n if (inside === true && pattern.length - start > 1 && buffer.full() === false) {\n buffer.push(hash >>> 0);\n }\n}\n\nexport function tokenizeNoSkip(pattern: string): Uint32Array {\n TOKENS_BUFFER.reset();\n tokenizeNoSkipInPlace(pattern, TOKENS_BUFFER);\n return TOKENS_BUFFER.slice();\n}\n\nexport function tokenizeWithWildcards(\n pattern: string,\n skipFirstToken: boolean,\n skipLastToken: boolean,\n): Uint32Array {\n TOKENS_BUFFER.reset();\n tokenizeWithWildcardsInPlace(pattern, skipFirstToken, skipLastToken, TOKENS_BUFFER);\n return TOKENS_BUFFER.slice();\n}\n\nexport function tokenize(\n pattern: string,\n skipFirstToken: boolean,\n skipLastToken: boolean,\n): Uint32Array {\n TOKENS_BUFFER.reset();\n tokenizeInPlace(pattern, skipFirstToken, skipLastToken, TOKENS_BUFFER);\n return TOKENS_BUFFER.slice();\n}\n\nexport function tokenizeRegexInPlace(selector: string, tokens: TokensBuffer): void {\n let end = selector.length - 1;\n let begin = 1;\n let prev: number = 0;\n\n // Try to find the longest safe *prefix* that we can tokenize\n for (; begin < end; begin += 1) {\n const code = selector.charCodeAt(begin);\n\n // If we encounter '|' before any other opening bracket, then it's not safe\n // to tokenize this filter (e.g.: 'foo|bar'). Instead we abort tokenization\n // to be safe.\n if (code === 124 /* '|' */) {\n return;\n }\n\n if (\n code === 40 /* '(' */ ||\n code === 42 /* '*' */ ||\n code === 43 /* '+' */ ||\n code === 63 /* '?' */ ||\n code === 91 /* '[' */ ||\n code === 123 /* '{' */ ||\n (code === 46 /* '.' */ && prev !== 92) /* '\\' */ ||\n (code === 92 /* '\\' */ && isAlpha(selector.charCodeAt(begin + 1)))\n ) {\n break;\n }\n\n prev = code;\n }\n\n // Try to find the longest safe *suffix* that we can tokenize\n prev = 0;\n for (; end >= begin; end -= 1) {\n const code = selector.charCodeAt(end);\n\n // If we encounter '|' before any other opening bracket, then it's not safe\n // to tokenize this filter (e.g.: 'foo|bar'). Instead we abort tokenization\n // to be safe.\n if (code === 124 /* '|' */) {\n return;\n }\n\n if (\n code === 41 /* ')' */ ||\n code === 42 /* '*' */ ||\n code === 43 /* '+' */ ||\n code === 63 /* '?' */ ||\n code === 93 /* ']' */ ||\n code === 125 /* '}' */ ||\n (code === 46 /* '.' */ && selector.charCodeAt(end - 1) !== 92) /* '\\' */ ||\n (code === 92 /* '\\' */ && isAlpha(prev))\n ) {\n break;\n }\n\n prev = code;\n }\n\n if (end < begin) {\n // Full selector is safe\n const skipFirstToken: boolean = selector.charCodeAt(1) !== 94; /* '^' */\n const skipLastToken: boolean = selector.charCodeAt(selector.length - 1) !== 36; /* '$' */\n tokenizeInPlace(selector.slice(1, selector.length - 1), skipFirstToken, skipLastToken, tokens);\n } else {\n // Tokenize prefix\n if (begin > 1) {\n tokenizeInPlace(\n selector.slice(1, begin),\n selector.charCodeAt(1) !== 94 /* '^' */, // skipFirstToken\n true,\n tokens,\n );\n }\n\n // Tokenize suffix\n if (end < selector.length - 1) {\n tokenizeInPlace(\n selector.slice(end + 1, selector.length - 1),\n true,\n selector.charCodeAt(selector.length - 1) !== 94 /* '^' */, // skipLastToken\n tokens,\n );\n }\n }\n}\n\nexport function binSearch(arr: Uint32Array, elt: number): number {\n if (arr.length === 0) {\n return -1;\n }\n\n let low = 0;\n let high = arr.length - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid];\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n}\n\nexport function binLookup(arr: Uint32Array, elt: number): boolean {\n return binSearch(arr, elt) !== -1;\n}\n\n// eslint-disable-next-line no-control-regex\nconst hasUnicodeRe = /[^\\u0000-\\u00ff]/;\nexport function hasUnicode(str: string): boolean {\n return hasUnicodeRe.test(str);\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport guessUrlType from '@remusao/guess-url-type';\nimport { parse } from 'tldts-experimental';\n\nimport { EMPTY_UINT32_ARRAY } from './data-view';\nimport { TOKENS_BUFFER } from './tokens-buffer';\nimport { fastHash, tokenizeNoSkipInPlace, HASH_SEED } from './utils';\n\nconst TLDTS_OPTIONS = {\n extractHostname: true,\n mixedInputs: false,\n validateHostname: false,\n};\n\n// From: https://github.com/electron/electron/blob/34c4c8d5088fa183f56baea28809de6f2a427e02/shell/browser/net/atom_network_delegate.cc#L30\nexport type ElectronRequestType =\n | 'mainFrame'\n | 'subFrame'\n | 'stylesheet'\n | 'script'\n | 'image'\n | 'font'\n | 'object'\n | 'xhr'\n | 'ping'\n | 'cspReport'\n | 'media'\n | 'webSocket'\n | 'other';\n\n// From: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/7f3549ed0050f2ca8d7fcc00c33eba21f0cbdd88/types/puppeteer/index.d.ts#L945\nexport type PuppeteerRequestType =\n | 'cspviolationreport'\n | 'document'\n | 'eventsource'\n | 'fetch'\n | 'font'\n | 'image'\n | 'manifest'\n | 'media'\n | 'other'\n | 'prefetch'\n | 'preflight'\n | 'script'\n | 'signedexchange'\n | 'stylesheet'\n | 'texttrack'\n | 'websocket'\n | 'xhr';\n\nexport type PlaywrightRequestType =\n | 'document'\n | 'eventsource'\n | 'fetch'\n | 'font'\n | 'image'\n | 'manifest'\n | 'media'\n | 'other'\n | 'script'\n | 'stylesheet'\n | 'texttrack'\n | 'websocket'\n | 'xhr';\n\n// From: https://developer.chrome.com/extensions/webRequest#type-ResourceType\nexport type WebRequestTypeChrome = chrome.webRequest.ResourceType;\n\n// From: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType#Type\nexport type WebRequestTypeFirefox = browser.webRequest.ResourceType;\n\n// The set of WebRequest types is the union of both Firefox and Chrome\nexport type WebRequestType = WebRequestTypeChrome | WebRequestTypeFirefox;\n\n// The set of supported types is the union of WebRequest\nexport type RequestType =\n | WebRequestType\n | ElectronRequestType\n | PuppeteerRequestType\n | PlaywrightRequestType;\n\nexport const NORMALIZED_TYPE_TOKEN: { [s in RequestType]: number } = {\n beacon: fastHash('type:beacon'),\n cspReport: fastHash('type:csp'),\n csp_report: fastHash('type:csp'),\n cspviolationreport: fastHash('type:cspviolationreport'),\n document: fastHash('type:document'),\n eventsource: fastHash('type:other'),\n fetch: fastHash('type:xhr'),\n font: fastHash('type:font'),\n image: fastHash('type:image'),\n imageset: fastHash('type:image'),\n mainFrame: fastHash('type:document'),\n main_frame: fastHash('type:document'),\n manifest: fastHash('type:other'),\n media: fastHash('type:media'),\n object: fastHash('type:object'),\n object_subrequest: fastHash('type:object'),\n other: fastHash('type:other'),\n ping: fastHash('type:ping'),\n prefetch: fastHash('type:other'),\n preflight: fastHash('type:preflight'),\n script: fastHash('type:script'),\n signedexchange: fastHash('type:signedexchange'),\n speculative: fastHash('type:other'),\n stylesheet: fastHash('type:stylesheet'),\n subFrame: fastHash('type:subdocument'),\n sub_frame: fastHash('type:subdocument'),\n texttrack: fastHash('type:other'),\n webSocket: fastHash('type:websocket'),\n web_manifest: fastHash('type:other'),\n websocket: fastHash('type:websocket'),\n xhr: fastHash('type:xhr'),\n xml_dtd: fastHash('type:other'),\n xmlhttprequest: fastHash('type:xhr'),\n xslt: fastHash('type:other'),\n};\n\nexport function hashHostnameBackward(hostname: string): number {\n let hash = HASH_SEED;\n for (let j = hostname.length - 1; j >= 0; j -= 1) {\n hash = (hash * 33) ^ hostname.charCodeAt(j);\n }\n return hash >>> 0;\n}\n\nexport function getHashesFromLabelsBackward(\n hostname: string,\n end: number,\n startOfDomain: number,\n): Uint32Array {\n TOKENS_BUFFER.reset();\n let hash = HASH_SEED;\n\n // Compute hash backward, label per label\n for (let i = end - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n\n // Process label\n if (code === 46 /* '.' */ && i < startOfDomain) {\n TOKENS_BUFFER.push(hash >>> 0);\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n TOKENS_BUFFER.push(hash >>> 0);\n return TOKENS_BUFFER.slice();\n}\n\n/**\n * Given a hostname and its domain, return the hostname without the public\n * suffix. We know that the domain, with one less label on the left, will be a\n * the public suffix; and from there we know which trailing portion of\n * `hostname` we should remove.\n */\nexport function getHostnameWithoutPublicSuffix(hostname: string, domain: string): string | null {\n let hostnameWithoutPublicSuffix: string | null = null;\n\n const indexOfDot = domain.indexOf('.');\n if (indexOfDot !== -1) {\n const publicSuffix = domain.slice(indexOfDot + 1);\n hostnameWithoutPublicSuffix = hostname.slice(0, -publicSuffix.length - 1);\n }\n\n return hostnameWithoutPublicSuffix;\n}\n\nexport function getEntityHashesFromLabelsBackward(hostname: string, domain: string): Uint32Array {\n const hostnameWithoutPublicSuffix = getHostnameWithoutPublicSuffix(hostname, domain);\n if (hostnameWithoutPublicSuffix !== null) {\n return getHashesFromLabelsBackward(\n hostnameWithoutPublicSuffix,\n hostnameWithoutPublicSuffix.length,\n hostnameWithoutPublicSuffix.length,\n );\n }\n return EMPTY_UINT32_ARRAY;\n}\n\nexport function getHostnameHashesFromLabelsBackward(\n hostname: string,\n domain: string,\n): Uint32Array {\n return getHashesFromLabelsBackward(hostname, hostname.length, hostname.length - domain.length);\n}\n\nfunction isThirdParty(\n hostname: string,\n domain: string,\n sourceHostname: string,\n sourceDomain: string,\n type: RequestType,\n): boolean {\n if (type === 'main_frame' || type === 'mainFrame') {\n return false;\n } else if (domain.length !== 0 && sourceDomain.length !== 0) {\n return domain !== sourceDomain;\n } else if (domain.length !== 0 && sourceHostname.length !== 0) {\n return domain !== sourceHostname;\n } else if (sourceDomain.length !== 0 && hostname.length !== 0) {\n return hostname !== sourceDomain;\n }\n\n return false;\n}\n\nexport interface RequestInitialization {\n requestId: string;\n tabId: number;\n\n url: string;\n hostname: string;\n domain: string;\n\n sourceUrl: string;\n sourceHostname: string;\n sourceDomain: string;\n\n type: RequestType;\n\n // Optional attribute referencing the original request details used to create\n // the Request instance. This can be for example:\n // * Electron.OnHeadersReceivedListenerDetails\n // * Electron.OnBeforeRequestListenerDetails\n // * puppeteer.Request\n // * webRequest details\n _originalRequestDetails: any | undefined;\n}\n\nexport default class Request {\n /**\n * Create an instance of `Request` from raw request details.\n */\n public static fromRawDetails({\n requestId = '0',\n tabId = 0,\n url = '',\n hostname,\n domain,\n sourceUrl = '',\n sourceHostname,\n sourceDomain,\n type = 'main_frame',\n _originalRequestDetails,\n }: Partial<RequestInitialization>): Request {\n url = url.toLowerCase();\n\n if (hostname === undefined || domain === undefined) {\n const parsed = parse(url, TLDTS_OPTIONS);\n hostname = hostname || parsed.hostname || '';\n domain = domain || parsed.domain || '';\n }\n\n // Initialize source URL\n if (sourceHostname === undefined || sourceDomain === undefined) {\n const parsed = parse(sourceHostname || sourceDomain || sourceUrl, TLDTS_OPTIONS);\n sourceHostname = sourceHostname || parsed.hostname || '';\n sourceDomain = sourceDomain || parsed.domain || sourceHostname || '';\n }\n\n return new Request({\n requestId,\n tabId,\n\n domain,\n hostname,\n url,\n\n sourceDomain,\n sourceHostname,\n sourceUrl,\n\n type,\n\n _originalRequestDetails,\n });\n }\n\n public readonly _originalRequestDetails: any | undefined;\n\n public type: RequestType;\n public readonly isHttp: boolean;\n public readonly isHttps: boolean;\n public readonly isSupported: boolean;\n public readonly isFirstParty: boolean;\n public readonly isThirdParty: boolean;\n\n public readonly id: string;\n public readonly tabId: number;\n public readonly url: string;\n public readonly hostname: string;\n public readonly domain: string;\n\n public readonly sourceHostnameHashes: Uint32Array;\n public readonly sourceEntityHashes: Uint32Array;\n\n // Lazy attributes\n private tokens: Uint32Array | undefined = undefined;\n private hostnameHashes: Uint32Array | undefined = undefined;\n private entityHashes: Uint32Array | undefined = undefined;\n\n constructor({\n requestId,\n tabId,\n\n type,\n\n domain,\n hostname,\n url,\n\n sourceDomain,\n sourceHostname,\n\n _originalRequestDetails,\n }: RequestInitialization) {\n this._originalRequestDetails = _originalRequestDetails;\n this.id = requestId;\n this.tabId = tabId;\n this.type = type;\n\n this.url = url;\n this.hostname = hostname;\n this.domain = domain;\n\n this.sourceHostnameHashes =\n sourceHostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getHostnameHashesFromLabelsBackward(sourceHostname, sourceDomain);\n\n this.sourceEntityHashes =\n sourceHostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getEntityHashesFromLabelsBackward(sourceHostname, sourceDomain);\n\n // Decide on partiness\n this.isThirdParty = isThirdParty(hostname, domain, sourceHostname, sourceDomain, type);\n this.isFirstParty = !this.isThirdParty;\n\n // Check protocol\n this.isSupported = true;\n if (this.type === 'websocket' || this.url.startsWith('ws:') || this.url.startsWith('wss:')) {\n this.isHttp = false;\n this.isHttps = false;\n this.type = 'websocket';\n this.isSupported = true;\n } else if (this.url.startsWith('http:')) {\n this.isHttp = true;\n this.isHttps = false;\n } else if (this.url.startsWith('https:')) {\n this.isHttps = true;\n this.isHttp = false;\n } else if (this.url.startsWith('data:')) {\n this.isHttp = false;\n this.isHttps = false;\n\n // Only keep prefix of URL\n const indexOfComa = this.url.indexOf(',');\n if (indexOfComa !== -1) {\n this.url = this.url.slice(0, indexOfComa);\n }\n } else {\n this.isHttp = false;\n this.isHttps = false;\n this.isSupported = false;\n }\n }\n\n public getHostnameHashes(): Uint32Array {\n if (this.hostnameHashes === undefined) {\n this.hostnameHashes =\n this.hostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getHostnameHashesFromLabelsBackward(this.hostname, this.domain);\n }\n\n return this.hostnameHashes;\n }\n\n public getEntityHashes(): Uint32Array {\n if (this.entityHashes === undefined) {\n this.entityHashes =\n this.hostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getEntityHashesFromLabelsBackward(this.hostname, this.domain);\n }\n\n return this.entityHashes;\n }\n\n public getTokens(): Uint32Array {\n if (this.tokens === undefined) {\n TOKENS_BUFFER.reset();\n\n for (const hash of this.sourceHostnameHashes) {\n TOKENS_BUFFER.push(hash);\n }\n\n // Add token corresponding to request type\n TOKENS_BUFFER.push(NORMALIZED_TYPE_TOKEN[this.type]);\n\n tokenizeNoSkipInPlace(this.url, TOKENS_BUFFER);\n\n this.tokens = TOKENS_BUFFER.slice();\n }\n\n return this.tokens;\n }\n\n public isMainFrame(): boolean {\n return this.type === 'main_frame' || this.type === 'mainFrame';\n }\n\n public isSubFrame(): boolean {\n return this.type === 'sub_frame' || this.type === 'subFrame';\n }\n\n /**\n * Calling this method will attempt to guess the type of a request based on\n * information found in `url` only. This can be useful to try and fine-tune\n * the type of a Request when it is not otherwise available or if it was\n * inferred as 'other'.\n */\n public guessTypeOfRequest(): RequestType {\n const currentType = this.type;\n this.type = guessUrlType(this.url);\n if (currentType !== this.type) {\n this.tokens = undefined;\n }\n return this.type;\n }\n}\n\n/**\n * Kept for backward compatibility. The recommended way is to call\n * `Request.fromRawDetails` directly.\n */\nexport function makeRequest(details: Partial<RequestInitialization>): Request {\n return Request.fromRawDetails(details);\n}\n",null,null,"/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { hashHostnameBackward } from '../request';\nimport { toASCII } from '../punycode';\nimport { StaticDataView, sizeOfUint32Array, sizeOfUTF8 } from '../data-view';\nimport { binLookup, hasUnicode } from '../utils';\n\nexport class Domains {\n public static parse(parts: string[], debug: boolean = false): Domains | undefined {\n if (parts.length === 0) {\n return undefined;\n }\n\n const entities: number[] = [];\n const notEntities: number[] = [];\n const hostnames: number[] = [];\n const notHostnames: number[] = [];\n\n for (let hostname of parts) {\n if (hasUnicode(hostname)) {\n hostname = toASCII(hostname);\n }\n\n const negation: boolean = hostname.charCodeAt(0) === 126; /* '~' */\n const entity: boolean =\n hostname.charCodeAt(hostname.length - 1) === 42 /* '*' */ &&\n hostname.charCodeAt(hostname.length - 2) === 46; /* '.' */\n\n const start: number = negation ? 1 : 0;\n const end: number = entity ? hostname.length - 2 : hostname.length;\n\n const hash = hashHostnameBackward(\n negation === true || entity === true ? hostname.slice(start, end) : hostname,\n );\n\n if (negation) {\n if (entity) {\n notEntities.push(hash);\n } else {\n notHostnames.push(hash);\n }\n } else {\n if (entity) {\n entities.push(hash);\n } else {\n hostnames.push(hash);\n }\n }\n }\n\n return new Domains({\n entities: entities.length !== 0 ? new Uint32Array(entities).sort() : undefined,\n hostnames: hostnames.length !== 0 ? new Uint32Array(hostnames).sort() : undefined,\n notEntities: notEntities.length !== 0 ? new Uint32Array(notEntities).sort() : undefined,\n notHostnames: notHostnames.length !== 0 ? new Uint32Array(notHostnames).sort() : undefined,\n parts: debug === true ? parts.join(',') : undefined,\n });\n }\n\n public static deserialize(buffer: StaticDataView): Domains {\n const optionalParts = buffer.getUint8();\n\n // The order of these fields should be the same as when we serialize them.\n return new Domains({\n entities: (optionalParts & 1) === 1 ? buffer.getUint32Array() : undefined,\n hostnames: (optionalParts & 2) === 2 ? buffer.getUint32Array() : undefined,\n notEntities: (optionalParts & 4) === 4 ? buffer.getUint32Array() : undefined,\n notHostnames: (optionalParts & 8) === 8 ? buffer.getUint32Array() : undefined,\n parts: (optionalParts & 16) === 16 ? buffer.getUTF8() : undefined,\n });\n }\n\n // hostnames\n public readonly entities: Uint32Array | undefined;\n public readonly hostnames: Uint32Array | undefined;\n\n // Exceptions\n public readonly notEntities: Uint32Array | undefined;\n public readonly notHostnames: Uint32Array | undefined;\n\n // Debug\n public readonly parts: string | undefined;\n\n constructor({\n entities,\n hostnames,\n notEntities,\n notHostnames,\n parts,\n }: {\n entities: Uint32Array | undefined;\n hostnames: Uint32Array | undefined;\n notEntities: Uint32Array | undefined;\n notHostnames: Uint32Array | undefined;\n parts: string | undefined;\n }) {\n // Hostname constraints\n this.entities = entities;\n this.hostnames = hostnames;\n\n // Hostname exceptions\n this.notEntities = notEntities;\n this.notHostnames = notHostnames;\n\n // Debug\n this.parts = parts;\n }\n\n public updateId(hash: number): number {\n const { hostnames, entities, notHostnames, notEntities } = this;\n\n if (hostnames !== undefined) {\n for (const hostname of hostnames) {\n hash = (hash * 33) ^ hostname;\n }\n }\n\n if (entities !== undefined) {\n for (const entity of entities) {\n hash = (hash * 33) ^ entity;\n }\n }\n\n if (notHostnames !== undefined) {\n for (const notHostname of notHostnames) {\n hash = (hash * 33) ^ notHostname;\n }\n }\n\n if (notEntities !== undefined) {\n for (const notEntity of notEntities) {\n hash = (hash * 33) ^ notEntity;\n }\n }\n\n return hash;\n }\n\n public serialize(buffer: StaticDataView): void {\n // Mandatory fields\n const index = buffer.getPos();\n buffer.pushUint8(0);\n\n // This bit-mask indicates which optional parts of the filter were serialized.\n let optionalParts = 0;\n\n if (this.entities !== undefined) {\n optionalParts |= 1;\n buffer.pushUint32Array(this.entities);\n }\n\n if (this.hostnames !== undefined) {\n optionalParts |= 2;\n buffer.pushUint32Array(this.hostnames);\n }\n\n if (this.notEntities !== undefined) {\n optionalParts |= 4;\n buffer.pushUint32Array(this.notEntities);\n }\n\n if (this.notHostnames !== undefined) {\n optionalParts |= 8;\n buffer.pushUint32Array(this.notHostnames);\n }\n\n if (this.parts !== undefined) {\n optionalParts |= 16;\n buffer.pushUTF8(this.parts);\n }\n\n buffer.setByte(index, optionalParts);\n }\n\n public getSerializedSize(): number {\n let estimate: number = 1; // optional parts (1 byte)\n\n if (this.entities !== undefined) {\n estimate += sizeOfUint32Array(this.entities);\n }\n\n if (this.hostnames !== undefined) {\n estimate += sizeOfUint32Array(this.hostnames);\n }\n\n if (this.notHostnames !== undefined) {\n estimate += sizeOfUint32Array(this.notHostnames);\n }\n\n if (this.notEntities !== undefined) {\n estimate += sizeOfUint32Array(this.notEntities);\n }\n\n if (this.parts !== undefined) {\n estimate += sizeOfUTF8(this.parts);\n }\n\n return estimate;\n }\n\n public match(hostnameHashes: Uint32Array, entityHashes: Uint32Array): boolean {\n // Check if `hostname` is blacklisted\n if (this.notHostnames !== undefined) {\n for (const hash of hostnameHashes) {\n if (binLookup(this.notHostnames, hash)) {\n return false;\n }\n }\n }\n\n // Check if `hostname` is blacklisted by *entity*\n if (this.notEntities !== undefined) {\n for (const hash of entityHashes) {\n if (binLookup(this.notEntities, hash)) {\n return false;\n }\n }\n }\n\n // Check if `hostname` is allowed\n if (this.hostnames !== undefined || this.entities !== undefined) {\n if (this.hostnames !== undefined) {\n for (const hash of hostnameHashes) {\n if (binLookup(this.hostnames, hash)) {\n return true;\n }\n }\n }\n\n if (this.entities !== undefined) {\n for (const hash of entityHashes) {\n if (binLookup(this.entities, hash)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n return true;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n// This module implements an extremely efficient stream HTML filtering engine\n// which is able to consume an HTML document over time and filter part of it\n// using adblocker selectors.\n\nexport type HTMLSelector = readonly ['script', readonly string[]];\n\nexport function extractHTMLSelectorFromRule(rule: string): HTMLSelector | undefined {\n if (rule.startsWith('^script') === false) {\n return undefined;\n }\n\n const prefix = ':has-text(';\n const selectors: string[] = [];\n\n let index = 7;\n // ^script:has-text\n // ^ 7\n\n // Prepare for finding one or more ':has-text(' selectors in a row\n while (rule.startsWith(prefix, index)) {\n index += prefix.length;\n let currentParsingDepth = 1;\n const startOfSelectorIndex = index;\n let prev = -1; // previous character\n for (; index < rule.length && currentParsingDepth !== 0; index += 1) {\n const code = rule.charCodeAt(index);\n\n if (prev !== 92 /* '\\' */) {\n if (code === 40 /* '(' */) {\n currentParsingDepth += 1;\n }\n\n if (code === 41 /* ')' */) {\n currentParsingDepth -= 1;\n }\n }\n\n prev = code;\n }\n\n selectors.push(rule.slice(startOfSelectorIndex, index - 1));\n }\n\n if (index !== rule.length) {\n return undefined;\n }\n\n return ['script', selectors];\n}\n\nexport function extractTagsFromHtml(\n html: string,\n tag: string,\n): [[number, string][], string, string] {\n const tags: [number, string][] = [];\n const prefix = `<${tag}`;\n const suffix = `</${tag}>`;\n\n // Keep track of the beginning of current identified tag\n let index = html.indexOf(prefix);\n // Keep tracks of index immediately following last extracted tag\n let endOfLastTag = 0;\n\n while (index !== -1) {\n // Find index of end of current tag. If we do not find it, it could be\n // because it will come in the next chunk and we should try parsing it\n // again then.\n const endOfTagIndex = html.indexOf('>', index + prefix.length);\n if (endOfTagIndex === -1) {\n return [tags, html.slice(0, index), html.slice(index)];\n }\n\n // Handle short tag form <tag/> which will not have a closing tag.\n if (html.charCodeAt(endOfTagIndex - 1) === 47 /* '/' */) {\n endOfLastTag = endOfTagIndex + 1;\n tags.push([index, html.slice(index, endOfLastTag)]);\n } else {\n // Find index of closing tag '</tag>'. If we do not find it, again, it\n // could mean that it will come in next chunk and we need to try parsing\n // it again with more input.\n const indexOfClosingTag = html.indexOf(suffix, endOfTagIndex);\n if (indexOfClosingTag === -1) {\n return [tags, html.slice(0, index), html.slice(index)];\n }\n\n tags.push([index, html.slice(index, indexOfClosingTag + suffix.length)]);\n endOfLastTag = indexOfClosingTag + suffix.length;\n }\n\n index = html.indexOf(prefix, endOfLastTag);\n }\n\n // Make sure we consume as much input as possible so that we do not parse the\n // same portion of HTML again next time and we can stream chunks as early as\n // possible.\n //\n // We check if there is at least one '<' char after the end of the last\n // extracted tag; this would indicate that the next chunk might contain the\n // remaining of a valid tag. We then look up to N characters after this '<'\n // character, where N is the size of 'prefix'. The rational is that if we\n // reached this part of the code, then it cannot be a match otherwise we\n // would have returned earlier (from the loop).\n let lastClosingTagIndex = html.lastIndexOf('>');\n if (lastClosingTagIndex === -1) {\n lastClosingTagIndex = endOfLastTag;\n }\n\n const indexOfNextTag = html.indexOf('<', lastClosingTagIndex);\n // If no '<' in the remaining of input, then it means we can count this chunk\n // as fully parsed (i.e.: next chunk can be parsed independently without\n // missing a tag which would start in this one).\n if (indexOfNextTag === -1) {\n return [tags, html, ''];\n }\n\n // In case of a partial tag ending this 'html' chunk. Then check if we have\n // enough information to discard it already based on the kind of tags we are\n // looking for.\n if (\n html.length - indexOfNextTag >= prefix.length ||\n prefix.startsWith(html.slice(indexOfNextTag)) === false\n ) {\n return [tags, html, ''];\n }\n\n return [tags, html.slice(0, indexOfNextTag), html.slice(indexOfNextTag)];\n}\n\ntype Patterns = readonly [readonly string[], readonly RegExp[]][];\n\nexport function extractSelectorsFromRules(filter: HTMLSelector[]): Patterns {\n const patterns: [string[], RegExp[]][] = [];\n\n for (const [, selectors] of filter) {\n const plainPatterns: string[] = [];\n const regexpPatterns: RegExp[] = [];\n\n for (const selector of selectors) {\n if (selector.charCodeAt(0) === 47 /* '/' */) {\n if (selector.endsWith('/')) {\n regexpPatterns.push(new RegExp(selector.slice(1, -1)));\n } else if (selector.endsWith('/i')) {\n regexpPatterns.push(new RegExp(selector.slice(1, -2), 'i'));\n }\n } else {\n plainPatterns.push(selector);\n }\n }\n\n if (plainPatterns.length !== 0 || regexpPatterns.length !== 0) {\n patterns.push([plainPatterns, regexpPatterns]);\n }\n }\n\n return patterns;\n}\n\n/**\n * Check if `tag` should be removed from HTML based on `plainPatterns` and\n * `regexpPatterns`. For a tag to be removed, all elements from `plainPatterns`\n * and `regexpPatterns` must match.\n */\nfunction tagShouldBeRemoved(\n tag: string,\n plainPatterns: readonly string[],\n regexpPatterns: readonly RegExp[],\n): boolean {\n for (const pattern of plainPatterns) {\n if (tag.indexOf(pattern) === -1) {\n return false;\n }\n }\n\n for (const pattern of regexpPatterns) {\n if (pattern.test(tag) === false) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function selectTagsToRemove(\n patterns: Patterns,\n tags: [number, string][],\n): [number, string][] {\n const toRemove: [number, string][] = [];\n\n for (const tag of tags) {\n for (const [plainPatterns, regexpPatterns] of patterns) {\n if (tagShouldBeRemoved(tag[1], plainPatterns, regexpPatterns)) {\n toRemove.push(tag);\n break;\n }\n }\n }\n\n return toRemove;\n}\n\nexport function removeTagsFromHtml(html: string, toRemove: [number, string][]): string {\n if (toRemove.length === 0) {\n return html;\n }\n\n let filteredHtml = html;\n toRemove.reverse(); // make sure to remove from last to first tag (preserve indices)\n for (const [index, tag] of toRemove) {\n filteredHtml = filteredHtml.slice(0, index) + filteredHtml.slice(index + tag.length);\n }\n\n return filteredHtml;\n}\n\nexport default class StreamingHtmlFilter {\n private buffer: string;\n private readonly patterns: Patterns;\n\n constructor(selectors: HTMLSelector[]) {\n this.buffer = '';\n this.patterns = extractSelectorsFromRules(selectors);\n }\n\n public flush(): string {\n return this.buffer;\n }\n\n public write(chunk: string): string {\n // If there are no valid selectors, abort.\n if (this.patterns.length === 0) {\n return chunk;\n }\n\n // If given an empty string, abort.\n if (chunk.length === 0) {\n return chunk;\n }\n\n // Accumulate buffer + new data\n this.buffer += chunk;\n\n // Parse tags from `this.buffer`\n const [tags, parsed, rest] = extractTagsFromHtml(this.buffer, 'script');\n this.buffer = rest;\n\n // If no tags were found, just return the parsed version\n if (tags.length === 0) {\n return parsed;\n }\n\n // Perform tags filtering using `this.patterns` and `this.regexps`.\n return removeTagsFromHtml(parsed, selectTagsToRemove(this.patterns, tags));\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport {\n AST,\n classifySelector,\n SelectorType,\n parse as parseCssSelector,\n} from '@cliqz/adblocker-extended-selectors';\n\nimport { Domains } from '../engine/domains';\nimport {\n EMPTY_UINT32_ARRAY,\n StaticDataView,\n sizeOfASCII,\n sizeOfCosmeticSelector,\n sizeOfUTF8,\n sizeOfRawCosmetic,\n} from '../data-view';\nimport {\n getHostnameHashesFromLabelsBackward,\n getEntityHashesFromLabelsBackward,\n} from '../request';\nimport {\n fastHash,\n fastHashBetween,\n fastStartsWithFrom,\n getBit,\n hasUnicode,\n setBit,\n tokenize,\n} from '../utils';\nimport IFilter from './interface';\nimport { HTMLSelector, extractHTMLSelectorFromRule } from '../html-filtering';\n\nconst EMPTY_TOKENS: [Uint32Array] = [EMPTY_UINT32_ARRAY];\nexport const DEFAULT_HIDDING_STYLE: string = 'display: none !important;';\n\nconst REGEXP_UNICODE_COMMA = new RegExp(/\\\\u002C/, 'g');\nconst REGEXP_UNICODE_BACKSLASH = new RegExp(/\\\\u005C/, 'g');\n\n/**\n * Given a `selector` starting with either '#' or '.' check if what follows is\n * a simple CSS selector: /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/\n */\nfunction isSimpleSelector(selector: string): boolean {\n for (let i = 1; i < selector.length; i += 1) {\n const code: number = selector.charCodeAt(i);\n if (\n !(\n code === 45 /* '-' */ ||\n code === 95 /* '_' */ ||\n (code >= 48 && code <= 57) /* [0-9] */ ||\n (code >= 65 && code <= 90) /* [A-Z] */ ||\n (code >= 97 && code <= 122)\n ) /* [a-z] */\n ) {\n if (i < selector.length - 1) {\n // Check if what follows is a ' >' or ' ~' or ' +', in which case we\n // also consider it a simple selector and the token this filter can be\n // indexed with is the first selector.\n const nextCode = selector.charCodeAt(i + 1);\n if (\n code === 91 /* '[' */ ||\n code === 46 /* '.' */ ||\n code === 58 /* ':' */ ||\n (code === 32 /* ' ' */ &&\n (nextCode === 62 /* '>' */ ||\n nextCode === 43 /* '+' */ ||\n nextCode === 126 /* '~' */ ||\n nextCode === 46 /* '.' */ ||\n nextCode === 35)) /* '#' */\n ) {\n return true;\n }\n }\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Given a `selector` starting with either 'a[' or '[', check if what follows\n * is a simple href attribute selector of the form: 'href^=' or 'href*='.\n */\nfunction isSimpleHrefSelector(selector: string, start: number): boolean {\n return (\n selector.startsWith('href^=\"', start) ||\n selector.startsWith('href*=\"', start) ||\n selector.startsWith('href=\"', start)\n );\n}\n\n/**\n * Validate CSS selector. There is a fast path for simple selectors (e.g.: #foo\n * or .bar) which are the most common case. For complex ones, we rely on\n * `Element.matches` (if available).\n */\nconst isValidCss = (() => {\n const div =\n typeof document !== 'undefined'\n ? document.createElement('div')\n : {\n matches: () => {\n /* noop */\n },\n };\n const matches = (selector: string): void | boolean => div.matches(selector);\n const validSelectorRe = /^[#.]?[\\w-.]+$/;\n\n return function isValidCssImpl(selector: string): boolean {\n if (validSelectorRe.test(selector)) {\n return true;\n }\n\n try {\n matches(selector);\n } catch (ex) {\n return false;\n }\n\n return true;\n };\n})();\n\n/**\n * Masks used to store options of cosmetic filters in a bitmask.\n */\nconst enum COSMETICS_MASK {\n unhide = 1 << 0,\n scriptInject = 1 << 1,\n isUnicode = 1 << 2,\n isClassSelector = 1 << 3,\n isIdSelector = 1 << 4,\n isHrefSelector = 1 << 5,\n remove = 1 << 6,\n extended = 1 << 7,\n}\n\nfunction computeFilterId(\n mask: number,\n selector: string | undefined,\n domains: Domains | undefined,\n style: string | undefined,\n): number {\n let hash = (5437 * 33) ^ mask;\n\n if (selector !== undefined) {\n for (let i = 0; i < selector.length; i += 1) {\n hash = (hash * 33) ^ selector.charCodeAt(i);\n }\n }\n\n if (domains !== undefined) {\n hash = domains.updateId(hash);\n }\n\n if (style !== undefined) {\n for (let i = 0; i < style.length; i += 1) {\n hash = (hash * 33) ^ style.charCodeAt(i);\n }\n }\n\n return hash >>> 0;\n}\n\n/***************************************************************************\n * Cosmetic filters parsing\n * ************************************************************************ */\n\nexport default class CosmeticFilter implements IFilter {\n /**\n * Given a line that we know contains a cosmetic filter, create a CosmeticFiler\n * instance out of it. This function should be *very* efficient, as it will be\n * used to parse tens of thousands of lines.\n */\n public static parse(line: string, debug: boolean = false): CosmeticFilter | null {\n const rawLine = line;\n\n // Mask to store attributes. Each flag (unhide, scriptInject, etc.) takes\n // only 1 bit at a specific offset defined in COSMETICS_MASK.\n // cf: COSMETICS_MASK for the offset of each property\n let mask = 0;\n let selector: string | undefined;\n let domains: Domains | undefined;\n let style: string | undefined;\n const sharpIndex = line.indexOf('#');\n\n // Start parsing the line\n const afterSharpIndex = sharpIndex + 1;\n let suffixStartIndex = afterSharpIndex + 1;\n\n // hostname1,hostname2#?#.selector\n // hostname1,hostname2#@#.selector\n // ^^ ^\n // || |\n // || suffixStartIndex\n // |afterSharpIndex\n // sharpIndex\n\n // Check if unhide\n if (line.length > afterSharpIndex) {\n if (line[afterSharpIndex] === '@') {\n mask = setBit(mask, COSMETICS_MASK.unhide);\n suffixStartIndex += 1;\n } else if (line[afterSharpIndex] === '?') {\n suffixStartIndex += 1;\n }\n }\n\n if (suffixStartIndex >= line.length) {\n return null;\n }\n\n // Parse hostnames and entitites as well as their negations.\n //\n // - ~hostname##.selector\n // - hostname##.selector\n // - entity.*##.selector\n // - ~entity.*##.selector\n //\n // Each kind will have its own Uint32Array containing hashes, sorted by\n // number of labels considered. This allows a compact representation of\n // hostnames and fast matching without any string copy.\n if (sharpIndex > 0) {\n domains = Domains.parse(line.slice(0, sharpIndex).split(','), debug);\n }\n\n if (line.endsWith(':remove()')) {\n // ##selector:remove()\n mask = setBit(mask, COSMETICS_MASK.remove);\n mask = setBit(mask, COSMETICS_MASK.extended);\n line = line.slice(0, -9);\n } else if (\n line.length - suffixStartIndex >= 8 &&\n line.endsWith(')') &&\n line.indexOf(':style(', suffixStartIndex) !== -1\n ) {\n // ##selector:style(...)\n const indexOfStyle = line.indexOf(':style(', suffixStartIndex);\n style = line.slice(indexOfStyle + 7, -1);\n line = line.slice(0, indexOfStyle);\n }\n\n // Deal with HTML filters\n if (line.charCodeAt(suffixStartIndex) === 94 /* '^' */) {\n if (\n fastStartsWithFrom(line, 'script:has-text(', suffixStartIndex + 1) === false ||\n line.charCodeAt(line.length - 1) !== 41 /* ')' */\n ) {\n return null;\n }\n\n // NOTE: currently only ^script:has-text(...) is supported.\n //\n // ^script:has-text(selector)\n // ^ ^\n // | |\n // | |\n // | line.length\n // |\n // suffixStartIndex\n //\n selector = line.slice(suffixStartIndex, line.length);\n if (extractHTMLSelectorFromRule(selector) === undefined) {\n return null;\n }\n } else if (\n line.length - suffixStartIndex > 4 &&\n line.charCodeAt(suffixStartIndex) === 43 /* '+' */ &&\n fastStartsWithFrom(line, '+js(', suffixStartIndex)\n ) {\n // Generic scriptlets are invalid, unless they are un-hide\n if (\n (domains === undefined ||\n (domains.hostnames === undefined && domains.entities === undefined)) &&\n getBit(mask, COSMETICS_MASK.unhide) === false\n ) {\n return null;\n }\n\n mask = setBit(mask, COSMETICS_MASK.scriptInject);\n selector = line.slice(suffixStartIndex + 4, line.length - 1);\n\n // An empty scriptlet (i.e. '+js()') can be specified to cancel injections\n // on a specific domain or globally. It does not make sense though to have\n // an empty scriptlet without an exception (i.e. '#@#' is mandatory).\n if (getBit(mask, COSMETICS_MASK.unhide) === false && selector.length === 0) {\n return null;\n }\n } else {\n selector = line.slice(suffixStartIndex);\n const selectorType = classifySelector(selector);\n if (selectorType === SelectorType.Extended) {\n mask = setBit(mask, COSMETICS_MASK.extended);\n } else if (selectorType === SelectorType.Invalid || !isValidCss(selector)) {\n // console.error('Invalid', line);\n // TODO - maybe perform `isValidCss` from the other module.\n return null;\n }\n }\n\n // Extended selectors should always be specific to some domain.\n if (domains === undefined && getBit(mask, COSMETICS_MASK.extended) === true) {\n return null;\n }\n\n if (selector !== undefined) {\n // Check if unicode appears in selector\n if (hasUnicode(selector)) {\n mask = setBit(mask, COSMETICS_MASK.isUnicode);\n }\n\n // Classify selector\n if (\n getBit(mask, COSMETICS_MASK.scriptInject) === false &&\n getBit(mask, COSMETICS_MASK.remove) === false &&\n getBit(mask, COSMETICS_MASK.extended) === false &&\n selector.startsWith('^') === false\n ) {\n const c0 = selector.charCodeAt(0);\n const c1 = selector.charCodeAt(1);\n const c2 = selector.charCodeAt(2);\n\n // Check if we have a specific case of simple selector (id, class or\n // href) These are the most common filters and will benefit greatly from\n // a custom dispatch mechanism.\n if (getBit(mask, COSMETICS_MASK.scriptInject) === false) {\n if (c0 === 46 /* '.' */ && isSimpleSelector(selector)) {\n mask = setBit(mask, COSMETICS_MASK.isClassSelector);\n } else if (c0 === 35 /* '#' */ && isSimpleSelector(selector)) {\n mask = setBit(mask, COSMETICS_MASK.isIdSelector);\n } else if (\n c0 === 97 /* a */ &&\n c1 === 91 /* '[' */ &&\n c2 === 104 /* 'h' */ &&\n isSimpleHrefSelector(selector, 2)\n ) {\n mask = setBit(mask, COSMETICS_MASK.isHrefSelector);\n } else if (\n c0 === 91 /* '[' */ &&\n c1 === 104 /* 'h' */ &&\n isSimpleHrefSelector(selector, 1)\n ) {\n mask = setBit(mask, COSMETICS_MASK.isHrefSelector);\n }\n }\n }\n }\n\n return new CosmeticFilter({\n mask,\n rawLine: debug === true ? rawLine : undefined,\n selector,\n style,\n domains,\n });\n }\n\n /**\n * Deserialize cosmetic filters. The code accessing the buffer should be\n * symetrical to the one in `serializeCosmeticFilter`.\n */\n public static deserialize(buffer: StaticDataView): CosmeticFilter {\n const mask = buffer.getUint8();\n const isUnicode = getBit(mask, COSMETICS_MASK.isUnicode);\n const optionalParts = buffer.getUint8();\n const selector = isUnicode ? buffer.getUTF8() : buffer.getCosmeticSelector();\n\n // The order of these fields should be the same as when we serialize them.\n return new CosmeticFilter({\n // Mandatory fields\n mask,\n selector,\n\n // Optional fields\n domains: (optionalParts & 1) === 1 ? Domains.deserialize(buffer) : undefined,\n rawLine: (optionalParts & 2) === 2 ? buffer.getRawCosmetic() : undefined,\n style: (optionalParts & 4) === 4 ? buffer.getASCII() : undefined,\n });\n }\n\n // Mandatory fields\n public readonly mask: number;\n public readonly selector: string;\n\n public readonly domains: Domains | undefined;\n\n public readonly style: string | undefined;\n public readonly rawLine: string | undefined;\n\n private id: number | undefined;\n\n constructor({\n mask,\n selector,\n domains,\n rawLine,\n style,\n }: {\n mask: number;\n domains: Domains | undefined;\n rawLine: string | undefined;\n selector: string;\n style: string | undefined;\n }) {\n this.mask = mask;\n this.selector = selector;\n this.domains = domains;\n this.style = style;\n\n this.id = undefined;\n this.rawLine = rawLine;\n }\n\n public isCosmeticFilter(): boolean {\n return true;\n }\n\n public isNetworkFilter(): boolean {\n return false;\n }\n\n /**\n * The format of a cosmetic filter is:\n *\n * | mask | selector length | selector... | hostnames length | hostnames...\n * 32 16 16\n *\n * The header (mask) is 32 bits, then we have a total of 32 bits to store the\n * length of `selector` and `hostnames` (16 bits each).\n *\n * Improvements similar to the onces mentioned in `serializeNetworkFilters`\n * could be applied here, to get a more compact representation.\n */\n public serialize(buffer: StaticDataView): void {\n // Mandatory fields\n buffer.pushUint8(this.mask);\n const index = buffer.getPos();\n buffer.pushUint8(0);\n\n if (this.isUnicode()) {\n buffer.pushUTF8(this.selector);\n } else {\n buffer.pushCosmeticSelector(this.selector);\n }\n\n // This bit-mask indicates which optional parts of the filter were serialized.\n let optionalParts = 0;\n\n if (this.domains !== undefined) {\n optionalParts |= 1;\n this.domains.serialize(buffer);\n }\n\n if (this.rawLine !== undefined) {\n optionalParts |= 2;\n buffer.pushRawCosmetic(this.rawLine);\n }\n\n if (this.style !== undefined) {\n optionalParts |= 4;\n buffer.pushASCII(this.style);\n }\n\n buffer.setByte(index, optionalParts);\n }\n\n /**\n * Return an estimation of the size (in bytes) needed to persist this filter\n * in a DataView. This does not need to be 100% accurate but should be an\n * upper-bound. It should also be as fast as possible.\n */\n public getSerializedSize(compression: boolean): number {\n let estimate: number = 1 + 1; // mask (1 byte) + optional parts (1 byte)\n\n if (this.isUnicode()) {\n estimate += sizeOfUTF8(this.selector);\n } else {\n estimate += sizeOfCosmeticSelector(this.selector, compression);\n }\n\n if (this.domains !== undefined) {\n estimate += this.domains.getSerializedSize();\n }\n\n if (this.rawLine !== undefined) {\n estimate += sizeOfRawCosmetic(this.rawLine, compression);\n }\n\n if (this.style !== undefined) {\n estimate += sizeOfASCII(this.style);\n }\n\n return estimate;\n }\n\n /**\n * Create a more human-readable version of this filter. It is mainly used for\n * debugging purpose, as it will expand the values stored in the bit mask.\n */\n public toString(): string {\n if (this.rawLine !== undefined) {\n return this.rawLine;\n }\n\n let filter = '';\n\n if (this.domains !== undefined) {\n if (this.domains.parts !== undefined) {\n filter += this.domains.parts;\n } else {\n filter += '<hostnames>';\n }\n }\n\n if (this.isUnhide()) {\n filter += '#@#';\n } else {\n filter += '##';\n }\n\n if (this.isScriptInject()) {\n filter += '+js(';\n filter += this.selector;\n filter += ')';\n } else {\n filter += this.selector;\n }\n\n return filter;\n }\n\n public match(hostname: string, domain: string): boolean {\n // Not constraint on hostname, match is true\n if (this.hasHostnameConstraint() === false) {\n return true;\n }\n\n // No `hostname` available but this filter has some constraints on hostname.\n if (!hostname && this.hasHostnameConstraint()) {\n return false;\n }\n\n if (this.domains !== undefined) {\n // TODO - this hashing could be re-used between cosmetics by using an\n // abstraction like `Request` (similar to network filters matching).\n // Maybe could we reuse `Request` directly without any change?\n return this.domains.match(\n hostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getHostnameHashesFromLabelsBackward(hostname, domain),\n hostname.length === 0\n ? EMPTY_UINT32_ARRAY\n : getEntityHashesFromLabelsBackward(hostname, domain),\n );\n }\n\n return true;\n }\n\n /**\n * Get tokens for this filter. It can be indexed multiple times if multiple\n * hostnames are specified (e.g.: host1,host2##.selector).\n */\n public getTokens(): Uint32Array[] {\n const tokens: Uint32Array[] = [];\n\n // Note, we do not need to use negated domains or entities as tokens here\n // since they will by definition not match on their own, unless accompanied\n // by a domain or entity. Instead, they are handled in\n // `CosmeticFilterBucket.getCosmeticsFilters(...)`.\n\n if (this.domains !== undefined) {\n const { hostnames, entities } = this.domains;\n\n if (hostnames !== undefined) {\n for (const hostname of hostnames) {\n tokens.push(new Uint32Array([hostname]));\n }\n }\n\n if (entities !== undefined) {\n for (const entity of entities) {\n tokens.push(new Uint32Array([entity]));\n }\n }\n }\n\n // Here we only take selector into account if the filter is not unHide.\n if (tokens.length === 0 && this.isUnhide() === false) {\n if (this.isIdSelector() || this.isClassSelector()) {\n // Here we try to identify the end of selector si that we can extract a\n // valid token out of it. In all these examples, 'selector' is our\n // token:\n //\n // .selector[...]\n // #selector[...]\n // #selector ~ foo\n // .selector:not(...)\n // .selector.foo\n //\n // We now try to identify the first valid end of selector which will\n // also be the end of our token: space, bracket, colon, dot.\n let endOfSelector = 1;\n const selector = this.selector;\n for (; endOfSelector < selector.length; endOfSelector += 1) {\n const code = selector.charCodeAt(endOfSelector);\n if (\n code === 32 /* ' ' */ ||\n code === 46 /* '.' */ ||\n code === 58 /* ':' */ ||\n code === 91 /* '[' */\n ) {\n break;\n }\n }\n\n const arr = new Uint32Array(1);\n arr[0] = fastHashBetween(selector, 1, endOfSelector);\n tokens.push(arr);\n } else if (this.isHrefSelector() === true) {\n const selector: string = this.getSelector();\n\n // Locate 'href' in selector\n let hrefIndex = selector.indexOf('href');\n if (hrefIndex === -1) {\n return EMPTY_TOKENS;\n }\n hrefIndex += 4;\n\n // Tokenize optimally depending on the kind of selector: 'href=',\n // 'href*=', 'href^='.\n let skipFirstToken: boolean = false;\n let skipLastToken: boolean = true;\n if (selector.charCodeAt(hrefIndex) === 42 /* '*' */) {\n // skip: '*'\n skipFirstToken = true;\n hrefIndex += 1;\n } else if (selector.charCodeAt(hrefIndex) === 94 /* '^' */) {\n // skip: '^'\n hrefIndex += 1;\n } else {\n skipLastToken = false;\n }\n\n hrefIndex += 2; // skip: '=\"'\n\n // Locate end of href\n const hrefEnd = selector.indexOf('\"', hrefIndex);\n if (hrefEnd === -1) {\n // That cannot happen unless the filter is not well-formed. In this\n // case, we just return no tokens, which will result in this filter\n // ending up in the \"wildcard\" bucket of the index.\n return EMPTY_TOKENS;\n }\n\n tokens.push(\n tokenize(this.selector.slice(hrefIndex, hrefEnd), skipFirstToken, skipLastToken),\n );\n }\n }\n\n if (tokens.length === 0) {\n return EMPTY_TOKENS;\n }\n\n return tokens;\n }\n\n public parseScript(): { name: string; args: string[] } | undefined {\n const selector = this.getSelector();\n if (selector.length === 0) {\n return undefined;\n }\n\n const parts: string[] = [];\n\n let index = 0;\n let lastComaIndex = -1;\n let inDoubleQuotes = false;\n let inSingleQuotes = false;\n let inRegexp = false;\n let objectNesting = 0;\n let lastCharIsBackslash = false;\n let inArgument = false;\n\n for (; index < selector.length; index += 1) {\n const char = selector[index];\n\n if (lastCharIsBackslash === false) {\n if (inDoubleQuotes === true) {\n if (char === '\"') {\n inDoubleQuotes = false;\n }\n } else if (inSingleQuotes === true) {\n if (char === \"'\") {\n inSingleQuotes = false;\n }\n } else if (objectNesting !== 0) {\n if (char === '{') {\n objectNesting += 1;\n } else if (char === '}') {\n objectNesting -= 1;\n } else if (char === '\"') {\n inDoubleQuotes = true;\n } else if (char === \"'\") {\n inSingleQuotes = true;\n }\n } else if (inRegexp === true) {\n if (char === '/') {\n inRegexp = false;\n }\n } else {\n if (inArgument === false) {\n if (char === ' ') {\n // ignore\n } else if (char === '\"' && selector.indexOf('\"', index + 1) > 0) {\n inDoubleQuotes = true;\n } else if (char === \"'\" && selector.indexOf(\"'\", index + 1) > 0) {\n inSingleQuotes = true;\n } else if (char === '{' && selector.indexOf('}', index + 1) > 0) {\n objectNesting += 1;\n } else if (char === '/' && selector.indexOf('/', index + 1) > 0) {\n inRegexp = true;\n } else {\n inArgument = true;\n }\n }\n if (char === ',') {\n parts.push(selector.slice(lastComaIndex + 1, index).trim());\n lastComaIndex = index;\n inArgument = false;\n }\n }\n }\n\n lastCharIsBackslash = char === '\\\\';\n }\n\n parts.push(selector.slice(lastComaIndex + 1).trim());\n\n if (parts.length === 0) {\n return undefined;\n }\n\n const args = parts\n .slice(1)\n .map((part) => {\n if (\n (part.startsWith(`'`) && part.endsWith(`'`)) ||\n (part.startsWith(`\"`) && part.endsWith(`\"`))\n ) {\n return part.substring(1, part.length - 1);\n }\n return part;\n })\n .map((part) =>\n part.replace(REGEXP_UNICODE_COMMA, ',').replace(REGEXP_UNICODE_BACKSLASH, '\\\\'),\n );\n return { name: parts[0], args };\n }\n\n public getScript(js: Map<string, string>): string | undefined {\n const parsed = this.parseScript();\n if (parsed === undefined) {\n return undefined;\n }\n\n const { name, args } = parsed;\n\n let script = js.get(name);\n if (script !== undefined) {\n for (let i = 0; i < args.length; i += 1) {\n // escape some characters so they wont get evaluated with escape characters during script injection\n const arg = args[i].replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n script = script.replace(`{{${i + 1}}}`, arg);\n }\n\n return script;\n } // TODO - else throw an exception?\n\n return undefined;\n }\n\n public hasHostnameConstraint(): boolean {\n return this.domains !== undefined;\n }\n\n public getId(): number {\n if (this.id === undefined) {\n this.id = computeFilterId(this.mask, this.selector, this.domains, this.style);\n }\n return this.id;\n }\n\n public hasCustomStyle(): boolean {\n return this.style !== undefined;\n }\n\n public getStyle(): string {\n return this.style || DEFAULT_HIDDING_STYLE;\n }\n\n public getStyleAttributeHash(): string {\n return `s${fastHash(this.getStyle())}`;\n }\n\n public getSelector(): string {\n return this.selector;\n }\n\n public getSelectorAST(): AST | undefined {\n return parseCssSelector(this.getSelector());\n }\n\n public getExtendedSelector(): HTMLSelector | undefined {\n return extractHTMLSelectorFromRule(this.selector);\n }\n\n public isExtended(): boolean {\n return getBit(this.mask, COSMETICS_MASK.extended);\n }\n\n public isRemove(): boolean {\n return getBit(this.mask, COSMETICS_MASK.remove);\n }\n\n public isUnhide(): boolean {\n return getBit(this.mask, COSMETICS_MASK.unhide);\n }\n\n public isScriptInject(): boolean {\n return getBit(this.mask, COSMETICS_MASK.scriptInject);\n }\n\n public isCSS(): boolean {\n return this.isScriptInject() === false;\n }\n\n public isIdSelector(): boolean {\n return getBit(this.mask, COSMETICS_MASK.isIdSelector);\n }\n\n public isClassSelector(): boolean {\n return getBit(this.mask, COSMETICS_MASK.isClassSelector);\n }\n\n public isHrefSelector(): boolean {\n return getBit(this.mask, COSMETICS_MASK.isHrefSelector);\n }\n\n public isUnicode(): boolean {\n return getBit(this.mask, COSMETICS_MASK.isUnicode);\n }\n\n public isHtmlFiltering(): boolean {\n return this.getSelector().startsWith('^');\n }\n\n // A generic hide cosmetic filter is one that:\n //\n // * Do not have a domain specified. \"Hide this element on all domains\"\n // * Have only domain exceptions specified. \"Hide this element on all domains except example.com\"\n //\n // For example: ~example.com##.ad is a generic filter as well!\n public isGenericHide(): boolean {\n return this?.domains?.hostnames === undefined && this?.domains?.entities === undefined;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { Domains } from '../engine/domains';\nimport {\n StaticDataView,\n sizeOfNetworkCSP,\n sizeOfNetworkFilter,\n sizeOfNetworkHostname,\n sizeOfNetworkRedirect,\n sizeOfUTF8,\n sizeOfRawNetwork,\n} from '../data-view';\nimport { toASCII } from '../punycode';\nimport Request, { RequestType, NORMALIZED_TYPE_TOKEN } from '../request';\nimport { TOKENS_BUFFER } from '../tokens-buffer';\nimport {\n bitCount,\n clearBit,\n fastHash,\n fastStartsWith,\n fastStartsWithFrom,\n getBit,\n hasUnicode,\n isAlpha,\n isDigit,\n setBit,\n tokenizeInPlace,\n tokenizeRegexInPlace,\n tokenizeWithWildcardsInPlace,\n} from '../utils';\nimport IFilter from './interface';\n\nconst HTTP_HASH = fastHash('http');\nconst HTTPS_HASH = fastHash('https');\n\nfunction isAllowedHostname(ch: number): boolean {\n return (\n isDigit(ch) || isAlpha(ch) || ch === 95 /* '_' */ || ch === 45 /* '-' */ || ch === 46 /* '.' */\n );\n}\n\nconst NORMALIZE_OPTIONS: { [option: string]: string } = {\n 'document': 'doc',\n 'first-party': '1p',\n 'generichide': 'ghide',\n 'object-subrequest': 'object',\n 'stylesheet': 'css',\n 'subdocument': 'frame',\n 'third-party': '3p',\n 'xmlhttprequest': 'xhr',\n '~first-party': '3p',\n '~third-party': '1p',\n 'all': '',\n};\n\n/**\n * Normalize a raw filter by replacing options with their canonical forms. For\n * example `||foo.com$stylesheet,first-party,xhr` would be normalized to\n * `||foo.com$css,1p,xhr`.\n */\nconst REGEX =\n /all|~third-party|~first-party|third-party|first-party|object-subrequest|stylesheet|subdocument|xmlhttprequest|document|generichide/g;\nexport function normalizeRawFilterOptions(rawFilter: string): string {\n rawFilter = rawFilter.toLowerCase();\n\n let indexOfOptions = rawFilter.lastIndexOf('$');\n if (indexOfOptions === -1) {\n return rawFilter;\n }\n\n // Remove trailing '*' if possible\n if (indexOfOptions !== 0 && rawFilter[indexOfOptions - 1] === '*') {\n rawFilter = rawFilter.slice(0, indexOfOptions - 1) + rawFilter.slice(indexOfOptions);\n indexOfOptions -= 1;\n }\n\n // Normalize options\n const options = rawFilter.slice(indexOfOptions + 1);\n const normalizedOptions = options\n .replace(REGEX, (option) => {\n const normalized = NORMALIZE_OPTIONS[option];\n if (normalized === undefined) {\n return option;\n }\n return normalized;\n })\n .split(',')\n .sort()\n .join(',');\n\n if (options === normalizedOptions) {\n return rawFilter;\n }\n\n if (normalizedOptions === '') {\n return rawFilter.slice(0, indexOfOptions);\n }\n\n return `${rawFilter.slice(0, indexOfOptions)}$${normalizedOptions}`;\n}\n\n/**\n * Masks used to store options of network filters in a bitmask.\n */\nexport const enum NETWORK_FILTER_MASK {\n // Request Type\n fromDocument = 1 << 0,\n fromFont = 1 << 1,\n fromHttp = 1 << 2,\n fromHttps = 1 << 3,\n fromImage = 1 << 4,\n fromMedia = 1 << 5,\n fromObject = 1 << 6,\n fromOther = 1 << 7,\n fromPing = 1 << 8,\n fromScript = 1 << 9,\n fromStylesheet = 1 << 10,\n fromSubdocument = 1 << 11,\n fromWebsocket = 1 << 12, // e.g.: ws, wss\n fromXmlHttpRequest = 1 << 13,\n\n // Partiness\n firstParty = 1 << 14,\n thirdParty = 1 << 15,\n\n // Options\n // FREE - 1 << 16\n isBadFilter = 1 << 17,\n isCSP = 1 << 18,\n isGenericHide = 1 << 19,\n isImportant = 1 << 20,\n isSpecificHide = 1 << 21,\n\n // Kind of patterns\n isFullRegex = 1 << 22,\n isRegex = 1 << 23,\n isUnicode = 1 << 24,\n isLeftAnchor = 1 << 25,\n isRightAnchor = 1 << 26,\n isException = 1 << 27,\n isHostnameAnchor = 1 << 28,\n isRedirectRule = 1 << 29,\n}\n\n/**\n * Mask used when a network filter can be applied on any content type.\n */\nconst FROM_ANY: number =\n NETWORK_FILTER_MASK.fromDocument |\n NETWORK_FILTER_MASK.fromFont |\n NETWORK_FILTER_MASK.fromImage |\n NETWORK_FILTER_MASK.fromMedia |\n NETWORK_FILTER_MASK.fromObject |\n NETWORK_FILTER_MASK.fromOther |\n NETWORK_FILTER_MASK.fromPing |\n NETWORK_FILTER_MASK.fromScript |\n NETWORK_FILTER_MASK.fromStylesheet |\n NETWORK_FILTER_MASK.fromSubdocument |\n NETWORK_FILTER_MASK.fromWebsocket |\n NETWORK_FILTER_MASK.fromXmlHttpRequest;\n\n/**\n * Map content type value to mask the corresponding mask.\n * ref: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy\n */\nconst REQUEST_TYPE_TO_MASK: { [s in RequestType]: number | undefined } = {\n beacon: NETWORK_FILTER_MASK.fromPing, // fromOther?\n document: NETWORK_FILTER_MASK.fromDocument,\n cspviolationreport: NETWORK_FILTER_MASK.fromOther,\n fetch: NETWORK_FILTER_MASK.fromXmlHttpRequest,\n font: NETWORK_FILTER_MASK.fromFont,\n image: NETWORK_FILTER_MASK.fromImage,\n imageset: NETWORK_FILTER_MASK.fromImage,\n mainFrame: NETWORK_FILTER_MASK.fromDocument,\n main_frame: NETWORK_FILTER_MASK.fromDocument,\n media: NETWORK_FILTER_MASK.fromMedia,\n object: NETWORK_FILTER_MASK.fromObject,\n object_subrequest: NETWORK_FILTER_MASK.fromObject,\n ping: NETWORK_FILTER_MASK.fromPing, // fromOther?\n script: NETWORK_FILTER_MASK.fromScript,\n stylesheet: NETWORK_FILTER_MASK.fromStylesheet,\n subFrame: NETWORK_FILTER_MASK.fromSubdocument,\n sub_frame: NETWORK_FILTER_MASK.fromSubdocument,\n webSocket: NETWORK_FILTER_MASK.fromWebsocket,\n websocket: NETWORK_FILTER_MASK.fromWebsocket,\n xhr: NETWORK_FILTER_MASK.fromXmlHttpRequest,\n xmlhttprequest: NETWORK_FILTER_MASK.fromXmlHttpRequest,\n\n // Other\n cspReport: NETWORK_FILTER_MASK.fromOther,\n csp_report: NETWORK_FILTER_MASK.fromOther,\n eventsource: NETWORK_FILTER_MASK.fromOther,\n manifest: NETWORK_FILTER_MASK.fromOther,\n other: NETWORK_FILTER_MASK.fromOther,\n prefetch: NETWORK_FILTER_MASK.fromOther,\n preflight: NETWORK_FILTER_MASK.fromOther,\n signedexchange: NETWORK_FILTER_MASK.fromOther,\n speculative: NETWORK_FILTER_MASK.fromOther,\n texttrack: NETWORK_FILTER_MASK.fromOther,\n web_manifest: NETWORK_FILTER_MASK.fromOther,\n xml_dtd: NETWORK_FILTER_MASK.fromOther,\n xslt: NETWORK_FILTER_MASK.fromOther,\n};\n\nfunction getListOfRequestTypesNegated(filter: NetworkFilter): RequestType[] {\n const types: RequestType[] = [];\n\n if (filter.fromDocument() === false) {\n types.push('document');\n }\n\n if (filter.fromImage() === false) {\n types.push('image');\n }\n\n if (filter.fromMedia() === false) {\n types.push('media');\n }\n\n if (filter.fromObject() === false) {\n types.push('object');\n }\n\n if (filter.fromOther() === false) {\n types.push('other');\n }\n\n if (filter.fromPing() === false) {\n types.push('ping');\n }\n\n if (filter.fromScript() === false) {\n types.push('script');\n }\n\n if (filter.fromStylesheet() === false) {\n types.push('stylesheet');\n }\n\n if (filter.fromSubdocument() === false) {\n types.push('sub_frame');\n }\n\n if (filter.fromWebsocket() === false) {\n types.push('websocket');\n }\n\n if (filter.fromXmlHttpRequest() === false) {\n types.push('xhr');\n }\n\n if (filter.fromFont() === false) {\n types.push('font');\n }\n\n return types;\n}\n\nfunction getListOfRequestTypes(filter: NetworkFilter): RequestType[] {\n const types: RequestType[] = [];\n\n if (filter.fromDocument()) {\n types.push('document');\n }\n\n if (filter.fromImage()) {\n types.push('image');\n }\n\n if (filter.fromMedia()) {\n types.push('media');\n }\n\n if (filter.fromObject()) {\n types.push('object');\n }\n\n if (filter.fromOther()) {\n types.push('other');\n }\n\n if (filter.fromPing()) {\n types.push('ping');\n }\n\n if (filter.fromScript()) {\n types.push('script');\n }\n\n if (filter.fromStylesheet()) {\n types.push('stylesheet');\n }\n\n if (filter.fromSubdocument()) {\n types.push('sub_frame');\n }\n\n if (filter.fromWebsocket()) {\n types.push('websocket');\n }\n\n if (filter.fromXmlHttpRequest()) {\n types.push('xhr');\n }\n\n if (filter.fromFont()) {\n types.push('font');\n }\n\n return types;\n}\n\nfunction computeFilterId(\n csp: string | undefined,\n mask: number,\n filter: string | undefined,\n hostname: string | undefined,\n domains: Domains | undefined,\n denyallow: Domains | undefined,\n redirect: string | undefined,\n): number {\n let hash = (7907 * 33) ^ mask;\n\n if (csp !== undefined) {\n for (let i = 0; i < csp.length; i += 1) {\n hash = (hash * 33) ^ csp.charCodeAt(i);\n }\n }\n\n if (domains !== undefined) {\n hash = domains.updateId(hash);\n }\n\n if (denyallow !== undefined) {\n hash = denyallow.updateId(hash);\n }\n\n if (filter !== undefined) {\n for (let i = 0; i < filter.length; i += 1) {\n hash = (hash * 33) ^ filter.charCodeAt(i);\n }\n }\n\n if (hostname !== undefined) {\n for (let i = 0; i < hostname.length; i += 1) {\n hash = (hash * 33) ^ hostname.charCodeAt(i);\n }\n }\n\n if (redirect !== undefined) {\n for (let i = 0; i < redirect.length; i += 1) {\n hash = (hash * 33) ^ redirect.charCodeAt(i);\n }\n }\n\n return hash >>> 0;\n}\n\n/**\n * Compiles a filter pattern to a regex. This is only performed *lazily* for\n * filters containing at least a * or ^ symbol. Because Regexes are expansive,\n * we try to convert some patterns to plain filters.\n */\nfunction compileRegex(\n filter: string,\n isLeftAnchor: boolean,\n isRightAnchor: boolean,\n isFullRegex: boolean,\n): RegExp {\n if (isFullRegex === true) {\n return new RegExp(filter.slice(1, filter.length - 1), 'i');\n }\n\n // Escape special regex characters: |.$+?{}()[]\\\n filter = filter.replace(/([|.$+?{}()[\\]\\\\])/g, '\\\\$1');\n\n // * can match anything\n filter = filter.replace(/\\*/g, '.*');\n\n // ^ can match any separator or the end of the pattern\n filter = filter.replace(/\\^/g, '(?:[^\\\\w\\\\d_.%-]|$)');\n\n // Should match end of url\n if (isRightAnchor) {\n filter = `${filter}$`;\n }\n\n if (isLeftAnchor) {\n filter = `^${filter}`;\n }\n\n return new RegExp(filter);\n}\n\nconst MATCH_ALL = new RegExp('');\n\nexport default class NetworkFilter implements IFilter {\n public static parse(line: string, debug: boolean = false): NetworkFilter | null {\n // Represent options as a bitmask\n let mask: number =\n NETWORK_FILTER_MASK.thirdParty |\n NETWORK_FILTER_MASK.firstParty |\n NETWORK_FILTER_MASK.fromHttps |\n NETWORK_FILTER_MASK.fromHttp;\n\n // Temporary masks for positive (e.g.: $script) and negative (e.g.: $~script)\n // content type options.\n let cptMaskPositive: number = 0;\n let cptMaskNegative: number = FROM_ANY;\n\n let hostname: string | undefined;\n let domains: Domains | undefined;\n let denyallow: Domains | undefined;\n let redirect: string | undefined;\n let csp: string | undefined;\n\n // Start parsing\n let filterIndexStart: number = 0;\n let filterIndexEnd: number = line.length;\n\n // @@filter == Exception\n if (line.charCodeAt(0) === 64 /* '@' */ && line.charCodeAt(1) === 64 /* '@' */) {\n filterIndexStart += 2;\n mask = setBit(mask, NETWORK_FILTER_MASK.isException);\n }\n\n // filter$options == Options\n // ^ ^\n // | |\n // | optionsIndex\n // filterIndexStart\n const optionsIndex: number = line.lastIndexOf('$');\n if (optionsIndex !== -1 && line.charCodeAt(optionsIndex + 1) !== 47 /* '/' */) {\n // Parse options and set flags\n filterIndexEnd = optionsIndex;\n\n // --------------------------------------------------------------------- //\n // parseOptions\n // --------------------------------------------------------------------- //\n for (const rawOption of line.slice(optionsIndex + 1).split(',')) {\n const negation = rawOption.charCodeAt(0) === 126; /* '~' */\n let option = negation === true ? rawOption.slice(1) : rawOption;\n\n // Check for options: option=value1|value2\n let optionValue: string = '';\n const indexOfEqual: number = option.indexOf('=');\n if (indexOfEqual !== -1) {\n optionValue = option.slice(indexOfEqual + 1);\n option = option.slice(0, indexOfEqual);\n }\n\n switch (option) {\n case 'denyallow': {\n denyallow = Domains.parse(optionValue.split('|'), debug);\n break;\n }\n case 'domain': {\n // domain list starting or ending with '|' is invalid\n if (\n optionValue.charCodeAt(0) === 124 /* '|' */ ||\n optionValue.charCodeAt(optionValue.length - 1) === 124 /* '|' */\n ) {\n return null;\n }\n\n domains = Domains.parse(optionValue.split('|'), debug);\n break;\n }\n case 'badfilter':\n mask = setBit(mask, NETWORK_FILTER_MASK.isBadFilter);\n break;\n case 'important':\n // Note: `negation` should always be `false` here.\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isImportant);\n break;\n case 'match-case':\n // Note: `negation` should always be `false` here.\n if (negation) {\n return null;\n }\n\n // We currently consider all filters to be case-insensitive.\n break;\n case '3p':\n case 'third-party':\n if (negation) {\n // ~third-party means we should clear the flag\n mask = clearBit(mask, NETWORK_FILTER_MASK.thirdParty);\n } else {\n // third-party means ~first-party\n mask = clearBit(mask, NETWORK_FILTER_MASK.firstParty);\n }\n break;\n case '1p':\n case 'first-party':\n if (negation) {\n // ~first-party means we should clear the flag\n mask = clearBit(mask, NETWORK_FILTER_MASK.firstParty);\n } else {\n // first-party means ~third-party\n mask = clearBit(mask, NETWORK_FILTER_MASK.thirdParty);\n }\n break;\n case 'redirect-rule':\n case 'redirect':\n // Negation of redirection doesn't make sense\n if (negation) {\n return null;\n }\n\n // Ignore this filter if no redirection resource is specified\n if (optionValue.length === 0) {\n return null;\n }\n\n if (option === 'redirect-rule') {\n mask = setBit(mask, NETWORK_FILTER_MASK.isRedirectRule);\n }\n\n redirect = optionValue;\n break;\n case 'csp':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isCSP);\n if (optionValue.length > 0) {\n csp = optionValue;\n }\n break;\n case 'ehide':\n case 'elemhide':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isGenericHide);\n mask = setBit(mask, NETWORK_FILTER_MASK.isSpecificHide);\n break;\n case 'shide':\n case 'specifichide':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isSpecificHide);\n break;\n case 'ghide':\n case 'generichide':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isGenericHide);\n break;\n case 'inline-script':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isCSP);\n csp =\n \"script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:\";\n break;\n case 'inline-font':\n if (negation) {\n return null;\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isCSP);\n csp =\n \"font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:\";\n break;\n default: {\n // Handle content type options separatly\n let optionMask: number = 0;\n switch (option) {\n case 'all':\n if (negation) {\n return null;\n }\n\n // NOTE: Currently a filter cannot be both blocking and CSP, so\n // we will have to create multiple filters to keep the semantics\n // of 'all'.\n // mask = setBit(mask, NETWORK_FILTER_MASK.isCSP);\n // csp = [\n // \"script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:\",\n // \"font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:\",\n // ].join('; ');\n break;\n case 'image':\n optionMask = NETWORK_FILTER_MASK.fromImage;\n break;\n case 'media':\n optionMask = NETWORK_FILTER_MASK.fromMedia;\n break;\n case 'object':\n case 'object-subrequest':\n optionMask = NETWORK_FILTER_MASK.fromObject;\n break;\n case 'other':\n optionMask = NETWORK_FILTER_MASK.fromOther;\n break;\n case 'ping':\n case 'beacon':\n optionMask = NETWORK_FILTER_MASK.fromPing;\n break;\n case 'script':\n optionMask = NETWORK_FILTER_MASK.fromScript;\n break;\n case 'css':\n case 'stylesheet':\n optionMask = NETWORK_FILTER_MASK.fromStylesheet;\n break;\n case 'frame':\n case 'subdocument':\n optionMask = NETWORK_FILTER_MASK.fromSubdocument;\n break;\n case 'xhr':\n case 'xmlhttprequest':\n optionMask = NETWORK_FILTER_MASK.fromXmlHttpRequest;\n break;\n case 'websocket':\n optionMask = NETWORK_FILTER_MASK.fromWebsocket;\n break;\n case 'font':\n optionMask = NETWORK_FILTER_MASK.fromFont;\n break;\n case 'doc':\n case 'document':\n optionMask = NETWORK_FILTER_MASK.fromDocument;\n break;\n default:\n // Disable this filter if we don't support all the options\n return null;\n }\n\n // We got a valid cpt option, update mask\n if (negation) {\n cptMaskNegative = clearBit(cptMaskNegative, optionMask);\n } else {\n cptMaskPositive = setBit(cptMaskPositive, optionMask);\n }\n break;\n }\n }\n }\n // End of option parsing\n // --------------------------------------------------------------------- //\n }\n\n if (cptMaskPositive === 0) {\n mask |= cptMaskNegative;\n } else if (cptMaskNegative === FROM_ANY) {\n mask |= cptMaskPositive;\n } else {\n mask |= cptMaskPositive & cptMaskNegative;\n }\n\n // Identify kind of pattern\n let filter: string | undefined;\n\n // Detect Regexps (i.e.: /pattern/)\n if (\n filterIndexEnd - filterIndexStart >= 2 &&\n line.charCodeAt(filterIndexStart) === 47 /* '/' */ &&\n line.charCodeAt(filterIndexEnd - 1) === 47 /* '/' */\n ) {\n // Some extra ideas which could be applied to RegExp filters:\n // * convert rules without any special RegExp syntax to plain patterns\n // * remove extra `isFullRegex` flag since `isRegex` might be enough\n // * apply some optimizations on the fly: /^https?:\\\\/\\\\/rest => isHttp + isHttps + rest\n filter = line.slice(filterIndexStart, filterIndexEnd);\n\n // Validate RegExp to make sure this rule is fine\n try {\n compileRegex(\n filter,\n false /* isLeftAnchor */,\n false /* isRightAnchor */,\n true /* isFullRegex */,\n );\n } catch (ex) {\n return null; // invalid RegExp\n }\n\n mask = setBit(mask, NETWORK_FILTER_MASK.isFullRegex);\n } else {\n // Deal with hostname pattern\n if (filterIndexEnd > 0 && line.charCodeAt(filterIndexEnd - 1) === 124 /* '|' */) {\n mask = setBit(mask, NETWORK_FILTER_MASK.isRightAnchor);\n filterIndexEnd -= 1;\n }\n\n if (\n filterIndexStart < filterIndexEnd &&\n line.charCodeAt(filterIndexStart) === 124 /* '|' */\n ) {\n if (\n filterIndexStart < filterIndexEnd - 1 &&\n line.charCodeAt(filterIndexStart + 1) === 124 /* '|' */\n ) {\n mask = setBit(mask, NETWORK_FILTER_MASK.isHostnameAnchor);\n filterIndexStart += 2;\n } else {\n mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n filterIndexStart += 1;\n }\n }\n\n // const isRegex = checkIsRegex(line, filterIndexStart, filterIndexEnd);\n // mask = setNetworkMask(mask, NETWORK_FILTER_MASK.isRegex, isRegex);\n\n if (getBit(mask, NETWORK_FILTER_MASK.isHostnameAnchor)) {\n // Split at the first character which is not allowed in a hostname\n let firstSeparator = filterIndexStart;\n while (\n firstSeparator < filterIndexEnd &&\n isAllowedHostname(line.charCodeAt(firstSeparator)) === true\n ) {\n firstSeparator += 1;\n }\n\n // No separator found so hostname has full length\n if (firstSeparator === filterIndexEnd) {\n hostname = line.slice(filterIndexStart, filterIndexEnd);\n filterIndexStart = filterIndexEnd;\n // mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n } else {\n // Found a separator\n hostname = line.slice(filterIndexStart, firstSeparator);\n filterIndexStart = firstSeparator;\n const separatorCode = line.charCodeAt(firstSeparator);\n\n if (separatorCode === 94 /* '^' */) {\n // If the only symbol remaining for the selector is '^' then ignore it\n // but set the filter as right anchored since there should not be any\n // other label on the right\n if (filterIndexEnd - filterIndexStart === 1) {\n filterIndexStart = filterIndexEnd;\n mask = setBit(mask, NETWORK_FILTER_MASK.isRightAnchor);\n } else {\n mask = setBit(mask, NETWORK_FILTER_MASK.isRegex);\n mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n }\n } else if (separatorCode === 42 /* '*' */) {\n mask = setBit(mask, NETWORK_FILTER_MASK.isRegex);\n // mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n } else {\n mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n }\n }\n }\n\n // Remove trailing '*'\n if (\n filterIndexEnd - filterIndexStart > 0 &&\n line.charCodeAt(filterIndexEnd - 1) === 42 /* '*' */\n ) {\n filterIndexEnd -= 1;\n }\n\n // Remove leading '*' if the filter is not hostname anchored.\n if (\n getBit(mask, NETWORK_FILTER_MASK.isHostnameAnchor) === false &&\n filterIndexEnd - filterIndexStart > 0 &&\n line.charCodeAt(filterIndexStart) === 42 /* '*' */\n ) {\n mask = clearBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n filterIndexStart += 1;\n }\n\n // Transform filters on protocol (http, https, ws)\n if (getBit(mask, NETWORK_FILTER_MASK.isLeftAnchor)) {\n if (\n filterIndexEnd - filterIndexStart === 5 &&\n fastStartsWithFrom(line, 'ws://', filterIndexStart)\n ) {\n mask = setBit(mask, NETWORK_FILTER_MASK.fromWebsocket);\n mask = clearBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n mask = clearBit(mask, NETWORK_FILTER_MASK.fromHttp);\n mask = clearBit(mask, NETWORK_FILTER_MASK.fromHttps);\n filterIndexStart = filterIndexEnd;\n } else if (\n filterIndexEnd - filterIndexStart === 7 &&\n fastStartsWithFrom(line, 'http://', filterIndexStart)\n ) {\n mask = setBit(mask, NETWORK_FILTER_MASK.fromHttp);\n mask = clearBit(mask, NETWORK_FILTER_MASK.fromHttps);\n mask = clearBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n filterIndexStart = filterIndexEnd;\n } else if (\n filterIndexEnd - filterIndexStart === 8 &&\n fastStartsWithFrom(line, 'https://', filterIndexStart)\n ) {\n mask = setBit(mask, NETWORK_FILTER_MASK.fromHttps);\n mask = clearBit(mask, NETWORK_FILTER_MASK.fromHttp);\n mask = clearBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n filterIndexStart = filterIndexEnd;\n } else if (\n filterIndexEnd - filterIndexStart === 8 &&\n fastStartsWithFrom(line, 'http*://', filterIndexStart)\n ) {\n mask = setBit(mask, NETWORK_FILTER_MASK.fromHttps);\n mask = setBit(mask, NETWORK_FILTER_MASK.fromHttp);\n mask = clearBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);\n filterIndexStart = filterIndexEnd;\n }\n }\n\n if (filterIndexEnd - filterIndexStart > 0) {\n filter = line.slice(filterIndexStart, filterIndexEnd).toLowerCase();\n\n mask = setNetworkMask(mask, NETWORK_FILTER_MASK.isUnicode, hasUnicode(filter));\n if (getBit(mask, NETWORK_FILTER_MASK.isRegex) === false) {\n mask = setNetworkMask(\n mask,\n NETWORK_FILTER_MASK.isRegex,\n checkIsRegex(filter, 0, filter.length),\n );\n }\n }\n\n // TODO\n // - ignore hostname anchor is not hostname provided\n\n if (hostname !== undefined) {\n hostname = hostname.toLowerCase();\n if (hasUnicode(hostname)) {\n mask = setNetworkMask(mask, NETWORK_FILTER_MASK.isUnicode, true);\n hostname = toASCII(hostname);\n }\n }\n }\n\n return new NetworkFilter({\n csp,\n filter,\n hostname,\n mask,\n domains,\n denyallow,\n rawLine: debug === true ? line : undefined,\n redirect,\n regex: undefined,\n });\n }\n\n /**\n * Deserialize network filters. The code accessing the buffer should be\n * symetrical to the one in `serializeNetworkFilter`.\n */\n public static deserialize(buffer: StaticDataView): NetworkFilter {\n const mask = buffer.getUint32();\n const optionalParts = buffer.getUint8();\n const isUnicode = getBit(mask, NETWORK_FILTER_MASK.isUnicode);\n\n // The order of these statements is important. Since `buffer.getX()` will\n // internally increment the position of next byte to read, they need to be\n // retrieved in the exact same order they were serialized (check\n // `serializeNetworkFilter`).\n return new NetworkFilter({\n // Mandatory field\n mask,\n\n // Optional parts\n csp: (optionalParts & 1) === 1 ? buffer.getNetworkCSP() : undefined,\n filter:\n (optionalParts & 2) === 2\n ? isUnicode\n ? buffer.getUTF8()\n : buffer.getNetworkFilter()\n : undefined,\n hostname: (optionalParts & 4) === 4 ? buffer.getNetworkHostname() : undefined,\n domains: (optionalParts & 8) === 8 ? Domains.deserialize(buffer) : undefined,\n rawLine: (optionalParts & 16) === 16 ? buffer.getRawNetwork() : undefined,\n redirect: (optionalParts & 32) === 32 ? buffer.getNetworkRedirect() : undefined,\n denyallow: (optionalParts & 64) === 64 ? Domains.deserialize(buffer) : undefined,\n regex: undefined,\n });\n }\n\n public readonly csp: string | undefined;\n public readonly filter: string | undefined;\n public readonly hostname: string | undefined;\n public readonly mask: number;\n public readonly domains: Domains | undefined;\n public readonly denyallow: Domains | undefined;\n public readonly redirect: string | undefined;\n\n // Set only in debug mode\n public readonly rawLine: string | undefined;\n\n // Lazy attributes\n public id: number | undefined;\n public regex: RegExp | undefined;\n\n constructor({\n csp,\n filter,\n hostname,\n mask,\n domains,\n denyallow,\n rawLine,\n redirect,\n regex,\n }: {\n csp: string | undefined;\n filter: string | undefined;\n hostname: string | undefined;\n mask: number;\n domains: Domains | undefined;\n denyallow: Domains | undefined;\n rawLine: string | undefined;\n redirect: string | undefined;\n regex: RegExp | undefined;\n }) {\n this.csp = csp;\n this.filter = filter;\n this.hostname = hostname;\n this.mask = mask;\n this.domains = domains;\n this.denyallow = denyallow;\n this.redirect = redirect;\n\n this.rawLine = rawLine;\n\n this.id = undefined;\n this.regex = regex;\n }\n\n public isCosmeticFilter() {\n return false;\n }\n public isNetworkFilter() {\n return true;\n }\n\n public match(request: Request): boolean {\n return checkOptions(this, request) && checkPattern(this, request);\n }\n\n /**\n * To allow for a more compact representation of network filters, the\n * representation is composed of a mandatory header, and some optional\n *\n * Header:\n * =======\n *\n * | opt | mask\n * 8 32\n *\n * For an empty filter having no pattern, hostname, the minimum size is: 42 bits.\n *\n * Then for each optional part (filter, hostname optDomains, optNotDomains,\n * redirect), it takes 16 bits for the length of the string + the length of the\n * string in bytes.\n *\n * The optional parts are written in order of there number of occurrence in the\n * filter list used by the adblocker. The most common being `hostname`, then\n * `filter`, `optDomains`, `optNotDomains`, `redirect`.\n *\n * Example:\n * ========\n *\n * @@||cliqz.com would result in a serialized version:\n *\n * | 1 | mask | 9 | c | l | i | q | z | . | c | o | m (16 bytes)\n *\n * In this case, the serialized version is actually bigger than the original\n * filter, but faster to deserialize. In the future, we could optimize the\n * representation to compact small filters better.\n *\n * Ideas:\n * * variable length encoding for the mask (if not option, take max 1 byte).\n * * first byte could contain the mask as well if small enough.\n * * when packing ascii string, store several of them in each byte.\n */\n public serialize(buffer: StaticDataView): void {\n buffer.pushUint32(this.mask);\n\n const index = buffer.getPos();\n buffer.pushUint8(0);\n\n // This bit-mask indicates which optional parts of the filter were serialized.\n let optionalParts = 0;\n\n if (this.csp !== undefined) {\n optionalParts |= 1;\n buffer.pushNetworkCSP(this.csp);\n }\n\n if (this.filter !== undefined) {\n optionalParts |= 2;\n if (this.isUnicode()) {\n buffer.pushUTF8(this.filter);\n } else {\n buffer.pushNetworkFilter(this.filter);\n }\n }\n\n if (this.hostname !== undefined) {\n optionalParts |= 4;\n buffer.pushNetworkHostname(this.hostname);\n }\n\n if (this.domains !== undefined) {\n optionalParts |= 8;\n this.domains.serialize(buffer);\n }\n\n if (this.rawLine !== undefined) {\n optionalParts |= 16;\n buffer.pushRawNetwork(this.rawLine);\n }\n\n if (this.redirect !== undefined) {\n optionalParts |= 32;\n buffer.pushNetworkRedirect(this.redirect);\n }\n\n if (this.denyallow !== undefined) {\n optionalParts |= 64;\n this.denyallow.serialize(buffer);\n }\n\n buffer.setByte(index, optionalParts);\n }\n\n public getSerializedSize(compression: boolean): number {\n let estimate: number = 4 + 1; // mask = 4 bytes // optional parts = 1 byte\n\n if (this.csp !== undefined) {\n estimate += sizeOfNetworkCSP(this.csp, compression);\n }\n\n if (this.filter !== undefined) {\n if (this.isUnicode() === true) {\n estimate += sizeOfUTF8(this.filter);\n } else {\n estimate += sizeOfNetworkFilter(this.filter, compression);\n }\n }\n\n if (this.hostname !== undefined) {\n estimate += sizeOfNetworkHostname(this.hostname, compression);\n }\n\n if (this.domains !== undefined) {\n estimate += this.domains.getSerializedSize();\n }\n\n if (this.rawLine !== undefined) {\n estimate += sizeOfRawNetwork(this.rawLine, compression);\n }\n\n if (this.redirect !== undefined) {\n estimate += sizeOfNetworkRedirect(this.redirect, compression);\n }\n\n if (this.denyallow !== undefined) {\n estimate += this.denyallow.getSerializedSize();\n }\n\n return estimate;\n }\n\n /**\n * Tries to recreate the original representation of the filter (adblock\n * syntax) from the internal representation. If `rawLine` is set (when filters\n * are parsed in `debug` mode for example), then it is returned directly.\n * Otherwise, we try to stick as closely as possible to the original form;\n * there are things which cannot be recovered though, like domains options\n * of which only hashes are stored.\n */\n public toString() {\n if (this.rawLine !== undefined) {\n return this.rawLine;\n }\n\n let filter = '';\n\n if (this.isException()) {\n filter += '@@';\n }\n\n if (this.isHostnameAnchor()) {\n filter += '||';\n } else if (this.fromHttp() !== this.fromHttps()) {\n if (this.fromHttp()) {\n filter += '|http://';\n } else {\n filter += '|https://';\n }\n } else if (this.isLeftAnchor()) {\n filter += '|';\n }\n\n if (this.hasHostname()) {\n filter += this.getHostname();\n filter += '^';\n }\n\n if (this.isFullRegex()) {\n filter += `/${this.getRegex().source}/`;\n } else if (this.isRegex()) {\n filter += this.getRegex().source;\n } else {\n filter += this.getFilter();\n }\n\n if (this.isRightAnchor()) {\n filter += '|';\n }\n\n // Options\n const options: string[] = [];\n\n if (this.fromAny() === false) {\n const numberOfCptOptions = bitCount(this.getCptMask());\n const numberOfNegatedOptions = bitCount(FROM_ANY) - numberOfCptOptions;\n\n if (numberOfNegatedOptions < numberOfCptOptions) {\n for (const type of getListOfRequestTypesNegated(this)) {\n options.push(`~${type}`);\n }\n } else {\n for (const type of getListOfRequestTypes(this)) {\n options.push(type);\n }\n }\n }\n\n if (this.isImportant()) {\n options.push('important');\n }\n\n if (this.isRedirectRule()) {\n options.push(`redirect-rule=${this.getRedirect()}`);\n } else if (this.isRedirect()) {\n options.push(`redirect=${this.getRedirect()}`);\n }\n\n if (this.isCSP()) {\n options.push(`csp=${this.csp}`);\n }\n\n if (this.isElemHide()) {\n options.push('elemhide');\n }\n\n if (this.isSpecificHide()) {\n options.push('specifichide');\n }\n\n if (this.isGenericHide()) {\n options.push('generichide');\n }\n\n if (this.firstParty() !== this.thirdParty()) {\n if (this.firstParty()) {\n options.push('1p');\n }\n if (this.thirdParty()) {\n options.push('3p');\n }\n }\n\n if (this.domains !== undefined) {\n if (this.domains.parts !== undefined) {\n options.push(`domain=${this.domains.parts}`);\n } else {\n options.push('domain=<hashed>');\n }\n }\n\n if (this.denyallow !== undefined) {\n if (this.denyallow.parts !== undefined) {\n options.push(`denyallow=${this.denyallow.parts}`);\n } else {\n options.push('denyallow=<hashed>');\n }\n }\n\n if (this.isBadFilter()) {\n options.push('badfilter');\n }\n\n if (options.length > 0) {\n filter += `$${options.join(',')}`;\n }\n\n return filter;\n }\n\n // Public API (Read-Only)\n public getIdWithoutBadFilter(): number {\n // This method computes the id ignoring the $badfilter option (which will\n // correspond to the ID of filters being discarded). This allows us to\n // eliminate bad filters by comparing IDs, which is more robust and faster\n // than string comparison.\n return computeFilterId(\n this.csp,\n this.mask & ~NETWORK_FILTER_MASK.isBadFilter,\n this.filter,\n this.hostname,\n this.domains,\n this.denyallow,\n this.redirect,\n );\n }\n\n public getId(): number {\n if (this.id === undefined) {\n this.id = computeFilterId(\n this.csp,\n this.mask,\n this.filter,\n this.hostname,\n this.domains,\n this.denyallow,\n this.redirect,\n );\n }\n return this.id;\n }\n\n public hasFilter(): boolean {\n return this.filter !== undefined;\n }\n\n public hasDomains(): boolean {\n return this.domains !== undefined;\n }\n\n public getMask(): number {\n return this.mask;\n }\n\n public getCptMask(): number {\n return this.getMask() & FROM_ANY;\n }\n\n public isRedirect(): boolean {\n return this.redirect !== undefined;\n }\n\n public isRedirectRule(): boolean {\n return getBit(this.mask, NETWORK_FILTER_MASK.isRedirectRule);\n }\n\n public getRedirect(): string {\n return this.redirect || '';\n }\n\n public hasHostname(): boolean {\n return this.hostname !== undefined;\n }\n\n public getHostname(): string {\n return this.hostname || '';\n }\n\n public getFilter(): string {\n return this.filter || '';\n }\n\n public getRegex(): RegExp {\n if (this.regex === undefined) {\n this.regex =\n this.filter !== undefined && this.isRegex()\n ? compileRegex(\n this.filter,\n this.isLeftAnchor(),\n this.isRightAnchor(),\n this.isFullRegex(),\n )\n : MATCH_ALL;\n }\n\n return this.regex;\n }\n\n public getTokens(): Uint32Array[] {\n TOKENS_BUFFER.reset();\n\n // If there is only one domain and no domain negation, we also use this\n // domain as a token.\n if (\n this.domains !== undefined &&\n this.domains.hostnames !== undefined &&\n this.domains.entities === undefined &&\n this.domains.notHostnames === undefined &&\n this.domains.notEntities === undefined &&\n this.domains.hostnames.length === 1\n ) {\n TOKENS_BUFFER.push(this.domains.hostnames[0]);\n }\n\n // Get tokens from filter\n if (this.isFullRegex() === false) {\n if (this.filter !== undefined) {\n const skipLastToken = !this.isRightAnchor();\n const skipFirstToken = !this.isLeftAnchor();\n tokenizeWithWildcardsInPlace(this.filter, skipFirstToken, skipLastToken, TOKENS_BUFFER);\n }\n\n // Append tokens from hostname, if any\n if (this.hostname !== undefined) {\n tokenizeInPlace(\n this.hostname,\n false,\n this.filter !== undefined && this.filter.charCodeAt(0) === 42 /* '*' */,\n TOKENS_BUFFER,\n );\n }\n } else if (this.filter !== undefined) {\n tokenizeRegexInPlace(this.filter, TOKENS_BUFFER);\n }\n\n // If we got no tokens for the filter/hostname part, then we will dispatch\n // this filter in multiple buckets based on the domains option.\n if (\n TOKENS_BUFFER.empty() === true &&\n this.domains !== undefined &&\n this.domains.hostnames !== undefined &&\n this.domains.entities === undefined &&\n this.domains.notHostnames === undefined &&\n this.domains.notEntities === undefined\n ) {\n const result: Uint32Array[] = [];\n for (const hostname of this.domains.hostnames) {\n const arr = new Uint32Array(1);\n arr[0] = hostname;\n result.push(arr);\n }\n return result;\n }\n\n // Add optional token for types\n if (TOKENS_BUFFER.empty() === true && this.fromAny() === false) {\n const types = getListOfRequestTypes(this);\n if (types.length !== 0) {\n const result: Uint32Array[] = [];\n for (const type of types) {\n const arr = new Uint32Array(1);\n arr[0] = NORMALIZED_TYPE_TOKEN[type];\n result.push(arr);\n }\n return result;\n }\n }\n\n // Add optional token for protocol\n if (this.fromHttp() === true && this.fromHttps() === false) {\n TOKENS_BUFFER.push(HTTP_HASH);\n } else if (this.fromHttps() === true && this.fromHttp() === false) {\n TOKENS_BUFFER.push(HTTPS_HASH);\n }\n\n return [TOKENS_BUFFER.slice()];\n }\n\n /**\n * Check if this filter should apply to a request with this content type.\n */\n public isCptAllowed(cpt: RequestType): boolean {\n const mask: number | undefined = REQUEST_TYPE_TO_MASK[cpt];\n if (mask !== undefined) {\n return getBit(this.mask, mask);\n }\n\n // If content type is not supported (or not specified), we return `true`\n // only if the filter does not specify any resource type.\n return this.fromAny();\n }\n\n public isException() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isException);\n }\n\n public isHostnameAnchor() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isHostnameAnchor);\n }\n\n public isRightAnchor() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isRightAnchor);\n }\n\n public isLeftAnchor() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isLeftAnchor);\n }\n\n public isImportant() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isImportant);\n }\n\n public isFullRegex(): boolean {\n return getBit(this.mask, NETWORK_FILTER_MASK.isFullRegex);\n }\n\n public isRegex() {\n return (\n getBit(this.mask, NETWORK_FILTER_MASK.isRegex) ||\n getBit(this.mask, NETWORK_FILTER_MASK.isFullRegex)\n );\n }\n\n public isPlain() {\n return !this.isRegex();\n }\n\n public isCSP() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isCSP);\n }\n\n public isElemHide() {\n return this.isSpecificHide() && this.isGenericHide();\n }\n\n public isSpecificHide() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isSpecificHide);\n }\n\n public isGenericHide() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isGenericHide);\n }\n\n public isBadFilter() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isBadFilter);\n }\n\n public isUnicode() {\n return getBit(this.mask, NETWORK_FILTER_MASK.isUnicode);\n }\n\n public fromAny() {\n return this.getCptMask() === FROM_ANY;\n }\n\n public thirdParty() {\n return getBit(this.mask, NETWORK_FILTER_MASK.thirdParty);\n }\n\n public firstParty() {\n return getBit(this.mask, NETWORK_FILTER_MASK.firstParty);\n }\n\n public fromImage() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromImage);\n }\n\n public fromMedia() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromMedia);\n }\n\n public fromObject() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromObject);\n }\n\n public fromOther() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromOther);\n }\n\n public fromPing() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromPing);\n }\n\n public fromScript() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromScript);\n }\n\n public fromStylesheet() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromStylesheet);\n }\n\n public fromDocument() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromDocument);\n }\n\n public fromSubdocument() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromSubdocument);\n }\n\n public fromWebsocket() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromWebsocket);\n }\n\n public fromHttp() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromHttp);\n }\n\n public fromHttps() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromHttps);\n }\n\n public fromXmlHttpRequest() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromXmlHttpRequest);\n }\n\n public fromFont() {\n return getBit(this.mask, NETWORK_FILTER_MASK.fromFont);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter parsing\n// ---------------------------------------------------------------------------\n\nfunction setNetworkMask(mask: number, m: number, value: boolean): number {\n if (value === true) {\n return setBit(mask, m);\n }\n\n return clearBit(mask, m);\n}\n\n/**\n * Check if the sub-string contained between the indices start and end is a\n * regex filter (it contains a '*' or '^' char).\n */\nfunction checkIsRegex(filter: string, start: number, end: number): boolean {\n const indexOfSeparator = filter.indexOf('^', start);\n if (indexOfSeparator !== -1 && indexOfSeparator < end) {\n return true;\n }\n\n const indexOfWildcard = filter.indexOf('*', start);\n return indexOfWildcard !== -1 && indexOfWildcard < end;\n}\n\n/**\n * Handle hostname anchored filters, given 'hostname' from ||hostname and\n * request's hostname, check if there is a match. This is tricky because\n * filters authors rely and different assumptions. We can have prefix of suffix\n * matches of anchor.\n */\nexport function isAnchoredByHostname(\n filterHostname: string,\n hostname: string,\n isFollowedByWildcard: boolean,\n): boolean {\n // Corner-case, if `filterHostname` is empty, then it's a match\n if (filterHostname.length === 0) {\n return true;\n }\n\n // `filterHostname` cannot be longer than actual hostname\n if (filterHostname.length > hostname.length) {\n return false;\n }\n\n // If they have the same length, they should be equal\n if (filterHostname.length === hostname.length) {\n return filterHostname === hostname;\n }\n\n // Check if `filterHostname` appears anywhere in `hostname`\n const matchIndex = hostname.indexOf(filterHostname);\n\n // No match\n if (matchIndex === -1) {\n return false;\n }\n\n // `filterHostname` is a prefix of `hostname` and needs to match full a label.\n //\n // Examples (filterHostname, hostname):\n // * (foo, foo.com)\n // * (sub.foo, sub.foo.com)\n if (matchIndex === 0) {\n return (\n isFollowedByWildcard === true ||\n hostname.charCodeAt(filterHostname.length) === 46 /* '.' */ ||\n filterHostname.charCodeAt(filterHostname.length - 1) === 46 /* '.' */\n );\n }\n\n // `filterHostname` is a suffix of `hostname`.\n //\n // Examples (filterHostname, hostname):\n // * (foo.com, sub.foo.com)\n // * (com, foo.com)\n if (hostname.length === matchIndex + filterHostname.length) {\n return (\n hostname.charCodeAt(matchIndex - 1) === 46 /* '.' */ ||\n filterHostname.charCodeAt(0) === 46 /* '.' */\n );\n }\n\n // `filterHostname` is infix of `hostname` and needs match full labels\n return (\n (isFollowedByWildcard === true ||\n hostname.charCodeAt(filterHostname.length) === 46 /* '.' */ ||\n filterHostname.charCodeAt(filterHostname.length - 1) === 46) /* '.' */ &&\n (hostname.charCodeAt(matchIndex - 1) === 46 || filterHostname.charCodeAt(0) === 46)\n );\n}\n\n/**\n * Specialize a network filter depending on its type. It allows for more\n * efficient matching function.\n */\nfunction checkPattern(filter: NetworkFilter, request: Request): boolean {\n const pattern = filter.getFilter();\n\n if (filter.isHostnameAnchor() === true) {\n // Make sure request is anchored by hostname before proceeding to matching\n const filterHostname = filter.getHostname();\n if (\n isAnchoredByHostname(\n filterHostname,\n request.hostname,\n filter.filter !== undefined && filter.filter.charCodeAt(0) === 42 /* '*' */,\n ) === false\n ) {\n return false;\n }\n\n // At this point we know request is hostname anchored so we match the rest of the filter.\n if (filter.isRegex()) {\n // ||pattern*^\n return filter\n .getRegex()\n .test(request.url.slice(request.url.indexOf(filterHostname) + filterHostname.length));\n } else if (filter.isRightAnchor() && filter.isLeftAnchor()) {\n // |||pattern|\n // Since this is not a regex, the filter pattern must follow the hostname\n // with nothing in between. So we extract the part of the URL following\n // after hostname and will perform the matching on it.\n const urlAfterHostname = request.url.slice(\n request.url.indexOf(filterHostname) + filterHostname.length,\n );\n\n // Since it must follow immediatly after the hostname and be a suffix of\n // the URL, we conclude that filter must be equal to the part of the\n // url following the hostname.\n return pattern === urlAfterHostname;\n } else if (filter.isRightAnchor()) {\n // ||pattern|\n const requestHostname = request.hostname;\n if (filter.hasFilter() === false) {\n // In this specific case it means that the specified hostname should match\n // at the end of the hostname of the request. This allows to prevent false\n // positive like ||foo.bar which would match https://foo.bar.baz where\n // ||foo.bar^ would not.\n return (\n filterHostname.length === requestHostname.length ||\n requestHostname.endsWith(filterHostname)\n );\n } else {\n // pattern|\n return request.url.endsWith(pattern);\n }\n } else if (filter.isLeftAnchor()) {\n // ||pattern + left-anchor => This means that a plain pattern needs to appear\n // exactly after the hostname, with nothing in between.\n // Since this is not a regex, the filter pattern must follow the hostname\n // with nothing in between. So we extract the part of the URL following\n // after hostname and will perform the matching on it.\n return fastStartsWithFrom(\n request.url,\n pattern,\n request.url.indexOf(filterHostname) + filterHostname.length,\n );\n }\n\n if (filter.hasFilter() === false) {\n return true;\n }\n\n // We consider this a match if the plain patter (i.e.: filter) appears anywhere.\n return (\n request.url.indexOf(pattern, request.url.indexOf(filterHostname) + filterHostname.length) !==\n -1\n );\n } else if (filter.isRegex()) {\n // pattern*^\n return filter.getRegex().test(request.url);\n } else if (filter.isLeftAnchor() && filter.isRightAnchor()) {\n // |pattern|\n return request.url === pattern;\n } else if (filter.isLeftAnchor()) {\n // |pattern\n return fastStartsWith(request.url, pattern);\n } else if (filter.isRightAnchor()) {\n // pattern|\n return request.url.endsWith(pattern);\n }\n\n // pattern\n if (filter.hasFilter() === false) {\n return true;\n }\n\n return request.url.indexOf(pattern) !== -1;\n}\n\nfunction checkOptions(filter: NetworkFilter, request: Request): boolean {\n // We first discard requests based on type, protocol and party. This is really\n // cheap and should be done first.\n if (\n filter.isCptAllowed(request.type) === false ||\n (request.isHttps === true && filter.fromHttps() === false) ||\n (request.isHttp === true && filter.fromHttp() === false) ||\n (filter.firstParty() === false && request.isFirstParty === true) ||\n (filter.thirdParty() === false && request.isThirdParty === true)\n ) {\n return false;\n }\n\n // If `sourceHostname` is *not* matched by `domain` then the request should be allowed.\n if (\n filter.domains !== undefined &&\n filter.domains.match(request.sourceHostnameHashes, request.sourceEntityHashes) === false\n ) {\n return false;\n }\n\n // If `hostname` is matched by `denyallow` then the request should be allowed.\n if (\n filter.denyallow !== undefined &&\n filter.denyallow.match(request.getHostnameHashes(), request.getEntityHashes()) === true\n ) {\n return false;\n }\n\n return true;\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport Config from './config';\nimport CosmeticFilter from './filters/cosmetic';\nimport NetworkFilter from './filters/network';\nimport { fastStartsWith, fastStartsWithFrom } from './utils';\n\nexport const enum FilterType {\n NOT_SUPPORTED = 0,\n NETWORK = 1,\n COSMETIC = 2,\n}\n\n/**\n * Given a single line (string), checks if this would likely be a cosmetic\n * filter, a network filter or something that is not supported. This check is\n * performed before calling a more specific parser to create an instance of\n * `NetworkFilter` or `CosmeticFilter`.\n */\nexport function detectFilterType(line: string): FilterType {\n // Ignore empty line\n if (line.length === 0 || line.length === 1) {\n return FilterType.NOT_SUPPORTED;\n }\n\n // Ignore comments\n const firstCharCode: number = line.charCodeAt(0);\n const secondCharCode: number = line.charCodeAt(1);\n if (\n firstCharCode === 33 /* '!' */ ||\n (firstCharCode === 35 /* '#' */ && secondCharCode <= 32) ||\n (firstCharCode === 91 /* '[' */ && fastStartsWith(line, '[Adblock'))\n ) {\n return FilterType.NOT_SUPPORTED;\n }\n\n // Fast heuristics to detect network filters\n const lastCharCode: number = line.charCodeAt(line.length - 1);\n if (\n firstCharCode === 36 /* '$' */ ||\n firstCharCode === 38 /* '&' */ ||\n firstCharCode === 42 /* '*' */ ||\n firstCharCode === 45 /* '-' */ ||\n firstCharCode === 46 /* '.' */ ||\n firstCharCode === 47 /* '/' */ ||\n firstCharCode === 58 /* ':' */ ||\n firstCharCode === 61 /* '=' */ ||\n firstCharCode === 63 /* '?' */ ||\n firstCharCode === 64 /* '@' */ ||\n firstCharCode === 95 /* '_' */ ||\n firstCharCode === 124 /* '|' */ ||\n lastCharCode === 124 /* '|' */\n ) {\n return FilterType.NETWORK;\n }\n\n // Ignore Adguard cosmetics\n // `$$` = HTML filtering rules\n const dollarIndex: number = line.indexOf('$');\n if (dollarIndex !== -1 && dollarIndex !== line.length - 1) {\n const afterDollarIndex = dollarIndex + 1;\n const afterDollarCharCode = line.charCodeAt(afterDollarIndex);\n\n // Ignore Adguard HTML rewrite rules\n if (\n afterDollarCharCode === 36 /* '$' */ ||\n (afterDollarCharCode === 64 /* '@' */ &&\n fastStartsWithFrom(line, /* $@$ */ '@$', afterDollarIndex))\n ) {\n return FilterType.NOT_SUPPORTED;\n }\n }\n\n // Check if filter is cosmetics\n const sharpIndex: number = line.indexOf('#');\n if (sharpIndex !== -1 && sharpIndex !== line.length - 1) {\n const afterSharpIndex = sharpIndex + 1;\n const afterSharpCharCode = line.charCodeAt(afterSharpIndex);\n\n if (\n afterSharpCharCode === 35 /* '#'*/ ||\n (afterSharpCharCode === 64 /* '@' */ &&\n fastStartsWithFrom(line, /* #@# */ '@#', afterSharpIndex))\n // TODO - support ADB/AdGuard extended css selectors\n // || (afterSharpCharCode === 63 /* '?' */ &&\n // fastStartsWithFrom(line, /* #?# */ '?#', afterSharpIndex))\n ) {\n // Parse supported cosmetic filter\n // `##` `#@#`\n return FilterType.COSMETIC;\n } else if (\n (afterSharpCharCode === 64 /* '@'*/ &&\n (fastStartsWithFrom(line, /* #@$# */ '@$#', afterSharpIndex) ||\n fastStartsWithFrom(line, /* #@%# */ '@%#', afterSharpIndex))) ||\n (afterSharpCharCode === 37 /* '%' */ &&\n fastStartsWithFrom(line, /* #%# */ '%#', afterSharpIndex)) ||\n (afterSharpCharCode === 36 /* '$' */ &&\n fastStartsWithFrom(line, /* #$# */ '$#', afterSharpIndex)) ||\n (afterSharpCharCode === 63 /* '?' */ &&\n fastStartsWithFrom(line, /* #?# */ '?#', afterSharpIndex))\n ) {\n // Ignore Adguard cosmetics\n // `#$#` `#@$#`\n // `#%#` `#@%#`\n // `#?#`\n return FilterType.NOT_SUPPORTED;\n }\n }\n\n // Everything else is a network filter\n return FilterType.NETWORK;\n}\n\nexport function parseFilter(filter: string): NetworkFilter | CosmeticFilter | null {\n const filterType = detectFilterType(filter);\n\n if (filterType === FilterType.NETWORK) {\n return NetworkFilter.parse(filter, true);\n } else if (filterType === FilterType.COSMETIC) {\n return CosmeticFilter.parse(filter, true);\n }\n\n return null;\n}\n\nexport function f(strings: TemplateStringsArray): NetworkFilter | CosmeticFilter | null {\n return parseFilter(strings[0]);\n}\n\nexport function parseFilters(\n list: string,\n config: Partial<Config> = new Config(),\n): { networkFilters: NetworkFilter[]; cosmeticFilters: CosmeticFilter[] } {\n config = new Config(config);\n\n const networkFilters: NetworkFilter[] = [];\n const cosmeticFilters: CosmeticFilter[] = [];\n const lines = list.split('\\n');\n\n for (let i = 0; i < lines.length; i += 1) {\n let line = lines[i];\n\n // Check if `line` should be left-trimmed\n if (line.length !== 0 && line.charCodeAt(0) <= 32) {\n line = line.trim();\n }\n\n // Handle continuations\n if (line.length > 2) {\n while (\n i < lines.length - 1 &&\n line.charCodeAt(line.length - 1) === 92 &&\n line.charCodeAt(line.length - 2) === 32\n ) {\n line = line.slice(0, -2);\n\n const nextLine = lines[i + 1];\n if (\n nextLine.length > 4 &&\n nextLine.charCodeAt(0) === 32 &&\n nextLine.charCodeAt(1) === 32 &&\n nextLine.charCodeAt(2) === 32 &&\n nextLine.charCodeAt(3) === 32 &&\n nextLine.charCodeAt(4) !== 32\n ) {\n line += nextLine.slice(4);\n i += 1;\n } else {\n break;\n }\n }\n }\n\n // Check if `line` should be right-trimmed\n if (line.length !== 0 && line.charCodeAt(line.length - 1) <= 32) {\n line = line.trim();\n }\n\n // Detect if filter is supported, network or cosmetic\n const filterType = detectFilterType(line);\n\n if (filterType === FilterType.NETWORK && config.loadNetworkFilters === true) {\n const filter = NetworkFilter.parse(line, config.debug);\n if (filter !== null) {\n networkFilters.push(filter);\n }\n } else if (filterType === FilterType.COSMETIC && config.loadCosmeticFilters === true) {\n const filter = CosmeticFilter.parse(line, config.debug);\n if (filter !== null) {\n if (config.loadGenericCosmeticsFilters === true || filter.isGenericHide() === false) {\n cosmeticFilters.push(filter);\n }\n }\n }\n }\n\n return { networkFilters, cosmeticFilters };\n}\n\nfunction getFilters(list: string, config?: Partial<Config>): (NetworkFilter | CosmeticFilter)[] {\n const { networkFilters, cosmeticFilters } = parseFilters(list, config);\n const filters: (NetworkFilter | CosmeticFilter)[] = [];\n return filters.concat(networkFilters).concat(cosmeticFilters);\n}\n\nexport interface IListDiff {\n newNetworkFilters: NetworkFilter[];\n newCosmeticFilters: CosmeticFilter[];\n removedCosmeticFilters: number[];\n removedNetworkFilters: number[];\n}\n\nexport interface IRawDiff {\n added: string[];\n removed: string[];\n}\n\n/**\n * Helper used to return a set of lines as strings where each line is\n * guaranteed to be a valid filter (i.e.: comments, empty lines and\n * un-supported filters are dropped).\n */\nexport function getLinesWithFilters(\n list: string,\n config: Partial<Config> = new Config(),\n): Set<string> {\n // Set config to `debug` so that we keep track of raw lines for each filter\n return new Set(\n getFilters(list, new Config(Object.assign({}, config, { debug: true }))).map(\n ({ rawLine }) => rawLine as string,\n ),\n );\n}\n\n/**\n * Given two versions of the same subscription (e.g.: EasyList) as a string,\n * generate a raw diff (i.e.: a list of filters added and filters removed, in\n * their raw string form).\n */\nexport function generateDiff(\n prevRevision: string,\n newRevision: string,\n config: Partial<Config> = new Config(),\n): IRawDiff {\n // Set config to `debug` so that we keep track of raw lines for each filter\n const debugConfig = new Config(Object.assign({}, config, { debug: true }));\n\n const prevRevisionFilters = getFilters(prevRevision, debugConfig);\n const prevRevisionIds = new Set(prevRevisionFilters.map((filter) => filter.getId()));\n\n const newRevisionFilters = getFilters(newRevision, debugConfig);\n const newRevisionIds = new Set(newRevisionFilters.map((filter) => filter.getId()));\n\n // Check which filters were added, based on ID\n const added: Set<string> = new Set();\n for (const filter of newRevisionFilters) {\n if (!prevRevisionIds.has(filter.getId())) {\n added.add(filter.rawLine as string);\n }\n }\n\n // Check which filters were removed, based on ID\n const removed: Set<string> = new Set();\n for (const filter of prevRevisionFilters) {\n if (!newRevisionIds.has(filter.getId())) {\n removed.add(filter.rawLine as string);\n }\n }\n\n return { added: Array.from(added), removed: Array.from(removed) };\n}\n\n/**\n * Merge several raw diffs into one, taking care of accumulating added and\n * removed filters, even if several diffs add/remove the same ones.\n */\nexport function mergeDiffs(diffs: Partial<IRawDiff>[]): IRawDiff {\n const addedCumul: Set<string> = new Set();\n const removedCumul: Set<string> = new Set();\n\n for (const { added, removed } of diffs) {\n if (added !== undefined) {\n for (const str of added) {\n if (removedCumul.has(str)) {\n removedCumul.delete(str);\n }\n addedCumul.add(str);\n }\n }\n\n if (removed !== undefined) {\n for (const str of removed) {\n if (addedCumul.has(str)) {\n addedCumul.delete(str);\n }\n removedCumul.add(str);\n }\n }\n }\n\n return {\n added: Array.from(addedCumul),\n removed: Array.from(removedCumul),\n };\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { getResourceForMime } from '@remusao/small';\n\nimport { StaticDataView, sizeOfASCII, sizeOfByte } from './data-view';\n\n// Polyfill for `btoa`\nfunction btoaPolyfill(buffer: string): string {\n if (typeof btoa !== 'undefined') {\n return btoa(buffer);\n } else if (typeof Buffer !== 'undefined') {\n return Buffer.from(buffer).toString('base64');\n }\n return buffer;\n}\n\ninterface Resource {\n contentType: string;\n body: string;\n}\n\n// TODO - support # alias\n// TODO - support empty resource body\n\n/**\n * Abstraction on top of resources.txt used for redirections as well as script\n * injections. It contains logic to parse, serialize and get resources by name\n * for use in the engine.\n */\nexport default class Resources {\n public static deserialize(buffer: StaticDataView): Resources {\n const checksum = buffer.getASCII();\n\n // Deserialize `resources`\n const resources: Map<string, Resource> = new Map();\n const numberOfResources = buffer.getUint16();\n for (let i = 0; i < numberOfResources; i += 1) {\n resources.set(buffer.getASCII(), {\n contentType: buffer.getASCII(),\n body: buffer.getASCII(),\n });\n }\n\n // Deserialize `js`\n const js: Map<string, string> = new Map();\n resources.forEach(({ contentType, body }, name) => {\n if (contentType === 'application/javascript') {\n js.set(name, body);\n }\n });\n\n return new Resources({\n checksum,\n js,\n resources,\n });\n }\n\n public static parse(data: string, { checksum }: { checksum: string }): Resources {\n const typeToResource: Map<string, Map<string, string>> = new Map();\n const trimComments = (str: string) => str.replace(/^\\s*#.*$/gm, '');\n const chunks = data.split('\\n\\n');\n\n for (const chunk of chunks) {\n const resource = trimComments(chunk).trim();\n if (resource.length !== 0) {\n const firstNewLine = resource.indexOf('\\n');\n const split = resource.slice(0, firstNewLine).split(/\\s+/);\n const name = split[0];\n const type = split[1];\n const body = resource.slice(firstNewLine + 1);\n\n if (name === undefined || type === undefined || body === undefined) {\n continue;\n }\n\n let resources = typeToResource.get(type);\n if (resources === undefined) {\n resources = new Map();\n typeToResource.set(type, resources);\n }\n resources.set(name, body);\n }\n }\n\n // The resource containing javascirpts to be injected\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const js: Map<string, string> = typeToResource.get('application/javascript') || new Map();\n for (const [key, value] of js.entries()) {\n if (key.endsWith('.js')) {\n js.set(key.slice(0, -3), value);\n }\n }\n\n // Create a mapping from resource name to { contentType, data }\n // used for request redirection.\n const resourcesByName: Map<string, Resource> = new Map();\n typeToResource.forEach((resources, contentType) => {\n resources.forEach((resource: string, name: string) => {\n resourcesByName.set(name, {\n contentType,\n body: resource,\n });\n });\n });\n\n return new Resources({\n checksum,\n js,\n resources: resourcesByName,\n });\n }\n\n public readonly checksum: string;\n public readonly js: Map<string, string>;\n public readonly resources: Map<string, Resource>;\n\n constructor({ checksum = '', js = new Map(), resources = new Map() }: Partial<Resources> = {}) {\n this.checksum = checksum;\n this.js = js;\n this.resources = resources;\n }\n\n public getResource(name: string): Resource & { dataUrl: string } {\n const { body, contentType } = this.resources.get(name) || getResourceForMime(name);\n\n let dataUrl;\n if (contentType.indexOf(';') !== -1) {\n dataUrl = `data:${contentType},${body}`;\n } else {\n dataUrl = `data:${contentType};base64,${btoaPolyfill(body)}`;\n }\n\n return { body, contentType, dataUrl };\n }\n\n public getSerializedSize(): number {\n let estimatedSize = sizeOfASCII(this.checksum) + 2 * sizeOfByte(); // resources.size\n\n this.resources.forEach(({ contentType, body }, name) => {\n estimatedSize += sizeOfASCII(name) + sizeOfASCII(contentType) + sizeOfASCII(body);\n });\n\n return estimatedSize;\n }\n\n public serialize(buffer: StaticDataView): void {\n // Serialize `checksum`\n buffer.pushASCII(this.checksum);\n\n // Serialize `resources`\n buffer.pushUint16(this.resources.size);\n this.resources.forEach(({ contentType, body }, name) => {\n buffer.pushASCII(name);\n buffer.pushASCII(contentType);\n buffer.pushASCII(body);\n });\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nexport function compactTokens(tokens: Uint32Array): Uint32Array {\n const sorted = tokens.sort();\n let lastIndex = 1;\n for (let i = 1; i < sorted.length; i += 1) {\n if (sorted[lastIndex - 1] !== sorted[i]) {\n sorted[lastIndex++] = sorted[i];\n }\n }\n\n return sorted.subarray(0, lastIndex);\n}\n\nexport function hasEmptyIntersection(s1: Uint32Array, s2: Uint32Array): boolean {\n let i = 0;\n let j = 0;\n\n while (i < s1.length && j < s2.length && s1[i] !== s2[j]) {\n if (s1[i] < s2[j]) {\n i += 1;\n } else {\n j += 1;\n }\n }\n\n return i === s1.length || j === s2.length;\n}\n\nconst EMPTY_UINT32_ARRAY = new Uint32Array(0);\n\nexport function concatTypedArrays(arrays: Uint32Array[]): Uint32Array {\n if (arrays.length === 0) {\n return EMPTY_UINT32_ARRAY;\n }\n\n if (arrays.length === 1) {\n return arrays[0];\n }\n\n let totalSize = 0;\n for (let i = 0; i < arrays.length; i += 1) {\n totalSize += arrays[i].length;\n }\n\n const result = new Uint32Array(totalSize);\n let index = 0;\n for (let i = 0; i < arrays.length; i += 1) {\n const array = arrays[i];\n for (let j = 0; j < array.length; j += 1) {\n result[index++] = array[j];\n }\n }\n\n return result;\n}\n\nexport function mergeCompactSets(arrays: Uint32Array[]): Uint32Array {\n return compactTokens(concatTypedArrays(arrays));\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport CosmeticFilter from '../filters/cosmetic';\nimport NetworkFilter, { NETWORK_FILTER_MASK } from '../filters/network';\nimport { setBit } from '../utils';\nimport { Domains } from '../engine/domains';\n\nfunction processRegex(r: RegExp): string {\n return `(?:${r.source})`;\n}\n\nfunction escape(s: string): string {\n return `(?:${s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')})`;\n}\n\nfunction setWithDefault<K, V>(map: Map<K, V[]>, key: K, value: V): void {\n let bucket = map.get(key);\n if (bucket === undefined) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\n\nfunction groupBy(\n filters: NetworkFilter[],\n criteria: (filter: NetworkFilter) => string,\n): NetworkFilter[][] {\n const grouped: Map<string, NetworkFilter[]> = new Map();\n for (const filter of filters) {\n setWithDefault(grouped, criteria(filter), filter);\n }\n return Array.from(grouped.values());\n}\n\nfunction splitBy(\n filters: NetworkFilter[],\n condition: (filter: NetworkFilter) => boolean,\n): {\n positive: NetworkFilter[];\n negative: NetworkFilter[];\n} {\n const positive: NetworkFilter[] = [];\n const negative: NetworkFilter[] = [];\n\n for (const filter of filters) {\n if (condition(filter)) {\n positive.push(filter);\n } else {\n negative.push(filter);\n }\n }\n\n return {\n negative,\n positive,\n };\n}\n\ninterface IOptimization {\n description: string;\n groupByCriteria: (filter: NetworkFilter) => string;\n select: (filter: NetworkFilter) => boolean;\n fusion: (filters: NetworkFilter[]) => NetworkFilter;\n}\n\nconst OPTIMIZATIONS: IOptimization[] = [\n {\n description: 'Remove duplicated filters by ID',\n fusion: (filters: NetworkFilter[]) => filters[0],\n groupByCriteria: (filter: NetworkFilter) => '' + filter.getId(),\n select: () => true,\n },\n {\n description: 'Group idential filter with same mask but different domains in single filters',\n fusion: (filters: NetworkFilter[]) => {\n const parts: string[] = [];\n const hostnames: Set<number> = new Set();\n const notHostnames: Set<number> = new Set();\n const entities: Set<number> = new Set();\n const notEntities: Set<number> = new Set();\n\n for (const { domains } of filters) {\n if (domains !== undefined) {\n if (domains.parts !== undefined) {\n parts.push(domains.parts);\n }\n\n if (domains.hostnames !== undefined) {\n for (const hash of domains.hostnames) {\n hostnames.add(hash);\n }\n }\n\n if (domains.entities !== undefined) {\n for (const hash of domains.entities) {\n entities.add(hash);\n }\n }\n\n if (domains.notHostnames !== undefined) {\n for (const hash of domains.notHostnames) {\n notHostnames.add(hash);\n }\n }\n\n if (domains.notEntities !== undefined) {\n for (const hash of domains.notEntities) {\n notEntities.add(hash);\n }\n }\n }\n }\n\n return new NetworkFilter(\n Object.assign({}, filters[0], {\n domains: new Domains({\n hostnames: hostnames.size !== 0 ? new Uint32Array(hostnames).sort() : undefined,\n entities: entities.size !== 0 ? new Uint32Array(entities).sort() : undefined,\n notHostnames:\n notHostnames.size !== 0 ? new Uint32Array(notHostnames).sort() : undefined,\n notEntities: notEntities.size !== 0 ? new Uint32Array(notEntities).sort() : undefined,\n parts: parts.length !== 0 ? parts.join(',') : undefined,\n }),\n rawLine:\n filters[0].rawLine !== undefined\n ? filters.map(({ rawLine }) => rawLine).join(' <+> ')\n : undefined,\n }),\n );\n },\n groupByCriteria: (filter: NetworkFilter) =>\n filter.getHostname() + filter.getFilter() + filter.getMask() + filter.getRedirect(),\n select: (filter: NetworkFilter) =>\n !filter.isCSP() && filter.denyallow === undefined && filter.domains !== undefined,\n },\n {\n description: 'Group simple patterns, into a single filter',\n fusion: (filters: NetworkFilter[]) => {\n const patterns: string[] = [];\n for (const f of filters) {\n if (f.isRegex()) {\n patterns.push(processRegex(f.getRegex()));\n } else if (f.isRightAnchor()) {\n patterns.push(`${escape(f.getFilter())}$`);\n } else if (f.isLeftAnchor()) {\n patterns.push(`^${escape(f.getFilter())}`);\n } else {\n patterns.push(escape(f.getFilter()));\n }\n }\n\n return new NetworkFilter(\n Object.assign({}, filters[0], {\n mask: setBit(filters[0].mask, NETWORK_FILTER_MASK.isRegex),\n rawLine:\n filters[0].rawLine !== undefined\n ? filters.map(({ rawLine }) => rawLine).join(' <+> ')\n : undefined,\n regex: new RegExp(patterns.join('|')),\n }),\n );\n },\n groupByCriteria: (filter: NetworkFilter) =>\n '' + (filter.getMask() & ~NETWORK_FILTER_MASK.isRegex & ~NETWORK_FILTER_MASK.isFullRegex),\n select: (filter: NetworkFilter) =>\n filter.domains === undefined &&\n filter.denyallow === undefined &&\n !filter.isHostnameAnchor() &&\n !filter.isRedirect() &&\n !filter.isCSP(),\n },\n];\n\n/**\n * Optimizer which returns the list of original filters.\n */\nexport function noopOptimizeNetwork(filters: NetworkFilter[]): NetworkFilter[] {\n return filters;\n}\n\nexport function noopOptimizeCosmetic(filters: CosmeticFilter[]): CosmeticFilter[] {\n return filters;\n}\n\n/**\n * Fusion a set of `filters` by applying optimizations sequentially.\n */\nexport function optimizeNetwork(filters: NetworkFilter[]): NetworkFilter[] {\n const fused: NetworkFilter[] = [];\n let toFuse = filters;\n\n for (const { select, fusion, groupByCriteria } of OPTIMIZATIONS) {\n const { positive, negative } = splitBy(toFuse, select);\n toFuse = negative;\n\n const groups = groupBy(positive, groupByCriteria);\n for (const group of groups) {\n if (group.length > 1) {\n fused.push(fusion(group));\n } else {\n toFuse.push(group[0]);\n }\n }\n }\n\n for (const filter of toFuse) {\n fused.push(filter);\n }\n\n return fused;\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport Config from '../config';\nimport { StaticDataView, EMPTY_UINT32_ARRAY, sizeOfBytes } from '../data-view';\nimport IFilter from '../filters/interface';\n\n// https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2\nexport function nextPow2(v: number): number {\n v--;\n v |= v >> 1;\n v |= v >> 2;\n v |= v >> 4;\n v |= v >> 8;\n v |= v >> 16;\n v++;\n return v;\n}\n\n/**\n * Generate unique IDs for requests, which is used to avoid matching the same\n * buckets multiple times on the same request (which can happen if a token\n * appears more than once in a URL).\n */\nlet UID = 1;\nfunction getNextId(): number {\n const id = UID;\n UID = (UID + 1) % 1000000000;\n return id;\n}\n\n/**\n * List of filters being indexed using the same token in the index.\n */\ninterface Bucket<T extends IFilter> {\n readonly filters: T[];\n lastRequestSeen: number;\n}\n\nconst EMPTY_BUCKET: number = Number.MAX_SAFE_INTEGER >>> 0;\n\n/**\n * The ReverseIndex is an accelerating data structure which allows finding a\n * subset of the filters given a list of tokens seen in a URL. It is the core\n * of the adblocker's matching capabilities and speed.\n *\n * It has mainly two caracteristics:\n * 1. It is very compact and is able to load fast.\n * 2. It is *very fast* in finding potential candidates.\n *\n * Conceptually, the reverse index dispatches filters in \"buckets\" (an array of\n * one or more filters). Filters living in the same bucket are guaranteed to\n * share at least one of their tokens (appearing in the pattern). For example:\n *\n * - Bucket 1 (ads):\n * - /ads.js\n * - /script/ads/tracking.js\n * - /ads/\n * - Bucket 2 (tracking)\n * - /tracking.js\n * - ||tracking.com/cdn\n *\n * We see that filters in \"Bucket 1\" are indexed using the token \"ads\" and\n * \"Bucket 2\" using token \"tracking\".\n *\n * This property allows to quickly discard most of the filters when we match a\n * URL. To achieve this, the URL is tokenized in the same way filters are\n * tokenized and for each token, we check if there are some filters available.\n *\n * For example:\n *\n * URL \"https://tracking.com/\" has the following tokens: \"https\", \"tracking\"\n * and \"com\". We immediatly see that we only check the two filters in the\n * \"tracking\" bucket since they are the only ones having a common token with\n * the URL.\n *\n * How do we pick the token for each filter?\n * =========================================\n *\n * Each filter is only indexed *once*, which means that we need to pick one of\n * the tokens appearing in the pattern. We choose the token such that each\n * filter is indexed using the token which was the *least seen* globally. In\n * other words, we pick the most discriminative token for each filter. This is\n * done using the following algorithm:\n * 1. Tokenize all the filters which will be stored in the index\n * 2. Compute a histogram of frequency of each token (globally)\n * 3. Select the best token for each filter (lowest frequency)\n */\nexport default class ReverseIndex<T extends IFilter> {\n public static deserialize<T extends IFilter>(\n buffer: StaticDataView,\n deserialize: (view: StaticDataView) => T,\n optimize: (filters: T[]) => T[],\n config: Config,\n ): ReverseIndex<T> {\n const tokensLookupIndexSize = buffer.getUint32();\n const bucketsIndexSize = buffer.getUint32();\n const numberOfFilters = buffer.getUint32();\n\n // Alignement to 4 bytes is important here since `view` (Uint8Array) can\n // appear at any offset of `buffer`. But to be sure we can read back\n // Uint32Array directly from raw buffer, the alignement has to be a\n // multiple of 4. The same alignement is taken care of in `serialize`.\n const view = StaticDataView.fromUint8Array(buffer.getBytes(true /* align */), config);\n const tokensLookupIndex = view.getUint32ArrayView(tokensLookupIndexSize);\n const bucketsIndex = view.getUint32ArrayView(bucketsIndexSize);\n const filtersIndexStart = view.pos;\n view.seekZero(); // not strictly needed but make sure reverse index can be compared with deep equal\n\n return new ReverseIndex({\n config,\n deserialize,\n filters: [],\n optimize,\n }).updateInternals({\n bucketsIndex,\n filtersIndexStart,\n numberOfFilters,\n tokensLookupIndex,\n view,\n });\n }\n\n // Internal, compact representation of the reverse index. It contains three\n // distinct parts stored in the same typed array:\n //\n // 1. \"tokens lookup index\" allows to identify a sub-set of buckets which\n // likely contain filters for a given token. It is an approximate dispatch\n // table which maps a mask of N bits (N being smaller than 31 bits, the size\n // of a token) to a list of buckets having a 'token' sharing these same N\n // bits sub-set. If the binary representation of the token for bucket1 is\n // 101010 and suffix has size 3, then we would lookup the \"tokens lookup\n // index\" using the last 3 bits \"010\" which would give us the offset in our\n // typed array where we can start reading the filters of buckets having a\n // token ending with the same 3 bits. The value of N is always a power of 2\n // depending on the total number of filters stored in the index; determined\n // at the time `update(...)` is called.\n //\n // 2. \"buckets index\" is an array which associates tokens to filters. The\n // structure is: token, filter, token, filter, etc. To identify all the\n // filters indexed with 'token' a naive approach would be to iterate on\n // \"buckets index\" and collect all the filters indexed with 'token'. This\n // would be *very inefficient*! To make this process faster, filters in\n // \"buckets index\" are grouped so that buckets sharing the same suffix of N\n // bits in their indexing token (see \"tokens lookup index\") are stored side\n // by side in the typed array. To know where this section start given a\n // particular token, we use \"tokens lookup index\" which associated the suffix\n // of size N to an index in \"buckets index\". From there we can iterate on the\n // candidates.\n //\n // 3. \"filters index\" contains the filters themselves. \"buckets index\"\n // presented earlier does not contain filters, but an index to the \"filters\n // index\". This allows a filter to be indexed multiple times without\n // introducing any overhead; the filter can be associated with multiple\n // tokens in \"buckets index\" (each pointing to the same place in \"filters\n // index\") but its actual representation is stored only once in \"filters\n // index\".\n\n private bucketsIndex: Uint32Array = EMPTY_UINT32_ARRAY;\n private filtersIndexStart: number = 0;\n private numberOfFilters: number = 0;\n private tokensLookupIndex: Uint32Array = EMPTY_UINT32_ARRAY;\n private view: StaticDataView;\n\n // In-memory cache used to keep track of buckets which have been loaded from\n // the compact representation (i.e.: this.view). It is not strictly necessary\n // but will speed-up retrival of popular filters (since we do not have to\n // perform the lookup in \"tokens index\" and \"buckets index\" everytime).\n private readonly cache: Map<number, Bucket<T>> = new Map();\n\n // Function used to load a filter (e.g.: CosmeticFilter or NetworkFilter)\n // from its compact representation in the \"filters index\" section of the\n // typed array. Each filter exposes a `serialize(...)` method which is used\n // to store it in `this.view` (section \"filters index\"). While matching we\n // need to retrieve the instance of the filter to perform matching and use\n // `this.deserializeFilter(...)` to do so.\n private readonly deserializeFilter: (view: StaticDataView) => T;\n\n // Optional function which will be used to optimize a list of filters\n // in-memory. Typically this is used while matching when a list of filters is\n // loaded in memory and stored in `this.cache`. Before using the bucket, we\n // call `this.optimize(...)` on the list of filters to allow some\n // optimizations to be performed (e.g.: fusion of similar filters, etc.).\n // Have a look into `./src/engine/optimizer.ts` for examples of such\n // optimizations.\n private readonly optimize: (filters: T[]) => T[];\n private readonly config: Readonly<Config>;\n\n constructor({\n deserialize,\n filters,\n optimize,\n config,\n }: {\n deserialize: (view: StaticDataView) => T;\n filters: T[];\n optimize: (filters: T[]) => T[];\n config: Config;\n }) {\n this.view = StaticDataView.empty(config);\n this.deserializeFilter = deserialize;\n this.optimize = optimize;\n this.config = config;\n\n if (filters.length !== 0) {\n this.update(filters, undefined);\n }\n }\n\n /**\n * Load all filters from this index in memory (i.e.: deserialize them from\n * the byte array into NetworkFilter or CosmeticFilter instances). This is\n * mostly useful for debugging or testing purposes.\n */\n public getFilters(): T[] {\n const filters: T[] = [];\n\n if (this.numberOfFilters === 0) {\n return filters;\n }\n\n // set view cursor at the start of \"filters index\"\n this.view.setPos(this.filtersIndexStart);\n\n for (let i = 0; i < this.numberOfFilters; i += 1) {\n filters.push(this.deserializeFilter(this.view));\n }\n\n this.view.seekZero();\n\n return filters;\n }\n\n /**\n * Return an array of all the tokens currently used as keys of the \"buckets index\".\n */\n public getTokens(): Uint32Array {\n const tokens: Set<number> = new Set();\n\n for (let i = 0; i < this.bucketsIndex.length; i += 2) {\n tokens.add(this.bucketsIndex[i]);\n }\n\n return new Uint32Array(tokens);\n }\n\n /**\n * Estimate the number of bytes needed to serialize this instance of `ReverseIndex`.\n */\n public getSerializedSize(): number {\n // 12 = 4 bytes (tokensLookupIndex.length) + 4 bytes (bucketsIndex.length) + 4 bytes (numberOfFilters)\n return 12 + sizeOfBytes(this.view.buffer, true /* align */);\n }\n\n /**\n * Dump this index to `buffer`.\n */\n public serialize(buffer: StaticDataView): void {\n buffer.pushUint32(this.tokensLookupIndex.length);\n buffer.pushUint32(this.bucketsIndex.length);\n buffer.pushUint32(this.numberOfFilters);\n\n // Aligmenent is crucial here, see comment in `deserialize` for more info.\n buffer.pushBytes(this.view.buffer, true /* align */);\n }\n\n /**\n * Iterate on all filters found in buckets associated with the given list of\n * tokens. The callback is called on each of them. Early termination can be\n * achieved if the callback returns `false`.\n *\n * This will not check if each filter returned would match a given request but\n * is instead used as a list of potential candidates (much smaller than the\n * total set of filters; typically between 5 and 10 filters will be checked).\n */\n public iterMatchingFilters(tokens: Uint32Array, cb: (f: T) => boolean): void {\n // Each request is assigned an ID so that we can keep track of the last\n // request seen by each bucket in the reverse index. This provides a cheap\n // way to prevent filters from being inspected more than once per request\n // (which could happen if the same token appears more than once in the URL).\n const requestId = getNextId();\n\n for (const token of tokens) {\n if (this.iterBucket(token, requestId, cb) === false) {\n return;\n }\n }\n\n // Fallback to 0 (i.e.: wildcard bucket) bucket if nothing was found before.\n this.iterBucket(0, requestId, cb);\n }\n\n /**\n * Re-create the internal data-structure of the reverse index *in-place*. It\n * needs to be called with a list of new filters and optionally a list of ids\n * (as returned by either NetworkFilter.getId() or CosmeticFilter.getId())\n * which need to be removed from the index.\n */\n public update(newFilters: T[], removedFilters: Set<number> | undefined): void {\n // Reset internal cache on each update\n if (this.cache.size !== 0) {\n this.cache.clear();\n }\n\n const compression = this.config.enableCompression;\n let totalNumberOfTokens = 0;\n let totalNumberOfIndexedFilters = 0;\n const filtersTokens: Uint32Array[][] = [];\n\n // Keep track of the final size of the buckets index. `bucketsIndexSize` is\n // the number of indexed filters, multiplied by 2 (since we store both the\n // token a filter is indexed with and the index of the filter).\n let bucketsIndexSize = 0;\n\n // Re-use the current size of \"filters index\" as a starting point so that\n // we only need to update with new or removed filters. This saves time if\n // we perform a small update on an existing index.\n let estimatedBufferSize = this.view.buffer.byteLength - this.filtersIndexStart;\n\n // Create a list of all filters which will be part of the index. This means\n // loading existing filters, removing the ones that need to be deleted and\n // adding the new ones. At the same time, we update the estimation of\n // buffer size needed to store this index.\n let filters: T[] = this.getFilters();\n if (filters.length !== 0) {\n // If there is at least one existing filter, then we check if some should\n // be removed. We subtract their size from the total estimated buffer\n // size.\n if (removedFilters !== undefined && removedFilters.size !== 0) {\n filters = filters.filter((f) => {\n if (removedFilters.has(f.getId())) {\n estimatedBufferSize -= f.getSerializedSize(compression);\n return false;\n }\n\n return true;\n });\n }\n\n // Add new filters to the list and also update estimated size\n for (const filter of newFilters) {\n estimatedBufferSize += filter.getSerializedSize(compression);\n filters.push(filter);\n }\n } else {\n // In the case where there is no existing filter in the index (happens on\n // initialization), then we can take a fast-path and not check removed\n // filters at all. There is also no need to copy the array of filters.\n filters = newFilters;\n for (const filter of newFilters) {\n estimatedBufferSize += filter.getSerializedSize(compression);\n }\n }\n\n // No filters given; reset to empty index and abort.\n if (filters.length === 0) {\n this.updateInternals({\n bucketsIndex: EMPTY_UINT32_ARRAY,\n filtersIndexStart: 0,\n numberOfFilters: 0,\n tokensLookupIndex: EMPTY_UINT32_ARRAY,\n view: StaticDataView.empty(this.config),\n });\n return;\n }\n\n // When we run in `debug` mode, we enable fully deterministic updates of\n // internal data-structures. To this effect, we sort all filters before\n // insertion.\n if (this.config.debug === true) {\n filters.sort((f1: T, f2: T): number => f1.getId() - f2.getId());\n }\n\n const histogram = new Uint32Array(Math.max(nextPow2(2 * filters.length), 256));\n\n // Tokenize all filters stored in this index. And compute a histogram of\n // tokens so that we can decide how to index each filter efficiently.\n for (const filter of filters) {\n // Tokenize `filter` and store the result in `filtersTokens` which will\n // be used in the next step to select the best token for each filter.\n const multiTokens = filter.getTokens();\n filtersTokens.push(multiTokens);\n\n // Update estimated size of \"buckets index\" based on number of times this\n // particular filter will be indexed.\n bucketsIndexSize += 2 * multiTokens.length; // token + filter index\n totalNumberOfIndexedFilters += multiTokens.length;\n\n // Each filter can be indexed more than once, so `getTokens(...)` returns\n // multiple sets of tokens. We iterate on all of them and update the\n // histogram for each.\n for (const tokens of multiTokens) {\n totalNumberOfTokens += tokens.length;\n for (const token of tokens) {\n histogram[token % histogram.length] += 1;\n }\n }\n }\n\n // Add size of bucketsIndex to total size (x4 because these are 32 bits numbers)\n estimatedBufferSize += bucketsIndexSize * 4;\n\n // Prepare \"tokens index\" (see documentation in constructor of `ReverseIndex` class above).\n const tokensLookupIndexSize: number = Math.max(2, nextPow2(totalNumberOfIndexedFilters));\n const mask: number = tokensLookupIndexSize - 1;\n const suffixes: [number, number][][] = [];\n for (let i = 0; i < tokensLookupIndexSize; i += 1) {\n suffixes.push([]);\n }\n\n // Add size of tokensLookupIndex to total size (x4 because these are 32 bits numbers)\n estimatedBufferSize += tokensLookupIndexSize * 4;\n\n // At this point we know the number of bytes needed for the compact\n // representation of this reverse index (\"tokens index\" + \"buckets index\" +\n // \"filters index\"). We allocate it at once and proceed with populating it.\n const buffer = StaticDataView.allocate(estimatedBufferSize, this.config);\n const tokensLookupIndex = buffer.getUint32ArrayView(tokensLookupIndexSize);\n const bucketsIndex = buffer.getUint32ArrayView(bucketsIndexSize);\n const filtersIndexStart = buffer.getPos();\n\n // For each filter, find the best token (least seen) based on histogram.\n // Since we are iterating again on the filters, we populate \"filters index\"\n // in the same loop and keep track of their indices so that we can later\n // populate \"buckets index\".\n for (let i = 0; i < filtersTokens.length; i += 1) {\n const filter: T = filters[i];\n const multiTokens: Uint32Array[] = filtersTokens[i];\n\n // Serialize this filter and keep track of its index in the byte array;\n // it will be used in \"buckets index\" to point to this filter.\n const filterIndex = buffer.pos;\n filter.serialize(buffer);\n\n // Index the filter once per \"tokens\"\n for (const tokens of multiTokens) {\n // Find best token (least seen) from `tokens` using `histogram`.\n let bestToken: number = 0; // default = wildcard bucket\n let minCount: number = totalNumberOfTokens + 1;\n for (const token of tokens) {\n const tokenCount: number = histogram[token % histogram.length];\n if (tokenCount < minCount) {\n minCount = tokenCount;\n bestToken = token;\n\n // Fast path, if the current token has only been seen once, we can\n // stop iterating since we will not find a better alternarive!\n if (minCount === 1) {\n break;\n }\n }\n }\n\n // `bestToken & mask` represents the N last bits of `bestToken`. We\n // group all filters indexed with a token sharing the same N bits.\n suffixes[bestToken & mask].push([bestToken, filterIndex]);\n }\n }\n\n // Populate \"tokens index\" and \"buckets index\" based on best token found for each filter.\n let indexInBucketsIndex = 0;\n for (let i = 0; i < tokensLookupIndexSize; i += 1) {\n const filtersForMask: [number, number][] = suffixes[i];\n tokensLookupIndex[i] = indexInBucketsIndex;\n for (const [token, filterIndex] of filtersForMask) {\n bucketsIndex[indexInBucketsIndex++] = token;\n bucketsIndex[indexInBucketsIndex++] = filterIndex;\n }\n }\n\n // Update internals\n buffer.seekZero();\n this.updateInternals({\n bucketsIndex,\n filtersIndexStart,\n numberOfFilters: filtersTokens.length,\n tokensLookupIndex,\n view: buffer,\n });\n }\n\n private updateInternals({\n bucketsIndex,\n filtersIndexStart,\n numberOfFilters,\n tokensLookupIndex,\n view,\n }: {\n bucketsIndex: Uint32Array;\n filtersIndexStart: number;\n numberOfFilters: number;\n tokensLookupIndex: Uint32Array;\n view: StaticDataView;\n }): ReverseIndex<T> {\n this.bucketsIndex = bucketsIndex;\n this.filtersIndexStart = filtersIndexStart;\n this.numberOfFilters = numberOfFilters;\n this.tokensLookupIndex = tokensLookupIndex;\n this.view = view;\n view.seekZero();\n return this;\n }\n\n /**\n * If a bucket exists for the given token, call the callback on each filter\n * found inside. An early termination mechanism is built-in, to stop iterating\n * as soon as `false` is returned from the callback.\n */\n private iterBucket(token: number, requestId: number, cb: (f: T) => boolean): boolean {\n let bucket: Bucket<T> | undefined =\n this.config.enableInMemoryCache === true ? this.cache.get(token) : undefined;\n\n // Lazily create bucket if it does not yet exist in memory. Lookup the\n // compact bucket representation and find all filters being associated with\n // `token`. Create a `Bucket` out of them and store them in cache.\n if (bucket === undefined) {\n const offset = token & (this.tokensLookupIndex.length - 1);\n const startOfBucket = this.tokensLookupIndex[offset];\n\n // We do not have any filters for this token\n if (startOfBucket === EMPTY_BUCKET) {\n return true;\n }\n\n // Since we do not store explicitly the number of filters in each\n // \"bucket\", we check the index of the next one and use it to infer the\n // number of filters (each filter being stored as a token + index to the\n // \"filters store\")\n const endOfBucket =\n offset === this.tokensLookupIndex.length - 1\n ? this.bucketsIndex.length\n : this.tokensLookupIndex[offset + 1];\n\n // Get indices of filters indexed with `token`, if any.\n const filtersIndices: number[] = [];\n for (let i = startOfBucket; i < endOfBucket; i += 2) {\n const currentToken = this.bucketsIndex[i];\n if (currentToken === token) {\n filtersIndices.push(this.bucketsIndex[i + 1]);\n }\n }\n\n // No filter indexed with `token`.\n if (filtersIndices.length === 0) {\n return true; // continue looking for a match\n }\n\n // If we have filters for `token` then deserialize filters in memory and\n // create a `Bucket` instance to hold them for future access.\n const filters: T[] = [];\n const view = this.view;\n for (let i = 0; i < filtersIndices.length; i += 1) {\n view.setPos(filtersIndices[i]);\n filters.push(this.deserializeFilter(view));\n }\n\n // Create new bucket with found filters (only optimize if we have more\n // than one filter).\n bucket = {\n filters: filters.length > 1 ? this.optimize(filters) : filters,\n lastRequestSeen: -1, // safe because all ids are positive\n };\n\n if (this.config.enableInMemoryCache === true) {\n this.cache.set(token, bucket);\n }\n }\n\n // Look for matching filter in this bucket\n if (bucket.lastRequestSeen !== requestId) {\n bucket.lastRequestSeen = requestId;\n const filters = bucket.filters;\n for (let i = 0; i < filters.length; i += 1) {\n // Break the loop if the callback returns `false`\n if (cb(filters[i]) === false) {\n // Whenever we get a match from a filter, we also swap it one\n // position up in the list. This way, over time, popular filters will\n // be first and might match earlier. This should decrease the time\n // needed to get a match.\n if (i > 0) {\n const filter = filters[i];\n filters[i] = filters[i - 1];\n filters[i - 1] = filter;\n }\n\n return false;\n }\n }\n }\n\n return true;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport Config from '../../config';\nimport { StaticDataView, sizeOfBytes } from '../../data-view';\nimport IFilter from '../../filters/interface';\n\n// Empty filters is 4 bytes because we need at least one 32 bits number to keep\n// track of the number of filters in the container. If there is no filter then\n// the number will be 0.\nconst EMPTY_FILTERS = new Uint8Array(4);\n\n/**\n * Generic filters container (for both CosmeticFilter and NetworkFilter\n * instances). This abstracts away some of the logic to serialize/lazy-load\n * lists of filters (which is useful for things like generic cosmetic filters\n * or $badfilter).\n */\nexport default class FiltersContainer<T extends IFilter> {\n public static deserialize<T extends IFilter>(\n buffer: StaticDataView,\n deserialize: (view: StaticDataView) => T,\n config: Config,\n ): FiltersContainer<T> {\n const container = new FiltersContainer({ deserialize, config, filters: [] });\n container.filters = buffer.getBytes();\n return container;\n }\n\n // Data-view compatible typed array containing all the serialized filters.\n public filters: Uint8Array;\n private readonly deserialize: (view: StaticDataView) => T;\n\n // This does not need to be serialized as it is owned globally by the FiltersEngine.\n private readonly config: Config;\n\n constructor({\n config,\n deserialize,\n filters,\n }: {\n config: Config;\n deserialize: (view: StaticDataView) => T;\n filters: T[];\n }) {\n this.deserialize = deserialize;\n this.filters = EMPTY_FILTERS;\n this.config = config;\n\n if (filters.length !== 0) {\n this.update(filters, undefined);\n }\n }\n\n /**\n * Update filters based on `newFilters` and `removedFilters`.\n */\n public update(newFilters: T[], removedFilters: Set<number> | undefined): void {\n // Estimate size of the buffer we will need to store filters. This avoids\n // having to allocate a big chunk of memory up-front if it's not needed.\n // We start with the current size of `this.filters` then update it with\n // removed/added filters.\n let bufferSizeEstimation: number = this.filters.byteLength;\n let selected: T[] = [];\n const compression = this.config.enableCompression;\n\n // Add existing rules (removing the ones with ids in `removedFilters`)\n const currentFilters = this.getFilters();\n if (currentFilters.length !== 0) {\n // If no filter was removed (we only add new ones), we don't need to\n // filter out removed existing filters. So we just assign the array to\n // `selected` directly to save a bit of effort.\n if (removedFilters === undefined || removedFilters.size === 0) {\n selected = currentFilters;\n } else {\n // There might be some removed selected filters, so we iterate through\n // them and make sure we keep only the ones not having been deleted.\n for (const filter of currentFilters) {\n if (removedFilters.has(filter.getId()) === false) {\n selected.push(filter);\n } else {\n bufferSizeEstimation -= filter.getSerializedSize(compression);\n }\n }\n }\n }\n\n // If `selected` and `currentFilters` have the same length then no filter was removed.\n const storedFiltersRemoved = selected.length !== currentFilters.length;\n\n // Add new rules.\n const numberOfExistingFilters: number = selected.length;\n for (const filter of newFilters) {\n bufferSizeEstimation += filter.getSerializedSize(compression);\n selected.push(filter);\n }\n\n // Check if any new filter was added in `selected` (from `newFilters`).\n const storedFiltersAdded: boolean = selected.length > numberOfExistingFilters;\n\n // If selected changed, then update the compact representation of filters.\n if (selected.length === 0) {\n this.filters = EMPTY_FILTERS;\n } else if (storedFiltersAdded === true || storedFiltersRemoved === true) {\n // Store filters in their compact form\n const buffer = StaticDataView.allocate(bufferSizeEstimation, this.config);\n buffer.pushUint32(selected.length);\n\n // When we run in `debug` mode, we enable fully deterministic updates of\n // internal data-structure. To this effect, we sort all filters before\n // insertion.\n if (this.config.debug === true) {\n selected.sort((f1: T, f2: T): number => f1.getId() - f2.getId());\n }\n\n for (const filter of selected) {\n filter.serialize(buffer);\n }\n\n // Update internals\n this.filters = buffer.buffer;\n }\n }\n\n public getSerializedSize(): number {\n return sizeOfBytes(this.filters, false /* no alignement */);\n }\n\n public serialize(buffer: StaticDataView): void {\n buffer.pushBytes(this.filters);\n }\n\n public getFilters(): T[] {\n // No filter stored in the container\n if (this.filters.byteLength <= 4) {\n return [];\n }\n\n // Load all filters in memory and store them in `cache`\n const filters: T[] = [];\n const buffer = StaticDataView.fromUint8Array(this.filters, this.config);\n const numberOfFilters = buffer.getUint32();\n for (let i = 0; i < numberOfFilters; i += 1) {\n filters.push(this.deserialize(buffer));\n }\n\n return filters;\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\n/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport type { IMessageFromBackground } from '@cliqz/adblocker-content';\n\nimport { compactTokens, concatTypedArrays } from '../../compact-set';\nimport Config from '../../config';\nimport { StaticDataView } from '../../data-view';\nimport CosmeticFilter, { DEFAULT_HIDDING_STYLE } from '../../filters/cosmetic';\nimport {\n getEntityHashesFromLabelsBackward,\n getHostnameHashesFromLabelsBackward,\n} from '../../request';\nimport { hashStrings, tokenizeNoSkip } from '../../utils';\nimport { noopOptimizeCosmetic } from '../optimizer';\nimport ReverseIndex from '../reverse-index';\nimport FiltersContainer from './filters';\n\n/**\n * Given a list of CSS selectors, create a valid stylesheet ready to be\n * injected in the page. This also takes care to no create rules with too many\n * selectors for Chrome, see: https://crbug.com/804179\n */\nexport function createStylesheet(rules: string[], style: string): string {\n if (rules.length === 0) {\n return '';\n }\n\n const maximumNumberOfSelectors = 1024;\n const parts: string[] = [];\n const styleStr: string = ` { ${style} }`;\n\n for (let i = 0; i < rules.length; i += maximumNumberOfSelectors) {\n // Accumulate up to `maximumNumberOfSelectors` selectors into `selector`.\n // We use string concatenation here since it's faster than using\n // `Array.prototype.join`.\n let selector = rules[i];\n for (\n let j = i + 1, end = Math.min(rules.length, i + maximumNumberOfSelectors);\n j < end;\n j += 1\n ) {\n selector += ',\\n' + rules[j];\n }\n\n // Insert CSS after last selector (e.g.: `{ display: none }`)\n selector += styleStr;\n\n // If `rules` has less than the limit, we can short-circuit here\n if (rules.length < maximumNumberOfSelectors) {\n return selector;\n }\n\n // Keep track of this chunk and process next ones\n parts.push(selector);\n }\n\n // Join all chunks together\n return parts.join('\\n');\n}\n\n/**\n * If at least one filter from `rules` has a custom style (e.g.: `##.foo\n * :style(...)`) then we fallback to `createStylesheetFromRulesWithCustomStyles`\n * which is slower than `createStylesheetFromRules`.\n */\nfunction createStylesheetFromRulesWithCustomStyles(rules: CosmeticFilter[]): string {\n const selectorsPerStyle: Map<string, string[]> = new Map();\n\n for (const rule of rules) {\n const style = rule.getStyle();\n const selectors = selectorsPerStyle.get(style);\n if (selectors === undefined) {\n selectorsPerStyle.set(style, [rule.getSelector()]);\n } else {\n selectors.push(rule.getSelector());\n }\n }\n\n const stylesheets: string[] = [];\n const selectorsPerStyleArray = Array.from(selectorsPerStyle.entries());\n for (const [style, selectors] of selectorsPerStyleArray) {\n stylesheets.push(createStylesheet(selectors, style));\n }\n\n return stylesheets.join('\\n\\n');\n}\n\n/**\n * Given a list of cosmetic filters, create a stylesheet ready to be injected.\n * This function is optimistic and will assume there is no `:style` filter in\n * `rules`. In case one is found on the way, we fallback to the slower\n * `createStylesheetFromRulesWithCustomStyles` function.\n */\nfunction createStylesheetFromRules(rules: CosmeticFilter[]): string {\n const selectors: string[] = [];\n for (const rule of rules) {\n if (rule.hasCustomStyle()) {\n return createStylesheetFromRulesWithCustomStyles(rules);\n }\n\n selectors.push(rule.selector);\n }\n\n return createStylesheet(selectors, DEFAULT_HIDDING_STYLE);\n}\n\nfunction createLookupTokens(hostname: string, domain: string): Uint32Array {\n const hostnamesHashes = getHostnameHashesFromLabelsBackward(hostname, domain);\n const entitiesHashes = getEntityHashesFromLabelsBackward(hostname, domain);\n const tokens = new Uint32Array(hostnamesHashes.length + entitiesHashes.length);\n\n let index = 0;\n\n for (const hash of hostnamesHashes) {\n tokens[index++] = hash;\n }\n\n for (const hash of entitiesHashes) {\n tokens[index++] = hash;\n }\n\n return tokens;\n}\n\n/**\n * Efficient container for CosmeticFilter instances. Allows to quickly\n * retrieved scripts and stylesheets to inject in pages for a specific\n * hostname/domain.\n */\nexport default class CosmeticFilterBucket {\n public static deserialize(buffer: StaticDataView, config: Config): CosmeticFilterBucket {\n const bucket = new CosmeticFilterBucket({ config });\n\n bucket.genericRules = FiltersContainer.deserialize(buffer, CosmeticFilter.deserialize, config);\n\n bucket.classesIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n bucket.hostnameIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n bucket.hrefsIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n bucket.htmlIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n bucket.idsIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n bucket.unhideIndex = ReverseIndex.deserialize(\n buffer,\n CosmeticFilter.deserialize,\n noopOptimizeCosmetic,\n config,\n );\n\n return bucket;\n }\n\n // `genericRules` is a contiguous container of filters. In this case\n // we keep track of all generic cosmetic filters, which allows us to\n // efficiently inject them in any page (either all of them or none of\n // them, without having to match against the hostname/domain of the\n // page). Having them separated also makes it easier to disable them.\n public genericRules: FiltersContainer<CosmeticFilter>;\n\n // `hostnameIndex` contains all cosmetic filters which are specific to one or\n // several domains (that includes entities as well). They are stored in a\n // reverse index which allows to efficiently get a subset of the filters\n // which could be injected on a given page (given hostname and domain).\n public classesIndex: ReverseIndex<CosmeticFilter>;\n public hostnameIndex: ReverseIndex<CosmeticFilter>;\n public hrefsIndex: ReverseIndex<CosmeticFilter>;\n public htmlIndex: ReverseIndex<CosmeticFilter>;\n public idsIndex: ReverseIndex<CosmeticFilter>;\n public unhideIndex: ReverseIndex<CosmeticFilter>;\n\n // In-memory cache\n public baseStylesheet: string | null;\n public extraGenericRules: CosmeticFilter[] | null;\n\n constructor({ filters = [], config }: { filters?: CosmeticFilter[]; config: Config }) {\n this.genericRules = new FiltersContainer({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n });\n\n this.classesIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n this.hostnameIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n this.hrefsIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n this.htmlIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n this.idsIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n this.unhideIndex = new ReverseIndex({\n config,\n deserialize: CosmeticFilter.deserialize,\n filters: [],\n optimize: noopOptimizeCosmetic,\n });\n\n // In-memory cache, lazily initialized\n this.baseStylesheet = null;\n this.extraGenericRules = null;\n\n if (filters.length !== 0) {\n this.update(filters, undefined, config);\n }\n }\n\n public getFilters(): CosmeticFilter[] {\n const filters: CosmeticFilter[] = [];\n return filters.concat(\n this.genericRules.getFilters(),\n this.classesIndex.getFilters(),\n this.hostnameIndex.getFilters(),\n this.hrefsIndex.getFilters(),\n this.htmlIndex.getFilters(),\n this.idsIndex.getFilters(),\n this.unhideIndex.getFilters(),\n );\n }\n\n public update(\n newFilters: CosmeticFilter[],\n removedFilters: Set<number> | undefined,\n config: Config,\n ): void {\n const classSelectors: CosmeticFilter[] = [];\n const genericHideRules: CosmeticFilter[] = [];\n const hostnameSpecificRules: CosmeticFilter[] = [];\n const hrefSelectors: CosmeticFilter[] = [];\n const htmlRules: CosmeticFilter[] = [];\n const idSelectors: CosmeticFilter[] = [];\n const unHideRules: CosmeticFilter[] = [];\n\n for (const rule of newFilters) {\n if (rule.isUnhide()) {\n unHideRules.push(rule);\n } else if (rule.isHtmlFiltering()) {\n htmlRules.push(rule);\n } else if (rule.isGenericHide()) {\n if (rule.isClassSelector()) {\n classSelectors.push(rule);\n } else if (rule.isIdSelector()) {\n idSelectors.push(rule);\n } else if (rule.isHrefSelector()) {\n hrefSelectors.push(rule);\n } else {\n genericHideRules.push(rule);\n }\n } else if (rule.isExtended() === false || config.loadExtendedSelectors === true) {\n hostnameSpecificRules.push(rule);\n }\n }\n\n this.genericRules.update(genericHideRules, removedFilters);\n this.classesIndex.update(classSelectors, removedFilters);\n this.hostnameIndex.update(hostnameSpecificRules, removedFilters);\n this.hrefsIndex.update(hrefSelectors, removedFilters);\n this.htmlIndex.update(htmlRules, removedFilters);\n this.idsIndex.update(idSelectors, removedFilters);\n this.unhideIndex.update(unHideRules, removedFilters);\n }\n\n public getSerializedSize(): number {\n return (\n this.genericRules.getSerializedSize() +\n this.classesIndex.getSerializedSize() +\n this.hostnameIndex.getSerializedSize() +\n this.hrefsIndex.getSerializedSize() +\n this.htmlIndex.getSerializedSize() +\n this.idsIndex.getSerializedSize() +\n this.unhideIndex.getSerializedSize()\n );\n }\n\n public serialize(buffer: StaticDataView): void {\n this.genericRules.serialize(buffer);\n this.classesIndex.serialize(buffer);\n this.hostnameIndex.serialize(buffer);\n this.hrefsIndex.serialize(buffer);\n this.htmlIndex.serialize(buffer);\n this.idsIndex.serialize(buffer);\n this.unhideIndex.serialize(buffer);\n }\n\n public getHtmlRules({\n domain,\n hostname,\n }: {\n domain: string;\n hostname: string;\n }): CosmeticFilter[] {\n // Tokens from `hostname` and `domain` which will be used to lookup filters\n // from the reverse index. The same tokens are re-used for multiple indices.\n const hostnameTokens = createLookupTokens(hostname, domain);\n const rules: CosmeticFilter[] = [];\n this.htmlIndex.iterMatchingFilters(hostnameTokens, (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n rules.push(rule);\n }\n return true;\n });\n\n // If we found at least one candidate, check if we have unhidden rules.\n const disabledRules: Set<string> = new Set();\n if (rules.length !== 0) {\n this.unhideIndex.iterMatchingFilters(hostnameTokens, (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n disabledRules.add(rule.getSelector());\n }\n\n return true;\n });\n }\n\n return rules.filter(\n (rule) => disabledRules.size === 0 || disabledRules.has(rule.getSelector()) === false,\n );\n }\n\n /**\n * Request cosmetics and scripts to inject in a page.\n */\n public getCosmeticsFilters({\n domain,\n hostname,\n\n classes = [],\n hrefs = [],\n ids = [],\n\n allowGenericHides = true,\n allowSpecificHides = true,\n\n // Allows to specify which rules to return\n getBaseRules = true,\n getInjectionRules = true,\n getExtendedRules = true,\n getRulesFromDOM = true,\n getRulesFromHostname = true,\n }: {\n domain: string;\n hostname: string;\n\n classes: string[] | undefined;\n hrefs: string[] | undefined;\n ids: string[] | undefined;\n\n allowGenericHides: boolean;\n allowSpecificHides: boolean;\n\n getBaseRules?: boolean;\n getInjectionRules?: boolean;\n getExtendedRules?: boolean;\n getRulesFromDOM?: boolean;\n getRulesFromHostname?: boolean;\n }): {\n injections: CosmeticFilter[];\n extended: IMessageFromBackground['extended'];\n stylesheet: string;\n } {\n // Tokens from `hostname` and `domain` which will be used to lookup filters\n // from the reverse index. The same tokens are re-used for multiple indices.\n const hostnameTokens = createLookupTokens(hostname, domain);\n const rules: CosmeticFilter[] = [];\n\n // =======================================================================\n // Rules: hostname-specific\n // =======================================================================\n // Collect matching rules which specify a hostname constraint.\n if (getRulesFromHostname === true) {\n this.hostnameIndex.iterMatchingFilters(hostnameTokens, (rule: CosmeticFilter) => {\n // A hostname-specific filter is considered if it's a scriptlet (not\n // impacted by disabling of specific filters) or specific hides are\n // allowed.\n if (\n (allowSpecificHides === true || rule.isScriptInject() === true) &&\n rule.match(hostname, domain)\n ) {\n rules.push(rule);\n }\n return true;\n });\n }\n\n // =======================================================================\n // Rules: generic hide\n // =======================================================================\n // Optionally, collect genericHide rules. We need to make sure the `rule`\n // matches the hostname and domain since some generic rules can specify\n // negated hostnames and entities (e.g.: ~foo.*##generic).\n if (allowGenericHides === true && getRulesFromHostname === true) {\n const genericRules = this.getGenericRules();\n for (const rule of genericRules) {\n if (rule.match(hostname, domain) === true) {\n rules.push(rule);\n }\n }\n }\n\n // =======================================================================\n // Class selector based\n // =======================================================================\n if (allowGenericHides === true && getRulesFromDOM === true && classes.length !== 0) {\n this.classesIndex.iterMatchingFilters(hashStrings(classes), (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n rules.push(rule);\n }\n return true;\n });\n }\n\n // =======================================================================\n // Id selector based\n // =======================================================================\n if (allowGenericHides === true && getRulesFromDOM === true && ids.length !== 0) {\n this.idsIndex.iterMatchingFilters(hashStrings(ids), (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n rules.push(rule);\n }\n return true;\n });\n }\n\n // =======================================================================\n // Href selector based\n // =======================================================================\n if (allowGenericHides === true && getRulesFromDOM === true && hrefs.length !== 0) {\n this.hrefsIndex.iterMatchingFilters(\n compactTokens(concatTypedArrays(hrefs.map((href) => tokenizeNoSkip(href)))),\n (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n rules.push(rule);\n }\n return true;\n },\n );\n }\n\n const extended: CosmeticFilter[] = [];\n const injections: CosmeticFilter[] = [];\n const styles: CosmeticFilter[] = [];\n\n // If we found at least one candidate, check if we have unhidden rules,\n // apply them and dispatch rules into `injections` (i.e.: '+js(...)'),\n // `extended` (i.e. :not(...)), and `styles` (i.e.: '##rule').\n if (rules.length !== 0) {\n // =======================================================================\n // Rules: unhide\n // =======================================================================\n // Collect unhidden selectors. They will be used to filter-out canceled\n // rules from other indices.\n let injectionsDisabled = false;\n const disabledRules: Set<string> = new Set();\n this.unhideIndex.iterMatchingFilters(hostnameTokens, (rule: CosmeticFilter) => {\n if (rule.match(hostname, domain)) {\n disabledRules.add(rule.getSelector());\n\n // Detect special +js() rules to disable scriptlet injections\n if (\n rule.isScriptInject() === true &&\n rule.isUnhide() === true &&\n rule.getSelector().length === 0\n ) {\n injectionsDisabled = true;\n }\n }\n\n return true;\n });\n\n // Apply unhide rules + dispatch\n for (const rule of rules) {\n // Make sure `rule` is not un-hidden by a #@# filter\n if (disabledRules.size !== 0 && disabledRules.has(rule.getSelector())) {\n continue;\n }\n\n // Dispatch rules in `injections` or `styles` depending on type\n if (rule.isScriptInject() === true) {\n if (getInjectionRules === true && injectionsDisabled === false) {\n injections.push(rule);\n }\n } else if (rule.isExtended()) {\n if (getExtendedRules === true) {\n extended.push(rule);\n }\n } else {\n styles.push(rule);\n }\n }\n }\n\n // Create final stylesheet\n let stylesheet: string =\n getBaseRules === false || allowGenericHides === false ? '' : this.getBaseStylesheet();\n\n if (styles.length !== 0) {\n if (stylesheet.length !== 0) {\n stylesheet += '\\n\\n';\n }\n\n stylesheet += createStylesheetFromRules(styles);\n }\n\n const extendedProcessed: IMessageFromBackground['extended'] = [];\n if (extended.length !== 0) {\n const extendedStyles: Map<string, string> = new Map();\n for (const rule of extended) {\n const ast = rule.getSelectorAST();\n if (ast !== undefined) {\n const attribute = rule.isRemove() ? undefined : rule.getStyleAttributeHash();\n\n if (attribute !== undefined) {\n extendedStyles.set(rule.getStyle(), attribute);\n }\n\n extendedProcessed.push({\n ast,\n remove: rule.isRemove(),\n attribute,\n });\n }\n }\n\n if (extendedStyles.size !== 0) {\n if (stylesheet.length !== 0) {\n stylesheet += '\\n\\n';\n }\n\n stylesheet += [...extendedStyles.entries()]\n .map(([style, attribute]) => `[${attribute}] { ${style} }`)\n .join('\\n\\n');\n }\n }\n\n return {\n extended: extendedProcessed,\n injections,\n stylesheet,\n };\n }\n\n /**\n * Return the list of filters which can potentially be un-hidden by another\n * rule currently contained in the cosmetic bucket.\n */\n private getGenericRules(): CosmeticFilter[] {\n if (this.extraGenericRules === null) {\n return this.lazyPopulateGenericRulesCache().genericRules;\n }\n return this.extraGenericRules;\n }\n\n /**\n * The base stylesheet is made of generic filters (not specific to any\n * hostname) which cannot be hidden (i.e.: there is currently no rule which\n * might hide their selector). This means that it will never change and is\n * the same for all sites. We generate it once and re-use it any-time we want\n * to inject it.\n */\n private getBaseStylesheet(): string {\n if (this.baseStylesheet === null) {\n return this.lazyPopulateGenericRulesCache().baseStylesheet;\n }\n return this.baseStylesheet;\n }\n\n /**\n * This is used to lazily generate both the list of generic rules which can\n * *potentially be un-hidden* (i.e.: there exists at least one unhide rule\n * for the selector) and a stylesheet containing all selectors which cannot\n * be un-hidden. Since this list will not change between updates we can\n * generate once and use many times.\n */\n private lazyPopulateGenericRulesCache(): {\n baseStylesheet: string;\n genericRules: CosmeticFilter[];\n } {\n if (this.baseStylesheet === null || this.extraGenericRules === null) {\n // Collect all selectors which can be subjected to an unhide rule\n const unHideRules = this.unhideIndex.getFilters();\n const canBeHiddenSelectors: Set<string> = new Set();\n for (const rule of unHideRules) {\n canBeHiddenSelectors.add(rule.getSelector());\n }\n\n // Split generic rules into two groups:\n // 1. Rules which cannot be hidden\n // 2. Rules which can be hidden on some domains\n //\n // This allows to create a base stylesheet which we know will never\n // change then keep a minority of rules in-memory which can potentially\n // be hidden.\n const genericRules = this.genericRules.getFilters();\n const cannotBeHiddenRules: CosmeticFilter[] = [];\n const canBeHiddenRules: CosmeticFilter[] = [];\n for (const rule of genericRules) {\n if (\n rule.hasCustomStyle() ||\n rule.isScriptInject() ||\n rule.hasHostnameConstraint() ||\n canBeHiddenSelectors.has(rule.getSelector())\n ) {\n canBeHiddenRules.push(rule);\n } else {\n cannotBeHiddenRules.push(rule);\n }\n }\n\n this.baseStylesheet = createStylesheetFromRules(cannotBeHiddenRules);\n this.extraGenericRules = canBeHiddenRules;\n }\n\n return {\n baseStylesheet: this.baseStylesheet,\n genericRules: this.extraGenericRules,\n };\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport Config from '../../config';\nimport { StaticDataView } from '../../data-view';\nimport NetworkFilter from '../../filters/network';\nimport Request from '../../request';\nimport { noopOptimizeNetwork, optimizeNetwork } from '../optimizer';\nimport ReverseIndex from '../reverse-index';\nimport FiltersContainer from './filters';\n\n/**\n * Accelerating data structure for network filters matching.\n */\nexport default class NetworkFilterBucket {\n public static deserialize(buffer: StaticDataView, config: Config): NetworkFilterBucket {\n const bucket = new NetworkFilterBucket({ config });\n\n bucket.index = ReverseIndex.deserialize(\n buffer,\n NetworkFilter.deserialize,\n config.enableOptimizations ? optimizeNetwork : noopOptimizeNetwork,\n config,\n );\n\n bucket.badFilters = FiltersContainer.deserialize(buffer, NetworkFilter.deserialize, config);\n\n return bucket;\n }\n\n public index: ReverseIndex<NetworkFilter>;\n\n // `badFilters` are filters specifying a $badfilter option. They can be used\n // to disable completely another filter (usually to fix breakage). They are\n // stored separately so that we can quickly check if matching filters (from\n // `match` and `matchAll` methods) should be ignored or not.\n public badFilters: FiltersContainer<NetworkFilter>;\n\n // Lazy attribute containing IDs of $badfilter to quickly check which filters\n // should be disabled (only one lookup is needed).\n private badFiltersIds: Set<number> | null;\n\n constructor({ filters = [], config }: { filters?: NetworkFilter[]; config: Config }) {\n this.index = new ReverseIndex({\n config,\n deserialize: NetworkFilter.deserialize,\n filters: [],\n optimize: config.enableOptimizations ? optimizeNetwork : noopOptimizeNetwork,\n });\n\n this.badFiltersIds = null;\n this.badFilters = new FiltersContainer({\n config,\n deserialize: NetworkFilter.deserialize,\n filters: [],\n });\n\n if (filters.length !== 0) {\n this.update(filters, undefined);\n }\n }\n\n public getFilters(): NetworkFilter[] {\n const filters: NetworkFilter[] = [];\n return filters.concat(this.badFilters.getFilters(), this.index.getFilters());\n }\n\n public update(newFilters: NetworkFilter[], removedFilters: Set<number> | undefined): void {\n const badFilters: NetworkFilter[] = [];\n const remaining: NetworkFilter[] = [];\n for (const filter of newFilters) {\n if (filter.isBadFilter()) {\n badFilters.push(filter);\n } else {\n remaining.push(filter);\n }\n }\n\n this.badFilters.update(badFilters, removedFilters);\n this.index.update(remaining, removedFilters);\n this.badFiltersIds = null;\n }\n\n public getSerializedSize(): number {\n return this.badFilters.getSerializedSize() + this.index.getSerializedSize();\n }\n\n public serialize(buffer: StaticDataView): void {\n this.index.serialize(buffer);\n this.badFilters.serialize(buffer);\n }\n\n public matchAll(request: Request): NetworkFilter[] {\n const filters: NetworkFilter[] = [];\n\n this.index.iterMatchingFilters(request.getTokens(), (filter: NetworkFilter) => {\n if (filter.match(request) && this.isFilterDisabled(filter) === false) {\n filters.push(filter);\n }\n return true;\n });\n\n return filters;\n }\n\n public match(request: Request): NetworkFilter | undefined {\n let match: NetworkFilter | undefined;\n\n this.index.iterMatchingFilters(request.getTokens(), (filter: NetworkFilter) => {\n if (filter.match(request) && this.isFilterDisabled(filter) === false) {\n match = filter;\n return false;\n }\n return true;\n });\n\n return match;\n }\n\n /**\n * Given a matching filter, check if it is disabled by a $badfilter\n */\n private isFilterDisabled(filter: NetworkFilter): boolean {\n // Lazily load information about bad filters in memory. The only thing we\n // keep in memory is the list of IDs from $badfilter (ignoring the\n // $badfilter option from mask). This allows to check if a matching filter\n // should be ignored just by doing a lookup in a set of IDs.\n if (this.badFiltersIds === null) {\n const badFilters = this.badFilters.getFilters();\n\n // Shortcut if there is no badfilter in this bucket\n if (badFilters.length === 0) {\n return false;\n }\n\n // Create in-memory list of disabled filter IDs\n const badFiltersIds: Set<number> = new Set();\n for (const badFilter of badFilters) {\n badFiltersIds.add(badFilter.getIdWithoutBadFilter());\n }\n this.badFiltersIds = badFiltersIds;\n }\n\n return this.badFiltersIds.has(filter.getId());\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { StaticDataView, sizeOfBytes, EMPTY_UINT32_ARRAY } from '../data-view';\nimport { nextPow2 } from './reverse-index';\n\nconst EMPTY_BUCKET: number = Number.MAX_SAFE_INTEGER >>> 0;\n\n/**\n * This is a simpler version of reverse-index data structure which implements\n * a simple Map-like class, backed by compact typed arrays. This means that\n * the structure can be serialized to a typed array very quickly and loaded\n * back instantly.\n */\nexport class CompactMap<T> {\n public static deserialize<T>(\n buffer: StaticDataView,\n deserialize: (view: StaticDataView) => T,\n ): CompactMap<T> {\n const tokensLookupIndexSize = buffer.getUint32();\n const bucketsIndexSize = buffer.getUint32();\n const numberOfValues = buffer.getUint32();\n\n // Alignement to 4 bytes is important here since `view` (Uint8Array) can\n // appear at any offset of `buffer`. But to be sure we can read back\n // Uint32Array directly from raw buffer, the alignement has to be a\n // multiple of 4. The same alignement is taken care of in `serialize`.\n const view = StaticDataView.fromUint8Array(buffer.getBytes(true /* align */), {\n enableCompression: false,\n });\n const tokensLookupIndex = view.getUint32ArrayView(tokensLookupIndexSize);\n const bucketsIndex = view.getUint32ArrayView(bucketsIndexSize);\n const valuesIndexStart = view.pos;\n view.seekZero(); // not strictly needed but make sure reverse index can be compared with deep equal\n\n return new CompactMap({\n deserialize,\n // Left empty on purpose since we don't need these to deserialize (all\n // the data is already in the serialized data).\n values: [],\n getKeys: () => [],\n getSerializedSize: () => 0,\n serialize: () => {\n /* Empty */\n },\n }).updateInternals({\n bucketsIndex,\n valuesIndexStart,\n numberOfValues,\n tokensLookupIndex,\n view,\n });\n }\n\n // In-memory cache used to keep track of metadata which has already been\n // loaded from the compact representation (i.e.: this.view). It is not\n // strictly necessary but will speed-up retrival of popular patterns\n // (since we do not have to perform the lookup again).\n private readonly cache: Map<number, T[]> = new Map();\n\n private bucketsIndex: Uint32Array = EMPTY_UINT32_ARRAY;\n private tokensLookupIndex: Uint32Array = EMPTY_UINT32_ARRAY;\n private valuesIndexStart: number = 0;\n private numberOfValues: number = 0;\n private view: StaticDataView;\n\n private readonly deserializeValue: (view: StaticDataView) => T;\n\n constructor({\n serialize,\n deserialize,\n getKeys,\n getSerializedSize,\n values,\n }: {\n serialize: (value: T, view: StaticDataView) => void;\n deserialize: (view: StaticDataView) => T;\n getKeys: (value: T) => number[];\n getSerializedSize: (value: T) => number;\n values: T[];\n }) {\n this.view = StaticDataView.empty({ enableCompression: false });\n\n this.deserializeValue = deserialize;\n\n if (values.length !== 0) {\n const patternsKeys: number[][] = [];\n\n // Keep track of the final size of the buckets index. `bucketsIndexSize`\n // is the number of indexed values, multiplied by 2 (since we store both\n // the `key` a value is indexed with and the index of the value itself).\n let bucketsIndexSize = 0;\n\n // Create a list of all values which will be part of the map. This means\n // computing an estimation of the buffer size needed to store this index.\n let estimatedBufferSize = 0;\n for (const value of values) {\n estimatedBufferSize += getSerializedSize(value);\n }\n\n // No values given; reset to empty index and abort.\n if (values.length === 0) {\n this.updateInternals({\n bucketsIndex: EMPTY_UINT32_ARRAY,\n valuesIndexStart: 0,\n numberOfValues: 0,\n tokensLookupIndex: EMPTY_UINT32_ARRAY,\n view: StaticDataView.empty({ enableCompression: false }),\n });\n return;\n }\n\n for (const value of values) {\n // Get keys from `value` and store the result in `patternsKeys` which\n // will be used in the next step to select the best key for each value.\n const keys = getKeys(value);\n patternsKeys.push(keys);\n bucketsIndexSize += 2 * keys.length; // key + value index\n }\n\n // Add size of bucketsIndex to total size (x4 because these are 32 bits numbers)\n estimatedBufferSize += bucketsIndexSize * 4;\n\n // Prepare \"tokens index\" (see documentation in constructor of `ReverseIndex` class).\n const tokensLookupIndexSize: number = Math.max(2, nextPow2(values.length));\n const mask: number = tokensLookupIndexSize - 1;\n const suffixes: [number, number][][] = [];\n for (let i = 0; i < tokensLookupIndexSize; i += 1) {\n suffixes.push([]);\n }\n\n // Add size of tokensLookupIndex to total size (x4 because these are 32 bits numbers)\n estimatedBufferSize += tokensLookupIndexSize * 4;\n\n // At this point we know the number of bytes needed for the compact\n // representation of this map (\"tokens index\" + \"buckets index\" +\n // \"values index\"). We allocate it at once and proceed with populating it.\n const buffer = StaticDataView.allocate(estimatedBufferSize, { enableCompression: false });\n const tokensLookupIndex = buffer.getUint32ArrayView(tokensLookupIndexSize);\n const bucketsIndex = buffer.getUint32ArrayView(bucketsIndexSize);\n const valuesIndexStart = buffer.getPos();\n\n // For each value, find the best token (least seen) based on histogram.\n // Since we are iterating again on the values, we populate \"values index\"\n // in the same loop and keep track of their indices so that we can later\n // populate \"buckets index\".\n for (let i = 0; i < patternsKeys.length; i += 1) {\n const value: T = values[i];\n const keys: number[] = patternsKeys[i];\n\n // Serialize this value and keep track of its index in the byte array;\n // it will be used in \"buckets index\" to point to this value.\n const valueIndex = buffer.pos;\n serialize(value, buffer);\n\n for (const key of keys) {\n // `key & mask` represents the N last bits of `key`. We group all\n // values indexed with the same `key` sharing the same N bits.\n suffixes[key & mask].push([key, valueIndex]);\n }\n }\n\n // Populate \"tokens index\" and \"buckets index\" based on keys for each value.\n let indexInBucketsIndex = 0;\n for (let i = 0; i < tokensLookupIndexSize; i += 1) {\n const valuesForMask: [number, number][] = suffixes[i];\n tokensLookupIndex[i] = indexInBucketsIndex;\n for (const [token, valueIndex] of valuesForMask) {\n bucketsIndex[indexInBucketsIndex++] = token;\n bucketsIndex[indexInBucketsIndex++] = valueIndex;\n }\n }\n\n // Update internals\n this.updateInternals({\n bucketsIndex,\n valuesIndexStart,\n numberOfValues: patternsKeys.length,\n tokensLookupIndex,\n view: buffer,\n });\n }\n }\n\n private updateInternals({\n bucketsIndex,\n valuesIndexStart,\n numberOfValues,\n tokensLookupIndex,\n view,\n }: {\n bucketsIndex: Uint32Array;\n valuesIndexStart: number;\n numberOfValues: number;\n tokensLookupIndex: Uint32Array;\n view: StaticDataView;\n }): CompactMap<T> {\n this.bucketsIndex = bucketsIndex;\n this.valuesIndexStart = valuesIndexStart;\n this.numberOfValues = numberOfValues;\n this.tokensLookupIndex = tokensLookupIndex;\n this.view = view;\n view.seekZero();\n return this;\n }\n\n public getValues(): T[] {\n const values: T[] = [];\n\n if (this.numberOfValues === 0) {\n return values;\n }\n\n // set view cursor at the start of \"values index\"\n this.view.setPos(this.valuesIndexStart);\n\n for (let i = 0; i < this.numberOfValues; i += 1) {\n values.push(this.deserializeValue(this.view));\n }\n\n this.view.seekZero();\n\n return values;\n }\n\n /**\n * Estimate the number of bytes needed to serialize this instance of `Map`.\n */\n public getSerializedSize(): number {\n // 12 = 4 bytes (tokensLookupIndex.length) + 4 bytes (bucketsIndex.length) + 4 bytes (numberOfValues)\n return 12 + sizeOfBytes(this.view.buffer, true /* align */);\n }\n\n /**\n * Dump this index to `buffer`.\n */\n public serialize(buffer: StaticDataView): void {\n buffer.pushUint32(this.tokensLookupIndex.length);\n buffer.pushUint32(this.bucketsIndex.length);\n buffer.pushUint32(this.numberOfValues);\n\n // Aligmenent is crucial here, see comment in `deserialize` for more info.\n buffer.pushBytes(this.view.buffer, true /* align */);\n }\n\n public get(key: number): T[] {\n const cachedValues = this.cache.get(key);\n if (cachedValues !== undefined) {\n return cachedValues;\n }\n\n const offset = key & (this.tokensLookupIndex.length - 1);\n const startOfBucket = this.tokensLookupIndex[offset];\n\n // We do not have any values for this token\n if (startOfBucket === EMPTY_BUCKET) {\n return [];\n }\n\n // Since we do not store explicitly the number of values in each\n // \"bucket\", we check the index of the next one and use it to infer the\n // number of values (each value being stored as a token + index to the\n // \"values store\")\n const endOfBucket =\n offset === this.tokensLookupIndex.length - 1\n ? this.bucketsIndex.length\n : this.tokensLookupIndex[offset + 1];\n\n // Get indices of values indexed with `token`, if any.\n const valuesIndices: number[] = [];\n for (let i = startOfBucket; i < endOfBucket; i += 2) {\n const currentToken = this.bucketsIndex[i];\n if (currentToken === key) {\n valuesIndices.push(this.bucketsIndex[i + 1]);\n }\n }\n\n // No value indexed with `token`.\n if (valuesIndices.length === 0) {\n return []; // continue looking for a match\n }\n\n // If we have values for `token` then deserialize values in memory and\n // create a `Bucket` instance to hold them for future access.\n const values: T[] = [];\n const view = this.view;\n for (let i = 0; i < valuesIndices.length; i += 1) {\n view.setPos(valuesIndices[i]);\n values.push(this.deserializeValue(view));\n }\n\n this.cache.set(key, values);\n return values;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { CompactMap } from '../map';\nimport { StaticDataView, sizeOfUTF8 } from '../../data-view';\nimport { fastHash } from '../../utils';\n\nexport interface ICategory {\n key: string;\n name: string;\n color: string;\n description: string;\n}\n\nexport function isValid(category: any): category is ICategory {\n if (category === null) {\n return false;\n }\n\n if (typeof category !== 'object') {\n return false;\n }\n\n const { key, name, color, description } = category;\n\n if (typeof key !== 'string') {\n return false;\n }\n\n if (typeof name !== 'string') {\n return false;\n }\n\n if (typeof color !== 'string') {\n return false;\n }\n\n if (typeof description !== 'string') {\n return false;\n }\n\n return true;\n}\n\nexport function getKey(category: { key: string }): number {\n return fastHash(category.key);\n}\n\nexport function getSerializedSize(category: ICategory): number {\n return (\n sizeOfUTF8(category.key) +\n sizeOfUTF8(category.name) +\n sizeOfUTF8(category.color) +\n sizeOfUTF8(category.description)\n );\n}\n\nexport function serialize(category: ICategory, view: StaticDataView) {\n view.pushUTF8(category.key);\n view.pushUTF8(category.name);\n view.pushUTF8(category.color);\n view.pushUTF8(category.description);\n}\n\nexport function deserialize(view: StaticDataView): ICategory {\n return {\n key: view.getUTF8(),\n name: view.getUTF8(),\n color: view.getUTF8(),\n description: view.getUTF8(),\n };\n}\n\nexport function createMap(categories: ICategory[]): CompactMap<ICategory> {\n return new CompactMap({\n getSerializedSize,\n getKeys: (category) => [getKey(category)],\n serialize,\n deserialize,\n values: categories,\n });\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { CompactMap } from '../map';\nimport { StaticDataView, sizeOfUTF8 } from '../../data-view';\nimport { fastHash } from '../../utils';\n\nexport interface IOrganization {\n key: string;\n name: string;\n description: string | null;\n website_url: string | null;\n country: string | null;\n privacy_policy_url: string | null;\n privacy_contact: string | null;\n ghostery_id: string | null;\n}\n\n/**\n * This function takes an object representing an organization from TrackerDB\n * dump and validates its shape. The result is the same object, but strongly\n * typed.\n */\nexport function isValid(organization: any): organization is IOrganization {\n if (organization === null) {\n return false;\n }\n\n if (typeof organization !== 'object') {\n return false;\n }\n\n const {\n key,\n name,\n description,\n country,\n website_url: websiteUrl,\n privacy_policy_url: privacyPolicyUrl,\n privacy_contact: privacyContact,\n ghostery_id: ghosteryId,\n } = organization;\n\n if (typeof key !== 'string') {\n return false;\n }\n\n if (typeof name !== 'string') {\n return false;\n }\n\n if (description !== null && typeof description !== 'string') {\n return false;\n }\n\n if (country !== null && typeof country !== 'string') {\n return false;\n }\n\n if (websiteUrl !== null && typeof websiteUrl !== 'string') {\n return false;\n }\n\n if (privacyPolicyUrl !== null && typeof privacyPolicyUrl !== 'string') {\n return false;\n }\n\n if (privacyContact !== null && typeof privacyContact !== 'string') {\n return false;\n }\n\n if (ghosteryId !== null && typeof ghosteryId !== 'string') {\n return false;\n }\n\n return true;\n}\n\nexport function getKey(organization: { key: string }): number {\n return fastHash(organization.key);\n}\n\nexport function getSerializedSize(organization: IOrganization): number {\n return (\n sizeOfUTF8(organization.key) +\n sizeOfUTF8(organization.name) +\n sizeOfUTF8(organization.description || '') +\n sizeOfUTF8(organization.website_url || '') +\n sizeOfUTF8(organization.country || '') +\n sizeOfUTF8(organization.privacy_policy_url || '') +\n sizeOfUTF8(organization.privacy_contact || '') +\n sizeOfUTF8(organization.ghostery_id || '')\n );\n}\n\nexport function serialize(organization: IOrganization, view: StaticDataView) {\n view.pushUTF8(organization.key);\n view.pushUTF8(organization.name);\n view.pushUTF8(organization.description || '');\n view.pushUTF8(organization.website_url || '');\n view.pushUTF8(organization.country || '');\n view.pushUTF8(organization.privacy_policy_url || '');\n view.pushUTF8(organization.privacy_contact || '');\n view.pushUTF8(organization.ghostery_id || '');\n}\n\nexport function deserialize(view: StaticDataView): IOrganization {\n return {\n key: view.getUTF8(),\n name: view.getUTF8(),\n description: view.getUTF8() || null,\n website_url: view.getUTF8() || null,\n country: view.getUTF8() || null,\n privacy_policy_url: view.getUTF8() || null,\n privacy_contact: view.getUTF8() || null,\n ghostery_id: view.getUTF8() || null,\n };\n}\n\nexport function createMap(organizations: IOrganization[]): CompactMap<IOrganization> {\n return new CompactMap({\n getSerializedSize,\n getKeys: (organization) => [getKey(organization)],\n serialize,\n deserialize,\n values: organizations,\n });\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { CompactMap } from '../map';\nimport { StaticDataView, sizeOfUTF8, sizeOfLength } from '../../data-view';\nimport NetworkFilter from '../../filters/network';\n\nexport interface IPattern {\n readonly key: string;\n readonly name: string;\n readonly category: string;\n readonly organization: string | null;\n readonly alias: string | null;\n readonly website_url: string | null;\n readonly ghostery_id: string | null;\n readonly domains: string[];\n readonly filters: string[];\n}\n\n/**\n * This function takes an object representing a pattern from TrackerDB dump\n * and validates its shape. The result is the same object, but strongly typed.\n */\nexport function isValid(pattern: any): pattern is IPattern {\n if (pattern === null) {\n return false;\n }\n\n if (typeof pattern !== 'object') {\n return false;\n }\n\n const {\n key,\n name,\n category,\n organization,\n alias,\n website_url: websiteUrl,\n domains,\n filters,\n } = pattern;\n\n if (typeof key !== 'string') {\n return false;\n }\n\n if (typeof name !== 'string') {\n return false;\n }\n\n if (typeof category !== 'string') {\n return false;\n }\n\n if (organization !== null && typeof organization !== 'string') {\n return false;\n }\n\n if (typeof alias !== 'string' && alias !== null) {\n return false;\n }\n\n if (websiteUrl !== null && typeof websiteUrl !== 'string') {\n return false;\n }\n\n if (!Array.isArray(domains) || !domains.every((domain) => typeof domain === 'string')) {\n return false;\n }\n\n if (!Array.isArray(filters) || !filters.every((filter) => typeof filter === 'string')) {\n return false;\n }\n\n return true;\n}\n\nexport function getKeys(pattern: IPattern): number[] {\n const keys: number[] = [];\n\n for (const filter of pattern.filters) {\n const parsedFilter = NetworkFilter.parse(filter);\n if (parsedFilter !== null) {\n keys.push(parsedFilter.getId());\n }\n }\n\n for (const domain of pattern.domains) {\n const parsedFilter = NetworkFilter.parse(`||${domain}^`);\n if (parsedFilter !== null) {\n keys.push(parsedFilter.getId());\n }\n }\n\n return [...new Set(keys)];\n}\n\nexport function getSerializedSize(pattern: IPattern): number {\n let sizeOfDomains = sizeOfLength(pattern.domains.length);\n for (const domain of pattern.domains) {\n sizeOfDomains += sizeOfUTF8(domain);\n }\n\n let sizeOfFilters = sizeOfLength(pattern.filters.length);\n for (const filter of pattern.filters) {\n sizeOfFilters += sizeOfUTF8(filter);\n }\n\n return (\n sizeOfUTF8(pattern.key) +\n sizeOfUTF8(pattern.name) +\n sizeOfUTF8(pattern.category) +\n sizeOfUTF8(pattern.organization || '') +\n sizeOfUTF8(pattern.alias || '') +\n sizeOfUTF8(pattern.website_url || '') +\n sizeOfUTF8(pattern.ghostery_id || '') +\n sizeOfDomains +\n sizeOfFilters\n );\n}\n\nexport function serialize(pattern: IPattern, view: StaticDataView) {\n view.pushUTF8(pattern.key);\n view.pushUTF8(pattern.name);\n view.pushUTF8(pattern.category);\n view.pushUTF8(pattern.organization || '');\n view.pushUTF8(pattern.alias || '');\n view.pushUTF8(pattern.website_url || '');\n view.pushUTF8(pattern.ghostery_id || '');\n\n view.pushLength(pattern.domains.length);\n for (const domain of pattern.domains) {\n view.pushUTF8(domain);\n }\n\n view.pushLength(pattern.filters.length);\n for (const filter of pattern.filters) {\n view.pushUTF8(filter);\n }\n}\n\nexport function deserialize(view: StaticDataView): IPattern {\n const key = view.getUTF8();\n const name = view.getUTF8();\n const category = view.getUTF8();\n const organization = view.getUTF8() || null;\n const alias = view.getUTF8() || null;\n const website_url = view.getUTF8() || null;\n const ghostery_id = view.getUTF8() || null;\n\n const numberOfDomains = view.getLength();\n const domains = [];\n for (let i = 0; i < numberOfDomains; i += 1) {\n domains.push(view.getUTF8());\n }\n\n const numberOfFilters = view.getLength();\n const filters = [];\n for (let i = 0; i < numberOfFilters; i += 1) {\n filters.push(view.getUTF8());\n }\n\n return {\n key,\n name,\n category,\n organization,\n alias,\n website_url,\n ghostery_id,\n domains,\n filters,\n };\n}\n\nexport function createMap(patterns: IPattern[]): CompactMap<IPattern> {\n return new CompactMap({\n getSerializedSize,\n getKeys,\n serialize,\n deserialize,\n values: patterns,\n });\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport { CompactMap } from './map';\nimport { StaticDataView } from '../data-view';\nimport NetworkFilter from '../filters/network';\n\nimport {\n ICategory,\n createMap as createCategoriesMap,\n isValid as isValidCategory,\n deserialize as deserializeCategory,\n getKey as getCategoryKey,\n} from './metadata/categories';\n\nimport {\n IOrganization,\n createMap as createOrganizationsMap,\n isValid as isValidOrganization,\n deserialize as deserializeOrganization,\n getKey as getOrganizationKey,\n} from './metadata/organizations';\n\nimport {\n IPattern,\n createMap as createPatternsMap,\n isValid as isValidPattern,\n deserialize as deserializePattern,\n} from './metadata/patterns';\n\nexport interface IPatternLookupResult {\n pattern: IPattern;\n organization: IOrganization | null;\n category: ICategory | null;\n}\n\n// Optionally, we can also compress their names and descriptions but I think that should not be necessary as it's probably pretty small.\n\n// Usage in MV3 extension\n// ======================\n// 1. The extension will load the binary engine containing metadata and store it locally\n// 2. Either on webRequest events or DNR filter IDs (requires to synchronize the IDs), we tag the request with their metadata\n// (2.) At runtime, we will either feed it a request and we expect to get metadata (match, get filter, then from filter ID, get metadata)\n// Or we feed it the filter ID directly, from the DNR engine (but then it means we need to use the filter hash as an ID there as well and hope for no collision)\n\nexport class Metadata {\n public static deserialize(buffer: StaticDataView): Metadata {\n const metadata = new Metadata(null);\n metadata.categories = CompactMap.deserialize(buffer, deserializeCategory);\n metadata.organizations = CompactMap.deserialize(buffer, deserializeOrganization);\n metadata.patterns = CompactMap.deserialize(buffer, deserializePattern);\n return metadata;\n }\n\n public organizations: CompactMap<IOrganization>;\n public categories: CompactMap<ICategory>;\n public patterns: CompactMap<IPattern>;\n\n constructor(rawTrackerDB: any) {\n if (!rawTrackerDB) {\n this.organizations = createOrganizationsMap([]);\n this.categories = createCategoriesMap([]);\n this.patterns = createPatternsMap([]);\n return;\n }\n\n const {\n patterns: rawPatterns,\n organizations: rawOrganizations,\n categories: rawCategories,\n } = rawTrackerDB;\n\n // Type-check categories\n const categories: ICategory[] = [];\n if (typeof rawCategories === 'object') {\n for (const [key, category] of Object.entries(rawCategories)) {\n if (typeof category !== 'object') {\n continue;\n }\n const categoryWithKey = { key, ...category };\n if (isValidCategory(categoryWithKey)) {\n categories.push(categoryWithKey);\n } else {\n console.error('?? invalid category', categoryWithKey);\n }\n }\n }\n this.categories = createCategoriesMap(categories);\n\n // Type-check organizations\n const organizations: IOrganization[] = [];\n if (typeof rawOrganizations === 'object') {\n for (const [key, organization] of Object.entries(rawOrganizations)) {\n if (typeof organization !== 'object') {\n continue;\n }\n const organizationWithKey = { key, ...organization };\n if (isValidOrganization(organizationWithKey)) {\n organizations.push(organizationWithKey);\n } else {\n console.error('?? invalid organization', organizationWithKey);\n }\n }\n }\n this.organizations = createOrganizationsMap(organizations);\n\n // Type-check patterns\n const patterns: IPattern[] = [];\n if (typeof rawPatterns === 'object') {\n for (const [key, pattern] of Object.entries(rawPatterns)) {\n if (typeof pattern !== 'object') {\n continue;\n }\n const patternWithKey = { key, ...pattern };\n if (isValidPattern(patternWithKey)) {\n patterns.push(patternWithKey);\n } else {\n console.error('?? invalid pattern', patternWithKey);\n }\n }\n }\n this.patterns = createPatternsMap(patterns);\n }\n\n public getCategories(): ICategory[] {\n return this.categories.getValues();\n }\n\n public getOrganizations(): IOrganization[] {\n return this.organizations.getValues();\n }\n\n public getPatterns(): IPattern[] {\n return this.patterns.getValues();\n }\n\n /**\n * Estimate the total serialized size of this Metadata instance.\n */\n public getSerializedSize(): number {\n return (\n this.categories.getSerializedSize() +\n this.organizations.getSerializedSize() +\n this.patterns.getSerializedSize()\n );\n }\n\n /**\n * Serialize this instance of Metadata into `view`\n */\n public serialize(buffer: StaticDataView): void {\n this.categories.serialize(buffer);\n this.organizations.serialize(buffer);\n this.patterns.serialize(buffer);\n }\n\n /**\n * Given an instance of NetworkFilter, retrieve pattern, organization and\n * category information.\n */\n public fromFilter(filter: NetworkFilter): IPatternLookupResult[] {\n return this.fromId(filter.getId());\n }\n\n /**\n * Given a domain, retrieve pattern, organization and category information.\n */\n public fromDomain(domain: string): IPatternLookupResult[] {\n const domainParts = domain.split('.');\n\n for (; domainParts.length >= 2; domainParts.shift()) {\n const subdomain = domainParts.join('.');\n const parsedDomainFilter = NetworkFilter.parse(`||${subdomain}^`);\n\n if (parsedDomainFilter === null) {\n continue;\n }\n\n const patterns = this.fromId(parsedDomainFilter.getId());\n if (patterns.length > 0) {\n return patterns;\n }\n }\n return [];\n }\n\n /**\n * Given an `id` from filter, retrieve using the NetworkFilter.getId() method,\n * lookup associated patterns (including organization and category) in an\n * efficient way.\n */\n public fromId(id: number): IPatternLookupResult[] {\n const results: IPatternLookupResult[] = [];\n\n for (const pattern of this.patterns.get(id)) {\n results.push({\n pattern,\n category: this.categories.get(getCategoryKey({ key: pattern.category }))?.[0],\n organization:\n pattern.organization !== null\n ? this.organizations.get(getOrganizationKey({ key: pattern.organization }))?.[0]\n : null,\n });\n }\n\n return results;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\nimport type { IMessageFromBackground } from '@cliqz/adblocker-content';\n\nimport Config from '../config';\nimport { StaticDataView, sizeOfASCII, sizeOfByte, sizeOfBool } from '../data-view';\nimport { EventEmitter } from '../events';\nimport {\n adsAndTrackingLists,\n adsLists,\n Fetch,\n fetchLists,\n fetchResources,\n fullLists,\n} from '../fetch';\nimport { HTMLSelector } from '../html-filtering';\nimport CosmeticFilter from '../filters/cosmetic';\nimport NetworkFilter from '../filters/network';\nimport { block } from '../filters/dsl';\nimport { IListDiff, IRawDiff, parseFilters } from '../lists';\nimport Request from '../request';\nimport Resources from '../resources';\nimport CosmeticFilterBucket from './bucket/cosmetic';\nimport NetworkFilterBucket from './bucket/network';\nimport { Metadata, IPatternLookupResult } from './metadata';\n\nexport const ENGINE_VERSION = 619;\n\nfunction shouldApplyHideException(filters: NetworkFilter[]): boolean {\n if (filters.length === 0) {\n return false;\n }\n\n // Get $Xhide filter with highest priority:\n // $Xhide,important > $Xhide > @@$Xhide\n let genericHideFilter: NetworkFilter | undefined;\n let currentScore = 0;\n for (const filter of filters) {\n // To encode priority between filters, we create a bitmask with the following:\n // $important,Xhide = 100 (takes precedence)\n // $Xhide = 010 (exception to @@$Xhide)\n // @@$Xhide = 001 (forbids Xhide filters)\n const score: number = (filter.isImportant() ? 4 : 0) | (filter.isException() ? 1 : 2);\n\n // Highest `score` has precedence\n if (score >= currentScore) {\n currentScore = score;\n genericHideFilter = filter;\n }\n }\n\n if (genericHideFilter === undefined) {\n return false;\n }\n\n // Check that there is at least one $generichide match and no exception\n return genericHideFilter.isException();\n}\n\nexport interface BlockingResponse {\n match: boolean;\n redirect:\n | undefined\n | {\n body: string;\n contentType: string;\n dataUrl: string;\n };\n exception: NetworkFilter | undefined;\n filter: NetworkFilter | undefined;\n metadata: IPatternLookupResult[] | undefined;\n}\n\nexport interface Caching {\n path: string;\n read: (path: string) => Promise<Uint8Array>;\n write: (path: string, buffer: Uint8Array) => Promise<void>;\n}\n\nexport default class FilterEngine extends EventEmitter<\n | 'csp-injected'\n | 'html-filtered'\n | 'request-allowed'\n | 'request-blocked'\n | 'request-redirected'\n | 'request-whitelisted'\n | 'script-injected'\n | 'style-injected'\n> {\n private static fromCached<T extends typeof FilterEngine>(\n this: T,\n init: () => Promise<InstanceType<T>>,\n caching?: Caching,\n ): Promise<InstanceType<T>> {\n if (caching === undefined) {\n return init();\n }\n\n const { path, read, write } = caching;\n return read(path)\n .then((buffer) => this.deserialize(buffer) as InstanceType<T>)\n .catch(() => init().then((engine) => write(path, engine.serialize()).then(() => engine)));\n }\n\n public static empty<T extends FilterEngine>(\n this: new (...args: any[]) => T,\n config: Partial<Config> = {},\n ): T {\n return new this({ config });\n }\n\n /**\n * Create an instance of `FiltersEngine` (or subclass like `ElectronBlocker`,\n * etc.), from the list of subscriptions provided as argument (e.g.:\n * EasyList).\n *\n * Lists are fetched using the instance of `fetch` provided as a first\n * argument. Optionally resources.txt and config can be provided.\n */\n public static fromLists<T extends typeof FilterEngine>(\n this: T,\n fetch: Fetch,\n urls: string[],\n config: Partial<Config> = {},\n caching?: Caching,\n ): Promise<InstanceType<T>> {\n return this.fromCached(() => {\n const listsPromises = fetchLists(fetch, urls);\n const resourcesPromise = fetchResources(fetch);\n\n return Promise.all([listsPromises, resourcesPromise]).then(([lists, resources]) => {\n const engine = this.parse(lists.join('\\n'), config);\n if (resources !== undefined) {\n engine.updateResources(resources, '' + resources.length);\n }\n\n return engine as InstanceType<T>;\n });\n }, caching);\n }\n\n /**\n * Initialize blocker of *ads only*.\n *\n * Attempt to initialize a blocking engine using a pre-built version served\n * from Cliqz's CDN. If this fails (e.g.: if no pre-built engine is available\n * for this version of the library), then falls-back to using `fromLists(...)`\n * method with the same subscriptions.\n */\n public static fromPrebuiltAdsOnly<T extends typeof FilterEngine>(\n this: T,\n fetchImpl: Fetch = fetch,\n caching?: Caching,\n ): Promise<InstanceType<T>> {\n return this.fromLists(fetchImpl, adsLists, {}, caching);\n }\n\n /**\n * Same as `fromPrebuiltAdsOnly(...)` but also contains rules to block\n * tracking (i.e.: using extra lists such as EasyPrivacy and more).\n */\n public static fromPrebuiltAdsAndTracking<T extends typeof FilterEngine>(\n this: T,\n fetchImpl: Fetch = fetch,\n caching?: Caching,\n ): Promise<InstanceType<T>> {\n return this.fromLists(fetchImpl, adsAndTrackingLists, {}, caching);\n }\n\n /**\n * Same as `fromPrebuiltAdsAndTracking(...)` but also contains annoyances\n * rules to block things like cookie notices.\n */\n public static fromPrebuiltFull<T extends typeof FilterEngine>(\n this: T,\n fetchImpl: Fetch = fetch,\n caching?: Caching,\n ): Promise<InstanceType<T>> {\n return this.fromLists(fetchImpl, fullLists, {}, caching);\n }\n\n public static fromTrackerDB<T extends typeof FilterEngine>(\n this: T,\n rawJsonDump: any,\n options: Partial<Config> = {},\n ): InstanceType<T> {\n const config = new Config(options);\n const metadata = new Metadata(rawJsonDump);\n const filters: string[] = [];\n\n for (const pattern of metadata.getPatterns()) {\n filters.push(...pattern.filters);\n }\n\n const engine = this.parse(filters.join('\\n'), config);\n engine.metadata = metadata;\n\n return engine as InstanceType<T>;\n }\n\n public static parse<T extends FilterEngine>(\n this: new (...args: any[]) => T,\n filters: string,\n options: Partial<Config> = {},\n ): T {\n const config = new Config(options);\n return new this({\n ...parseFilters(filters, config),\n config,\n });\n }\n\n public static deserialize<T extends FilterEngine>(\n this: new (...args: any[]) => T,\n serialized: Uint8Array,\n ): T {\n const buffer = StaticDataView.fromUint8Array(serialized, {\n enableCompression: false,\n });\n\n // Before starting deserialization, we make sure that the version of the\n // serialized engine is the same as the current source code. If not, we\n // start fresh and create a new engine from the lists.\n const serializedEngineVersion = buffer.getUint16();\n if (ENGINE_VERSION !== serializedEngineVersion) {\n throw new Error(\n `serialized engine version mismatch, expected ${ENGINE_VERSION} but got ${serializedEngineVersion}`,\n );\n }\n\n // Create a new engine with same options\n const config = Config.deserialize(buffer);\n\n // Optionally turn compression ON\n if (config.enableCompression) {\n buffer.enableCompression();\n }\n\n // Also make sure that the built-in checksum is correct. This allows to\n // detect data corruption and start fresh if the serialized version was\n // altered.\n if (config.integrityCheck) {\n const currentPos = buffer.pos;\n buffer.pos = serialized.length - 4;\n const checksum = buffer.checksum();\n const expected = buffer.getUint32();\n if (checksum !== expected) {\n throw new Error(\n `serialized engine checksum mismatch, expected ${expected} but got ${checksum}`,\n );\n }\n buffer.pos = currentPos;\n }\n\n const engine = new this({ config });\n\n // Deserialize resources\n engine.resources = Resources.deserialize(buffer);\n\n // Deserialize lists\n const lists = new Map();\n const numberOfLists = buffer.getUint16();\n for (let i = 0; i < numberOfLists; i += 1) {\n lists.set(buffer.getASCII(), buffer.getASCII());\n }\n engine.lists = lists;\n\n // Deserialize buckets\n engine.importants = NetworkFilterBucket.deserialize(buffer, config);\n engine.redirects = NetworkFilterBucket.deserialize(buffer, config);\n engine.filters = NetworkFilterBucket.deserialize(buffer, config);\n engine.exceptions = NetworkFilterBucket.deserialize(buffer, config);\n\n engine.csp = NetworkFilterBucket.deserialize(buffer, config);\n engine.cosmetics = CosmeticFilterBucket.deserialize(buffer, config);\n engine.hideExceptions = NetworkFilterBucket.deserialize(buffer, config);\n\n // Optionally deserialize metadata\n const hasMetadata = buffer.getBool();\n if (hasMetadata) {\n engine.metadata = Metadata.deserialize(buffer);\n }\n\n buffer.seekZero();\n\n return engine;\n }\n\n public lists: Map<string, string>;\n\n public csp: NetworkFilterBucket;\n public hideExceptions: NetworkFilterBucket;\n public exceptions: NetworkFilterBucket;\n public importants: NetworkFilterBucket;\n public redirects: NetworkFilterBucket;\n public filters: NetworkFilterBucket;\n public cosmetics: CosmeticFilterBucket;\n\n public metadata: Metadata | undefined;\n public resources: Resources;\n public readonly config: Config;\n\n constructor({\n // Optionally initialize the engine with filters\n cosmeticFilters = [],\n networkFilters = [],\n\n config = new Config(),\n lists = new Map(),\n }: {\n cosmeticFilters?: CosmeticFilter[];\n networkFilters?: NetworkFilter[];\n lists?: Map<string, string>;\n config?: Partial<Config>;\n } = {}) {\n super(); // init super-class EventEmitter\n\n this.config = new Config(config);\n\n // Subscription management: disabled by default\n this.lists = lists;\n\n // $csp=\n this.csp = new NetworkFilterBucket({ config: this.config });\n // $elemhide\n // $generichide\n // $specifichide\n this.hideExceptions = new NetworkFilterBucket({ config: this.config });\n // @@filter\n this.exceptions = new NetworkFilterBucket({ config: this.config });\n // $important\n this.importants = new NetworkFilterBucket({ config: this.config });\n // $redirect\n this.redirects = new NetworkFilterBucket({ config: this.config });\n // All other filters\n this.filters = new NetworkFilterBucket({ config: this.config });\n // Cosmetic filters\n this.cosmetics = new CosmeticFilterBucket({ config: this.config });\n\n // Injections\n this.resources = new Resources();\n\n if (networkFilters.length !== 0 || cosmeticFilters.length !== 0) {\n this.update({\n newCosmeticFilters: cosmeticFilters,\n newNetworkFilters: networkFilters,\n });\n }\n }\n\n /**\n * Estimate the number of bytes needed to serialize this instance of\n * `FiltersEngine` using the `serialize(...)` method. It is used internally\n * by `serialize(...)` to allocate a buffer of the right size and you should\n * not have to call it yourself most of the time.\n *\n * There are cases where we cannot estimate statically the exact size of the\n * resulting buffer (due to alignement which needs to be performed); this\n * method will return a safe estimate which will always be at least equal to\n * the real number of bytes needed, or bigger (usually of a few bytes only:\n * ~20 bytes is to be expected).\n */\n public getSerializedSize(): number {\n let estimatedSize: number =\n sizeOfByte() + // engine version\n this.config.getSerializedSize() +\n this.resources.getSerializedSize() +\n this.filters.getSerializedSize() +\n this.exceptions.getSerializedSize() +\n this.importants.getSerializedSize() +\n this.redirects.getSerializedSize() +\n this.csp.getSerializedSize() +\n this.cosmetics.getSerializedSize() +\n this.hideExceptions.getSerializedSize() +\n 4; // checksum\n\n // Estimate size of `this.lists` which stores information of checksum for each list.\n for (const [name, checksum] of this.lists) {\n estimatedSize += sizeOfASCII(name) + sizeOfASCII(checksum);\n }\n\n estimatedSize += sizeOfBool();\n if (this.metadata !== undefined) {\n estimatedSize += this.metadata.getSerializedSize();\n }\n\n return estimatedSize;\n }\n\n /**\n * Creates a binary representation of the full engine. It can be stored\n * on-disk for faster loading of the adblocker. The `deserialize` static\n * method of Engine can be used to restore the engine.\n */\n public serialize(array?: Uint8Array): Uint8Array {\n const buffer = StaticDataView.fromUint8Array(\n array || new Uint8Array(this.getSerializedSize()),\n this.config,\n );\n\n buffer.pushUint16(ENGINE_VERSION);\n\n // Config\n this.config.serialize(buffer);\n\n // Resources (js, resources)\n this.resources.serialize(buffer);\n\n // Serialize the state of lists (names and checksums)\n buffer.pushUint16(this.lists.size);\n for (const [name, value] of Array.from(this.lists.entries()).sort()) {\n buffer.pushASCII(name);\n buffer.pushASCII(value);\n }\n\n // Filters buckets\n this.importants.serialize(buffer);\n this.redirects.serialize(buffer);\n this.filters.serialize(buffer);\n this.exceptions.serialize(buffer);\n\n this.csp.serialize(buffer);\n this.cosmetics.serialize(buffer);\n this.hideExceptions.serialize(buffer);\n\n // Optionally serialize metadata\n buffer.pushBool(this.metadata !== undefined);\n if (this.metadata !== undefined) {\n this.metadata.serialize(buffer);\n }\n\n // Optionally append a checksum at the end\n if (this.config.integrityCheck) {\n buffer.pushUint32(buffer.checksum());\n }\n\n return buffer.subarray();\n }\n\n /**\n * Update engine with new filters or resources.\n */\n public loadedLists(): string[] {\n return Array.from(this.lists.keys());\n }\n\n public hasList(name: string, checksum: string): boolean {\n return this.lists.has(name) && this.lists.get(name) === checksum;\n }\n\n /**\n * Update engine with `resources.txt` content.\n */\n public updateResources(data: string, checksum: string): boolean {\n if (this.resources.checksum === checksum) {\n return false;\n }\n\n this.resources = Resources.parse(data, { checksum });\n return true;\n }\n\n public getFilters(): { networkFilters: NetworkFilter[]; cosmeticFilters: CosmeticFilter[] } {\n const cosmeticFilters: CosmeticFilter[] = [];\n const networkFilters: NetworkFilter[] = [];\n\n return {\n cosmeticFilters: cosmeticFilters.concat(this.cosmetics.getFilters()),\n networkFilters: networkFilters.concat(\n this.filters.getFilters(),\n this.exceptions.getFilters(),\n this.importants.getFilters(),\n this.redirects.getFilters(),\n this.csp.getFilters(),\n this.hideExceptions.getFilters(),\n ),\n };\n }\n\n /**\n * Update engine with new filters as well as optionally removed filters.\n */\n public update({\n newNetworkFilters = [],\n newCosmeticFilters = [],\n removedCosmeticFilters = [],\n removedNetworkFilters = [],\n }: Partial<IListDiff>): boolean {\n let updated: boolean = false;\n\n // Update cosmetic filters\n if (\n this.config.loadCosmeticFilters &&\n (newCosmeticFilters.length !== 0 || removedCosmeticFilters.length !== 0)\n ) {\n updated = true;\n this.cosmetics.update(\n newCosmeticFilters,\n removedCosmeticFilters.length === 0 ? undefined : new Set(removedCosmeticFilters),\n this.config,\n );\n }\n\n // Update network filters\n if (\n this.config.loadNetworkFilters &&\n (newNetworkFilters.length !== 0 || removedNetworkFilters.length !== 0)\n ) {\n updated = true;\n const filters: NetworkFilter[] = [];\n const csp: NetworkFilter[] = [];\n const exceptions: NetworkFilter[] = [];\n const importants: NetworkFilter[] = [];\n const redirects: NetworkFilter[] = [];\n const hideExceptions: NetworkFilter[] = [];\n\n for (const filter of newNetworkFilters) {\n // NOTE: it's important to check for $generichide, $elemhide,\n // $specifichide and $csp before exceptions and important as we store\n // all of them in the same filter bucket. The check for exceptions is\n // done at match-time directly.\n if (filter.isCSP()) {\n csp.push(filter);\n } else if (filter.isGenericHide() || filter.isSpecificHide()) {\n hideExceptions.push(filter);\n } else if (filter.isException()) {\n exceptions.push(filter);\n } else if (filter.isImportant()) {\n importants.push(filter);\n } else if (filter.isRedirect()) {\n redirects.push(filter);\n } else {\n filters.push(filter);\n }\n }\n\n const removedNetworkFiltersSet: Set<number> | undefined =\n removedNetworkFilters.length === 0 ? undefined : new Set(removedNetworkFilters);\n\n // Update buckets in-place\n this.importants.update(importants, removedNetworkFiltersSet);\n this.redirects.update(redirects, removedNetworkFiltersSet);\n this.filters.update(filters, removedNetworkFiltersSet);\n\n if (this.config.loadExceptionFilters === true) {\n this.exceptions.update(exceptions, removedNetworkFiltersSet);\n }\n\n if (this.config.loadCSPFilters === true) {\n this.csp.update(csp, removedNetworkFiltersSet);\n }\n\n this.hideExceptions.update(hideExceptions, removedNetworkFiltersSet);\n }\n\n return updated;\n }\n\n public updateFromDiff({ added, removed }: Partial<IRawDiff>): boolean {\n const newCosmeticFilters: CosmeticFilter[] = [];\n const newNetworkFilters: NetworkFilter[] = [];\n const removedCosmeticFilters: CosmeticFilter[] = [];\n const removedNetworkFilters: NetworkFilter[] = [];\n\n if (removed !== undefined && removed.length !== 0) {\n const { networkFilters, cosmeticFilters } = parseFilters(removed.join('\\n'), this.config);\n Array.prototype.push.apply(removedCosmeticFilters, cosmeticFilters);\n Array.prototype.push.apply(removedNetworkFilters, networkFilters);\n }\n\n if (added !== undefined && added.length !== 0) {\n const { networkFilters, cosmeticFilters } = parseFilters(added.join('\\n'), this.config);\n Array.prototype.push.apply(newCosmeticFilters, cosmeticFilters);\n Array.prototype.push.apply(newNetworkFilters, networkFilters);\n }\n\n return this.update({\n newCosmeticFilters,\n newNetworkFilters,\n removedCosmeticFilters: removedCosmeticFilters.map((f) => f.getId()),\n removedNetworkFilters: removedNetworkFilters.map((f) => f.getId()),\n });\n }\n\n /**\n * Return a list of HTML filtering rules.\n */\n public getHtmlFilters({\n // Page information\n url,\n hostname,\n domain,\n }: {\n url: string;\n hostname: string;\n domain: string | null | undefined;\n }): HTMLSelector[] {\n const htmlSelectors: HTMLSelector[] = [];\n\n if (this.config.enableHtmlFiltering === false || this.config.loadCosmeticFilters === false) {\n return htmlSelectors;\n }\n\n const rules = this.cosmetics.getHtmlRules({\n domain: domain || '',\n hostname,\n });\n\n for (const rule of rules) {\n const extended = rule.getExtendedSelector();\n if (extended !== undefined) {\n htmlSelectors.push(extended);\n }\n }\n\n if (htmlSelectors.length !== 0) {\n this.emit('html-filtered', htmlSelectors, url);\n }\n\n return htmlSelectors;\n }\n\n /**\n * Given `hostname` and `domain` of a page (or frame), return the list of\n * styles and scripts to inject in the page.\n */\n public getCosmeticsFilters({\n // Page information\n url,\n hostname,\n domain,\n\n // DOM information\n classes,\n hrefs,\n ids,\n\n // Allows to specify which rules to return\n getBaseRules = true,\n getInjectionRules = true,\n getExtendedRules = true,\n getRulesFromDOM = true,\n getRulesFromHostname = true,\n }: {\n url: string;\n hostname: string;\n domain: string | null | undefined;\n\n classes?: string[] | undefined;\n hrefs?: string[] | undefined;\n ids?: string[] | undefined;\n\n getBaseRules?: boolean;\n getInjectionRules?: boolean;\n getExtendedRules?: boolean;\n getRulesFromDOM?: boolean;\n getRulesFromHostname?: boolean;\n }): IMessageFromBackground {\n if (this.config.loadCosmeticFilters === false) {\n return {\n active: false,\n extended: [],\n scripts: [],\n styles: '',\n };\n }\n\n let allowGenericHides = true;\n let allowSpecificHides = true;\n\n const exceptions = this.hideExceptions.matchAll(\n Request.fromRawDetails({\n domain: domain || '',\n hostname,\n url,\n\n sourceDomain: '',\n sourceHostname: '',\n sourceUrl: '',\n }),\n );\n\n const genericHides: NetworkFilter[] = [];\n const specificHides: NetworkFilter[] = [];\n for (const filter of exceptions) {\n if (filter.isElemHide()) {\n allowGenericHides = false;\n allowSpecificHides = false;\n break;\n }\n\n if (filter.isSpecificHide()) {\n specificHides.push(filter);\n } else if (filter.isGenericHide()) {\n genericHides.push(filter);\n }\n }\n\n if (allowGenericHides === true) {\n allowGenericHides = shouldApplyHideException(genericHides) === false;\n }\n\n if (allowSpecificHides === true) {\n allowSpecificHides = shouldApplyHideException(specificHides) === false;\n }\n\n // Lookup injections as well as stylesheets\n const { injections, stylesheet, extended } = this.cosmetics.getCosmeticsFilters({\n domain: domain || '',\n hostname,\n\n classes,\n hrefs,\n ids,\n\n allowGenericHides,\n allowSpecificHides,\n\n getBaseRules,\n getInjectionRules,\n getExtendedRules,\n getRulesFromDOM,\n getRulesFromHostname,\n });\n\n // Perform interpolation for injected scripts\n const scripts: string[] = [];\n for (const injection of injections) {\n const script = injection.getScript(this.resources.js);\n if (script !== undefined) {\n this.emit('script-injected', script, url);\n scripts.push(script);\n }\n }\n\n // Emit events\n if (stylesheet.length !== 0) {\n this.emit('style-injected', stylesheet, url);\n }\n\n return {\n active: true,\n extended,\n scripts,\n styles: stylesheet,\n };\n }\n\n /**\n * Given a `request`, return all matching network filters found in the engine.\n */\n public matchAll(request: Request): Set<NetworkFilter> {\n const filters: NetworkFilter[] = [];\n if (request.isSupported) {\n Array.prototype.push.apply(filters, this.importants.matchAll(request));\n Array.prototype.push.apply(filters, this.filters.matchAll(request));\n Array.prototype.push.apply(filters, this.exceptions.matchAll(request));\n Array.prototype.push.apply(filters, this.csp.matchAll(request));\n Array.prototype.push.apply(filters, this.hideExceptions.matchAll(request));\n Array.prototype.push.apply(filters, this.redirects.matchAll(request));\n }\n\n return new Set(filters);\n }\n\n /**\n * Given a \"main_frame\" request, check if some content security policies\n * should be injected in the page.\n */\n public getCSPDirectives(request: Request): string | undefined {\n if (!this.config.loadNetworkFilters) {\n return undefined;\n }\n\n if (request.isSupported !== true || request.isMainFrame() === false) {\n return undefined;\n }\n\n const matches = this.csp.matchAll(request);\n\n // No $csp filter found\n if (matches.length === 0) {\n return undefined;\n }\n\n // Collect all CSP directives and keep track of exceptions\n const disabledCsp = new Set();\n const enabledCsp = new Set();\n for (const filter of matches) {\n if (filter.isException()) {\n if (filter.csp === undefined) {\n // All CSP directives are disabled for this site\n return undefined;\n }\n disabledCsp.add(filter.csp);\n } else {\n enabledCsp.add(filter.csp);\n }\n }\n\n // Combine all CSPs (except the black-listed ones)\n const csps: string | undefined =\n Array.from(enabledCsp)\n .filter((csp) => !disabledCsp.has(csp))\n .join('; ') || undefined;\n\n // Emit event\n if (csps !== undefined) {\n this.emit('csp-injected', csps, request);\n }\n\n return csps;\n }\n\n /**\n * Decide if a network request (usually from WebRequest API) should be\n * blocked, redirected or allowed.\n */\n public match(request: Request, withMetadata: boolean | undefined = false): BlockingResponse {\n const result: BlockingResponse = {\n exception: undefined,\n filter: undefined,\n match: false,\n redirect: undefined,\n metadata: undefined,\n };\n\n if (!this.config.loadNetworkFilters) {\n return result;\n }\n\n if (request.isSupported) {\n // Check the filters in the following order:\n // 1. $important (not subject to exceptions)\n // 2. redirection ($redirect=resource)\n // 3. normal filters\n // 4. exceptions\n result.filter = this.importants.match(request);\n\n let redirectNone: NetworkFilter | undefined;\n let redirectRule: NetworkFilter | undefined;\n\n // If `result.filter` is `undefined`, it means there was no $important\n // filter found so far. We look for a $redirect filter. There is some\n // extra logic to handle special cases like redirect-rule and\n // redirect=none.\n //\n // * If redirect=none is found, then cancel all redirects.\n // * Else if redirect-rule is found, only redirect if request would be blocked.\n // * Else if redirect is found, redirect.\n if (result.filter === undefined) {\n const redirects = this.redirects.matchAll(request);\n if (redirects.length !== 0) {\n for (const filter of redirects) {\n if (filter.getRedirect() === 'none') {\n redirectNone = filter;\n } else if (filter.isRedirectRule()) {\n redirectRule = filter;\n } else {\n result.filter = filter;\n }\n }\n }\n\n // If `result.filter` is still `undefined`, it means that there was no\n // redirection rule triggered for the request. We look for a normal\n // match.\n if (result.filter === undefined) {\n result.filter = this.filters.match(request);\n\n // If we found a match, and a `$redirect-rule` as found previously,\n // then we transform the match into a redirect, following the\n // semantics of redirect-rule.\n if (redirectRule !== undefined && result.filter !== undefined) {\n result.filter = redirectRule;\n }\n }\n\n // If we found either a redirection rule or a normal match, then check\n // for exceptions which could apply on the request and un-block it.\n if (result.filter !== undefined) {\n result.exception = this.exceptions.match(request);\n }\n }\n\n // If there was a redirect match and no exception was found, then we\n // proceed and process the redirect rule. This means two things:\n //\n // 1. Check if a redirect=none rule was found, which acts as exception.\n // 2. If no exception was found, prepare `result.redirect` response.\n if (\n result.filter !== undefined &&\n result.exception === undefined &&\n result.filter.isRedirect()\n ) {\n if (redirectNone !== undefined) {\n result.exception = redirectNone;\n } else {\n result.redirect = this.resources.getResource(result.filter.getRedirect());\n }\n }\n }\n\n result.match = result.exception === undefined && result.filter !== undefined;\n\n // Emit events if we found a match\n if (result.exception !== undefined) {\n this.emit('request-whitelisted', request, result);\n } else if (result.redirect !== undefined) {\n this.emit('request-redirected', request, result);\n } else if (result.filter !== undefined) {\n this.emit('request-blocked', request, result);\n } else {\n this.emit('request-allowed', request, result);\n }\n\n if (withMetadata === true && result.filter !== undefined && this.metadata) {\n result.metadata = this.metadata.fromFilter(result.filter);\n }\n\n return result;\n }\n\n public getPatternMetadata(\n request: Request,\n { getDomainMetadata = false } = {},\n ): IPatternLookupResult[] {\n if (this.metadata === undefined) {\n return [];\n }\n\n const seenPatterns = new Set();\n const patterns: IPatternLookupResult[] = [];\n for (const filter of this.matchAll(request)) {\n for (const patternInfo of this.metadata.fromFilter(filter)) {\n if (!seenPatterns.has(patternInfo.pattern.key)) {\n seenPatterns.add(patternInfo.pattern.key);\n patterns.push(patternInfo);\n }\n }\n }\n\n if (getDomainMetadata) {\n for (const patternInfo of this.metadata.fromDomain(request.hostname)) {\n if (!seenPatterns.has(patternInfo.pattern.key)) {\n seenPatterns.add(patternInfo.pattern.key);\n patterns.push(patternInfo);\n }\n }\n }\n\n return patterns;\n }\n\n public blockScripts() {\n this.updateFromDiff({\n added: [block().scripts().redirectTo('javascript').toString()],\n });\n return this;\n }\n\n public blockImages() {\n this.updateFromDiff({\n added: [block().images().redirectTo('png').toString()],\n });\n return this;\n }\n\n public blockMedias() {\n this.updateFromDiff({\n added: [block().medias().redirectTo('mp4').toString()],\n });\n return this;\n }\n\n public blockFrames() {\n this.updateFromDiff({\n added: [block().frames().redirectTo('html').toString()],\n });\n return this;\n }\n\n public blockFonts() {\n this.updateFromDiff({\n added: [block().fonts().toString()],\n });\n return this;\n }\n\n public blockStyles() {\n this.updateFromDiff({\n added: [block().styles().toString()],\n });\n return this;\n }\n}\n","/*!\n * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at https://mozilla.org/MPL/2.0/.\n */\n\n/*!\n * Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// From http://bjoern.hoehrmann.de/utf-8/decoder/dfa/\nconst utf8d = new Uint8Array([\n /* eslint-disable prettier/prettier */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f\n 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f\n 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf\n 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df\n 0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef\n 0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff\n 0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, // s0..s0\n 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2\n 1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4\n 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6\n 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8\n /* eslint-enable prettier/prettier */\n]);\n\nfunction isAscii(bytes: Uint8Array): boolean {\n if (bytes.length === 0) {\n return true;\n }\n\n for (let i = 0; i < bytes.length; i += 1) {\n if (bytes[i] > 127) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isUTF8(bytes: Uint8Array): boolean {\n if (bytes.length === 0) {\n return true;\n }\n\n if (isAscii(bytes) === true) {\n return true;\n }\n\n let state: number = 0;\n for (let i = 0; i < bytes.length; i += 1) {\n const type = utf8d[bytes[i]];\n state = utf8d[256 + state * 16 + type];\n if (state === 1 || state === undefined) {\n return false;\n }\n }\n\n return true;\n}\n"],"names":["newNode","chars","Map","code","undefined","EMPTY_UINT8_ARRAY","Uint8Array","SmazCompress","constructor","codebook","maxSize","this","trie","strings","node","i","length","tok","root","j","c","charCodeAt","next","get","set","create","buffer","verbatim","getCompressedSize","str","bufferIndex","verbatimIndex","inputIndex","indexAfterMatch","compress","len","flushVerbatim","slice","k","SmazDecompress","decompress","arr","byteLength","output","String","fromCharCode","stop","Smaz","compressor","decompressor","cosmeticSelectorCodebook","networkCSPCodebook","networkFilterCodebook","networkHostnameCodebook","networkRedirectCodebook","networkRawCodebook","cosmeticRawCodebook","Compression","cosmeticSelector","networkCSP","networkRedirect","networkHostname","networkFilter","networkRaw","cosmeticRaw","T","table","Int32Array","n","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexNonASCII","regexSeparators","errors","overflow","baseMinusTMin","error","type","RangeError","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","Math","floor","decode","input","inputLength","bias","basic","lastIndexOf","push","index","oldi","w","codePoint","t","baseMinusT","out","splice","fromCodePoint","apply","encode","counter","value","extra","ucs2decode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","join","toASCII","labels","replace","split","encoded","test","EMPTY_UINT32_ARRAY","Uint32Array","LITTLE_ENDIAN","Int8Array","Int16Array","promise","getCompressionSingleton","COMPRESSION","sizeOfLength","sizeOfBytes","array","align","sizeOfBytesWithLength","sizeOfASCII","sizeOfUTF8","encodedLength","sizeOfUint32Array","StaticDataView","empty","options","fromUint8Array","allocate","capacity","enableCompression","Error","pos","compression","checksum","buf","start","end","C","L","crc32","dataAvailable","setPos","getPos","seekZero","checkSize","subarray","align4","pushBool","bool","pushByte","Number","getBool","Boolean","getByte","setByte","byte","octet","pushUint8","getUint8","pushBytes","bytes","pushLength","getBytes","numberOfBytes","getLength","getUint32ArrayView","desiredSize","view","byteOffset","uint8","pushUint16","uint16","getUint16","pushUint32","uint32","getUint32","pushUint32Array","getUint32Array","pushUTF8","raw","getUTF8","pushASCII","getASCII","pushNetworkRedirect","getNetworkRedirect","pushNetworkHostname","getNetworkHostname","pushNetworkCSP","getNetworkCSP","pushNetworkFilter","getNetworkFilter","pushCosmeticSelector","getCosmeticSelector","pushRawCosmetic","getRawCosmetic","pushRawNetwork","getRawNetwork","lengthShort","Config","deserialize","debug","enableHtmlFiltering","enableInMemoryCache","enableMutationObserver","enableOptimizations","enablePushInjectionsOnNavigationEvents","guessRequestTypeFromUrl","integrityCheck","loadCSPFilters","loadCosmeticFilters","loadExceptionFilters","loadExtendedSelectors","loadGenericCosmeticsFilters","loadNetworkFilters","getSerializedSize","serialize","queueMicrotask","window","cb","Promise","resolve","then","catch","err","setTimeout","registerCallback","event","callback","listeners","listenersForEvent","unregisterCallback","indexOfCallback","indexOf","triggerCallback","args","size","listener","EventEmitter","onceListeners","onListeners","on","once","unsubscribe","emit","delete","fetchWithRetry","fetch","url","retry","fetchWrapper","ex","reject","fetchResource","response","text","PREFIX","adsLists","adsAndTrackingLists","fullLists","fetchLists","urls","all","map","fetchResources","NetworkBuilder","Set","prefix","infix","suffix","redirect","blockRequestsWithType","has","add","images","scripts","frames","fonts","medias","styles","redirectTo","urlContains","urlStartsWith","urlEndsWith","withHostname","hostname","toString","parts","option","block","RECURSIVE_PSEUDO_CLASSES","TOKENS","attribute","id","class","comma","combinator","TOKENS_WITH_PARENS","TOKENS_WITH_STRINGS","TRIM_TOKENS","TOKENS_FOR_RESTORE","Object","assign","splitOnMatch","pattern","lastIndex","match","exec","from","content","before","after","groups","RegExp","source","GRAMMAR","name","operator","namespace","caseSensitive","argument","subtree","restoreNested","tokens","regex","types","token","isEscaped","backslashes","gobbleQuotes","quote","gobbleParens","stack","char","selector","replacement","opening","gobble","offset","repeat","tokenize","trim","doubleQuotes","selectorWithoutDoubleQuotes","singleQuotes","selectorWithoutQuotes","parens","selectorWithoutParens","strarr","tokenizer","filter","a","every","tokenizeBy","nestTokens","list","some","selectors","temp","sub","left","right","isAST","compound","walk","o","parent","parse","recursive","ast","EXTENDED_PSEUDO_CLASSES","PSEUDO_CLASSES","PSEUDO_ELEMENTS","SelectorType","classifySelector","Normal","foundSupportedExtendedSelector","Invalid","argumentType","Extended","EXTENSIONS","extractHostname","urlIsValidHostname","hasUpper","startsWith","indexOfProtocol","protocolSize","c0","c1","c2","c3","c4","lowerCaseCode","indexOfIdentifier","indexOfClosingBracket","indexOfPort","toLowerCase","isValidAscii","isValidHostname","lastDotIndex","lastCharCode","DEFAULT_OPTIONS","allowIcannDomains","allowPrivateDomains","detectIp","mixedInputs","validHosts","validateHostname","setDefaultsImpl","parseImpl","step","suffixLookup","partialOptions","result","setDefaults","isIp","hasColon","isProbablyIpv6","numberOfDots","isProbablyIpv4","publicSuffix","domain","vhost","endsWith","shareSameDomainSuffix","numberOfLeadingDots","publicSuffixIndex","lastDotBeforeSuffixIndex","extractDomainWithSuffix","getDomain","subdomain","getSubdomain","domainWithoutSuffix","packed","binSearch","elt","low","high","mid","midVal","BUFFER","last","isIcann","isPrivate","fastPathLookup","matchIndex","matchKind","matchLabels","numberOfHashes","maximumNumberOfLabels","hash","hashHostnameLabelsBackward","label","labelStart","shift","TOKENS_BUFFER","reset","full","remaining","HASH_SEED","bitCount","getBit","mask","setBit","clearBit","fastHashBetween","begin","fastHash","hashStrings","fastStartsWith","haystack","needle","ceil","fastStartsWithFrom","isDigit","ch","isAlpha","isAllowedCode","isAlphaExtended","isCyrillic","tokenizeInPlace","skipFirstToken","skipLastToken","min","inside","tokenizeNoSkipInPlace","tokenizeNoSkip","binLookup","hasUnicodeRe","hasUnicode","TLDTS_OPTIONS","NORMALIZED_TYPE_TOKEN","beacon","cspReport","csp_report","cspviolationreport","document","eventsource","font","image","imageset","mainFrame","main_frame","manifest","media","object","object_subrequest","other","ping","prefetch","preflight","script","signedexchange","speculative","stylesheet","subFrame","sub_frame","texttrack","webSocket","web_manifest","websocket","xhr","xml_dtd","xmlhttprequest","xslt","hashHostnameBackward","getHashesFromLabelsBackward","startOfDomain","getEntityHashesFromLabelsBackward","hostnameWithoutPublicSuffix","indexOfDot","getHostnameWithoutPublicSuffix","getHostnameHashesFromLabelsBackward","Request","fromRawDetails","requestId","tabId","sourceUrl","sourceHostname","sourceDomain","_originalRequestDetails","parsed","hostnameHashes","entityHashes","sourceHostnameHashes","sourceEntityHashes","isThirdParty","isFirstParty","isSupported","isHttp","isHttps","indexOfComa","getHostnameHashes","getEntityHashes","getTokens","isMainFrame","isSubFrame","guessTypeOfRequest","currentType","ext","endOfPath","indexOfFragment","indexOfQuery","startOfExt","extname","IMAGE_EXTENSIONS","MEDIA_EXTENSIONS","STYLE_EXTENSIONS","SCRIPT_EXTENSIONS","DOCUMENT_EXTENSIONS","FONT_EXTENSIONS","guessUrlType","Domains","entities","notEntities","hostnames","notHostnames","negation","entity","sort","optionalParts","updateId","notHostname","notEntity","estimate","extractHTMLSelectorFromRule","rule","currentParsingDepth","startOfSelectorIndex","prev","tagShouldBeRemoved","tag","plainPatterns","regexpPatterns","EMPTY_TOKENS","DEFAULT_HIDDING_STYLE","REGEXP_UNICODE_COMMA","REGEXP_UNICODE_BACKSLASH","isSimpleSelector","nextCode","isSimpleHrefSelector","isValidCss","div","createElement","matches","validSelectorRe","CosmeticFilter","line","rawLine","domains","style","sharpIndex","afterSharpIndex","suffixStartIndex","indexOfStyle","selectorType","isUnicode","isCosmeticFilter","isNetworkFilter","sizeOfCosmeticSelector","sizeOfRawCosmetic","isUnhide","isScriptInject","hasHostnameConstraint","isIdSelector","isClassSelector","endOfSelector","isHrefSelector","getSelector","hrefIndex","hrefEnd","parseScript","lastComaIndex","inDoubleQuotes","inSingleQuotes","inRegexp","objectNesting","lastCharIsBackslash","inArgument","part","substring","getScript","js","arg","getId","computeFilterId","hasCustomStyle","getStyle","getStyleAttributeHash","getSelectorAST","parseCssSelector","getExtendedSelector","isExtended","isRemove","isCSS","isHtmlFiltering","isGenericHide","_a","_b","HTTP_HASH","HTTPS_HASH","FROM_ANY","REQUEST_TYPE_TO_MASK","getListOfRequestTypes","fromDocument","fromImage","fromMedia","fromObject","fromOther","fromPing","fromScript","fromStylesheet","fromSubdocument","fromWebsocket","fromXmlHttpRequest","fromFont","csp","denyallow","compileRegex","isLeftAnchor","isRightAnchor","isFullRegex","MATCH_ALL","NetworkFilter","cptMaskPositive","cptMaskNegative","filterIndexStart","filterIndexEnd","optionsIndex","rawOption","optionValue","indexOfEqual","optionMask","firstSeparator","separatorCode","setNetworkMask","indexOfSeparator","indexOfWildcard","checkIsRegex","request","isCptAllowed","fromHttps","fromHttp","firstParty","thirdParty","checkOptions","getFilter","isHostnameAnchor","filterHostname","getHostname","isFollowedByWildcard","isAnchoredByHostname","isRegex","getRegex","requestHostname","hasFilter","checkPattern","sizeOfNetworkCSP","sizeOfNetworkFilter","sizeOfNetworkHostname","sizeOfRawNetwork","sizeOfNetworkRedirect","isException","hasHostname","fromAny","numberOfCptOptions","getCptMask","getListOfRequestTypesNegated","isImportant","isRedirectRule","getRedirect","isRedirect","isCSP","isElemHide","isSpecificHide","isBadFilter","getIdWithoutBadFilter","hasDomains","getMask","precedingCh","tokenizeWithWildcardsInPlace","tokenizeRegexInPlace","cpt","isPlain","detectFilterType","firstCharCode","secondCharCode","dollarIndex","afterDollarIndex","afterDollarCharCode","afterSharpCharCode","parseFilter","filterType","parseFilters","config","networkFilters","cosmeticFilters","lines","nextLine","getFilters","concat","CONTENT_TYPE","flv","contentType","aliases","body","gif","html","ico","jpg","json","mp3","mp4","pdf","png","svg","txt","wav","webm","webp","wmv","MIME_TO_RESOURCE","resources","fake","alias","getResourceForMime","mime","Resources","numberOfResources","forEach","data","typeToResource","chunks","chunk","resource","firstNewLine","key","entries","resourcesByName","getResource","dataUrl","btoa","Buffer","estimatedSize","escape","s","setWithDefault","bucket","groupBy","filters","criteria","grouped","Array","values","splitBy","condition","positive","negative","OPTIMIZATIONS","description","fusion","groupByCriteria","select","patterns","f","noopOptimizeNetwork","noopOptimizeCosmetic","optimizeNetwork","fused","toFuse","group","nextPow2","v","UID","EMPTY_BUCKET","MAX_SAFE_INTEGER","ReverseIndex","optimize","tokensLookupIndexSize","bucketsIndexSize","numberOfFilters","tokensLookupIndex","bucketsIndex","filtersIndexStart","updateInternals","cache","deserializeFilter","update","iterMatchingFilters","getNextId","iterBucket","newFilters","removedFilters","clear","totalNumberOfTokens","totalNumberOfIndexedFilters","filtersTokens","estimatedBufferSize","f1","f2","histogram","max","multiTokens","suffixes","filterIndex","bestToken","minCount","tokenCount","indexInBucketsIndex","filtersForMask","startOfBucket","endOfBucket","filtersIndices","lastRequestSeen","EMPTY_FILTERS","FiltersContainer","container","bufferSizeEstimation","selected","currentFilters","storedFiltersRemoved","numberOfExistingFilters","storedFiltersAdded","createStylesheet","rules","maximumNumberOfSelectors","styleStr","createStylesheetFromRulesWithCustomStyles","selectorsPerStyle","stylesheets","selectorsPerStyleArray","createStylesheetFromRules","createLookupTokens","hostnamesHashes","entitiesHashes","CosmeticFilterBucket","genericRules","classesIndex","hostnameIndex","hrefsIndex","htmlIndex","idsIndex","unhideIndex","baseStylesheet","extraGenericRules","classSelectors","genericHideRules","hostnameSpecificRules","hrefSelectors","htmlRules","idSelectors","unHideRules","getHtmlRules","hostnameTokens","disabledRules","getCosmeticsFilters","classes","hrefs","ids","allowGenericHides","allowSpecificHides","getBaseRules","getInjectionRules","getExtendedRules","getRulesFromDOM","getRulesFromHostname","getGenericRules","sorted","compactTokens","arrays","totalSize","concatTypedArrays","href","extended","injections","injectionsDisabled","getBaseStylesheet","extendedProcessed","extendedStyles","remove","lazyPopulateGenericRulesCache","canBeHiddenSelectors","cannotBeHiddenRules","canBeHiddenRules","NetworkFilterBucket","badFilters","badFiltersIds","matchAll","isFilterDisabled","badFilter","CompactMap","numberOfValues","valuesIndexStart","getKeys","deserializeValue","patternsKeys","keys","valueIndex","valuesForMask","getValues","cachedValues","valuesIndices","isValid","category","color","getKey","createMap","categories","organization","country","website_url","websiteUrl","privacy_policy_url","privacyPolicyUrl","privacy_contact","privacyContact","ghostery_id","ghosteryId","organizations","isArray","parsedFilter","sizeOfDomains","sizeOfFilters","numberOfDomains","Metadata","metadata","deserializeCategory","deserializeOrganization","deserializePattern","rawTrackerDB","createOrganizationsMap","createCategoriesMap","createPatternsMap","rawPatterns","rawOrganizations","rawCategories","categoryWithKey","isValidCategory","console","organizationWithKey","isValidOrganization","patternWithKey","isValidPattern","getCategories","getOrganizations","getPatterns","fromFilter","fromId","fromDomain","domainParts","parsedDomainFilter","results","getCategoryKey","getOrganizationKey","ENGINE_VERSION","shouldApplyHideException","genericHideFilter","currentScore","score","utf8d","fromCached","init","caching","path","read","write","engine","fromLists","listsPromises","resourcesPromise","lists","updateResources","fromPrebuiltAdsOnly","fetchImpl","fromPrebuiltAdsAndTracking","fromPrebuiltFull","fromTrackerDB","rawJsonDump","serialized","serializedEngineVersion","currentPos","expected","numberOfLists","importants","redirects","exceptions","cosmetics","hideExceptions","super","newCosmeticFilters","newNetworkFilters","loadedLists","hasList","removedCosmeticFilters","removedNetworkFilters","updated","removedNetworkFiltersSet","updateFromDiff","added","removed","prototype","getHtmlFilters","htmlSelectors","active","genericHides","specificHides","injection","getCSPDirectives","disabledCsp","enabledCsp","csps","withMetadata","exception","redirectNone","redirectRule","getPatternMetadata","getDomainMetadata","seenPatterns","patternInfo","blockScripts","blockImages","blockMedias","blockFrames","blockFonts","blockStyles","extractSelectorsFromRules","flush","tags","rest","endOfLastTag","endOfTagIndex","indexOfClosingTag","lastClosingTagIndex","indexOfNextTag","extractTagsFromHtml","toRemove","filteredHtml","reverse","removeTagsFromHtml","selectTagsToRemove","prevRevision","newRevision","debugConfig","prevRevisionFilters","prevRevisionIds","newRevisionFilters","newRevisionIds","isAscii","state","details","diffs","addedCumul","removedCumul"],"mappings":"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A,EAAI+B,EAAM/B,GAAK,EAC1B4B,GAAUC,OAAOC,aAAaJ,EAAI1B,GAErC,MACC4B,GAAUhC,KAAKF,SAASgC,EAAI1B,IAC5BA,GAAK,EAGT,OAAO4B,CACR,QCxBUI,EAIX,WAAAvC,CAAqBC,EAA6BC,EAAU,KAAvCC,KAAQF,SAARA,EACnBE,KAAKqC,WAAa,IAAIzC,EAAaE,EAAUC,GAC7CC,KAAKsC,aAAe,IAAIV,EAAe9B,EACxC,CAEM,QAAAyB,CAASL,GACd,OAAOlB,KAAKqC,WAAWd,SAASL,EACjC,CAEM,iBAAAD,CAAkBC,GACvB,OAAOlB,KAAKqC,WAAWpB,kBAAkBC,EAC1C,CAEM,UAAAW,CAAWd,GAChB,OAAOf,KAAKsC,aAAaT,WAAWd,EACrC,ECdY,IAAAwB,EAAA,CACb,4IACA,mEACA,mDACA,2CACA,0CACA,yCACA,uCACA,qCACA,qCACA,iCACA,iCACA,gCACA,+BACA,6BACA,2BACA,yBACA,sBACA,qBACA,oBACA,oBACA,mBACA,kBACA,kBACA,iBACA,gBACA,gBACA,gBACA,eACA,eACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KC9PaC,EAAA,CACb,qJACA,oFACA,wDACA,+CACA,8CACA,wCACA,qCACA,oCACA,gCACA,+BACA,8BACA,0BACA,uBACA,sBACA,qBACA,qBACA,oBACA,oBACA,oBACA,mBACA,mBACA,gBACA,eACA,cACA,cACA,aACA,aACA,aACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KCrGaC,EAAA,CACb,0JACA,kEACA,0DACA,yDACA,uDACA,4CACA,uCACA,oCACA,iCACA,4BACA,6BACA,0BACA,yBACA,wBACA,wBACA,uBACA,uBACA,mBACA,kBACA,kBACA,kBACA,mBACA,iBACA,kBACA,eACA,iBACA,eACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KC9PaC,EAAA,CACb,6BACA,oBACA,oBACA,mBACA,kBACA,gBACA,cACA,cACA,aACA,YACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KC9PaC,EAAA,CACb,oCACA,mCACA,8BACA,2BACA,0BACA,uBACA,mBACA,mBACA,kBACA,gBACA,gBACA,gBACA,eACA,eACA,cACA,aACA,aACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,SACA,QACA,QACA,OACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KC7EaC,EAAA,CACb,6BACA,6BACA,6BACA,6BACA,4BACA,yBACA,uBACA,uBACA,sBACA,qBACA,oBACA,oBACA,mBACA,kBACA,iBACA,iBACA,gBACA,kBACA,gBACA,cACA,cACA,cACA,aACA,aACA,YACA,YACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KC9PaC,EAAA,CACb,6BACA,6BACA,6BACA,6BACA,6BACA,2BACA,0BACA,sBACA,qBACA,qBACA,qBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,kBACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KCpPY,MAAOC,EAArB,WAAAjD,GACkBG,KAAA+C,iBAAyB,IAAIX,EAAKG,GAClCvC,KAAAgD,WAAmB,IAAIZ,EAAKI,GAC5BxC,KAAAiD,gBAAwB,IAAIb,EAAKO,GACjC3C,KAAAkD,gBAAwB,IAAId,EAAKM,GACjC1C,KAAAmD,cAAsB,IAAIf,EAAKK,GAC/BzC,KAAAoD,WAAmB,IAAIhB,EAAKQ,GAC5B5C,KAAAqD,YAAoB,IAAIjB,EAAKS,EAC9C,ECvBD,MAAMS,EAAgB,MACpB,IAAI7C,EAAY,EAChB,MAAM8C,EAAoB,IAAIC,WAAW,KAEzC,IAAK,IAAIC,EAAY,EAAS,MAANA,EAAWA,GAAK,EACtChD,EAAIgD,EACJhD,EAAQ,EAAJA,GAAS,UAAaA,IAAM,EAAKA,IAAM,EAC3CA,EAAQ,EAAJA,GAAS,UAAaA,IAAM,EAAKA,IAAM,EAC3CA,EAAQ,EAAJA,GAAS,UAAaA,IAAM,EA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U,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,GAAG,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,IAAI,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,WAAW,EAAE,UAAU,WAAW,WAAW,WAAW,GAAG,QAAQ,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAA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AE,EAAE,EAAE,EAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9D,GAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,GAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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","x_google_ignoreList":[0,1,2,3,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,44,45,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68]} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js b/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js
new file mode 100644
index 0000000..541031a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js
@@ -0,0 +1,58 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.StreamingHtmlFilter = exports.Resources = exports.Config = exports.isUTF8 = exports.hasUnicode = exports.tokenize = exports.parseFilters = exports.parseFilter = exports.mergeDiffs = exports.getLinesWithFilters = exports.generateDiff = exports.f = exports.detectFilterType = exports.NetworkFilter = exports.CosmeticFilter = exports.getHostnameHashesFromLabelsBackward = exports.makeRequest = exports.Request = exports.ReverseIndex = exports.ENGINE_VERSION = exports.FiltersEngine = void 0;
+var engine_1 = require("./src/engine/engine");
+Object.defineProperty(exports, "FiltersEngine", { enumerable: true, get: function () { return engine_1.default; } });
+Object.defineProperty(exports, "ENGINE_VERSION", { enumerable: true, get: function () { return engine_1.ENGINE_VERSION; } });
+var reverse_index_1 = require("./src/engine/reverse-index");
+Object.defineProperty(exports, "ReverseIndex", { enumerable: true, get: function () { return reverse_index_1.default; } });
+var request_1 = require("./src/request");
+Object.defineProperty(exports, "Request", { enumerable: true, get: function () { return request_1.default; } });
+Object.defineProperty(exports, "makeRequest", { enumerable: true, get: function () { return request_1.makeRequest; } });
+Object.defineProperty(exports, "getHostnameHashesFromLabelsBackward", { enumerable: true, get: function () { return request_1.getHostnameHashesFromLabelsBackward; } });
+var cosmetic_1 = require("./src/filters/cosmetic");
+Object.defineProperty(exports, "CosmeticFilter", { enumerable: true, get: function () { return cosmetic_1.default; } });
+var network_1 = require("./src/filters/network");
+Object.defineProperty(exports, "NetworkFilter", { enumerable: true, get: function () { return network_1.default; } });
+var lists_1 = require("./src/lists");
+Object.defineProperty(exports, "detectFilterType", { enumerable: true, get: function () { return lists_1.detectFilterType; } });
+Object.defineProperty(exports, "f", { enumerable: true, get: function () { return lists_1.f; } });
+Object.defineProperty(exports, "generateDiff", { enumerable: true, get: function () { return lists_1.generateDiff; } });
+Object.defineProperty(exports, "getLinesWithFilters", { enumerable: true, get: function () { return lists_1.getLinesWithFilters; } });
+Object.defineProperty(exports, "mergeDiffs", { enumerable: true, get: function () { return lists_1.mergeDiffs; } });
+Object.defineProperty(exports, "parseFilter", { enumerable: true, get: function () { return lists_1.parseFilter; } });
+Object.defineProperty(exports, "parseFilters", { enumerable: true, get: function () { return lists_1.parseFilters; } });
+__exportStar(require("./src/fetch"), exports);
+var utils_1 = require("./src/utils");
+Object.defineProperty(exports, "tokenize", { enumerable: true, get: function () { return utils_1.tokenizeNoSkip; } });
+Object.defineProperty(exports, "hasUnicode", { enumerable: true, get: function () { return utils_1.hasUnicode; } });
+var encoding_1 = require("./src/encoding");
+Object.defineProperty(exports, "isUTF8", { enumerable: true, get: function () { return encoding_1.isUTF8; } });
+var config_1 = require("./src/config");
+Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return config_1.default; } });
+var resources_1 = require("./src/resources");
+Object.defineProperty(exports, "Resources", { enumerable: true, get: function () { return resources_1.default; } });
+var html_filtering_1 = require("./src/html-filtering");
+Object.defineProperty(exports, "StreamingHtmlFilter", { enumerable: true, get: function () { return html_filtering_1.default; } });
+//# sourceMappingURL=adblocker.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js.map
new file mode 100644
index 0000000..a709940
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/adblocker.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.js","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,8CAAiG;AAAxF,uGAAA,OAAO,OAAiB;AAAE,wGAAA,cAAc,OAAA;AACjD,4DAAqE;AAA5D,6GAAA,OAAO,OAAgB;AAChC,yCASuB;AARrB,kGAAA,OAAO,OAAW;AAClB,sGAAA,WAAW,OAAA;AAKX,8HAAA,mCAAmC,OAAA;AAGrC,mDAAmE;AAA1D,0GAAA,OAAO,OAAkB;AAClC,iDAAiE;AAAxD,wGAAA,OAAO,OAAiB;AACjC,qCAWqB;AAPnB,yGAAA,gBAAgB,OAAA;AAChB,0FAAA,CAAC,OAAA;AACD,qGAAA,YAAY,OAAA;AACZ,4GAAA,mBAAmB,OAAA;AACnB,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AAEd,8CAA4B;AAC5B,qCAAqE;AAA5D,iGAAA,cAAc,OAAY;AAAE,mGAAA,UAAU,OAAA;AAC/C,2CAAwC;AAA/B,kGAAA,MAAM,OAAA;AACf,uCAAiD;AAAxC,gGAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,sGAAA,OAAO,OAAa;AAC7B,uDAAoF;AAA7D,qHAAA,OAAO,OAAuB"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js
new file mode 100644
index 0000000..d934ec2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "div[style=\"position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;\"]",
+ "acs, document.createElement, /l\\.parentNode\\.insertBefore\\(s/",
+ "acs, document.addEventListener, google_ad_client",
+ "acs, document.querySelectorAll, popMagic",
+ "acs, addEventListener, google_ad_client",
+ "aost, String.prototype.charCodeAt, ai_",
+ "aopr, app_vars.force_disable_adblock",
+ "aeld, DOMContentLoaded, adsBlocked",
+ "paid.outbrain.com/network/redir?\"]",
+ "acs, document.getElementById, ",
+ "no-fetch-if, googlesyndication",
+ "acs, document.createElement, ",
+ "aopr, document.dispatchEvent",
+ "acs, String.fromCharCode, ",
+ "nosiif, visibility, 1000",
+ "set, Object.prototype.",
+ "set, blurred, false",
+ "acs, eval, replace",
+ "[target=\"_blank\"]",
+ "^script:has-text(",
+ "[href^=\"https://",
+ "[href^=\"http://",
+ "set, flashvars.",
+ "rmnt, script, ",
+ "#custom_html-",
+ "BlockDetected",
+ "no-fetch-if, ",
+ "div[class^=\"",
+ "notification",
+ "leaderboard",
+ "no-xhr-if, ",
+ "noeval-if, ",
+ ", noopFunc",
+ ":has-text(",
+ "AaDetector",
+ "aopw, _pop",
+ "background",
+ "horizontal",
+ "nano-sib, ",
+ "container",
+ "Container",
+ "decodeURI",
+ "div[id^=\"",
+ "ompliance",
+ "placehold",
+ "rectangle",
+ "[href*=\"",
+ "#wpsafe-",
+ "backdrop",
+ "disclaim",
+ "https://",
+ "nextFunc",
+ "nostif, ",
+ "Notifica",
+ "nowebrtc",
+ ".com/\"]",
+ "300x250",
+ "article",
+ "consent",
+ "content",
+ "message",
+ "Message",
+ "privacy",
+ "Privacy",
+ "sidebar",
+ "sponsor",
+ "wrapper",
+ "[class",
+ "[data-",
+ "[style",
+ "728x90",
+ "accept",
+ "Accept",
+ "aeld, ",
+ "aopr, ",
+ "aopw, ",
+ "banner",
+ "billbo",
+ "bottom",
+ "cookie",
+ "Cookie",
+ "google",
+ "notice",
+ "nowoif",
+ "policy",
+ "Policy",
+ "sticky",
+ "widget",
+ ":has(",
+ ":not(",
+ "acs, ",
+ "block",
+ "Block",
+ "click",
+ "cript",
+ "docum",
+ "fixed",
+ "frame",
+ "modal",
+ "popup",
+ "set, ",
+ "width",
+ "0px;",
+ "body",
+ "foot",
+ "gdpr",
+ "html",
+ "ight",
+ "page",
+ "show",
+ "tion",
+ "true",
+ "www.",
+ " > ",
+ "box",
+ "Box",
+ "div",
+ "dow",
+ "ent",
+ "ide",
+ "img",
+ "lay",
+ "out",
+ "rap",
+ "sby",
+ "top",
+ "utt",
+ "__",
+ "--",
+ ", ",
+ ": ",
+ ".j",
+ ".m",
+ ".t",
+ "\"]",
+ "=\"",
+ "00",
+ "ab",
+ "ac",
+ "ad",
+ "Ad",
+ "ag",
+ "al",
+ "am",
+ "an",
+ "ar",
+ "at",
+ "d-",
+ "de",
+ "e-",
+ "ed",
+ "el",
+ "en",
+ "er",
+ "et",
+ "fo",
+ "g-",
+ "he",
+ "id",
+ "il",
+ "in",
+ "is",
+ "it",
+ "la",
+ "le",
+ "lo",
+ "o-",
+ "od",
+ "ol",
+ "om",
+ "on",
+ "op",
+ "or",
+ "ot",
+ "ov",
+ "p-",
+ "re",
+ "s_",
+ "s-",
+ "se",
+ "si",
+ "st",
+ "t-",
+ "te",
+ "ti",
+ "un",
+ " ",
+ "_",
+ "-",
+ ";",
+ ":",
+ ".",
+ "'",
+ ")",
+ "[",
+ "]",
+ "*",
+ "/",
+ "#",
+ "^",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "A",
+ "b",
+ "B",
+ "c",
+ "C",
+ "d",
+ "D",
+ "e",
+ "E",
+ "f",
+ "F",
+ "g",
+ "h",
+ "H",
+ "i",
+ "I",
+ "j",
+ "k",
+ "l",
+ "L",
+ "m",
+ "M",
+ "n",
+ "N",
+ "o",
+ "O",
+ "p",
+ "P",
+ "q",
+ "r",
+ "R",
+ "s",
+ "S",
+ "t",
+ "T",
+ "u",
+ "U",
+ "v",
+ "w",
+ "W",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=cosmetic-selector.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js.map
new file mode 100644
index 0000000..7813b4b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/cosmetic-selector.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic-selector.js","sourceRoot":"","sources":["../../../../src/codebooks/cosmetic-selector.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js
new file mode 100644
index 0000000..3c80326
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js
@@ -0,0 +1,114 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation",
+ "script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:",
+ "script-src 'self' 'unsafe-inline' 'unsafe-eval' data:",
+ " *.google.com *.gstatic.com *.googleapis.com",
+ ".com *.google.com *.googletagmanager.com *.",
+ "script-src 'self' '*' 'unsafe-inline'",
+ "default-src 'unsafe-inline' 'self'",
+ "*.gstatic.com *.googleapis.com *.",
+ "t-src 'self' 'unsafe-inline' ",
+ "script-src * 'unsafe-inline'",
+ ".com *.google-analytics.com",
+ " *.googletagmanager.com",
+ " *.cloudflare.com *.",
+ "*.googleapis.com *.",
+ "default-src 'self'",
+ "frame-src 'self' *",
+ " *.gstatic.com *.",
+ "child-src 'none';",
+ "worker-src 'none'",
+ " 'unsafe-inline'",
+ "bootstrapcdn.com",
+ "'unsafe-eval'",
+ "connect-src ",
+ "child-src *",
+ "style-src *",
+ "google.com",
+ "jquery.com",
+ "script-src",
+ "frame-src",
+ "facebook",
+ "https://",
+ ".com *.",
+ ".net *.",
+ "addthis",
+ "captcha",
+ "gstatic",
+ "youtube",
+ " data:",
+ "'self'",
+ "defaul",
+ "disqus",
+ "google",
+ "scrip",
+ "ytimg",
+ ".com",
+ "n.cc",
+ " *.",
+ "age",
+ "dia",
+ "tag",
+ "vic",
+ " *",
+ "er",
+ "es",
+ "im",
+ "in",
+ "la",
+ "lo",
+ "me",
+ "ne",
+ "nt",
+ "pi",
+ "ra",
+ "re",
+ "tt",
+ "wi",
+ "wp",
+ " ",
+ "-",
+ ";",
+ ":",
+ ".",
+ "'",
+ "*",
+ "/",
+ "3",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y"
+];
+//# sourceMappingURL=network-csp.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js.map
new file mode 100644
index 0000000..686c876
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-csp.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-csp.js","sourceRoot":"","sources":["../../../../src/codebooks/network-csp.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,oJAAoJ;IACpJ,mFAAmF;IACnF,uDAAuD;IACvD,8CAA8C;IAC9C,6CAA6C;IAC7C,uCAAuC;IACvC,oCAAoC;IACpC,mCAAmC;IACnC,+BAA+B;IAC/B,8BAA8B;IAC9B,6BAA6B;IAC7B,yBAAyB;IACzB,sBAAsB;IACtB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,cAAc;IACd,aAAa;IACb,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js
new file mode 100644
index 0000000..5756743
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "\\/[a-d][-\\.\\/_A-Za-z][DHWXm][-\\.\\/_A-Za-z][59FVZ][-\\.\\/_A-Za-z][6swyz][-\\.\\/_A-Za-z][-\\/_0-9a-zA-Z][-\\.\\/_A-Za-z][-\\/_0-9a-zA-Z]{22,162}$/",
+ "\\/(?=[\\/a-zA-Z]*[+0-9])(?=[+\\/0-9a-z]*[A-Z])[+\\/0-9a-zA-Z]{",
+ "/homad-global-configs.schneevonmorgen.com/global_config",
+ "/videojs-vast-vpaid@2.0.2/bin/videojs_5.vast.vpaid.min",
+ "/etc.clientlibs/logitech-common/clientlibs/onetrust.",
+ "\\/(?=[a-z]{0,6}[0-9A-Z])[0-9a-zA-Z]{7}\\",
+ "/pagead/managed/js/gpt/*/pubads_impl",
+ "\\?aHR0c[\\/0-9a-zA-Z]{33,}=?=?$/",
+ "\\.pussyspace\\.(?:com|net)\\/",
+ "/pagead/js/adsbygoogle.js",
+ "\\/[+\\/0-9a-zA-Z]{400,}$/",
+ "/fileadmin/user_upload/",
+ "/js/sdkloader/ima3_dai",
+ "/js/sdkloader/ima3.js",
+ "/sites/default/files/",
+ "/wp-content/plugins/",
+ "/wp-content/uploads/",
+ "/detroitchicago/",
+ "*/satellitelib-",
+ "/appmeasurement",
+ "/img/linklist2/",
+ "/(https?:\\/\\/)",
+ "/cdn-cgi/trace",
+ "/^https?:\\/\\/",
+ "[a-zA-Z0-9]{",
+ "/^https:\\/\\/",
+ "/wp-content/",
+ "impression",
+ "[0-9a-f]{",
+ "[0-9a-z]{",
+ "/template",
+ "affiliate",
+ "analytics",
+ "collector",
+ "/assets/",
+ "/collect",
+ "/images/",
+ "tracking",
+ "300x250",
+ "captcha",
+ "consent",
+ "content",
+ "counter",
+ "privacy",
+ "sponsor",
+ "visitor",
+ ".aspx?",
+ "/media",
+ "0-9a-z",
+ "728x90",
+ "banner",
+ "bundle",
+ "client",
+ "cookie",
+ "detect",
+ "google",
+ "metric",
+ "prebid",
+ "public",
+ "script",
+ "source",
+ "widget",
+ ".cgi?",
+ ".com/",
+ ".html",
+ "/api/",
+ "/file",
+ "/img/",
+ "/java",
+ "/page",
+ "/stat",
+ "/uplo",
+ "a-z]{",
+ "block",
+ "click",
+ "count",
+ "event",
+ "frame",
+ "image",
+ "manag",
+ "pixel",
+ "popup",
+ "theme",
+ "track",
+ "video",
+ ".gif",
+ ".jpg",
+ ".min",
+ ".php",
+ ".png",
+ "/jqu",
+ "/js/",
+ "/lib",
+ "/log",
+ "/web",
+ "468x",
+ "bung",
+ "gdpr",
+ "gi-b",
+ "ight",
+ "page",
+ "play",
+ "show",
+ "view",
+ ".js",
+ "(?:",
+ "}\\.",
+ "/ad",
+ "/js",
+ "=*&",
+ "com",
+ "ext",
+ "ive",
+ "jax",
+ "log",
+ "lug",
+ "sdk",
+ "tag",
+ "web",
+ "*/",
+ "*^",
+ "/_",
+ "/?",
+ "/*",
+ "/d",
+ "/f",
+ "/g",
+ "/h",
+ "/l",
+ "/m",
+ "/n",
+ "/r",
+ "/w",
+ "\\/",
+ "20",
+ "a-",
+ "ac",
+ "ad",
+ "ag",
+ "al",
+ "am",
+ "an",
+ "ap",
+ "ar",
+ "as",
+ "at",
+ "be",
+ "bo",
+ "ce",
+ "ch",
+ "co",
+ "de",
+ "e-",
+ "e/",
+ "ed",
+ "el",
+ "em",
+ "en",
+ "er",
+ "et",
+ "ic",
+ "id",
+ "ig",
+ "il",
+ "im",
+ "in",
+ "is",
+ "it",
+ "js",
+ "la",
+ "le",
+ "li",
+ "lo",
+ "ma",
+ "mp",
+ "ol",
+ "om",
+ "on",
+ "op",
+ "or",
+ "ot",
+ "p-",
+ "re",
+ "ro",
+ "s_",
+ "s-",
+ "s?",
+ "s/",
+ "sp",
+ "ss",
+ "st",
+ "t/",
+ "te",
+ "tm",
+ "tr",
+ "ub",
+ "um",
+ "un",
+ "ur",
+ "us",
+ "ut",
+ "_",
+ "-",
+ ",",
+ ":",
+ "?",
+ ".",
+ ")",
+ "[",
+ "}",
+ "*",
+ "/",
+ "\\",
+ "&",
+ "^",
+ "=",
+ "|",
+ "$",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=network-filter.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js.map
new file mode 100644
index 0000000..b636798
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-filter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-filter.js","sourceRoot":"","sources":["../../../../src/codebooks/network-filter.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,yJAAyJ;IACzJ,iEAAiE;IACjE,yDAAyD;IACzD,wDAAwD;IACxD,sDAAsD;IACtD,2CAA2C;IAC3C,sCAAsC;IACtC,mCAAmC;IACnC,gCAAgC;IAChC,2BAA2B;IAC3B,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js
new file mode 100644
index 0000000..bc3f4f0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "securepubads.g.doubleclick",
+ "googlesyndication",
+ "imasdk.googleapis",
+ "googletagmanager",
+ ".cloudfront.net",
+ ".actonservice",
+ ".rsc.cdn77.",
+ "doubleclick",
+ "marketing.",
+ "analytics",
+ "smetrics.",
+ ".website",
+ "metrics.",
+ "digital",
+ ".co.uk",
+ "a8clk.",
+ "stats.",
+ "a8cv.",
+ "media",
+ "space",
+ "track",
+ ".com",
+ ".net",
+ ".xyz",
+ "ight",
+ "www.",
+ ".de",
+ ".io",
+ ".jp",
+ "aff",
+ "app",
+ "cdn",
+ "new",
+ "pro",
+ "web",
+ ".b",
+ ".c",
+ ".f",
+ ".h",
+ ".k",
+ ".m",
+ ".n",
+ ".p",
+ ".t",
+ ".v",
+ ".w",
+ "a1",
+ "a8",
+ "ab",
+ "ac",
+ "ad",
+ "af",
+ "ag",
+ "ah",
+ "ai",
+ "ak",
+ "al",
+ "am",
+ "an",
+ "ap",
+ "ar",
+ "as",
+ "at",
+ "au",
+ "av",
+ "aw",
+ "ax",
+ "ay",
+ "az",
+ "be",
+ "bl",
+ "bo",
+ "br",
+ "bu",
+ "ca",
+ "ce",
+ "ch",
+ "ci",
+ "ck",
+ "cl",
+ "cr",
+ "ct",
+ "cu",
+ "da",
+ "de",
+ "di",
+ "do",
+ "dr",
+ "ds",
+ "du",
+ "dy",
+ "e-",
+ "eb",
+ "ec",
+ "ed",
+ "ef",
+ "eg",
+ "ek",
+ "el",
+ "em",
+ "en",
+ "ep",
+ "er",
+ "es",
+ "et",
+ "eu",
+ "ev",
+ "ew",
+ "ex",
+ "ey",
+ "fe",
+ "fi",
+ "fl",
+ "fo",
+ "fr",
+ "ge",
+ "gh",
+ "gl",
+ "go",
+ "gr",
+ "gu",
+ "he",
+ "ho",
+ "ia",
+ "ib",
+ "ic",
+ "id",
+ "ie",
+ "if",
+ "ig",
+ "ik",
+ "il",
+ "im",
+ "in",
+ "ip",
+ "ir",
+ "is",
+ "it",
+ "iv",
+ "ix",
+ "iz",
+ "jo",
+ "ks",
+ "la",
+ "ld",
+ "le",
+ "li",
+ "lo",
+ "lu",
+ "ly",
+ "ma",
+ "me",
+ "mo",
+ "mp",
+ "my",
+ "nd",
+ "ne",
+ "no",
+ "ob",
+ "of",
+ "ok",
+ "ol",
+ "om",
+ "on",
+ "oo",
+ "op",
+ "or",
+ "ot",
+ "ou",
+ "ow",
+ "ph",
+ "pl",
+ "po",
+ "pr",
+ "qu",
+ "re",
+ "ro",
+ "ru",
+ "s-",
+ "sc",
+ "se",
+ "sh",
+ "si",
+ "sk",
+ "sm",
+ "sn",
+ "so",
+ "sp",
+ "ss",
+ "st",
+ "su",
+ "sw",
+ "sy",
+ "t-",
+ "ta",
+ "te",
+ "th",
+ "ti",
+ "tn",
+ "to",
+ "tr",
+ "ts",
+ "tu",
+ "tw",
+ "ty",
+ "ub",
+ "ul",
+ "um",
+ "un",
+ "up",
+ "ur",
+ "us",
+ "ut",
+ "ve",
+ "vi",
+ "we",
+ "-",
+ ".",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=network-hostname.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js.map
new file mode 100644
index 0000000..a9c64c6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-hostname.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-hostname.js","sourceRoot":"","sources":["../../../../src/codebooks/network-hostname.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,4BAA4B;IAC5B,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,aAAa;IACb,YAAY;IACZ,WAAW;IACX,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js
new file mode 100644
index 0000000..7712017
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js
@@ -0,0 +1,90 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "google-analytics.com/analytics.js",
+ "googlesyndication_adsbygoogle.js",
+ "googletagmanager.com/gtm.js",
+ "googletagservices_gpt.js",
+ "googletagmanager_gtm.js",
+ "fuckadblock.js-3.2.0",
+ "amazon_apstag.js",
+ "google-analytics",
+ "fingerprint2.js",
+ "-transparent.",
+ "google-ima.js",
+ "prebid-ads.js",
+ "nobab2.js:10",
+ "noopmp3-0.1s",
+ "noop-1s.mp4",
+ "hd-main.js",
+ "noopmp4-1s",
+ "32x32.png",
+ "noop.html",
+ "noopframe",
+ "noop.txt",
+ "nooptext",
+ "1x1.gif",
+ "2x2.png",
+ "noop.js",
+ "noopjs",
+ ".com/",
+ ".js:5",
+ "noop",
+ ":10",
+ ".js",
+ "ads",
+ ":5",
+ "ad",
+ "am",
+ "et",
+ "ic",
+ "in",
+ "mp",
+ "re",
+ "st",
+ "_",
+ "-",
+ ":",
+ ".",
+ "/",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=network-redirect.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js.map
new file mode 100644
index 0000000..89839c3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/network-redirect.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-redirect.js","sourceRoot":"","sources":["../../../../src/codebooks/network-redirect.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,mCAAmC;IACnC,kCAAkC;IAClC,6BAA6B;IAC7B,0BAA0B;IAC1B,yBAAyB;IACzB,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js
new file mode 100644
index 0000000..564bc77
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ ":style(display: block !imp",
+ "+js(acs, addEventListener,",
+ "+js(acs, document.querySel",
+ "+js(nosiif, visibility, 10",
+ "app_vars.force_disable_adb",
+ "+js(set, blurred, false)",
+ "+js(acs, eval, replace)",
+ "ectorAll, popMagic)",
+ "+js(acs, document.",
+ "+js(rmnt, script, ",
+ "decodeURIComponent",
+ "^script:has-text(",
+ "+js(no-fetch-if, ",
+ "[href^=\"https://",
+ "[href^=\"http://",
+ "+js(aopw, _pop)",
+ "+js(no-xhr-if, ",
+ "createElement, ",
+ "+js(nano-sib",
+ "+js(nostif, ",
+ "div[class^=\"",
+ "notification",
+ " !important",
+ ", noopFunc)",
+ "+js(nowoif)",
+ "+js(aeld, ",
+ "+js(aopr, ",
+ "+js(aopw, ",
+ "background",
+ "+js(acs, ",
+ "+js(set, ",
+ "container",
+ "div[id^=\"",
+ "div[style",
+ ",amazon.",
+ ",google.",
+ "https://",
+ ".*,xham",
+ "300x250",
+ "consent",
+ "content",
+ "message",
+ "privacy",
+ "wrapper",
+ ".co.uk",
+ ".com##",
+ "[data-",
+ "accept",
+ "banner",
+ "bottom",
+ "cookie",
+ "Cookie",
+ "google",
+ "notice",
+ "policy",
+ "widget",
+ ".com,",
+ "block",
+ "click",
+ "movie",
+ "popup",
+ "video",
+ "width",
+ ",img",
+ ".com",
+ ".net",
+ ".nl,",
+ ".xyz",
+ "#@#.",
+ "+js(",
+ "0px;",
+ "gdpr",
+ "html",
+ "ight",
+ "news",
+ "side",
+ "tube",
+ "www.",
+ " > ",
+ ".*,",
+ ".de",
+ "age",
+ "box",
+ "ent",
+ "top",
+ "web",
+ "xxx",
+ "__",
+ ", ",
+ ",p",
+ ": ",
+ ".*",
+ ".f",
+ ".p",
+ ".s",
+ ".t",
+ "\"]",
+ "##",
+ "=\"",
+ "00",
+ "ab",
+ "ac",
+ "ad",
+ "Ad",
+ "al",
+ "am",
+ "an",
+ "ap",
+ "ar",
+ "at",
+ "au",
+ "bi",
+ "bo",
+ "ca",
+ "ch",
+ "ck",
+ "co",
+ "ct",
+ "d-",
+ "da",
+ "de",
+ "di",
+ "do",
+ "e-",
+ "ed",
+ "el",
+ "en",
+ "er",
+ "es",
+ "et",
+ "fi",
+ "fo",
+ "ft",
+ "g-",
+ "ga",
+ "go",
+ "he",
+ "ho",
+ "ic",
+ "id",
+ "il",
+ "im",
+ "in",
+ "it",
+ "la",
+ "le",
+ "li",
+ "lo",
+ "ma",
+ "me",
+ "mi",
+ "mo",
+ "mp",
+ "na",
+ "ne",
+ "no",
+ "ol",
+ "on",
+ "op",
+ "or",
+ "ot",
+ "ov",
+ "po",
+ "ra",
+ "re",
+ "ro",
+ "ru",
+ "s_",
+ "s-",
+ "sc",
+ "se",
+ "sh",
+ "si",
+ "sk",
+ "so",
+ "sp",
+ "ss",
+ "st",
+ "t-",
+ "ta",
+ "te",
+ "ti",
+ "to",
+ "ub",
+ "ul",
+ "um",
+ "un",
+ "up",
+ "ur",
+ "us",
+ "ut",
+ "ve",
+ "vi",
+ "xt",
+ "y-",
+ " ",
+ "_",
+ "-",
+ ",",
+ ";",
+ ":",
+ ".",
+ "(",
+ ")",
+ "[",
+ "/",
+ "#",
+ "^",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "A",
+ "b",
+ "B",
+ "c",
+ "C",
+ "d",
+ "D",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "L",
+ "m",
+ "M",
+ "n",
+ "o",
+ "p",
+ "P",
+ "q",
+ "r",
+ "R",
+ "s",
+ "S",
+ "t",
+ "T",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=raw-cosmetic.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js.map
new file mode 100644
index 0000000..c45505f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-cosmetic.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"raw-cosmetic.js","sourceRoot":"","sources":["../../../../src/codebooks/raw-cosmetic.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,0BAA0B;IAC1B,yBAAyB;IACzB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js
new file mode 100644
index 0000000..8d324f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/* eslint-disable prettier/prettier */
+exports.default = [
+ "||imasdk.googleapis.com/js",
+ "image,redirect-rule=1x1.gi",
+ "redirect-rule=google-ima.j",
+ "securepubads.g.doubleclick",
+ "/pagead/js/adsbygoogle.js",
+ "*$script,3p,denyallow=",
+ "/wp-content/plugins/",
+ "/wp-content/uploads/",
+ ",redirect-rule=noop",
+ "/sdkloader/ima3.js",
+ ".com^$third-party",
+ "googlesyndication",
+ ".cloudfront.net^",
+ "$script,domain=",
+ ",redirect=noop",
+ "xmlhttprequest",
+ ".actonservice",
+ "/^https?:\\/\\/",
+ "^$third-party",
+ "||smetrics.",
+ "|downdetect",
+ "third-party",
+ "-9a-zA-Z]{",
+ "marketing.",
+ ".website^",
+ "$subdocum",
+ "analytics",
+ "/assets/",
+ "cloudfla",
+ "tracking",
+ "$script",
+ "domain=",
+ "metrics",
+ ".co.uk",
+ "$ghide",
+ "a8clk.",
+ "cookie",
+ "google",
+ "script",
+ ".com^",
+ ".top^",
+ ".xyz^",
+ "a-z]{",
+ "a8cv.",
+ "image",
+ "media",
+ "track",
+ "video",
+ ".com",
+ ".gif",
+ ".jp^",
+ ".net",
+ ".php",
+ "/js/",
+ "$doc",
+ "$xhr",
+ "html",
+ "ight",
+ "stat",
+ "view",
+ "www.",
+ ",1p",
+ ".de",
+ ".io",
+ ".jp",
+ ".js",
+ "$3p",
+ "aff",
+ "cdn",
+ "new",
+ "pro",
+ "web",
+ "-c",
+ ".b",
+ ".c",
+ ".m",
+ ".n",
+ ".p",
+ ".s",
+ "@@",
+ "*/",
+ "/*",
+ "/b",
+ "/p",
+ "||",
+ "ab",
+ "ac",
+ "ad",
+ "af",
+ "ag",
+ "ak",
+ "al",
+ "am",
+ "an",
+ "ap",
+ "ar",
+ "as",
+ "at",
+ "au",
+ "av",
+ "aw",
+ "ay",
+ "az",
+ "be",
+ "bo",
+ "br",
+ "ce",
+ "ch",
+ "ck",
+ "cl",
+ "ct",
+ "de",
+ "di",
+ "do",
+ "e-",
+ "e^",
+ "eb",
+ "ec",
+ "ed",
+ "el",
+ "em",
+ "en",
+ "ep",
+ "er",
+ "es",
+ "et",
+ "ev",
+ "ex",
+ "ff",
+ "fi",
+ "fo",
+ "fr",
+ "g^",
+ "ge",
+ "go",
+ "gr",
+ "he",
+ "ho",
+ "ib",
+ "ic",
+ "id",
+ "if",
+ "ig",
+ "ik",
+ "il",
+ "im",
+ "in",
+ "ip",
+ "ir",
+ "is",
+ "it",
+ "iv",
+ "ix",
+ "iz",
+ "js",
+ "le",
+ "lo",
+ "ly",
+ "ma",
+ "mo",
+ "mp",
+ "no",
+ "ob",
+ "od",
+ "ok",
+ "ol",
+ "om",
+ "on",
+ "op",
+ "or",
+ "ot",
+ "pl",
+ "po",
+ "pr",
+ "qu",
+ "re",
+ "ro",
+ "ru",
+ "s/",
+ "sc",
+ "se",
+ "sh",
+ "sm",
+ "so",
+ "sp",
+ "ss",
+ "st",
+ "th",
+ "ti",
+ "to",
+ "tr",
+ "ts",
+ "tv",
+ "ub",
+ "ud",
+ "ug",
+ "ul",
+ "um",
+ "un",
+ "up",
+ "ur",
+ "us",
+ "ut",
+ "ve",
+ "yo",
+ "_",
+ "-",
+ ",",
+ "?",
+ ".",
+ "*",
+ "/",
+ "\\",
+ "^",
+ "=",
+ "|",
+ "~",
+ "$",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z"
+];
+//# sourceMappingURL=raw-network.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js.map
new file mode 100644
index 0000000..bcedeef
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/codebooks/raw-network.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"raw-network.js","sourceRoot":"","sources":["../../../../src/codebooks/raw-network.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,sCAAsC;AACtC,kBAAe;IACb,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,2BAA2B;IAC3B,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js
new file mode 100644
index 0000000..a97244b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js
@@ -0,0 +1,63 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.mergeCompactSets = exports.concatTypedArrays = exports.hasEmptyIntersection = exports.compactTokens = void 0;
+function compactTokens(tokens) {
+ const sorted = tokens.sort();
+ let lastIndex = 1;
+ for (let i = 1; i < sorted.length; i += 1) {
+ if (sorted[lastIndex - 1] !== sorted[i]) {
+ sorted[lastIndex++] = sorted[i];
+ }
+ }
+ return sorted.subarray(0, lastIndex);
+}
+exports.compactTokens = compactTokens;
+function hasEmptyIntersection(s1, s2) {
+ let i = 0;
+ let j = 0;
+ while (i < s1.length && j < s2.length && s1[i] !== s2[j]) {
+ if (s1[i] < s2[j]) {
+ i += 1;
+ }
+ else {
+ j += 1;
+ }
+ }
+ return i === s1.length || j === s2.length;
+}
+exports.hasEmptyIntersection = hasEmptyIntersection;
+const EMPTY_UINT32_ARRAY = new Uint32Array(0);
+function concatTypedArrays(arrays) {
+ if (arrays.length === 0) {
+ return EMPTY_UINT32_ARRAY;
+ }
+ if (arrays.length === 1) {
+ return arrays[0];
+ }
+ let totalSize = 0;
+ for (let i = 0; i < arrays.length; i += 1) {
+ totalSize += arrays[i].length;
+ }
+ const result = new Uint32Array(totalSize);
+ let index = 0;
+ for (let i = 0; i < arrays.length; i += 1) {
+ const array = arrays[i];
+ for (let j = 0; j < array.length; j += 1) {
+ result[index++] = array[j];
+ }
+ }
+ return result;
+}
+exports.concatTypedArrays = concatTypedArrays;
+function mergeCompactSets(arrays) {
+ return compactTokens(concatTypedArrays(arrays));
+}
+exports.mergeCompactSets = mergeCompactSets;
+//# sourceMappingURL=compact-set.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js.map
new file mode 100644
index 0000000..dc6a768
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compact-set.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"compact-set.js","sourceRoot":"","sources":["../../../src/compact-set.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,SAAgB,aAAa,CAAC,MAAmB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;YACvC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAVD,sCAUC;AAED,SAAgB,oBAAoB,CAAC,EAAe,EAAE,EAAe;IACnE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;QACxD,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;YACjB,CAAC,IAAI,CAAC,CAAC;SACR;aAAM;YACL,CAAC,IAAI,CAAC,CAAC;SACR;KACF;IAED,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAC5C,CAAC;AAbD,oDAaC;AAED,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAE9C,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,kBAAkB,CAAC;KAC3B;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;KAC/B;IAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACxC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5B;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,8CAwBC;AAED,SAAgB,gBAAgB,CAAC,MAAqB;IACpD,OAAO,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAFD,4CAEC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js
new file mode 100644
index 0000000..03ab5ee
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js
@@ -0,0 +1,30 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const smaz_1 = require("@remusao/smaz");
+const cosmetic_selector_1 = require("./codebooks/cosmetic-selector");
+const network_csp_1 = require("./codebooks/network-csp");
+const network_filter_1 = require("./codebooks/network-filter");
+const network_hostname_1 = require("./codebooks/network-hostname");
+const network_redirect_1 = require("./codebooks/network-redirect");
+const raw_network_1 = require("./codebooks/raw-network");
+const raw_cosmetic_1 = require("./codebooks/raw-cosmetic");
+class Compression {
+ constructor() {
+ this.cosmeticSelector = new smaz_1.Smaz(cosmetic_selector_1.default);
+ this.networkCSP = new smaz_1.Smaz(network_csp_1.default);
+ this.networkRedirect = new smaz_1.Smaz(network_redirect_1.default);
+ this.networkHostname = new smaz_1.Smaz(network_hostname_1.default);
+ this.networkFilter = new smaz_1.Smaz(network_filter_1.default);
+ this.networkRaw = new smaz_1.Smaz(raw_network_1.default);
+ this.cosmeticRaw = new smaz_1.Smaz(raw_cosmetic_1.default);
+ }
+}
+exports.default = Compression;
+//# sourceMappingURL=compression.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js.map
new file mode 100644
index 0000000..c14ad4e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/compression.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/compression.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,wCAAqC;AAErC,qEAAqE;AACrE,yDAAyD;AACzD,+DAA+D;AAC/D,mEAAmE;AACnE,mEAAmE;AACnE,yDAAyD;AACzD,2DAA2D;AAE3D,MAAqB,WAAW;IAAhC;QACkB,qBAAgB,GAAS,IAAI,WAAI,CAAC,2BAAwB,CAAC,CAAC;QAC5D,eAAU,GAAS,IAAI,WAAI,CAAC,qBAAkB,CAAC,CAAC;QAChD,oBAAe,GAAS,IAAI,WAAI,CAAC,0BAAuB,CAAC,CAAC;QAC1D,oBAAe,GAAS,IAAI,WAAI,CAAC,0BAAuB,CAAC,CAAC;QAC1D,kBAAa,GAAS,IAAI,WAAI,CAAC,wBAAqB,CAAC,CAAC;QACtD,eAAU,GAAS,IAAI,WAAI,CAAC,qBAAkB,CAAC,CAAC;QAChD,gBAAW,GAAS,IAAI,WAAI,CAAC,sBAAmB,CAAC,CAAC;IACpE,CAAC;CAAA;AARD,8BAQC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js
new file mode 100644
index 0000000..7c60acf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js
@@ -0,0 +1,72 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const data_view_1 = require("./data-view");
+class Config {
+ static deserialize(buffer) {
+ return new Config({
+ debug: buffer.getBool(),
+ enableCompression: buffer.getBool(),
+ enableHtmlFiltering: buffer.getBool(),
+ enableInMemoryCache: buffer.getBool(),
+ enableMutationObserver: buffer.getBool(),
+ enableOptimizations: buffer.getBool(),
+ enablePushInjectionsOnNavigationEvents: buffer.getBool(),
+ guessRequestTypeFromUrl: buffer.getBool(),
+ integrityCheck: buffer.getBool(),
+ loadCSPFilters: buffer.getBool(),
+ loadCosmeticFilters: buffer.getBool(),
+ loadExceptionFilters: buffer.getBool(),
+ loadExtendedSelectors: buffer.getBool(),
+ loadGenericCosmeticsFilters: buffer.getBool(),
+ loadNetworkFilters: buffer.getBool(),
+ });
+ }
+ constructor({ debug = false, enableCompression = false, enableHtmlFiltering = false, enableInMemoryCache = true, enableMutationObserver = true, enableOptimizations = true, enablePushInjectionsOnNavigationEvents = true, guessRequestTypeFromUrl = false, integrityCheck = true, loadCSPFilters = true, loadCosmeticFilters = true, loadExceptionFilters = true, loadExtendedSelectors = false, loadGenericCosmeticsFilters = true, loadNetworkFilters = true, } = {}) {
+ this.debug = debug;
+ this.enableCompression = enableCompression;
+ this.enableHtmlFiltering = enableHtmlFiltering;
+ this.enableInMemoryCache = enableInMemoryCache;
+ this.enableMutationObserver = enableMutationObserver;
+ this.enableOptimizations = enableOptimizations;
+ this.enablePushInjectionsOnNavigationEvents = enablePushInjectionsOnNavigationEvents;
+ this.guessRequestTypeFromUrl = guessRequestTypeFromUrl;
+ this.integrityCheck = integrityCheck;
+ this.loadCSPFilters = loadCSPFilters;
+ this.loadCosmeticFilters = loadCosmeticFilters;
+ this.loadExceptionFilters = loadExceptionFilters;
+ this.loadExtendedSelectors = loadExtendedSelectors;
+ this.loadGenericCosmeticsFilters = loadGenericCosmeticsFilters;
+ this.loadNetworkFilters = loadNetworkFilters;
+ }
+ getSerializedSize() {
+ // NOTE: this should always be the number of attributes and needs to be
+ // updated when `Config` changes.
+ return 15 * (0, data_view_1.sizeOfBool)();
+ }
+ serialize(buffer) {
+ buffer.pushBool(this.debug);
+ buffer.pushBool(this.enableCompression);
+ buffer.pushBool(this.enableHtmlFiltering);
+ buffer.pushBool(this.enableInMemoryCache);
+ buffer.pushBool(this.enableMutationObserver);
+ buffer.pushBool(this.enableOptimizations);
+ buffer.pushBool(this.enablePushInjectionsOnNavigationEvents);
+ buffer.pushBool(this.guessRequestTypeFromUrl);
+ buffer.pushBool(this.integrityCheck);
+ buffer.pushBool(this.loadCSPFilters);
+ buffer.pushBool(this.loadCosmeticFilters);
+ buffer.pushBool(this.loadExceptionFilters);
+ buffer.pushBool(this.loadExtendedSelectors);
+ buffer.pushBool(this.loadGenericCosmeticsFilters);
+ buffer.pushBool(this.loadNetworkFilters);
+ }
+}
+exports.default = Config;
+//# sourceMappingURL=config.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js.map
new file mode 100644
index 0000000..a29e124
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/config.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js
new file mode 100644
index 0000000..32ba9c4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js
@@ -0,0 +1,42 @@
+"use strict";
+/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
+/* From: https://github.com/SheetJS/js-crc32/ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const T = (() => {
+ let c = 0;
+ const table = new Int32Array(256);
+ for (let n = 0; n !== 256; n += 1) {
+ c = n;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ c = c & 1 ? -306674912 ^ (c >>> 1) : c >>> 1;
+ table[n] = c;
+ }
+ return table;
+})();
+function crc32(buf, start, end) {
+ let C = 0 ^ -1;
+ const L = end - 7;
+ let i = start;
+ while (i < L) {
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ }
+ while (i < L + 7) {
+ C = (C >>> 8) ^ T[(C ^ buf[i++]) & 0xff];
+ }
+ return (C ^ -1) >>> 0;
+}
+exports.default = crc32;
+//# sourceMappingURL=crc32.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js.map
new file mode 100644
index 0000000..35a6baa
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/crc32.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"crc32.js","sourceRoot":"","sources":["../../../src/crc32.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js
new file mode 100644
index 0000000..b47f1f0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js
@@ -0,0 +1,458 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.StaticDataView = exports.sizeOfRawCosmetic = exports.sizeOfRawNetwork = exports.sizeOfCosmeticSelector = exports.sizeOfNetworkFilter = exports.sizeOfNetworkCSP = exports.sizeOfNetworkHostname = exports.sizeOfNetworkRedirect = exports.sizeOfUint32Array = exports.sizeOfUTF8 = exports.sizeOfASCII = exports.sizeOfBytesWithLength = exports.sizeOfBytes = exports.sizeOfLength = exports.sizeOfBool = exports.sizeOfByte = exports.EMPTY_UINT32_ARRAY = exports.EMPTY_UINT8_ARRAY = void 0;
+const compression_1 = require("./compression");
+const crc32_1 = require("./crc32");
+const punycode_1 = require("./punycode");
+exports.EMPTY_UINT8_ARRAY = new Uint8Array(0);
+exports.EMPTY_UINT32_ARRAY = new Uint32Array(0);
+// Check if current architecture is little endian
+const LITTLE_ENDIAN = new Int8Array(new Int16Array([1]).buffer)[0] === 1;
+// Store compression in a lazy, global singleton
+let getCompressionSingleton = () => {
+ const COMPRESSION = new compression_1.default();
+ getCompressionSingleton = () => COMPRESSION;
+ return COMPRESSION;
+};
+function align4(pos) {
+ // From: https://stackoverflow.com/a/2022194
+ return (pos + 3) & ~0x03;
+}
+/**
+ * Return size of of a serialized byte value.
+ */
+function sizeOfByte() {
+ return 1;
+}
+exports.sizeOfByte = sizeOfByte;
+/**
+ * Return size of of a serialized boolean value.
+ */
+function sizeOfBool() {
+ return 1;
+}
+exports.sizeOfBool = sizeOfBool;
+/**
+ * Return number of bytes needed to serialize `length`.
+ */
+function sizeOfLength(length) {
+ return length <= 127 ? 1 : 5;
+}
+exports.sizeOfLength = sizeOfLength;
+/**
+ * Return number of bytes needed to serialize `array` Uint8Array typed array.
+ *
+ * WARNING: this only returns the correct size if `align` is `false`.
+ */
+function sizeOfBytes(array, align) {
+ return sizeOfBytesWithLength(array.length, align);
+}
+exports.sizeOfBytes = sizeOfBytes;
+/**
+ * Return number of bytes needed to serialize `array` Uint8Array typed array.
+ *
+ * WARNING: this only returns the correct size if `align` is `false`.
+ */
+function sizeOfBytesWithLength(length, align) {
+ // Alignment is a tricky thing because it depends on the current offset in
+ // the buffer at the time of serialization; which we cannot anticipate
+ // before actually starting serialization. This means that we need to
+ // potentially over-estimate the size (at most by 3 bytes) to make sure the
+ // final size is at least equal or a bit bigger than necessary.
+ return (align ? 3 : 0) + length + sizeOfLength(length);
+}
+exports.sizeOfBytesWithLength = sizeOfBytesWithLength;
+/**
+ * Return number of bytes needed to serialize `str` ASCII string.
+ */
+function sizeOfASCII(str) {
+ return str.length + sizeOfLength(str.length);
+}
+exports.sizeOfASCII = sizeOfASCII;
+/**
+ * Return number of bytes needed to serialize `str` UTF8 string.
+ */
+function sizeOfUTF8(str) {
+ const encodedLength = (0, punycode_1.encode)(str).length;
+ return encodedLength + sizeOfLength(encodedLength);
+}
+exports.sizeOfUTF8 = sizeOfUTF8;
+/**
+ * Return number of bytes needed to serialize `array`.
+ */
+function sizeOfUint32Array(array) {
+ return array.byteLength + sizeOfLength(array.length);
+}
+exports.sizeOfUint32Array = sizeOfUint32Array;
+function sizeOfNetworkRedirect(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().networkRedirect.getCompressedSize(str), false)
+ : sizeOfASCII(str);
+}
+exports.sizeOfNetworkRedirect = sizeOfNetworkRedirect;
+function sizeOfNetworkHostname(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().networkHostname.getCompressedSize(str), false)
+ : sizeOfASCII(str);
+}
+exports.sizeOfNetworkHostname = sizeOfNetworkHostname;
+function sizeOfNetworkCSP(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().networkCSP.getCompressedSize(str), false)
+ : sizeOfASCII(str);
+}
+exports.sizeOfNetworkCSP = sizeOfNetworkCSP;
+function sizeOfNetworkFilter(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().networkFilter.getCompressedSize(str), false)
+ : sizeOfASCII(str);
+}
+exports.sizeOfNetworkFilter = sizeOfNetworkFilter;
+function sizeOfCosmeticSelector(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().cosmeticSelector.getCompressedSize(str), false)
+ : sizeOfASCII(str);
+}
+exports.sizeOfCosmeticSelector = sizeOfCosmeticSelector;
+function sizeOfRawNetwork(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().networkRaw.getCompressedSize((0, punycode_1.encode)(str)), false)
+ : sizeOfUTF8(str);
+}
+exports.sizeOfRawNetwork = sizeOfRawNetwork;
+function sizeOfRawCosmetic(str, compression) {
+ return compression === true
+ ? sizeOfBytesWithLength(getCompressionSingleton().cosmeticRaw.getCompressedSize((0, punycode_1.encode)(str)), false)
+ : sizeOfUTF8(str);
+}
+exports.sizeOfRawCosmetic = sizeOfRawCosmetic;
+/**
+ * This abstraction allows to serialize efficiently low-level values of types:
+ * string, uint8, uint16, uint32, etc. while hiding the complexity of managing
+ * the current offset and growing. It should always be instantiated with a
+ * big-enough length because this will not allow for resizing. To allow
+ * deciding the required total size, function estimating the size needed to
+ * store different primitive values are exposes as static methods.
+ *
+ * This class is also more efficient than the built-in `DataView`.
+ *
+ * The way this is used in practice is that you write pairs of function to
+ * serialize and deserialize a given structure/class (with code being pretty
+ * symetrical). In the serializer you `pushX` values, and in the deserializer
+ * you use `getX` functions to get back the values.
+ */
+class StaticDataView {
+ /**
+ * Create an empty (i.e.: size = 0) StaticDataView.
+ */
+ static empty(options) {
+ return StaticDataView.fromUint8Array(exports.EMPTY_UINT8_ARRAY, options);
+ }
+ /**
+ * Instantiate a StaticDataView instance from `array` of type Uint8Array.
+ */
+ static fromUint8Array(array, options) {
+ return new StaticDataView(array, options);
+ }
+ /**
+ * Instantiate a StaticDataView with given `capacity` number of bytes.
+ */
+ static allocate(capacity, options) {
+ return new StaticDataView(new Uint8Array(capacity), options);
+ }
+ constructor(buffer, { enableCompression }) {
+ if (LITTLE_ENDIAN === false) {
+ // This check makes sure that we will not load the adblocker on a
+ // big-endian system. This would not work since byte ordering is important
+ // at the moment (mainly for performance reasons).
+ throw new Error('Adblocker currently does not support Big-endian systems');
+ }
+ if (enableCompression === true) {
+ this.enableCompression();
+ }
+ this.buffer = buffer;
+ this.pos = 0;
+ }
+ enableCompression() {
+ this.compression = getCompressionSingleton();
+ }
+ checksum() {
+ return (0, crc32_1.default)(this.buffer, 0, this.pos);
+ }
+ dataAvailable() {
+ return this.pos < this.buffer.byteLength;
+ }
+ setPos(pos) {
+ this.pos = pos;
+ }
+ getPos() {
+ return this.pos;
+ }
+ seekZero() {
+ this.pos = 0;
+ }
+ slice() {
+ this.checkSize();
+ return this.buffer.slice(0, this.pos);
+ }
+ subarray() {
+ if (this.pos === this.buffer.byteLength) {
+ return this.buffer;
+ }
+ this.checkSize();
+ return this.buffer.subarray(0, this.pos);
+ }
+ /**
+ * Make sure that `this.pos` is aligned on a multiple of 4.
+ */
+ align4() {
+ this.pos = align4(this.pos);
+ }
+ set(buffer) {
+ this.buffer = new Uint8Array(buffer);
+ this.seekZero();
+ }
+ pushBool(bool) {
+ this.pushByte(Number(bool));
+ }
+ getBool() {
+ return Boolean(this.getByte());
+ }
+ setByte(pos, byte) {
+ this.buffer[pos] = byte;
+ }
+ pushByte(octet) {
+ this.pushUint8(octet);
+ }
+ getByte() {
+ return this.getUint8();
+ }
+ pushBytes(bytes, align = false) {
+ this.pushLength(bytes.length);
+ if (align === true) {
+ this.align4();
+ }
+ this.buffer.set(bytes, this.pos);
+ this.pos += bytes.byteLength;
+ }
+ getBytes(align = false) {
+ const numberOfBytes = this.getLength();
+ if (align === true) {
+ this.align4();
+ }
+ const bytes = this.buffer.subarray(this.pos, this.pos + numberOfBytes);
+ this.pos += numberOfBytes;
+ return bytes;
+ }
+ /**
+ * Allows row access to the internal buffer through a Uint32Array acting like
+ * a view. This is used for super fast writing/reading of large chunks of
+ * Uint32 numbers in the byte array.
+ */
+ getUint32ArrayView(desiredSize) {
+ // Round this.pos to next multiple of 4 for alignement
+ this.align4();
+ // Short-cut when empty array
+ if (desiredSize === 0) {
+ return exports.EMPTY_UINT32_ARRAY;
+ }
+ // Create non-empty view
+ const view = new Uint32Array(this.buffer.buffer, this.pos + this.buffer.byteOffset, desiredSize);
+ this.pos += desiredSize * 4;
+ return view;
+ }
+ pushUint8(uint8) {
+ this.buffer[this.pos++] = uint8;
+ }
+ getUint8() {
+ return this.buffer[this.pos++];
+ }
+ pushUint16(uint16) {
+ this.buffer[this.pos++] = uint16 >>> 8;
+ this.buffer[this.pos++] = uint16;
+ }
+ getUint16() {
+ return ((this.buffer[this.pos++] << 8) | this.buffer[this.pos++]) >>> 0;
+ }
+ pushUint32(uint32) {
+ this.buffer[this.pos++] = uint32 >>> 24;
+ this.buffer[this.pos++] = uint32 >>> 16;
+ this.buffer[this.pos++] = uint32 >>> 8;
+ this.buffer[this.pos++] = uint32;
+ }
+ getUint32() {
+ return ((((this.buffer[this.pos++] << 24) >>> 0) +
+ ((this.buffer[this.pos++] << 16) |
+ (this.buffer[this.pos++] << 8) |
+ this.buffer[this.pos++])) >>>
+ 0);
+ }
+ pushUint32Array(arr) {
+ this.pushLength(arr.length);
+ // TODO - use `set` to push the full buffer at once?
+ for (const n of arr) {
+ this.pushUint32(n);
+ }
+ }
+ getUint32Array() {
+ const length = this.getLength();
+ const arr = new Uint32Array(length);
+ // TODO - use `subarray`?
+ for (let i = 0; i < length; i += 1) {
+ arr[i] = this.getUint32();
+ }
+ return arr;
+ }
+ pushUTF8(raw) {
+ const str = (0, punycode_1.encode)(raw);
+ this.pushLength(str.length);
+ for (let i = 0; i < str.length; i += 1) {
+ this.buffer[this.pos++] = str.charCodeAt(i);
+ }
+ }
+ getUTF8() {
+ const byteLength = this.getLength();
+ this.pos += byteLength;
+ return (0, punycode_1.decode)(String.fromCharCode.apply(null,
+ // @ts-ignore
+ this.buffer.subarray(this.pos - byteLength, this.pos)));
+ }
+ pushASCII(str) {
+ this.pushLength(str.length);
+ for (let i = 0; i < str.length; i += 1) {
+ this.buffer[this.pos++] = str.charCodeAt(i);
+ }
+ }
+ getASCII() {
+ const byteLength = this.getLength();
+ this.pos += byteLength;
+ // @ts-ignore
+ return String.fromCharCode.apply(null, this.buffer.subarray(this.pos - byteLength, this.pos));
+ }
+ pushNetworkRedirect(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.networkRedirect.compress(str));
+ }
+ else {
+ this.pushASCII(str);
+ }
+ }
+ getNetworkRedirect() {
+ if (this.compression !== undefined) {
+ return this.compression.networkRedirect.decompress(this.getBytes());
+ }
+ return this.getASCII();
+ }
+ pushNetworkHostname(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.networkHostname.compress(str));
+ }
+ else {
+ this.pushASCII(str);
+ }
+ }
+ getNetworkHostname() {
+ if (this.compression !== undefined) {
+ return this.compression.networkHostname.decompress(this.getBytes());
+ }
+ return this.getASCII();
+ }
+ pushNetworkCSP(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.networkCSP.compress(str));
+ }
+ else {
+ this.pushASCII(str);
+ }
+ }
+ getNetworkCSP() {
+ if (this.compression !== undefined) {
+ return this.compression.networkCSP.decompress(this.getBytes());
+ }
+ return this.getASCII();
+ }
+ pushNetworkFilter(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.networkFilter.compress(str));
+ }
+ else {
+ this.pushASCII(str);
+ }
+ }
+ getNetworkFilter() {
+ if (this.compression !== undefined) {
+ return this.compression.networkFilter.decompress(this.getBytes());
+ }
+ return this.getASCII();
+ }
+ pushCosmeticSelector(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.cosmeticSelector.compress(str));
+ }
+ else {
+ this.pushASCII(str);
+ }
+ }
+ getCosmeticSelector() {
+ if (this.compression !== undefined) {
+ return this.compression.cosmeticSelector.decompress(this.getBytes());
+ }
+ return this.getASCII();
+ }
+ pushRawCosmetic(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.cosmeticRaw.compress((0, punycode_1.encode)(str)));
+ }
+ else {
+ this.pushUTF8(str);
+ }
+ }
+ getRawCosmetic() {
+ if (this.compression !== undefined) {
+ return (0, punycode_1.decode)(this.compression.cosmeticRaw.decompress(this.getBytes()));
+ }
+ return this.getUTF8();
+ }
+ pushRawNetwork(str) {
+ if (this.compression !== undefined) {
+ this.pushBytes(this.compression.networkRaw.compress((0, punycode_1.encode)(str)));
+ }
+ else {
+ this.pushUTF8(str);
+ }
+ }
+ getRawNetwork() {
+ if (this.compression !== undefined) {
+ return (0, punycode_1.decode)(this.compression.networkRaw.decompress(this.getBytes()));
+ }
+ return this.getUTF8();
+ }
+ checkSize() {
+ if (this.pos !== 0 && this.pos > this.buffer.byteLength) {
+ throw new Error(`StaticDataView too small: ${this.buffer.byteLength}, but required ${this.pos} bytes`);
+ }
+ }
+ // Serialiez `length` with variable encoding to save space
+ pushLength(length) {
+ if (length <= 127) {
+ this.pushUint8(length);
+ }
+ else {
+ this.pushUint8(128);
+ this.pushUint32(length);
+ }
+ }
+ getLength() {
+ const lengthShort = this.getUint8();
+ return lengthShort === 128 ? this.getUint32() : lengthShort;
+ }
+}
+exports.StaticDataView = StaticDataView;
+//# sourceMappingURL=data-view.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js.map
new file mode 100644
index 0000000..6e6bfd7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/data-view.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"data-view.js","sourceRoot":"","sources":["../../../src/data-view.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js
new file mode 100644
index 0000000..fda08e9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js
@@ -0,0 +1,80 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isUTF8 = void 0;
+/*!
+ * Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+// From http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
+const utf8d = new Uint8Array([
+ /* eslint-disable prettier/prettier */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0xa, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3,
+ 0xb, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8,
+ 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1,
+ 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // s7..s8
+ /* eslint-enable prettier/prettier */
+]);
+function isAscii(bytes) {
+ if (bytes.length === 0) {
+ return true;
+ }
+ for (let i = 0; i < bytes.length; i += 1) {
+ if (bytes[i] > 127) {
+ return false;
+ }
+ }
+ return true;
+}
+function isUTF8(bytes) {
+ if (bytes.length === 0) {
+ return true;
+ }
+ if (isAscii(bytes) === true) {
+ return true;
+ }
+ let state = 0;
+ for (let i = 0; i < bytes.length; i += 1) {
+ const type = utf8d[bytes[i]];
+ state = utf8d[256 + state * 16 + type];
+ if (state === 1 || state === undefined) {
+ return false;
+ }
+ }
+ return true;
+}
+exports.isUTF8 = isUTF8;
+//# sourceMappingURL=encoding.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js.map
new file mode 100644
index 0000000..e6ad7b7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/encoding.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/encoding.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qDAAqD;AACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;IAC3B,sCAAsC;IACtC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG;IAC/D,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG;IAC/D,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IAC/D,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,SAAS;IAC1E,qCAAqC;CACtC,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,KAAiB;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;YAClB,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,MAAM,CAAC,KAAiB;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC3B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,wBAmBC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js
new file mode 100644
index 0000000..ecfc6f1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js
@@ -0,0 +1,487 @@
+"use strict";
+/* eslint-disable @typescript-eslint/unbound-method */
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createStylesheet = void 0;
+const compact_set_1 = require("../../compact-set");
+const cosmetic_1 = require("../../filters/cosmetic");
+const request_1 = require("../../request");
+const utils_1 = require("../../utils");
+const optimizer_1 = require("../optimizer");
+const reverse_index_1 = require("../reverse-index");
+const filters_1 = require("./filters");
+/**
+ * Given a list of CSS selectors, create a valid stylesheet ready to be
+ * injected in the page. This also takes care to no create rules with too many
+ * selectors for Chrome, see: https://crbug.com/804179
+ */
+function createStylesheet(rules, style) {
+ if (rules.length === 0) {
+ return '';
+ }
+ const maximumNumberOfSelectors = 1024;
+ const parts = [];
+ const styleStr = ` { ${style} }`;
+ for (let i = 0; i < rules.length; i += maximumNumberOfSelectors) {
+ // Accumulate up to `maximumNumberOfSelectors` selectors into `selector`.
+ // We use string concatenation here since it's faster than using
+ // `Array.prototype.join`.
+ let selector = rules[i];
+ for (let j = i + 1, end = Math.min(rules.length, i + maximumNumberOfSelectors); j < end; j += 1) {
+ selector += ',\n' + rules[j];
+ }
+ // Insert CSS after last selector (e.g.: `{ display: none }`)
+ selector += styleStr;
+ // If `rules` has less than the limit, we can short-circuit here
+ if (rules.length < maximumNumberOfSelectors) {
+ return selector;
+ }
+ // Keep track of this chunk and process next ones
+ parts.push(selector);
+ }
+ // Join all chunks together
+ return parts.join('\n');
+}
+exports.createStylesheet = createStylesheet;
+/**
+ * If at least one filter from `rules` has a custom style (e.g.: `##.foo
+ * :style(...)`) then we fallback to `createStylesheetFromRulesWithCustomStyles`
+ * which is slower than `createStylesheetFromRules`.
+ */
+function createStylesheetFromRulesWithCustomStyles(rules) {
+ const selectorsPerStyle = new Map();
+ for (const rule of rules) {
+ const style = rule.getStyle();
+ const selectors = selectorsPerStyle.get(style);
+ if (selectors === undefined) {
+ selectorsPerStyle.set(style, [rule.getSelector()]);
+ }
+ else {
+ selectors.push(rule.getSelector());
+ }
+ }
+ const stylesheets = [];
+ const selectorsPerStyleArray = Array.from(selectorsPerStyle.entries());
+ for (const [style, selectors] of selectorsPerStyleArray) {
+ stylesheets.push(createStylesheet(selectors, style));
+ }
+ return stylesheets.join('\n\n');
+}
+/**
+ * Given a list of cosmetic filters, create a stylesheet ready to be injected.
+ * This function is optimistic and will assume there is no `:style` filter in
+ * `rules`. In case one is found on the way, we fallback to the slower
+ * `createStylesheetFromRulesWithCustomStyles` function.
+ */
+function createStylesheetFromRules(rules) {
+ const selectors = [];
+ for (const rule of rules) {
+ if (rule.hasCustomStyle()) {
+ return createStylesheetFromRulesWithCustomStyles(rules);
+ }
+ selectors.push(rule.selector);
+ }
+ return createStylesheet(selectors, cosmetic_1.DEFAULT_HIDDING_STYLE);
+}
+function createLookupTokens(hostname, domain) {
+ const hostnamesHashes = (0, request_1.getHostnameHashesFromLabelsBackward)(hostname, domain);
+ const entitiesHashes = (0, request_1.getEntityHashesFromLabelsBackward)(hostname, domain);
+ const tokens = new Uint32Array(hostnamesHashes.length + entitiesHashes.length);
+ let index = 0;
+ for (const hash of hostnamesHashes) {
+ tokens[index++] = hash;
+ }
+ for (const hash of entitiesHashes) {
+ tokens[index++] = hash;
+ }
+ return tokens;
+}
+/**
+ * Efficient container for CosmeticFilter instances. Allows to quickly
+ * retrieved scripts and stylesheets to inject in pages for a specific
+ * hostname/domain.
+ */
+class CosmeticFilterBucket {
+ static deserialize(buffer, config) {
+ const bucket = new CosmeticFilterBucket({ config });
+ bucket.genericRules = filters_1.default.deserialize(buffer, cosmetic_1.default.deserialize, config);
+ bucket.classesIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ bucket.hostnameIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ bucket.hrefsIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ bucket.htmlIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ bucket.idsIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ bucket.unhideIndex = reverse_index_1.default.deserialize(buffer, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic, config);
+ return bucket;
+ }
+ constructor({ filters = [], config }) {
+ this.genericRules = new filters_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ });
+ this.classesIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ this.hostnameIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ this.hrefsIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ this.htmlIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ this.idsIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ this.unhideIndex = new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: [],
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ });
+ // In-memory cache, lazily initialized
+ this.baseStylesheet = null;
+ this.extraGenericRules = null;
+ if (filters.length !== 0) {
+ this.update(filters, undefined, config);
+ }
+ }
+ getFilters() {
+ const filters = [];
+ return filters.concat(this.genericRules.getFilters(), this.classesIndex.getFilters(), this.hostnameIndex.getFilters(), this.hrefsIndex.getFilters(), this.htmlIndex.getFilters(), this.idsIndex.getFilters(), this.unhideIndex.getFilters());
+ }
+ update(newFilters, removedFilters, config) {
+ const classSelectors = [];
+ const genericHideRules = [];
+ const hostnameSpecificRules = [];
+ const hrefSelectors = [];
+ const htmlRules = [];
+ const idSelectors = [];
+ const unHideRules = [];
+ for (const rule of newFilters) {
+ if (rule.isUnhide()) {
+ unHideRules.push(rule);
+ }
+ else if (rule.isHtmlFiltering()) {
+ htmlRules.push(rule);
+ }
+ else if (rule.isGenericHide()) {
+ if (rule.isClassSelector()) {
+ classSelectors.push(rule);
+ }
+ else if (rule.isIdSelector()) {
+ idSelectors.push(rule);
+ }
+ else if (rule.isHrefSelector()) {
+ hrefSelectors.push(rule);
+ }
+ else {
+ genericHideRules.push(rule);
+ }
+ }
+ else if (rule.isExtended() === false || config.loadExtendedSelectors === true) {
+ hostnameSpecificRules.push(rule);
+ }
+ }
+ this.genericRules.update(genericHideRules, removedFilters);
+ this.classesIndex.update(classSelectors, removedFilters);
+ this.hostnameIndex.update(hostnameSpecificRules, removedFilters);
+ this.hrefsIndex.update(hrefSelectors, removedFilters);
+ this.htmlIndex.update(htmlRules, removedFilters);
+ this.idsIndex.update(idSelectors, removedFilters);
+ this.unhideIndex.update(unHideRules, removedFilters);
+ }
+ getSerializedSize() {
+ return (this.genericRules.getSerializedSize() +
+ this.classesIndex.getSerializedSize() +
+ this.hostnameIndex.getSerializedSize() +
+ this.hrefsIndex.getSerializedSize() +
+ this.htmlIndex.getSerializedSize() +
+ this.idsIndex.getSerializedSize() +
+ this.unhideIndex.getSerializedSize());
+ }
+ serialize(buffer) {
+ this.genericRules.serialize(buffer);
+ this.classesIndex.serialize(buffer);
+ this.hostnameIndex.serialize(buffer);
+ this.hrefsIndex.serialize(buffer);
+ this.htmlIndex.serialize(buffer);
+ this.idsIndex.serialize(buffer);
+ this.unhideIndex.serialize(buffer);
+ }
+ getHtmlRules({ domain, hostname, }) {
+ // Tokens from `hostname` and `domain` which will be used to lookup filters
+ // from the reverse index. The same tokens are re-used for multiple indices.
+ const hostnameTokens = createLookupTokens(hostname, domain);
+ const rules = [];
+ this.htmlIndex.iterMatchingFilters(hostnameTokens, (rule) => {
+ if (rule.match(hostname, domain)) {
+ rules.push(rule);
+ }
+ return true;
+ });
+ // If we found at least one candidate, check if we have unhidden rules.
+ const disabledRules = new Set();
+ if (rules.length !== 0) {
+ this.unhideIndex.iterMatchingFilters(hostnameTokens, (rule) => {
+ if (rule.match(hostname, domain)) {
+ disabledRules.add(rule.getSelector());
+ }
+ return true;
+ });
+ }
+ return rules.filter((rule) => disabledRules.size === 0 || disabledRules.has(rule.getSelector()) === false);
+ }
+ /**
+ * Request cosmetics and scripts to inject in a page.
+ */
+ getCosmeticsFilters({ domain, hostname, classes = [], hrefs = [], ids = [], allowGenericHides = true, allowSpecificHides = true,
+ // Allows to specify which rules to return
+ getBaseRules = true, getInjectionRules = true, getExtendedRules = true, getRulesFromDOM = true, getRulesFromHostname = true, }) {
+ // Tokens from `hostname` and `domain` which will be used to lookup filters
+ // from the reverse index. The same tokens are re-used for multiple indices.
+ const hostnameTokens = createLookupTokens(hostname, domain);
+ const rules = [];
+ // =======================================================================
+ // Rules: hostname-specific
+ // =======================================================================
+ // Collect matching rules which specify a hostname constraint.
+ if (getRulesFromHostname === true) {
+ this.hostnameIndex.iterMatchingFilters(hostnameTokens, (rule) => {
+ // A hostname-specific filter is considered if it's a scriptlet (not
+ // impacted by disabling of specific filters) or specific hides are
+ // allowed.
+ if ((allowSpecificHides === true || rule.isScriptInject() === true) &&
+ rule.match(hostname, domain)) {
+ rules.push(rule);
+ }
+ return true;
+ });
+ }
+ // =======================================================================
+ // Rules: generic hide
+ // =======================================================================
+ // Optionally, collect genericHide rules. We need to make sure the `rule`
+ // matches the hostname and domain since some generic rules can specify
+ // negated hostnames and entities (e.g.: ~foo.*##generic).
+ if (allowGenericHides === true && getRulesFromHostname === true) {
+ const genericRules = this.getGenericRules();
+ for (const rule of genericRules) {
+ if (rule.match(hostname, domain) === true) {
+ rules.push(rule);
+ }
+ }
+ }
+ // =======================================================================
+ // Class selector based
+ // =======================================================================
+ if (allowGenericHides === true && getRulesFromDOM === true && classes.length !== 0) {
+ this.classesIndex.iterMatchingFilters((0, utils_1.hashStrings)(classes), (rule) => {
+ if (rule.match(hostname, domain)) {
+ rules.push(rule);
+ }
+ return true;
+ });
+ }
+ // =======================================================================
+ // Id selector based
+ // =======================================================================
+ if (allowGenericHides === true && getRulesFromDOM === true && ids.length !== 0) {
+ this.idsIndex.iterMatchingFilters((0, utils_1.hashStrings)(ids), (rule) => {
+ if (rule.match(hostname, domain)) {
+ rules.push(rule);
+ }
+ return true;
+ });
+ }
+ // =======================================================================
+ // Href selector based
+ // =======================================================================
+ if (allowGenericHides === true && getRulesFromDOM === true && hrefs.length !== 0) {
+ this.hrefsIndex.iterMatchingFilters((0, compact_set_1.compactTokens)((0, compact_set_1.concatTypedArrays)(hrefs.map((href) => (0, utils_1.tokenizeNoSkip)(href)))), (rule) => {
+ if (rule.match(hostname, domain)) {
+ rules.push(rule);
+ }
+ return true;
+ });
+ }
+ const extended = [];
+ const injections = [];
+ const styles = [];
+ // If we found at least one candidate, check if we have unhidden rules,
+ // apply them and dispatch rules into `injections` (i.e.: '+js(...)'),
+ // `extended` (i.e. :not(...)), and `styles` (i.e.: '##rule').
+ if (rules.length !== 0) {
+ // =======================================================================
+ // Rules: unhide
+ // =======================================================================
+ // Collect unhidden selectors. They will be used to filter-out canceled
+ // rules from other indices.
+ let injectionsDisabled = false;
+ const disabledRules = new Set();
+ this.unhideIndex.iterMatchingFilters(hostnameTokens, (rule) => {
+ if (rule.match(hostname, domain)) {
+ disabledRules.add(rule.getSelector());
+ // Detect special +js() rules to disable scriptlet injections
+ if (rule.isScriptInject() === true &&
+ rule.isUnhide() === true &&
+ rule.getSelector().length === 0) {
+ injectionsDisabled = true;
+ }
+ }
+ return true;
+ });
+ // Apply unhide rules + dispatch
+ for (const rule of rules) {
+ // Make sure `rule` is not un-hidden by a #@# filter
+ if (disabledRules.size !== 0 && disabledRules.has(rule.getSelector())) {
+ continue;
+ }
+ // Dispatch rules in `injections` or `styles` depending on type
+ if (rule.isScriptInject() === true) {
+ if (getInjectionRules === true && injectionsDisabled === false) {
+ injections.push(rule);
+ }
+ }
+ else if (rule.isExtended()) {
+ if (getExtendedRules === true) {
+ extended.push(rule);
+ }
+ }
+ else {
+ styles.push(rule);
+ }
+ }
+ }
+ // Create final stylesheet
+ let stylesheet = getBaseRules === false || allowGenericHides === false ? '' : this.getBaseStylesheet();
+ if (styles.length !== 0) {
+ if (stylesheet.length !== 0) {
+ stylesheet += '\n\n';
+ }
+ stylesheet += createStylesheetFromRules(styles);
+ }
+ const extendedProcessed = [];
+ if (extended.length !== 0) {
+ const extendedStyles = new Map();
+ for (const rule of extended) {
+ const ast = rule.getSelectorAST();
+ if (ast !== undefined) {
+ const attribute = rule.isRemove() ? undefined : rule.getStyleAttributeHash();
+ if (attribute !== undefined) {
+ extendedStyles.set(rule.getStyle(), attribute);
+ }
+ extendedProcessed.push({
+ ast,
+ remove: rule.isRemove(),
+ attribute,
+ });
+ }
+ }
+ if (extendedStyles.size !== 0) {
+ if (stylesheet.length !== 0) {
+ stylesheet += '\n\n';
+ }
+ stylesheet += [...extendedStyles.entries()]
+ .map(([style, attribute]) => `[${attribute}] { ${style} }`)
+ .join('\n\n');
+ }
+ }
+ return {
+ extended: extendedProcessed,
+ injections,
+ stylesheet,
+ };
+ }
+ /**
+ * Return the list of filters which can potentially be un-hidden by another
+ * rule currently contained in the cosmetic bucket.
+ */
+ getGenericRules() {
+ if (this.extraGenericRules === null) {
+ return this.lazyPopulateGenericRulesCache().genericRules;
+ }
+ return this.extraGenericRules;
+ }
+ /**
+ * The base stylesheet is made of generic filters (not specific to any
+ * hostname) which cannot be hidden (i.e.: there is currently no rule which
+ * might hide their selector). This means that it will never change and is
+ * the same for all sites. We generate it once and re-use it any-time we want
+ * to inject it.
+ */
+ getBaseStylesheet() {
+ if (this.baseStylesheet === null) {
+ return this.lazyPopulateGenericRulesCache().baseStylesheet;
+ }
+ return this.baseStylesheet;
+ }
+ /**
+ * This is used to lazily generate both the list of generic rules which can
+ * *potentially be un-hidden* (i.e.: there exists at least one unhide rule
+ * for the selector) and a stylesheet containing all selectors which cannot
+ * be un-hidden. Since this list will not change between updates we can
+ * generate once and use many times.
+ */
+ lazyPopulateGenericRulesCache() {
+ if (this.baseStylesheet === null || this.extraGenericRules === null) {
+ // Collect all selectors which can be subjected to an unhide rule
+ const unHideRules = this.unhideIndex.getFilters();
+ const canBeHiddenSelectors = new Set();
+ for (const rule of unHideRules) {
+ canBeHiddenSelectors.add(rule.getSelector());
+ }
+ // Split generic rules into two groups:
+ // 1. Rules which cannot be hidden
+ // 2. Rules which can be hidden on some domains
+ //
+ // This allows to create a base stylesheet which we know will never
+ // change then keep a minority of rules in-memory which can potentially
+ // be hidden.
+ const genericRules = this.genericRules.getFilters();
+ const cannotBeHiddenRules = [];
+ const canBeHiddenRules = [];
+ for (const rule of genericRules) {
+ if (rule.hasCustomStyle() ||
+ rule.isScriptInject() ||
+ rule.hasHostnameConstraint() ||
+ canBeHiddenSelectors.has(rule.getSelector())) {
+ canBeHiddenRules.push(rule);
+ }
+ else {
+ cannotBeHiddenRules.push(rule);
+ }
+ }
+ this.baseStylesheet = createStylesheetFromRules(cannotBeHiddenRules);
+ this.extraGenericRules = canBeHiddenRules;
+ }
+ return {
+ baseStylesheet: this.baseStylesheet,
+ genericRules: this.extraGenericRules,
+ };
+ }
+}
+exports.default = CosmeticFilterBucket;
+//# sourceMappingURL=cosmetic.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js.map
new file mode 100644
index 0000000..7601d64
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/cosmetic.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic.js","sourceRoot":"","sources":["../../../../../src/engine/bucket/cosmetic.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js
new file mode 100644
index 0000000..889780a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js
@@ -0,0 +1,121 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const data_view_1 = require("../../data-view");
+// Empty filters is 4 bytes because we need at least one 32 bits number to keep
+// track of the number of filters in the container. If there is no filter then
+// the number will be 0.
+const EMPTY_FILTERS = new Uint8Array(4);
+/**
+ * Generic filters container (for both CosmeticFilter and NetworkFilter
+ * instances). This abstracts away some of the logic to serialize/lazy-load
+ * lists of filters (which is useful for things like generic cosmetic filters
+ * or $badfilter).
+ */
+class FiltersContainer {
+ static deserialize(buffer, deserialize, config) {
+ const container = new FiltersContainer({ deserialize, config, filters: [] });
+ container.filters = buffer.getBytes();
+ return container;
+ }
+ constructor({ config, deserialize, filters, }) {
+ this.deserialize = deserialize;
+ this.filters = EMPTY_FILTERS;
+ this.config = config;
+ if (filters.length !== 0) {
+ this.update(filters, undefined);
+ }
+ }
+ /**
+ * Update filters based on `newFilters` and `removedFilters`.
+ */
+ update(newFilters, removedFilters) {
+ // Estimate size of the buffer we will need to store filters. This avoids
+ // having to allocate a big chunk of memory up-front if it's not needed.
+ // We start with the current size of `this.filters` then update it with
+ // removed/added filters.
+ let bufferSizeEstimation = this.filters.byteLength;
+ let selected = [];
+ const compression = this.config.enableCompression;
+ // Add existing rules (removing the ones with ids in `removedFilters`)
+ const currentFilters = this.getFilters();
+ if (currentFilters.length !== 0) {
+ // If no filter was removed (we only add new ones), we don't need to
+ // filter out removed existing filters. So we just assign the array to
+ // `selected` directly to save a bit of effort.
+ if (removedFilters === undefined || removedFilters.size === 0) {
+ selected = currentFilters;
+ }
+ else {
+ // There might be some removed selected filters, so we iterate through
+ // them and make sure we keep only the ones not having been deleted.
+ for (const filter of currentFilters) {
+ if (removedFilters.has(filter.getId()) === false) {
+ selected.push(filter);
+ }
+ else {
+ bufferSizeEstimation -= filter.getSerializedSize(compression);
+ }
+ }
+ }
+ }
+ // If `selected` and `currentFilters` have the same length then no filter was removed.
+ const storedFiltersRemoved = selected.length !== currentFilters.length;
+ // Add new rules.
+ const numberOfExistingFilters = selected.length;
+ for (const filter of newFilters) {
+ bufferSizeEstimation += filter.getSerializedSize(compression);
+ selected.push(filter);
+ }
+ // Check if any new filter was added in `selected` (from `newFilters`).
+ const storedFiltersAdded = selected.length > numberOfExistingFilters;
+ // If selected changed, then update the compact representation of filters.
+ if (selected.length === 0) {
+ this.filters = EMPTY_FILTERS;
+ }
+ else if (storedFiltersAdded === true || storedFiltersRemoved === true) {
+ // Store filters in their compact form
+ const buffer = data_view_1.StaticDataView.allocate(bufferSizeEstimation, this.config);
+ buffer.pushUint32(selected.length);
+ // When we run in `debug` mode, we enable fully deterministic updates of
+ // internal data-structure. To this effect, we sort all filters before
+ // insertion.
+ if (this.config.debug === true) {
+ selected.sort((f1, f2) => f1.getId() - f2.getId());
+ }
+ for (const filter of selected) {
+ filter.serialize(buffer);
+ }
+ // Update internals
+ this.filters = buffer.buffer;
+ }
+ }
+ getSerializedSize() {
+ return (0, data_view_1.sizeOfBytes)(this.filters, false /* no alignement */);
+ }
+ serialize(buffer) {
+ buffer.pushBytes(this.filters);
+ }
+ getFilters() {
+ // No filter stored in the container
+ if (this.filters.byteLength <= 4) {
+ return [];
+ }
+ // Load all filters in memory and store them in `cache`
+ const filters = [];
+ const buffer = data_view_1.StaticDataView.fromUint8Array(this.filters, this.config);
+ const numberOfFilters = buffer.getUint32();
+ for (let i = 0; i < numberOfFilters; i += 1) {
+ filters.push(this.deserialize(buffer));
+ }
+ return filters;
+ }
+}
+exports.default = FiltersContainer;
+//# sourceMappingURL=filters.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js.map
new file mode 100644
index 0000000..2e5e255
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/filters.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../src/engine/bucket/filters.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js
new file mode 100644
index 0000000..4553241
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js
@@ -0,0 +1,113 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const network_1 = require("../../filters/network");
+const optimizer_1 = require("../optimizer");
+const reverse_index_1 = require("../reverse-index");
+const filters_1 = require("./filters");
+/**
+ * Accelerating data structure for network filters matching.
+ */
+class NetworkFilterBucket {
+ static deserialize(buffer, config) {
+ const bucket = new NetworkFilterBucket({ config });
+ bucket.index = reverse_index_1.default.deserialize(buffer, network_1.default.deserialize, config.enableOptimizations ? optimizer_1.optimizeNetwork : optimizer_1.noopOptimizeNetwork, config);
+ bucket.badFilters = filters_1.default.deserialize(buffer, network_1.default.deserialize, config);
+ return bucket;
+ }
+ constructor({ filters = [], config }) {
+ this.index = new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: [],
+ optimize: config.enableOptimizations ? optimizer_1.optimizeNetwork : optimizer_1.noopOptimizeNetwork,
+ });
+ this.badFiltersIds = null;
+ this.badFilters = new filters_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: [],
+ });
+ if (filters.length !== 0) {
+ this.update(filters, undefined);
+ }
+ }
+ getFilters() {
+ const filters = [];
+ return filters.concat(this.badFilters.getFilters(), this.index.getFilters());
+ }
+ update(newFilters, removedFilters) {
+ const badFilters = [];
+ const remaining = [];
+ for (const filter of newFilters) {
+ if (filter.isBadFilter()) {
+ badFilters.push(filter);
+ }
+ else {
+ remaining.push(filter);
+ }
+ }
+ this.badFilters.update(badFilters, removedFilters);
+ this.index.update(remaining, removedFilters);
+ this.badFiltersIds = null;
+ }
+ getSerializedSize() {
+ return this.badFilters.getSerializedSize() + this.index.getSerializedSize();
+ }
+ serialize(buffer) {
+ this.index.serialize(buffer);
+ this.badFilters.serialize(buffer);
+ }
+ matchAll(request) {
+ const filters = [];
+ this.index.iterMatchingFilters(request.getTokens(), (filter) => {
+ if (filter.match(request) && this.isFilterDisabled(filter) === false) {
+ filters.push(filter);
+ }
+ return true;
+ });
+ return filters;
+ }
+ match(request) {
+ let match;
+ this.index.iterMatchingFilters(request.getTokens(), (filter) => {
+ if (filter.match(request) && this.isFilterDisabled(filter) === false) {
+ match = filter;
+ return false;
+ }
+ return true;
+ });
+ return match;
+ }
+ /**
+ * Given a matching filter, check if it is disabled by a $badfilter
+ */
+ isFilterDisabled(filter) {
+ // Lazily load information about bad filters in memory. The only thing we
+ // keep in memory is the list of IDs from $badfilter (ignoring the
+ // $badfilter option from mask). This allows to check if a matching filter
+ // should be ignored just by doing a lookup in a set of IDs.
+ if (this.badFiltersIds === null) {
+ const badFilters = this.badFilters.getFilters();
+ // Shortcut if there is no badfilter in this bucket
+ if (badFilters.length === 0) {
+ return false;
+ }
+ // Create in-memory list of disabled filter IDs
+ const badFiltersIds = new Set();
+ for (const badFilter of badFilters) {
+ badFiltersIds.add(badFilter.getIdWithoutBadFilter());
+ }
+ this.badFiltersIds = badFiltersIds;
+ }
+ return this.badFiltersIds.has(filter.getId());
+ }
+}
+exports.default = NetworkFilterBucket;
+//# sourceMappingURL=network.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js.map
new file mode 100644
index 0000000..ccaceaf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/bucket/network.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../../src/engine/bucket/network.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js
new file mode 100644
index 0000000..510ab35
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js
@@ -0,0 +1,190 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Domains = void 0;
+const request_1 = require("../request");
+const punycode_1 = require("../punycode");
+const data_view_1 = require("../data-view");
+const utils_1 = require("../utils");
+class Domains {
+ static parse(parts, debug = false) {
+ if (parts.length === 0) {
+ return undefined;
+ }
+ const entities = [];
+ const notEntities = [];
+ const hostnames = [];
+ const notHostnames = [];
+ for (let hostname of parts) {
+ if ((0, utils_1.hasUnicode)(hostname)) {
+ hostname = (0, punycode_1.toASCII)(hostname);
+ }
+ const negation = hostname.charCodeAt(0) === 126; /* '~' */
+ const entity = hostname.charCodeAt(hostname.length - 1) === 42 /* '*' */ &&
+ hostname.charCodeAt(hostname.length - 2) === 46; /* '.' */
+ const start = negation ? 1 : 0;
+ const end = entity ? hostname.length - 2 : hostname.length;
+ const hash = (0, request_1.hashHostnameBackward)(negation === true || entity === true ? hostname.slice(start, end) : hostname);
+ if (negation) {
+ if (entity) {
+ notEntities.push(hash);
+ }
+ else {
+ notHostnames.push(hash);
+ }
+ }
+ else {
+ if (entity) {
+ entities.push(hash);
+ }
+ else {
+ hostnames.push(hash);
+ }
+ }
+ }
+ return new Domains({
+ entities: entities.length !== 0 ? new Uint32Array(entities).sort() : undefined,
+ hostnames: hostnames.length !== 0 ? new Uint32Array(hostnames).sort() : undefined,
+ notEntities: notEntities.length !== 0 ? new Uint32Array(notEntities).sort() : undefined,
+ notHostnames: notHostnames.length !== 0 ? new Uint32Array(notHostnames).sort() : undefined,
+ parts: debug === true ? parts.join(',') : undefined,
+ });
+ }
+ static deserialize(buffer) {
+ const optionalParts = buffer.getUint8();
+ // The order of these fields should be the same as when we serialize them.
+ return new Domains({
+ entities: (optionalParts & 1) === 1 ? buffer.getUint32Array() : undefined,
+ hostnames: (optionalParts & 2) === 2 ? buffer.getUint32Array() : undefined,
+ notEntities: (optionalParts & 4) === 4 ? buffer.getUint32Array() : undefined,
+ notHostnames: (optionalParts & 8) === 8 ? buffer.getUint32Array() : undefined,
+ parts: (optionalParts & 16) === 16 ? buffer.getUTF8() : undefined,
+ });
+ }
+ constructor({ entities, hostnames, notEntities, notHostnames, parts, }) {
+ // Hostname constraints
+ this.entities = entities;
+ this.hostnames = hostnames;
+ // Hostname exceptions
+ this.notEntities = notEntities;
+ this.notHostnames = notHostnames;
+ // Debug
+ this.parts = parts;
+ }
+ updateId(hash) {
+ const { hostnames, entities, notHostnames, notEntities } = this;
+ if (hostnames !== undefined) {
+ for (const hostname of hostnames) {
+ hash = (hash * 33) ^ hostname;
+ }
+ }
+ if (entities !== undefined) {
+ for (const entity of entities) {
+ hash = (hash * 33) ^ entity;
+ }
+ }
+ if (notHostnames !== undefined) {
+ for (const notHostname of notHostnames) {
+ hash = (hash * 33) ^ notHostname;
+ }
+ }
+ if (notEntities !== undefined) {
+ for (const notEntity of notEntities) {
+ hash = (hash * 33) ^ notEntity;
+ }
+ }
+ return hash;
+ }
+ serialize(buffer) {
+ // Mandatory fields
+ const index = buffer.getPos();
+ buffer.pushUint8(0);
+ // This bit-mask indicates which optional parts of the filter were serialized.
+ let optionalParts = 0;
+ if (this.entities !== undefined) {
+ optionalParts |= 1;
+ buffer.pushUint32Array(this.entities);
+ }
+ if (this.hostnames !== undefined) {
+ optionalParts |= 2;
+ buffer.pushUint32Array(this.hostnames);
+ }
+ if (this.notEntities !== undefined) {
+ optionalParts |= 4;
+ buffer.pushUint32Array(this.notEntities);
+ }
+ if (this.notHostnames !== undefined) {
+ optionalParts |= 8;
+ buffer.pushUint32Array(this.notHostnames);
+ }
+ if (this.parts !== undefined) {
+ optionalParts |= 16;
+ buffer.pushUTF8(this.parts);
+ }
+ buffer.setByte(index, optionalParts);
+ }
+ getSerializedSize() {
+ let estimate = 1; // optional parts (1 byte)
+ if (this.entities !== undefined) {
+ estimate += (0, data_view_1.sizeOfUint32Array)(this.entities);
+ }
+ if (this.hostnames !== undefined) {
+ estimate += (0, data_view_1.sizeOfUint32Array)(this.hostnames);
+ }
+ if (this.notHostnames !== undefined) {
+ estimate += (0, data_view_1.sizeOfUint32Array)(this.notHostnames);
+ }
+ if (this.notEntities !== undefined) {
+ estimate += (0, data_view_1.sizeOfUint32Array)(this.notEntities);
+ }
+ if (this.parts !== undefined) {
+ estimate += (0, data_view_1.sizeOfUTF8)(this.parts);
+ }
+ return estimate;
+ }
+ match(hostnameHashes, entityHashes) {
+ // Check if `hostname` is blacklisted
+ if (this.notHostnames !== undefined) {
+ for (const hash of hostnameHashes) {
+ if ((0, utils_1.binLookup)(this.notHostnames, hash)) {
+ return false;
+ }
+ }
+ }
+ // Check if `hostname` is blacklisted by *entity*
+ if (this.notEntities !== undefined) {
+ for (const hash of entityHashes) {
+ if ((0, utils_1.binLookup)(this.notEntities, hash)) {
+ return false;
+ }
+ }
+ }
+ // Check if `hostname` is allowed
+ if (this.hostnames !== undefined || this.entities !== undefined) {
+ if (this.hostnames !== undefined) {
+ for (const hash of hostnameHashes) {
+ if ((0, utils_1.binLookup)(this.hostnames, hash)) {
+ return true;
+ }
+ }
+ }
+ if (this.entities !== undefined) {
+ for (const hash of entityHashes) {
+ if ((0, utils_1.binLookup)(this.entities, hash)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+}
+exports.Domains = Domains;
+//# sourceMappingURL=domains.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js.map
new file mode 100644
index 0000000..0ea33f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/domains.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../../src/engine/domains.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js
new file mode 100644
index 0000000..1829484
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js
@@ -0,0 +1,719 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ENGINE_VERSION = void 0;
+const config_1 = require("../config");
+const data_view_1 = require("../data-view");
+const events_1 = require("../events");
+const fetch_1 = require("../fetch");
+const dsl_1 = require("../filters/dsl");
+const lists_1 = require("../lists");
+const request_1 = require("../request");
+const resources_1 = require("../resources");
+const cosmetic_1 = require("./bucket/cosmetic");
+const network_1 = require("./bucket/network");
+const metadata_1 = require("./metadata");
+exports.ENGINE_VERSION = 619;
+function shouldApplyHideException(filters) {
+ if (filters.length === 0) {
+ return false;
+ }
+ // Get $Xhide filter with highest priority:
+ // $Xhide,important > $Xhide > @@$Xhide
+ let genericHideFilter;
+ let currentScore = 0;
+ for (const filter of filters) {
+ // To encode priority between filters, we create a bitmask with the following:
+ // $important,Xhide = 100 (takes precedence)
+ // $Xhide = 010 (exception to @@$Xhide)
+ // @@$Xhide = 001 (forbids Xhide filters)
+ const score = (filter.isImportant() ? 4 : 0) | (filter.isException() ? 1 : 2);
+ // Highest `score` has precedence
+ if (score >= currentScore) {
+ currentScore = score;
+ genericHideFilter = filter;
+ }
+ }
+ if (genericHideFilter === undefined) {
+ return false;
+ }
+ // Check that there is at least one $generichide match and no exception
+ return genericHideFilter.isException();
+}
+class FilterEngine extends events_1.EventEmitter {
+ static fromCached(init, caching) {
+ if (caching === undefined) {
+ return init();
+ }
+ const { path, read, write } = caching;
+ return read(path)
+ .then((buffer) => this.deserialize(buffer))
+ .catch(() => init().then((engine) => write(path, engine.serialize()).then(() => engine)));
+ }
+ static empty(config = {}) {
+ return new this({ config });
+ }
+ /**
+ * Create an instance of `FiltersEngine` (or subclass like `ElectronBlocker`,
+ * etc.), from the list of subscriptions provided as argument (e.g.:
+ * EasyList).
+ *
+ * Lists are fetched using the instance of `fetch` provided as a first
+ * argument. Optionally resources.txt and config can be provided.
+ */
+ static fromLists(fetch, urls, config = {}, caching) {
+ return this.fromCached(() => {
+ const listsPromises = (0, fetch_1.fetchLists)(fetch, urls);
+ const resourcesPromise = (0, fetch_1.fetchResources)(fetch);
+ return Promise.all([listsPromises, resourcesPromise]).then(([lists, resources]) => {
+ const engine = this.parse(lists.join('\n'), config);
+ if (resources !== undefined) {
+ engine.updateResources(resources, '' + resources.length);
+ }
+ return engine;
+ });
+ }, caching);
+ }
+ /**
+ * Initialize blocker of *ads only*.
+ *
+ * Attempt to initialize a blocking engine using a pre-built version served
+ * from Cliqz's CDN. If this fails (e.g.: if no pre-built engine is available
+ * for this version of the library), then falls-back to using `fromLists(...)`
+ * method with the same subscriptions.
+ */
+ static fromPrebuiltAdsOnly(fetchImpl = fetch, caching) {
+ return this.fromLists(fetchImpl, fetch_1.adsLists, {}, caching);
+ }
+ /**
+ * Same as `fromPrebuiltAdsOnly(...)` but also contains rules to block
+ * tracking (i.e.: using extra lists such as EasyPrivacy and more).
+ */
+ static fromPrebuiltAdsAndTracking(fetchImpl = fetch, caching) {
+ return this.fromLists(fetchImpl, fetch_1.adsAndTrackingLists, {}, caching);
+ }
+ /**
+ * Same as `fromPrebuiltAdsAndTracking(...)` but also contains annoyances
+ * rules to block things like cookie notices.
+ */
+ static fromPrebuiltFull(fetchImpl = fetch, caching) {
+ return this.fromLists(fetchImpl, fetch_1.fullLists, {}, caching);
+ }
+ static fromTrackerDB(rawJsonDump, options = {}) {
+ const config = new config_1.default(options);
+ const metadata = new metadata_1.Metadata(rawJsonDump);
+ const filters = [];
+ for (const pattern of metadata.getPatterns()) {
+ filters.push(...pattern.filters);
+ }
+ const engine = this.parse(filters.join('\n'), config);
+ engine.metadata = metadata;
+ return engine;
+ }
+ static parse(filters, options = {}) {
+ const config = new config_1.default(options);
+ return new this(Object.assign(Object.assign({}, (0, lists_1.parseFilters)(filters, config)), { config }));
+ }
+ static deserialize(serialized) {
+ const buffer = data_view_1.StaticDataView.fromUint8Array(serialized, {
+ enableCompression: false,
+ });
+ // Before starting deserialization, we make sure that the version of the
+ // serialized engine is the same as the current source code. If not, we
+ // start fresh and create a new engine from the lists.
+ const serializedEngineVersion = buffer.getUint16();
+ if (exports.ENGINE_VERSION !== serializedEngineVersion) {
+ throw new Error(`serialized engine version mismatch, expected ${exports.ENGINE_VERSION} but got ${serializedEngineVersion}`);
+ }
+ // Create a new engine with same options
+ const config = config_1.default.deserialize(buffer);
+ // Optionally turn compression ON
+ if (config.enableCompression) {
+ buffer.enableCompression();
+ }
+ // Also make sure that the built-in checksum is correct. This allows to
+ // detect data corruption and start fresh if the serialized version was
+ // altered.
+ if (config.integrityCheck) {
+ const currentPos = buffer.pos;
+ buffer.pos = serialized.length - 4;
+ const checksum = buffer.checksum();
+ const expected = buffer.getUint32();
+ if (checksum !== expected) {
+ throw new Error(`serialized engine checksum mismatch, expected ${expected} but got ${checksum}`);
+ }
+ buffer.pos = currentPos;
+ }
+ const engine = new this({ config });
+ // Deserialize resources
+ engine.resources = resources_1.default.deserialize(buffer);
+ // Deserialize lists
+ const lists = new Map();
+ const numberOfLists = buffer.getUint16();
+ for (let i = 0; i < numberOfLists; i += 1) {
+ lists.set(buffer.getASCII(), buffer.getASCII());
+ }
+ engine.lists = lists;
+ // Deserialize buckets
+ engine.importants = network_1.default.deserialize(buffer, config);
+ engine.redirects = network_1.default.deserialize(buffer, config);
+ engine.filters = network_1.default.deserialize(buffer, config);
+ engine.exceptions = network_1.default.deserialize(buffer, config);
+ engine.csp = network_1.default.deserialize(buffer, config);
+ engine.cosmetics = cosmetic_1.default.deserialize(buffer, config);
+ engine.hideExceptions = network_1.default.deserialize(buffer, config);
+ // Optionally deserialize metadata
+ const hasMetadata = buffer.getBool();
+ if (hasMetadata) {
+ engine.metadata = metadata_1.Metadata.deserialize(buffer);
+ }
+ buffer.seekZero();
+ return engine;
+ }
+ constructor({
+ // Optionally initialize the engine with filters
+ cosmeticFilters = [], networkFilters = [], config = new config_1.default(), lists = new Map(), } = {}) {
+ super(); // init super-class EventEmitter
+ this.config = new config_1.default(config);
+ // Subscription management: disabled by default
+ this.lists = lists;
+ // $csp=
+ this.csp = new network_1.default({ config: this.config });
+ // $elemhide
+ // $generichide
+ // $specifichide
+ this.hideExceptions = new network_1.default({ config: this.config });
+ // @@filter
+ this.exceptions = new network_1.default({ config: this.config });
+ // $important
+ this.importants = new network_1.default({ config: this.config });
+ // $redirect
+ this.redirects = new network_1.default({ config: this.config });
+ // All other filters
+ this.filters = new network_1.default({ config: this.config });
+ // Cosmetic filters
+ this.cosmetics = new cosmetic_1.default({ config: this.config });
+ // Injections
+ this.resources = new resources_1.default();
+ if (networkFilters.length !== 0 || cosmeticFilters.length !== 0) {
+ this.update({
+ newCosmeticFilters: cosmeticFilters,
+ newNetworkFilters: networkFilters,
+ });
+ }
+ }
+ /**
+ * Estimate the number of bytes needed to serialize this instance of
+ * `FiltersEngine` using the `serialize(...)` method. It is used internally
+ * by `serialize(...)` to allocate a buffer of the right size and you should
+ * not have to call it yourself most of the time.
+ *
+ * There are cases where we cannot estimate statically the exact size of the
+ * resulting buffer (due to alignement which needs to be performed); this
+ * method will return a safe estimate which will always be at least equal to
+ * the real number of bytes needed, or bigger (usually of a few bytes only:
+ * ~20 bytes is to be expected).
+ */
+ getSerializedSize() {
+ let estimatedSize = (0, data_view_1.sizeOfByte)() + // engine version
+ this.config.getSerializedSize() +
+ this.resources.getSerializedSize() +
+ this.filters.getSerializedSize() +
+ this.exceptions.getSerializedSize() +
+ this.importants.getSerializedSize() +
+ this.redirects.getSerializedSize() +
+ this.csp.getSerializedSize() +
+ this.cosmetics.getSerializedSize() +
+ this.hideExceptions.getSerializedSize() +
+ 4; // checksum
+ // Estimate size of `this.lists` which stores information of checksum for each list.
+ for (const [name, checksum] of this.lists) {
+ estimatedSize += (0, data_view_1.sizeOfASCII)(name) + (0, data_view_1.sizeOfASCII)(checksum);
+ }
+ estimatedSize += (0, data_view_1.sizeOfBool)();
+ if (this.metadata !== undefined) {
+ estimatedSize += this.metadata.getSerializedSize();
+ }
+ return estimatedSize;
+ }
+ /**
+ * Creates a binary representation of the full engine. It can be stored
+ * on-disk for faster loading of the adblocker. The `deserialize` static
+ * method of Engine can be used to restore the engine.
+ */
+ serialize(array) {
+ const buffer = data_view_1.StaticDataView.fromUint8Array(array || new Uint8Array(this.getSerializedSize()), this.config);
+ buffer.pushUint16(exports.ENGINE_VERSION);
+ // Config
+ this.config.serialize(buffer);
+ // Resources (js, resources)
+ this.resources.serialize(buffer);
+ // Serialize the state of lists (names and checksums)
+ buffer.pushUint16(this.lists.size);
+ for (const [name, value] of Array.from(this.lists.entries()).sort()) {
+ buffer.pushASCII(name);
+ buffer.pushASCII(value);
+ }
+ // Filters buckets
+ this.importants.serialize(buffer);
+ this.redirects.serialize(buffer);
+ this.filters.serialize(buffer);
+ this.exceptions.serialize(buffer);
+ this.csp.serialize(buffer);
+ this.cosmetics.serialize(buffer);
+ this.hideExceptions.serialize(buffer);
+ // Optionally serialize metadata
+ buffer.pushBool(this.metadata !== undefined);
+ if (this.metadata !== undefined) {
+ this.metadata.serialize(buffer);
+ }
+ // Optionally append a checksum at the end
+ if (this.config.integrityCheck) {
+ buffer.pushUint32(buffer.checksum());
+ }
+ return buffer.subarray();
+ }
+ /**
+ * Update engine with new filters or resources.
+ */
+ loadedLists() {
+ return Array.from(this.lists.keys());
+ }
+ hasList(name, checksum) {
+ return this.lists.has(name) && this.lists.get(name) === checksum;
+ }
+ /**
+ * Update engine with `resources.txt` content.
+ */
+ updateResources(data, checksum) {
+ if (this.resources.checksum === checksum) {
+ return false;
+ }
+ this.resources = resources_1.default.parse(data, { checksum });
+ return true;
+ }
+ getFilters() {
+ const cosmeticFilters = [];
+ const networkFilters = [];
+ return {
+ cosmeticFilters: cosmeticFilters.concat(this.cosmetics.getFilters()),
+ networkFilters: networkFilters.concat(this.filters.getFilters(), this.exceptions.getFilters(), this.importants.getFilters(), this.redirects.getFilters(), this.csp.getFilters(), this.hideExceptions.getFilters()),
+ };
+ }
+ /**
+ * Update engine with new filters as well as optionally removed filters.
+ */
+ update({ newNetworkFilters = [], newCosmeticFilters = [], removedCosmeticFilters = [], removedNetworkFilters = [], }) {
+ let updated = false;
+ // Update cosmetic filters
+ if (this.config.loadCosmeticFilters &&
+ (newCosmeticFilters.length !== 0 || removedCosmeticFilters.length !== 0)) {
+ updated = true;
+ this.cosmetics.update(newCosmeticFilters, removedCosmeticFilters.length === 0 ? undefined : new Set(removedCosmeticFilters), this.config);
+ }
+ // Update network filters
+ if (this.config.loadNetworkFilters &&
+ (newNetworkFilters.length !== 0 || removedNetworkFilters.length !== 0)) {
+ updated = true;
+ const filters = [];
+ const csp = [];
+ const exceptions = [];
+ const importants = [];
+ const redirects = [];
+ const hideExceptions = [];
+ for (const filter of newNetworkFilters) {
+ // NOTE: it's important to check for $generichide, $elemhide,
+ // $specifichide and $csp before exceptions and important as we store
+ // all of them in the same filter bucket. The check for exceptions is
+ // done at match-time directly.
+ if (filter.isCSP()) {
+ csp.push(filter);
+ }
+ else if (filter.isGenericHide() || filter.isSpecificHide()) {
+ hideExceptions.push(filter);
+ }
+ else if (filter.isException()) {
+ exceptions.push(filter);
+ }
+ else if (filter.isImportant()) {
+ importants.push(filter);
+ }
+ else if (filter.isRedirect()) {
+ redirects.push(filter);
+ }
+ else {
+ filters.push(filter);
+ }
+ }
+ const removedNetworkFiltersSet = removedNetworkFilters.length === 0 ? undefined : new Set(removedNetworkFilters);
+ // Update buckets in-place
+ this.importants.update(importants, removedNetworkFiltersSet);
+ this.redirects.update(redirects, removedNetworkFiltersSet);
+ this.filters.update(filters, removedNetworkFiltersSet);
+ if (this.config.loadExceptionFilters === true) {
+ this.exceptions.update(exceptions, removedNetworkFiltersSet);
+ }
+ if (this.config.loadCSPFilters === true) {
+ this.csp.update(csp, removedNetworkFiltersSet);
+ }
+ this.hideExceptions.update(hideExceptions, removedNetworkFiltersSet);
+ }
+ return updated;
+ }
+ updateFromDiff({ added, removed }) {
+ const newCosmeticFilters = [];
+ const newNetworkFilters = [];
+ const removedCosmeticFilters = [];
+ const removedNetworkFilters = [];
+ if (removed !== undefined && removed.length !== 0) {
+ const { networkFilters, cosmeticFilters } = (0, lists_1.parseFilters)(removed.join('\n'), this.config);
+ Array.prototype.push.apply(removedCosmeticFilters, cosmeticFilters);
+ Array.prototype.push.apply(removedNetworkFilters, networkFilters);
+ }
+ if (added !== undefined && added.length !== 0) {
+ const { networkFilters, cosmeticFilters } = (0, lists_1.parseFilters)(added.join('\n'), this.config);
+ Array.prototype.push.apply(newCosmeticFilters, cosmeticFilters);
+ Array.prototype.push.apply(newNetworkFilters, networkFilters);
+ }
+ return this.update({
+ newCosmeticFilters,
+ newNetworkFilters,
+ removedCosmeticFilters: removedCosmeticFilters.map((f) => f.getId()),
+ removedNetworkFilters: removedNetworkFilters.map((f) => f.getId()),
+ });
+ }
+ /**
+ * Return a list of HTML filtering rules.
+ */
+ getHtmlFilters({
+ // Page information
+ url, hostname, domain, }) {
+ const htmlSelectors = [];
+ if (this.config.enableHtmlFiltering === false || this.config.loadCosmeticFilters === false) {
+ return htmlSelectors;
+ }
+ const rules = this.cosmetics.getHtmlRules({
+ domain: domain || '',
+ hostname,
+ });
+ for (const rule of rules) {
+ const extended = rule.getExtendedSelector();
+ if (extended !== undefined) {
+ htmlSelectors.push(extended);
+ }
+ }
+ if (htmlSelectors.length !== 0) {
+ this.emit('html-filtered', htmlSelectors, url);
+ }
+ return htmlSelectors;
+ }
+ /**
+ * Given `hostname` and `domain` of a page (or frame), return the list of
+ * styles and scripts to inject in the page.
+ */
+ getCosmeticsFilters({
+ // Page information
+ url, hostname, domain,
+ // DOM information
+ classes, hrefs, ids,
+ // Allows to specify which rules to return
+ getBaseRules = true, getInjectionRules = true, getExtendedRules = true, getRulesFromDOM = true, getRulesFromHostname = true, }) {
+ if (this.config.loadCosmeticFilters === false) {
+ return {
+ active: false,
+ extended: [],
+ scripts: [],
+ styles: '',
+ };
+ }
+ let allowGenericHides = true;
+ let allowSpecificHides = true;
+ const exceptions = this.hideExceptions.matchAll(request_1.default.fromRawDetails({
+ domain: domain || '',
+ hostname,
+ url,
+ sourceDomain: '',
+ sourceHostname: '',
+ sourceUrl: '',
+ }));
+ const genericHides = [];
+ const specificHides = [];
+ for (const filter of exceptions) {
+ if (filter.isElemHide()) {
+ allowGenericHides = false;
+ allowSpecificHides = false;
+ break;
+ }
+ if (filter.isSpecificHide()) {
+ specificHides.push(filter);
+ }
+ else if (filter.isGenericHide()) {
+ genericHides.push(filter);
+ }
+ }
+ if (allowGenericHides === true) {
+ allowGenericHides = shouldApplyHideException(genericHides) === false;
+ }
+ if (allowSpecificHides === true) {
+ allowSpecificHides = shouldApplyHideException(specificHides) === false;
+ }
+ // Lookup injections as well as stylesheets
+ const { injections, stylesheet, extended } = this.cosmetics.getCosmeticsFilters({
+ domain: domain || '',
+ hostname,
+ classes,
+ hrefs,
+ ids,
+ allowGenericHides,
+ allowSpecificHides,
+ getBaseRules,
+ getInjectionRules,
+ getExtendedRules,
+ getRulesFromDOM,
+ getRulesFromHostname,
+ });
+ // Perform interpolation for injected scripts
+ const scripts = [];
+ for (const injection of injections) {
+ const script = injection.getScript(this.resources.js);
+ if (script !== undefined) {
+ this.emit('script-injected', script, url);
+ scripts.push(script);
+ }
+ }
+ // Emit events
+ if (stylesheet.length !== 0) {
+ this.emit('style-injected', stylesheet, url);
+ }
+ return {
+ active: true,
+ extended,
+ scripts,
+ styles: stylesheet,
+ };
+ }
+ /**
+ * Given a `request`, return all matching network filters found in the engine.
+ */
+ matchAll(request) {
+ const filters = [];
+ if (request.isSupported) {
+ Array.prototype.push.apply(filters, this.importants.matchAll(request));
+ Array.prototype.push.apply(filters, this.filters.matchAll(request));
+ Array.prototype.push.apply(filters, this.exceptions.matchAll(request));
+ Array.prototype.push.apply(filters, this.csp.matchAll(request));
+ Array.prototype.push.apply(filters, this.hideExceptions.matchAll(request));
+ Array.prototype.push.apply(filters, this.redirects.matchAll(request));
+ }
+ return new Set(filters);
+ }
+ /**
+ * Given a "main_frame" request, check if some content security policies
+ * should be injected in the page.
+ */
+ getCSPDirectives(request) {
+ if (!this.config.loadNetworkFilters) {
+ return undefined;
+ }
+ if (request.isSupported !== true || request.isMainFrame() === false) {
+ return undefined;
+ }
+ const matches = this.csp.matchAll(request);
+ // No $csp filter found
+ if (matches.length === 0) {
+ return undefined;
+ }
+ // Collect all CSP directives and keep track of exceptions
+ const disabledCsp = new Set();
+ const enabledCsp = new Set();
+ for (const filter of matches) {
+ if (filter.isException()) {
+ if (filter.csp === undefined) {
+ // All CSP directives are disabled for this site
+ return undefined;
+ }
+ disabledCsp.add(filter.csp);
+ }
+ else {
+ enabledCsp.add(filter.csp);
+ }
+ }
+ // Combine all CSPs (except the black-listed ones)
+ const csps = Array.from(enabledCsp)
+ .filter((csp) => !disabledCsp.has(csp))
+ .join('; ') || undefined;
+ // Emit event
+ if (csps !== undefined) {
+ this.emit('csp-injected', csps, request);
+ }
+ return csps;
+ }
+ /**
+ * Decide if a network request (usually from WebRequest API) should be
+ * blocked, redirected or allowed.
+ */
+ match(request, withMetadata = false) {
+ const result = {
+ exception: undefined,
+ filter: undefined,
+ match: false,
+ redirect: undefined,
+ metadata: undefined,
+ };
+ if (!this.config.loadNetworkFilters) {
+ return result;
+ }
+ if (request.isSupported) {
+ // Check the filters in the following order:
+ // 1. $important (not subject to exceptions)
+ // 2. redirection ($redirect=resource)
+ // 3. normal filters
+ // 4. exceptions
+ result.filter = this.importants.match(request);
+ let redirectNone;
+ let redirectRule;
+ // If `result.filter` is `undefined`, it means there was no $important
+ // filter found so far. We look for a $redirect filter. There is some
+ // extra logic to handle special cases like redirect-rule and
+ // redirect=none.
+ //
+ // * If redirect=none is found, then cancel all redirects.
+ // * Else if redirect-rule is found, only redirect if request would be blocked.
+ // * Else if redirect is found, redirect.
+ if (result.filter === undefined) {
+ const redirects = this.redirects.matchAll(request);
+ if (redirects.length !== 0) {
+ for (const filter of redirects) {
+ if (filter.getRedirect() === 'none') {
+ redirectNone = filter;
+ }
+ else if (filter.isRedirectRule()) {
+ redirectRule = filter;
+ }
+ else {
+ result.filter = filter;
+ }
+ }
+ }
+ // If `result.filter` is still `undefined`, it means that there was no
+ // redirection rule triggered for the request. We look for a normal
+ // match.
+ if (result.filter === undefined) {
+ result.filter = this.filters.match(request);
+ // If we found a match, and a `$redirect-rule` as found previously,
+ // then we transform the match into a redirect, following the
+ // semantics of redirect-rule.
+ if (redirectRule !== undefined && result.filter !== undefined) {
+ result.filter = redirectRule;
+ }
+ }
+ // If we found either a redirection rule or a normal match, then check
+ // for exceptions which could apply on the request and un-block it.
+ if (result.filter !== undefined) {
+ result.exception = this.exceptions.match(request);
+ }
+ }
+ // If there was a redirect match and no exception was found, then we
+ // proceed and process the redirect rule. This means two things:
+ //
+ // 1. Check if a redirect=none rule was found, which acts as exception.
+ // 2. If no exception was found, prepare `result.redirect` response.
+ if (result.filter !== undefined &&
+ result.exception === undefined &&
+ result.filter.isRedirect()) {
+ if (redirectNone !== undefined) {
+ result.exception = redirectNone;
+ }
+ else {
+ result.redirect = this.resources.getResource(result.filter.getRedirect());
+ }
+ }
+ }
+ result.match = result.exception === undefined && result.filter !== undefined;
+ // Emit events if we found a match
+ if (result.exception !== undefined) {
+ this.emit('request-whitelisted', request, result);
+ }
+ else if (result.redirect !== undefined) {
+ this.emit('request-redirected', request, result);
+ }
+ else if (result.filter !== undefined) {
+ this.emit('request-blocked', request, result);
+ }
+ else {
+ this.emit('request-allowed', request, result);
+ }
+ if (withMetadata === true && result.filter !== undefined && this.metadata) {
+ result.metadata = this.metadata.fromFilter(result.filter);
+ }
+ return result;
+ }
+ getPatternMetadata(request, { getDomainMetadata = false } = {}) {
+ if (this.metadata === undefined) {
+ return [];
+ }
+ const seenPatterns = new Set();
+ const patterns = [];
+ for (const filter of this.matchAll(request)) {
+ for (const patternInfo of this.metadata.fromFilter(filter)) {
+ if (!seenPatterns.has(patternInfo.pattern.key)) {
+ seenPatterns.add(patternInfo.pattern.key);
+ patterns.push(patternInfo);
+ }
+ }
+ }
+ if (getDomainMetadata) {
+ for (const patternInfo of this.metadata.fromDomain(request.hostname)) {
+ if (!seenPatterns.has(patternInfo.pattern.key)) {
+ seenPatterns.add(patternInfo.pattern.key);
+ patterns.push(patternInfo);
+ }
+ }
+ }
+ return patterns;
+ }
+ blockScripts() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().scripts().redirectTo('javascript').toString()],
+ });
+ return this;
+ }
+ blockImages() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().images().redirectTo('png').toString()],
+ });
+ return this;
+ }
+ blockMedias() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().medias().redirectTo('mp4').toString()],
+ });
+ return this;
+ }
+ blockFrames() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().frames().redirectTo('html').toString()],
+ });
+ return this;
+ }
+ blockFonts() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().fonts().toString()],
+ });
+ return this;
+ }
+ blockStyles() {
+ this.updateFromDiff({
+ added: [(0, dsl_1.block)().styles().toString()],
+ });
+ return this;
+ }
+}
+exports.default = FilterEngine;
+//# sourceMappingURL=engine.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js.map
new file mode 100644
index 0000000..a0550d2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/engine.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/engine/engine.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js
new file mode 100644
index 0000000..6553e9d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js
@@ -0,0 +1,233 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CompactMap = void 0;
+const data_view_1 = require("../data-view");
+const reverse_index_1 = require("./reverse-index");
+const EMPTY_BUCKET = Number.MAX_SAFE_INTEGER >>> 0;
+/**
+ * This is a simpler version of reverse-index data structure which implements
+ * a simple Map-like class, backed by compact typed arrays. This means that
+ * the structure can be serialized to a typed array very quickly and loaded
+ * back instantly.
+ */
+class CompactMap {
+ static deserialize(buffer, deserialize) {
+ const tokensLookupIndexSize = buffer.getUint32();
+ const bucketsIndexSize = buffer.getUint32();
+ const numberOfValues = buffer.getUint32();
+ // Alignement to 4 bytes is important here since `view` (Uint8Array) can
+ // appear at any offset of `buffer`. But to be sure we can read back
+ // Uint32Array directly from raw buffer, the alignement has to be a
+ // multiple of 4. The same alignement is taken care of in `serialize`.
+ const view = data_view_1.StaticDataView.fromUint8Array(buffer.getBytes(true /* align */), {
+ enableCompression: false,
+ });
+ const tokensLookupIndex = view.getUint32ArrayView(tokensLookupIndexSize);
+ const bucketsIndex = view.getUint32ArrayView(bucketsIndexSize);
+ const valuesIndexStart = view.pos;
+ view.seekZero(); // not strictly needed but make sure reverse index can be compared with deep equal
+ return new CompactMap({
+ deserialize,
+ // Left empty on purpose since we don't need these to deserialize (all
+ // the data is already in the serialized data).
+ values: [],
+ getKeys: () => [],
+ getSerializedSize: () => 0,
+ serialize: () => {
+ /* Empty */
+ },
+ }).updateInternals({
+ bucketsIndex,
+ valuesIndexStart,
+ numberOfValues,
+ tokensLookupIndex,
+ view,
+ });
+ }
+ constructor({ serialize, deserialize, getKeys, getSerializedSize, values, }) {
+ // In-memory cache used to keep track of metadata which has already been
+ // loaded from the compact representation (i.e.: this.view). It is not
+ // strictly necessary but will speed-up retrival of popular patterns
+ // (since we do not have to perform the lookup again).
+ this.cache = new Map();
+ this.bucketsIndex = data_view_1.EMPTY_UINT32_ARRAY;
+ this.tokensLookupIndex = data_view_1.EMPTY_UINT32_ARRAY;
+ this.valuesIndexStart = 0;
+ this.numberOfValues = 0;
+ this.view = data_view_1.StaticDataView.empty({ enableCompression: false });
+ this.deserializeValue = deserialize;
+ if (values.length !== 0) {
+ const patternsKeys = [];
+ // Keep track of the final size of the buckets index. `bucketsIndexSize`
+ // is the number of indexed values, multiplied by 2 (since we store both
+ // the `key` a value is indexed with and the index of the value itself).
+ let bucketsIndexSize = 0;
+ // Create a list of all values which will be part of the map. This means
+ // computing an estimation of the buffer size needed to store this index.
+ let estimatedBufferSize = 0;
+ for (const value of values) {
+ estimatedBufferSize += getSerializedSize(value);
+ }
+ // No values given; reset to empty index and abort.
+ if (values.length === 0) {
+ this.updateInternals({
+ bucketsIndex: data_view_1.EMPTY_UINT32_ARRAY,
+ valuesIndexStart: 0,
+ numberOfValues: 0,
+ tokensLookupIndex: data_view_1.EMPTY_UINT32_ARRAY,
+ view: data_view_1.StaticDataView.empty({ enableCompression: false }),
+ });
+ return;
+ }
+ for (const value of values) {
+ // Get keys from `value` and store the result in `patternsKeys` which
+ // will be used in the next step to select the best key for each value.
+ const keys = getKeys(value);
+ patternsKeys.push(keys);
+ bucketsIndexSize += 2 * keys.length; // key + value index
+ }
+ // Add size of bucketsIndex to total size (x4 because these are 32 bits numbers)
+ estimatedBufferSize += bucketsIndexSize * 4;
+ // Prepare "tokens index" (see documentation in constructor of `ReverseIndex` class).
+ const tokensLookupIndexSize = Math.max(2, (0, reverse_index_1.nextPow2)(values.length));
+ const mask = tokensLookupIndexSize - 1;
+ const suffixes = [];
+ for (let i = 0; i < tokensLookupIndexSize; i += 1) {
+ suffixes.push([]);
+ }
+ // Add size of tokensLookupIndex to total size (x4 because these are 32 bits numbers)
+ estimatedBufferSize += tokensLookupIndexSize * 4;
+ // At this point we know the number of bytes needed for the compact
+ // representation of this map ("tokens index" + "buckets index" +
+ // "values index"). We allocate it at once and proceed with populating it.
+ const buffer = data_view_1.StaticDataView.allocate(estimatedBufferSize, { enableCompression: false });
+ const tokensLookupIndex = buffer.getUint32ArrayView(tokensLookupIndexSize);
+ const bucketsIndex = buffer.getUint32ArrayView(bucketsIndexSize);
+ const valuesIndexStart = buffer.getPos();
+ // For each value, find the best token (least seen) based on histogram.
+ // Since we are iterating again on the values, we populate "values index"
+ // in the same loop and keep track of their indices so that we can later
+ // populate "buckets index".
+ for (let i = 0; i < patternsKeys.length; i += 1) {
+ const value = values[i];
+ const keys = patternsKeys[i];
+ // Serialize this value and keep track of its index in the byte array;
+ // it will be used in "buckets index" to point to this value.
+ const valueIndex = buffer.pos;
+ serialize(value, buffer);
+ for (const key of keys) {
+ // `key & mask` represents the N last bits of `key`. We group all
+ // values indexed with the same `key` sharing the same N bits.
+ suffixes[key & mask].push([key, valueIndex]);
+ }
+ }
+ // Populate "tokens index" and "buckets index" based on keys for each value.
+ let indexInBucketsIndex = 0;
+ for (let i = 0; i < tokensLookupIndexSize; i += 1) {
+ const valuesForMask = suffixes[i];
+ tokensLookupIndex[i] = indexInBucketsIndex;
+ for (const [token, valueIndex] of valuesForMask) {
+ bucketsIndex[indexInBucketsIndex++] = token;
+ bucketsIndex[indexInBucketsIndex++] = valueIndex;
+ }
+ }
+ // Update internals
+ this.updateInternals({
+ bucketsIndex,
+ valuesIndexStart,
+ numberOfValues: patternsKeys.length,
+ tokensLookupIndex,
+ view: buffer,
+ });
+ }
+ }
+ updateInternals({ bucketsIndex, valuesIndexStart, numberOfValues, tokensLookupIndex, view, }) {
+ this.bucketsIndex = bucketsIndex;
+ this.valuesIndexStart = valuesIndexStart;
+ this.numberOfValues = numberOfValues;
+ this.tokensLookupIndex = tokensLookupIndex;
+ this.view = view;
+ view.seekZero();
+ return this;
+ }
+ getValues() {
+ const values = [];
+ if (this.numberOfValues === 0) {
+ return values;
+ }
+ // set view cursor at the start of "values index"
+ this.view.setPos(this.valuesIndexStart);
+ for (let i = 0; i < this.numberOfValues; i += 1) {
+ values.push(this.deserializeValue(this.view));
+ }
+ this.view.seekZero();
+ return values;
+ }
+ /**
+ * Estimate the number of bytes needed to serialize this instance of `Map`.
+ */
+ getSerializedSize() {
+ // 12 = 4 bytes (tokensLookupIndex.length) + 4 bytes (bucketsIndex.length) + 4 bytes (numberOfValues)
+ return 12 + (0, data_view_1.sizeOfBytes)(this.view.buffer, true /* align */);
+ }
+ /**
+ * Dump this index to `buffer`.
+ */
+ serialize(buffer) {
+ buffer.pushUint32(this.tokensLookupIndex.length);
+ buffer.pushUint32(this.bucketsIndex.length);
+ buffer.pushUint32(this.numberOfValues);
+ // Aligmenent is crucial here, see comment in `deserialize` for more info.
+ buffer.pushBytes(this.view.buffer, true /* align */);
+ }
+ get(key) {
+ const cachedValues = this.cache.get(key);
+ if (cachedValues !== undefined) {
+ return cachedValues;
+ }
+ const offset = key & (this.tokensLookupIndex.length - 1);
+ const startOfBucket = this.tokensLookupIndex[offset];
+ // We do not have any values for this token
+ if (startOfBucket === EMPTY_BUCKET) {
+ return [];
+ }
+ // Since we do not store explicitly the number of values in each
+ // "bucket", we check the index of the next one and use it to infer the
+ // number of values (each value being stored as a token + index to the
+ // "values store")
+ const endOfBucket = offset === this.tokensLookupIndex.length - 1
+ ? this.bucketsIndex.length
+ : this.tokensLookupIndex[offset + 1];
+ // Get indices of values indexed with `token`, if any.
+ const valuesIndices = [];
+ for (let i = startOfBucket; i < endOfBucket; i += 2) {
+ const currentToken = this.bucketsIndex[i];
+ if (currentToken === key) {
+ valuesIndices.push(this.bucketsIndex[i + 1]);
+ }
+ }
+ // No value indexed with `token`.
+ if (valuesIndices.length === 0) {
+ return []; // continue looking for a match
+ }
+ // If we have values for `token` then deserialize values in memory and
+ // create a `Bucket` instance to hold them for future access.
+ const values = [];
+ const view = this.view;
+ for (let i = 0; i < valuesIndices.length; i += 1) {
+ view.setPos(valuesIndices[i]);
+ values.push(this.deserializeValue(view));
+ }
+ this.cache.set(key, values);
+ return values;
+ }
+}
+exports.CompactMap = CompactMap;
+//# sourceMappingURL=map.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js.map
new file mode 100644
index 0000000..15a7ca3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/map.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/engine/map.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js
new file mode 100644
index 0000000..50d2816
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js
@@ -0,0 +1,162 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Metadata = void 0;
+const map_1 = require("./map");
+const network_1 = require("../filters/network");
+const categories_1 = require("./metadata/categories");
+const organizations_1 = require("./metadata/organizations");
+const patterns_1 = require("./metadata/patterns");
+// Optionally, we can also compress their names and descriptions but I think that should not be necessary as it's probably pretty small.
+// Usage in MV3 extension
+// ======================
+// 1. The extension will load the binary engine containing metadata and store it locally
+// 2. Either on webRequest events or DNR filter IDs (requires to synchronize the IDs), we tag the request with their metadata
+// (2.) At runtime, we will either feed it a request and we expect to get metadata (match, get filter, then from filter ID, get metadata)
+// Or we feed it the filter ID directly, from the DNR engine (but then it means we need to use the filter hash as an ID there as well and hope for no collision)
+class Metadata {
+ static deserialize(buffer) {
+ const metadata = new Metadata(null);
+ metadata.categories = map_1.CompactMap.deserialize(buffer, categories_1.deserialize);
+ metadata.organizations = map_1.CompactMap.deserialize(buffer, organizations_1.deserialize);
+ metadata.patterns = map_1.CompactMap.deserialize(buffer, patterns_1.deserialize);
+ return metadata;
+ }
+ constructor(rawTrackerDB) {
+ if (!rawTrackerDB) {
+ this.organizations = (0, organizations_1.createMap)([]);
+ this.categories = (0, categories_1.createMap)([]);
+ this.patterns = (0, patterns_1.createMap)([]);
+ return;
+ }
+ const { patterns: rawPatterns, organizations: rawOrganizations, categories: rawCategories, } = rawTrackerDB;
+ // Type-check categories
+ const categories = [];
+ if (typeof rawCategories === 'object') {
+ for (const [key, category] of Object.entries(rawCategories)) {
+ if (typeof category !== 'object') {
+ continue;
+ }
+ const categoryWithKey = Object.assign({ key }, category);
+ if ((0, categories_1.isValid)(categoryWithKey)) {
+ categories.push(categoryWithKey);
+ }
+ else {
+ console.error('?? invalid category', categoryWithKey);
+ }
+ }
+ }
+ this.categories = (0, categories_1.createMap)(categories);
+ // Type-check organizations
+ const organizations = [];
+ if (typeof rawOrganizations === 'object') {
+ for (const [key, organization] of Object.entries(rawOrganizations)) {
+ if (typeof organization !== 'object') {
+ continue;
+ }
+ const organizationWithKey = Object.assign({ key }, organization);
+ if ((0, organizations_1.isValid)(organizationWithKey)) {
+ organizations.push(organizationWithKey);
+ }
+ else {
+ console.error('?? invalid organization', organizationWithKey);
+ }
+ }
+ }
+ this.organizations = (0, organizations_1.createMap)(organizations);
+ // Type-check patterns
+ const patterns = [];
+ if (typeof rawPatterns === 'object') {
+ for (const [key, pattern] of Object.entries(rawPatterns)) {
+ if (typeof pattern !== 'object') {
+ continue;
+ }
+ const patternWithKey = Object.assign({ key }, pattern);
+ if ((0, patterns_1.isValid)(patternWithKey)) {
+ patterns.push(patternWithKey);
+ }
+ else {
+ console.error('?? invalid pattern', patternWithKey);
+ }
+ }
+ }
+ this.patterns = (0, patterns_1.createMap)(patterns);
+ }
+ getCategories() {
+ return this.categories.getValues();
+ }
+ getOrganizations() {
+ return this.organizations.getValues();
+ }
+ getPatterns() {
+ return this.patterns.getValues();
+ }
+ /**
+ * Estimate the total serialized size of this Metadata instance.
+ */
+ getSerializedSize() {
+ return (this.categories.getSerializedSize() +
+ this.organizations.getSerializedSize() +
+ this.patterns.getSerializedSize());
+ }
+ /**
+ * Serialize this instance of Metadata into `view`
+ */
+ serialize(buffer) {
+ this.categories.serialize(buffer);
+ this.organizations.serialize(buffer);
+ this.patterns.serialize(buffer);
+ }
+ /**
+ * Given an instance of NetworkFilter, retrieve pattern, organization and
+ * category information.
+ */
+ fromFilter(filter) {
+ return this.fromId(filter.getId());
+ }
+ /**
+ * Given a domain, retrieve pattern, organization and category information.
+ */
+ fromDomain(domain) {
+ const domainParts = domain.split('.');
+ for (; domainParts.length >= 2; domainParts.shift()) {
+ const subdomain = domainParts.join('.');
+ const parsedDomainFilter = network_1.default.parse(`||${subdomain}^`);
+ if (parsedDomainFilter === null) {
+ continue;
+ }
+ const patterns = this.fromId(parsedDomainFilter.getId());
+ if (patterns.length > 0) {
+ return patterns;
+ }
+ }
+ return [];
+ }
+ /**
+ * Given an `id` from filter, retrieve using the NetworkFilter.getId() method,
+ * lookup associated patterns (including organization and category) in an
+ * efficient way.
+ */
+ fromId(id) {
+ var _a, _b;
+ const results = [];
+ for (const pattern of this.patterns.get(id)) {
+ results.push({
+ pattern,
+ category: (_a = this.categories.get((0, categories_1.getKey)({ key: pattern.category }))) === null || _a === void 0 ? void 0 : _a[0],
+ organization: pattern.organization !== null
+ ? (_b = this.organizations.get((0, organizations_1.getKey)({ key: pattern.organization }))) === null || _b === void 0 ? void 0 : _b[0]
+ : null,
+ });
+ }
+ return results;
+ }
+}
+exports.Metadata = Metadata;
+//# sourceMappingURL=metadata.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js.map
new file mode 100644
index 0000000..04796f6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../src/engine/metadata.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js
new file mode 100644
index 0000000..44b9db5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js
@@ -0,0 +1,74 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createMap = exports.deserialize = exports.serialize = exports.getSerializedSize = exports.getKey = exports.isValid = void 0;
+const map_1 = require("../map");
+const data_view_1 = require("../../data-view");
+const utils_1 = require("../../utils");
+function isValid(category) {
+ if (category === null) {
+ return false;
+ }
+ if (typeof category !== 'object') {
+ return false;
+ }
+ const { key, name, color, description } = category;
+ if (typeof key !== 'string') {
+ return false;
+ }
+ if (typeof name !== 'string') {
+ return false;
+ }
+ if (typeof color !== 'string') {
+ return false;
+ }
+ if (typeof description !== 'string') {
+ return false;
+ }
+ return true;
+}
+exports.isValid = isValid;
+function getKey(category) {
+ return (0, utils_1.fastHash)(category.key);
+}
+exports.getKey = getKey;
+function getSerializedSize(category) {
+ return ((0, data_view_1.sizeOfUTF8)(category.key) +
+ (0, data_view_1.sizeOfUTF8)(category.name) +
+ (0, data_view_1.sizeOfUTF8)(category.color) +
+ (0, data_view_1.sizeOfUTF8)(category.description));
+}
+exports.getSerializedSize = getSerializedSize;
+function serialize(category, view) {
+ view.pushUTF8(category.key);
+ view.pushUTF8(category.name);
+ view.pushUTF8(category.color);
+ view.pushUTF8(category.description);
+}
+exports.serialize = serialize;
+function deserialize(view) {
+ return {
+ key: view.getUTF8(),
+ name: view.getUTF8(),
+ color: view.getUTF8(),
+ description: view.getUTF8(),
+ };
+}
+exports.deserialize = deserialize;
+function createMap(categories) {
+ return new map_1.CompactMap({
+ getSerializedSize,
+ getKeys: (category) => [getKey(category)],
+ serialize,
+ deserialize,
+ values: categories,
+ });
+}
+exports.createMap = createMap;
+//# sourceMappingURL=categories.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js.map
new file mode 100644
index 0000000..4278451
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/categories.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../../../src/engine/metadata/categories.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,gCAAoC;AACpC,+CAA6D;AAC7D,uCAAuC;AASvC,SAAgB,OAAO,CAAC,QAAa;IACnC,IAAI,QAAQ,KAAK,IAAI,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,OAAO,KAAK,CAAC;KACd;IAED,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAEnD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA5BD,0BA4BC;AAED,SAAgB,MAAM,CAAC,QAAyB;IAC9C,OAAO,IAAA,gBAAQ,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAFD,wBAEC;AAED,SAAgB,iBAAiB,CAAC,QAAmB;IACnD,OAAO,CACL,IAAA,sBAAU,EAAC,QAAQ,CAAC,GAAG,CAAC;QACxB,IAAA,sBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC;QACzB,IAAA,sBAAU,EAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,IAAA,sBAAU,EAAC,QAAQ,CAAC,WAAW,CAAC,CACjC,CAAC;AACJ,CAAC;AAPD,8CAOC;AAED,SAAgB,SAAS,CAAC,QAAmB,EAAE,IAAoB;IACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AALD,8BAKC;AAED,SAAgB,WAAW,CAAC,IAAoB;IAC9C,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE;QACrB,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;KAC5B,CAAC;AACJ,CAAC;AAPD,kCAOC;AAED,SAAgB,SAAS,CAAC,UAAuB;IAC/C,OAAO,IAAI,gBAAU,CAAC;QACpB,iBAAiB;QACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,SAAS;QACT,WAAW;QACX,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;AACL,CAAC;AARD,8BAQC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js
new file mode 100644
index 0000000..e7ab1af
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js
@@ -0,0 +1,103 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createMap = exports.deserialize = exports.serialize = exports.getSerializedSize = exports.getKey = exports.isValid = void 0;
+const map_1 = require("../map");
+const data_view_1 = require("../../data-view");
+const utils_1 = require("../../utils");
+/**
+ * This function takes an object representing an organization from TrackerDB
+ * dump and validates its shape. The result is the same object, but strongly
+ * typed.
+ */
+function isValid(organization) {
+ if (organization === null) {
+ return false;
+ }
+ if (typeof organization !== 'object') {
+ return false;
+ }
+ const { key, name, description, country, website_url: websiteUrl, privacy_policy_url: privacyPolicyUrl, privacy_contact: privacyContact, ghostery_id: ghosteryId, } = organization;
+ if (typeof key !== 'string') {
+ return false;
+ }
+ if (typeof name !== 'string') {
+ return false;
+ }
+ if (description !== null && typeof description !== 'string') {
+ return false;
+ }
+ if (country !== null && typeof country !== 'string') {
+ return false;
+ }
+ if (websiteUrl !== null && typeof websiteUrl !== 'string') {
+ return false;
+ }
+ if (privacyPolicyUrl !== null && typeof privacyPolicyUrl !== 'string') {
+ return false;
+ }
+ if (privacyContact !== null && typeof privacyContact !== 'string') {
+ return false;
+ }
+ if (ghosteryId !== null && typeof ghosteryId !== 'string') {
+ return false;
+ }
+ return true;
+}
+exports.isValid = isValid;
+function getKey(organization) {
+ return (0, utils_1.fastHash)(organization.key);
+}
+exports.getKey = getKey;
+function getSerializedSize(organization) {
+ return ((0, data_view_1.sizeOfUTF8)(organization.key) +
+ (0, data_view_1.sizeOfUTF8)(organization.name) +
+ (0, data_view_1.sizeOfUTF8)(organization.description || '') +
+ (0, data_view_1.sizeOfUTF8)(organization.website_url || '') +
+ (0, data_view_1.sizeOfUTF8)(organization.country || '') +
+ (0, data_view_1.sizeOfUTF8)(organization.privacy_policy_url || '') +
+ (0, data_view_1.sizeOfUTF8)(organization.privacy_contact || '') +
+ (0, data_view_1.sizeOfUTF8)(organization.ghostery_id || ''));
+}
+exports.getSerializedSize = getSerializedSize;
+function serialize(organization, view) {
+ view.pushUTF8(organization.key);
+ view.pushUTF8(organization.name);
+ view.pushUTF8(organization.description || '');
+ view.pushUTF8(organization.website_url || '');
+ view.pushUTF8(organization.country || '');
+ view.pushUTF8(organization.privacy_policy_url || '');
+ view.pushUTF8(organization.privacy_contact || '');
+ view.pushUTF8(organization.ghostery_id || '');
+}
+exports.serialize = serialize;
+function deserialize(view) {
+ return {
+ key: view.getUTF8(),
+ name: view.getUTF8(),
+ description: view.getUTF8() || null,
+ website_url: view.getUTF8() || null,
+ country: view.getUTF8() || null,
+ privacy_policy_url: view.getUTF8() || null,
+ privacy_contact: view.getUTF8() || null,
+ ghostery_id: view.getUTF8() || null,
+ };
+}
+exports.deserialize = deserialize;
+function createMap(organizations) {
+ return new map_1.CompactMap({
+ getSerializedSize,
+ getKeys: (organization) => [getKey(organization)],
+ serialize,
+ deserialize,
+ values: organizations,
+ });
+}
+exports.createMap = createMap;
+//# sourceMappingURL=organizations.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js.map
new file mode 100644
index 0000000..f7294cf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/organizations.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../../../../src/engine/metadata/organizations.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js
new file mode 100644
index 0000000..36644d2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js
@@ -0,0 +1,149 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createMap = exports.deserialize = exports.serialize = exports.getSerializedSize = exports.getKeys = exports.isValid = void 0;
+const map_1 = require("../map");
+const data_view_1 = require("../../data-view");
+const network_1 = require("../../filters/network");
+/**
+ * This function takes an object representing a pattern from TrackerDB dump
+ * and validates its shape. The result is the same object, but strongly typed.
+ */
+function isValid(pattern) {
+ if (pattern === null) {
+ return false;
+ }
+ if (typeof pattern !== 'object') {
+ return false;
+ }
+ const { key, name, category, organization, alias, website_url: websiteUrl, domains, filters, } = pattern;
+ if (typeof key !== 'string') {
+ return false;
+ }
+ if (typeof name !== 'string') {
+ return false;
+ }
+ if (typeof category !== 'string') {
+ return false;
+ }
+ if (organization !== null && typeof organization !== 'string') {
+ return false;
+ }
+ if (typeof alias !== 'string' && alias !== null) {
+ return false;
+ }
+ if (websiteUrl !== null && typeof websiteUrl !== 'string') {
+ return false;
+ }
+ if (!Array.isArray(domains) || !domains.every((domain) => typeof domain === 'string')) {
+ return false;
+ }
+ if (!Array.isArray(filters) || !filters.every((filter) => typeof filter === 'string')) {
+ return false;
+ }
+ return true;
+}
+exports.isValid = isValid;
+function getKeys(pattern) {
+ const keys = [];
+ for (const filter of pattern.filters) {
+ const parsedFilter = network_1.default.parse(filter);
+ if (parsedFilter !== null) {
+ keys.push(parsedFilter.getId());
+ }
+ }
+ for (const domain of pattern.domains) {
+ const parsedFilter = network_1.default.parse(`||${domain}^`);
+ if (parsedFilter !== null) {
+ keys.push(parsedFilter.getId());
+ }
+ }
+ return [...new Set(keys)];
+}
+exports.getKeys = getKeys;
+function getSerializedSize(pattern) {
+ let sizeOfDomains = (0, data_view_1.sizeOfLength)(pattern.domains.length);
+ for (const domain of pattern.domains) {
+ sizeOfDomains += (0, data_view_1.sizeOfUTF8)(domain);
+ }
+ let sizeOfFilters = (0, data_view_1.sizeOfLength)(pattern.filters.length);
+ for (const filter of pattern.filters) {
+ sizeOfFilters += (0, data_view_1.sizeOfUTF8)(filter);
+ }
+ return ((0, data_view_1.sizeOfUTF8)(pattern.key) +
+ (0, data_view_1.sizeOfUTF8)(pattern.name) +
+ (0, data_view_1.sizeOfUTF8)(pattern.category) +
+ (0, data_view_1.sizeOfUTF8)(pattern.organization || '') +
+ (0, data_view_1.sizeOfUTF8)(pattern.alias || '') +
+ (0, data_view_1.sizeOfUTF8)(pattern.website_url || '') +
+ (0, data_view_1.sizeOfUTF8)(pattern.ghostery_id || '') +
+ sizeOfDomains +
+ sizeOfFilters);
+}
+exports.getSerializedSize = getSerializedSize;
+function serialize(pattern, view) {
+ view.pushUTF8(pattern.key);
+ view.pushUTF8(pattern.name);
+ view.pushUTF8(pattern.category);
+ view.pushUTF8(pattern.organization || '');
+ view.pushUTF8(pattern.alias || '');
+ view.pushUTF8(pattern.website_url || '');
+ view.pushUTF8(pattern.ghostery_id || '');
+ view.pushLength(pattern.domains.length);
+ for (const domain of pattern.domains) {
+ view.pushUTF8(domain);
+ }
+ view.pushLength(pattern.filters.length);
+ for (const filter of pattern.filters) {
+ view.pushUTF8(filter);
+ }
+}
+exports.serialize = serialize;
+function deserialize(view) {
+ const key = view.getUTF8();
+ const name = view.getUTF8();
+ const category = view.getUTF8();
+ const organization = view.getUTF8() || null;
+ const alias = view.getUTF8() || null;
+ const website_url = view.getUTF8() || null;
+ const ghostery_id = view.getUTF8() || null;
+ const numberOfDomains = view.getLength();
+ const domains = [];
+ for (let i = 0; i < numberOfDomains; i += 1) {
+ domains.push(view.getUTF8());
+ }
+ const numberOfFilters = view.getLength();
+ const filters = [];
+ for (let i = 0; i < numberOfFilters; i += 1) {
+ filters.push(view.getUTF8());
+ }
+ return {
+ key,
+ name,
+ category,
+ organization,
+ alias,
+ website_url,
+ ghostery_id,
+ domains,
+ filters,
+ };
+}
+exports.deserialize = deserialize;
+function createMap(patterns) {
+ return new map_1.CompactMap({
+ getSerializedSize,
+ getKeys,
+ serialize,
+ deserialize,
+ values: patterns,
+ });
+}
+exports.createMap = createMap;
+//# sourceMappingURL=patterns.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js.map
new file mode 100644
index 0000000..b323b63
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/metadata/patterns.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../../src/engine/metadata/patterns.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js
new file mode 100644
index 0000000..6e2d9c5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js
@@ -0,0 +1,179 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.optimizeNetwork = exports.noopOptimizeCosmetic = exports.noopOptimizeNetwork = void 0;
+const network_1 = require("../filters/network");
+const utils_1 = require("../utils");
+const domains_1 = require("../engine/domains");
+function processRegex(r) {
+ return `(?:${r.source})`;
+}
+function escape(s) {
+ return `(?:${s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')})`;
+}
+function setWithDefault(map, key, value) {
+ let bucket = map.get(key);
+ if (bucket === undefined) {
+ bucket = [];
+ map.set(key, bucket);
+ }
+ bucket.push(value);
+}
+function groupBy(filters, criteria) {
+ const grouped = new Map();
+ for (const filter of filters) {
+ setWithDefault(grouped, criteria(filter), filter);
+ }
+ return Array.from(grouped.values());
+}
+function splitBy(filters, condition) {
+ const positive = [];
+ const negative = [];
+ for (const filter of filters) {
+ if (condition(filter)) {
+ positive.push(filter);
+ }
+ else {
+ negative.push(filter);
+ }
+ }
+ return {
+ negative,
+ positive,
+ };
+}
+const OPTIMIZATIONS = [
+ {
+ description: 'Remove duplicated filters by ID',
+ fusion: (filters) => filters[0],
+ groupByCriteria: (filter) => '' + filter.getId(),
+ select: () => true,
+ },
+ {
+ description: 'Group idential filter with same mask but different domains in single filters',
+ fusion: (filters) => {
+ const parts = [];
+ const hostnames = new Set();
+ const notHostnames = new Set();
+ const entities = new Set();
+ const notEntities = new Set();
+ for (const { domains } of filters) {
+ if (domains !== undefined) {
+ if (domains.parts !== undefined) {
+ parts.push(domains.parts);
+ }
+ if (domains.hostnames !== undefined) {
+ for (const hash of domains.hostnames) {
+ hostnames.add(hash);
+ }
+ }
+ if (domains.entities !== undefined) {
+ for (const hash of domains.entities) {
+ entities.add(hash);
+ }
+ }
+ if (domains.notHostnames !== undefined) {
+ for (const hash of domains.notHostnames) {
+ notHostnames.add(hash);
+ }
+ }
+ if (domains.notEntities !== undefined) {
+ for (const hash of domains.notEntities) {
+ notEntities.add(hash);
+ }
+ }
+ }
+ }
+ return new network_1.default(Object.assign({}, filters[0], {
+ domains: new domains_1.Domains({
+ hostnames: hostnames.size !== 0 ? new Uint32Array(hostnames).sort() : undefined,
+ entities: entities.size !== 0 ? new Uint32Array(entities).sort() : undefined,
+ notHostnames: notHostnames.size !== 0 ? new Uint32Array(notHostnames).sort() : undefined,
+ notEntities: notEntities.size !== 0 ? new Uint32Array(notEntities).sort() : undefined,
+ parts: parts.length !== 0 ? parts.join(',') : undefined,
+ }),
+ rawLine: filters[0].rawLine !== undefined
+ ? filters.map(({ rawLine }) => rawLine).join(' <+> ')
+ : undefined,
+ }));
+ },
+ groupByCriteria: (filter) => filter.getHostname() + filter.getFilter() + filter.getMask() + filter.getRedirect(),
+ select: (filter) => !filter.isCSP() && filter.denyallow === undefined && filter.domains !== undefined,
+ },
+ {
+ description: 'Group simple patterns, into a single filter',
+ fusion: (filters) => {
+ const patterns = [];
+ for (const f of filters) {
+ if (f.isRegex()) {
+ patterns.push(processRegex(f.getRegex()));
+ }
+ else if (f.isRightAnchor()) {
+ patterns.push(`${escape(f.getFilter())}$`);
+ }
+ else if (f.isLeftAnchor()) {
+ patterns.push(`^${escape(f.getFilter())}`);
+ }
+ else {
+ patterns.push(escape(f.getFilter()));
+ }
+ }
+ return new network_1.default(Object.assign({}, filters[0], {
+ mask: (0, utils_1.setBit)(filters[0].mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */),
+ rawLine: filters[0].rawLine !== undefined
+ ? filters.map(({ rawLine }) => rawLine).join(' <+> ')
+ : undefined,
+ regex: new RegExp(patterns.join('|')),
+ }));
+ },
+ groupByCriteria: (filter) => '' + (filter.getMask() & ~8388608 /* NETWORK_FILTER_MASK.isRegex */ & ~4194304 /* NETWORK_FILTER_MASK.isFullRegex */),
+ select: (filter) => filter.domains === undefined &&
+ filter.denyallow === undefined &&
+ !filter.isHostnameAnchor() &&
+ !filter.isRedirect() &&
+ !filter.isCSP(),
+ },
+];
+/**
+ * Optimizer which returns the list of original filters.
+ */
+function noopOptimizeNetwork(filters) {
+ return filters;
+}
+exports.noopOptimizeNetwork = noopOptimizeNetwork;
+function noopOptimizeCosmetic(filters) {
+ return filters;
+}
+exports.noopOptimizeCosmetic = noopOptimizeCosmetic;
+/**
+ * Fusion a set of `filters` by applying optimizations sequentially.
+ */
+function optimizeNetwork(filters) {
+ const fused = [];
+ let toFuse = filters;
+ for (const { select, fusion, groupByCriteria } of OPTIMIZATIONS) {
+ const { positive, negative } = splitBy(toFuse, select);
+ toFuse = negative;
+ const groups = groupBy(positive, groupByCriteria);
+ for (const group of groups) {
+ if (group.length > 1) {
+ fused.push(fusion(group));
+ }
+ else {
+ toFuse.push(group[0]);
+ }
+ }
+ }
+ for (const filter of toFuse) {
+ fused.push(filter);
+ }
+ return fused;
+}
+exports.optimizeNetwork = optimizeNetwork;
+//# sourceMappingURL=optimizer.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js.map
new file mode 100644
index 0000000..9c76973
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/optimizer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../../src/engine/optimizer.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js
new file mode 100644
index 0000000..3dd13b6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js
@@ -0,0 +1,483 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.nextPow2 = void 0;
+const data_view_1 = require("../data-view");
+// https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
+function nextPow2(v) {
+ v--;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ v++;
+ return v;
+}
+exports.nextPow2 = nextPow2;
+/**
+ * Generate unique IDs for requests, which is used to avoid matching the same
+ * buckets multiple times on the same request (which can happen if a token
+ * appears more than once in a URL).
+ */
+let UID = 1;
+function getNextId() {
+ const id = UID;
+ UID = (UID + 1) % 1000000000;
+ return id;
+}
+const EMPTY_BUCKET = Number.MAX_SAFE_INTEGER >>> 0;
+/**
+ * The ReverseIndex is an accelerating data structure which allows finding a
+ * subset of the filters given a list of tokens seen in a URL. It is the core
+ * of the adblocker's matching capabilities and speed.
+ *
+ * It has mainly two caracteristics:
+ * 1. It is very compact and is able to load fast.
+ * 2. It is *very fast* in finding potential candidates.
+ *
+ * Conceptually, the reverse index dispatches filters in "buckets" (an array of
+ * one or more filters). Filters living in the same bucket are guaranteed to
+ * share at least one of their tokens (appearing in the pattern). For example:
+ *
+ * - Bucket 1 (ads):
+ * - /ads.js
+ * - /script/ads/tracking.js
+ * - /ads/
+ * - Bucket 2 (tracking)
+ * - /tracking.js
+ * - ||tracking.com/cdn
+ *
+ * We see that filters in "Bucket 1" are indexed using the token "ads" and
+ * "Bucket 2" using token "tracking".
+ *
+ * This property allows to quickly discard most of the filters when we match a
+ * URL. To achieve this, the URL is tokenized in the same way filters are
+ * tokenized and for each token, we check if there are some filters available.
+ *
+ * For example:
+ *
+ * URL "https://tracking.com/" has the following tokens: "https", "tracking"
+ * and "com". We immediatly see that we only check the two filters in the
+ * "tracking" bucket since they are the only ones having a common token with
+ * the URL.
+ *
+ * How do we pick the token for each filter?
+ * =========================================
+ *
+ * Each filter is only indexed *once*, which means that we need to pick one of
+ * the tokens appearing in the pattern. We choose the token such that each
+ * filter is indexed using the token which was the *least seen* globally. In
+ * other words, we pick the most discriminative token for each filter. This is
+ * done using the following algorithm:
+ * 1. Tokenize all the filters which will be stored in the index
+ * 2. Compute a histogram of frequency of each token (globally)
+ * 3. Select the best token for each filter (lowest frequency)
+ */
+class ReverseIndex {
+ static deserialize(buffer, deserialize, optimize, config) {
+ const tokensLookupIndexSize = buffer.getUint32();
+ const bucketsIndexSize = buffer.getUint32();
+ const numberOfFilters = buffer.getUint32();
+ // Alignement to 4 bytes is important here since `view` (Uint8Array) can
+ // appear at any offset of `buffer`. But to be sure we can read back
+ // Uint32Array directly from raw buffer, the alignement has to be a
+ // multiple of 4. The same alignement is taken care of in `serialize`.
+ const view = data_view_1.StaticDataView.fromUint8Array(buffer.getBytes(true /* align */), config);
+ const tokensLookupIndex = view.getUint32ArrayView(tokensLookupIndexSize);
+ const bucketsIndex = view.getUint32ArrayView(bucketsIndexSize);
+ const filtersIndexStart = view.pos;
+ view.seekZero(); // not strictly needed but make sure reverse index can be compared with deep equal
+ return new ReverseIndex({
+ config,
+ deserialize,
+ filters: [],
+ optimize,
+ }).updateInternals({
+ bucketsIndex,
+ filtersIndexStart,
+ numberOfFilters,
+ tokensLookupIndex,
+ view,
+ });
+ }
+ constructor({ deserialize, filters, optimize, config, }) {
+ // Internal, compact representation of the reverse index. It contains three
+ // distinct parts stored in the same typed array:
+ //
+ // 1. "tokens lookup index" allows to identify a sub-set of buckets which
+ // likely contain filters for a given token. It is an approximate dispatch
+ // table which maps a mask of N bits (N being smaller than 31 bits, the size
+ // of a token) to a list of buckets having a 'token' sharing these same N
+ // bits sub-set. If the binary representation of the token for bucket1 is
+ // 101010 and suffix has size 3, then we would lookup the "tokens lookup
+ // index" using the last 3 bits "010" which would give us the offset in our
+ // typed array where we can start reading the filters of buckets having a
+ // token ending with the same 3 bits. The value of N is always a power of 2
+ // depending on the total number of filters stored in the index; determined
+ // at the time `update(...)` is called.
+ //
+ // 2. "buckets index" is an array which associates tokens to filters. The
+ // structure is: token, filter, token, filter, etc. To identify all the
+ // filters indexed with 'token' a naive approach would be to iterate on
+ // "buckets index" and collect all the filters indexed with 'token'. This
+ // would be *very inefficient*! To make this process faster, filters in
+ // "buckets index" are grouped so that buckets sharing the same suffix of N
+ // bits in their indexing token (see "tokens lookup index") are stored side
+ // by side in the typed array. To know where this section start given a
+ // particular token, we use "tokens lookup index" which associated the suffix
+ // of size N to an index in "buckets index". From there we can iterate on the
+ // candidates.
+ //
+ // 3. "filters index" contains the filters themselves. "buckets index"
+ // presented earlier does not contain filters, but an index to the "filters
+ // index". This allows a filter to be indexed multiple times without
+ // introducing any overhead; the filter can be associated with multiple
+ // tokens in "buckets index" (each pointing to the same place in "filters
+ // index") but its actual representation is stored only once in "filters
+ // index".
+ this.bucketsIndex = data_view_1.EMPTY_UINT32_ARRAY;
+ this.filtersIndexStart = 0;
+ this.numberOfFilters = 0;
+ this.tokensLookupIndex = data_view_1.EMPTY_UINT32_ARRAY;
+ // In-memory cache used to keep track of buckets which have been loaded from
+ // the compact representation (i.e.: this.view). It is not strictly necessary
+ // but will speed-up retrival of popular filters (since we do not have to
+ // perform the lookup in "tokens index" and "buckets index" everytime).
+ this.cache = new Map();
+ this.view = data_view_1.StaticDataView.empty(config);
+ this.deserializeFilter = deserialize;
+ this.optimize = optimize;
+ this.config = config;
+ if (filters.length !== 0) {
+ this.update(filters, undefined);
+ }
+ }
+ /**
+ * Load all filters from this index in memory (i.e.: deserialize them from
+ * the byte array into NetworkFilter or CosmeticFilter instances). This is
+ * mostly useful for debugging or testing purposes.
+ */
+ getFilters() {
+ const filters = [];
+ if (this.numberOfFilters === 0) {
+ return filters;
+ }
+ // set view cursor at the start of "filters index"
+ this.view.setPos(this.filtersIndexStart);
+ for (let i = 0; i < this.numberOfFilters; i += 1) {
+ filters.push(this.deserializeFilter(this.view));
+ }
+ this.view.seekZero();
+ return filters;
+ }
+ /**
+ * Return an array of all the tokens currently used as keys of the "buckets index".
+ */
+ getTokens() {
+ const tokens = new Set();
+ for (let i = 0; i < this.bucketsIndex.length; i += 2) {
+ tokens.add(this.bucketsIndex[i]);
+ }
+ return new Uint32Array(tokens);
+ }
+ /**
+ * Estimate the number of bytes needed to serialize this instance of `ReverseIndex`.
+ */
+ getSerializedSize() {
+ // 12 = 4 bytes (tokensLookupIndex.length) + 4 bytes (bucketsIndex.length) + 4 bytes (numberOfFilters)
+ return 12 + (0, data_view_1.sizeOfBytes)(this.view.buffer, true /* align */);
+ }
+ /**
+ * Dump this index to `buffer`.
+ */
+ serialize(buffer) {
+ buffer.pushUint32(this.tokensLookupIndex.length);
+ buffer.pushUint32(this.bucketsIndex.length);
+ buffer.pushUint32(this.numberOfFilters);
+ // Aligmenent is crucial here, see comment in `deserialize` for more info.
+ buffer.pushBytes(this.view.buffer, true /* align */);
+ }
+ /**
+ * Iterate on all filters found in buckets associated with the given list of
+ * tokens. The callback is called on each of them. Early termination can be
+ * achieved if the callback returns `false`.
+ *
+ * This will not check if each filter returned would match a given request but
+ * is instead used as a list of potential candidates (much smaller than the
+ * total set of filters; typically between 5 and 10 filters will be checked).
+ */
+ iterMatchingFilters(tokens, cb) {
+ // Each request is assigned an ID so that we can keep track of the last
+ // request seen by each bucket in the reverse index. This provides a cheap
+ // way to prevent filters from being inspected more than once per request
+ // (which could happen if the same token appears more than once in the URL).
+ const requestId = getNextId();
+ for (const token of tokens) {
+ if (this.iterBucket(token, requestId, cb) === false) {
+ return;
+ }
+ }
+ // Fallback to 0 (i.e.: wildcard bucket) bucket if nothing was found before.
+ this.iterBucket(0, requestId, cb);
+ }
+ /**
+ * Re-create the internal data-structure of the reverse index *in-place*. It
+ * needs to be called with a list of new filters and optionally a list of ids
+ * (as returned by either NetworkFilter.getId() or CosmeticFilter.getId())
+ * which need to be removed from the index.
+ */
+ update(newFilters, removedFilters) {
+ // Reset internal cache on each update
+ if (this.cache.size !== 0) {
+ this.cache.clear();
+ }
+ const compression = this.config.enableCompression;
+ let totalNumberOfTokens = 0;
+ let totalNumberOfIndexedFilters = 0;
+ const filtersTokens = [];
+ // Keep track of the final size of the buckets index. `bucketsIndexSize` is
+ // the number of indexed filters, multiplied by 2 (since we store both the
+ // token a filter is indexed with and the index of the filter).
+ let bucketsIndexSize = 0;
+ // Re-use the current size of "filters index" as a starting point so that
+ // we only need to update with new or removed filters. This saves time if
+ // we perform a small update on an existing index.
+ let estimatedBufferSize = this.view.buffer.byteLength - this.filtersIndexStart;
+ // Create a list of all filters which will be part of the index. This means
+ // loading existing filters, removing the ones that need to be deleted and
+ // adding the new ones. At the same time, we update the estimation of
+ // buffer size needed to store this index.
+ let filters = this.getFilters();
+ if (filters.length !== 0) {
+ // If there is at least one existing filter, then we check if some should
+ // be removed. We subtract their size from the total estimated buffer
+ // size.
+ if (removedFilters !== undefined && removedFilters.size !== 0) {
+ filters = filters.filter((f) => {
+ if (removedFilters.has(f.getId())) {
+ estimatedBufferSize -= f.getSerializedSize(compression);
+ return false;
+ }
+ return true;
+ });
+ }
+ // Add new filters to the list and also update estimated size
+ for (const filter of newFilters) {
+ estimatedBufferSize += filter.getSerializedSize(compression);
+ filters.push(filter);
+ }
+ }
+ else {
+ // In the case where there is no existing filter in the index (happens on
+ // initialization), then we can take a fast-path and not check removed
+ // filters at all. There is also no need to copy the array of filters.
+ filters = newFilters;
+ for (const filter of newFilters) {
+ estimatedBufferSize += filter.getSerializedSize(compression);
+ }
+ }
+ // No filters given; reset to empty index and abort.
+ if (filters.length === 0) {
+ this.updateInternals({
+ bucketsIndex: data_view_1.EMPTY_UINT32_ARRAY,
+ filtersIndexStart: 0,
+ numberOfFilters: 0,
+ tokensLookupIndex: data_view_1.EMPTY_UINT32_ARRAY,
+ view: data_view_1.StaticDataView.empty(this.config),
+ });
+ return;
+ }
+ // When we run in `debug` mode, we enable fully deterministic updates of
+ // internal data-structures. To this effect, we sort all filters before
+ // insertion.
+ if (this.config.debug === true) {
+ filters.sort((f1, f2) => f1.getId() - f2.getId());
+ }
+ const histogram = new Uint32Array(Math.max(nextPow2(2 * filters.length), 256));
+ // Tokenize all filters stored in this index. And compute a histogram of
+ // tokens so that we can decide how to index each filter efficiently.
+ for (const filter of filters) {
+ // Tokenize `filter` and store the result in `filtersTokens` which will
+ // be used in the next step to select the best token for each filter.
+ const multiTokens = filter.getTokens();
+ filtersTokens.push(multiTokens);
+ // Update estimated size of "buckets index" based on number of times this
+ // particular filter will be indexed.
+ bucketsIndexSize += 2 * multiTokens.length; // token + filter index
+ totalNumberOfIndexedFilters += multiTokens.length;
+ // Each filter can be indexed more than once, so `getTokens(...)` returns
+ // multiple sets of tokens. We iterate on all of them and update the
+ // histogram for each.
+ for (const tokens of multiTokens) {
+ totalNumberOfTokens += tokens.length;
+ for (const token of tokens) {
+ histogram[token % histogram.length] += 1;
+ }
+ }
+ }
+ // Add size of bucketsIndex to total size (x4 because these are 32 bits numbers)
+ estimatedBufferSize += bucketsIndexSize * 4;
+ // Prepare "tokens index" (see documentation in constructor of `ReverseIndex` class above).
+ const tokensLookupIndexSize = Math.max(2, nextPow2(totalNumberOfIndexedFilters));
+ const mask = tokensLookupIndexSize - 1;
+ const suffixes = [];
+ for (let i = 0; i < tokensLookupIndexSize; i += 1) {
+ suffixes.push([]);
+ }
+ // Add size of tokensLookupIndex to total size (x4 because these are 32 bits numbers)
+ estimatedBufferSize += tokensLookupIndexSize * 4;
+ // At this point we know the number of bytes needed for the compact
+ // representation of this reverse index ("tokens index" + "buckets index" +
+ // "filters index"). We allocate it at once and proceed with populating it.
+ const buffer = data_view_1.StaticDataView.allocate(estimatedBufferSize, this.config);
+ const tokensLookupIndex = buffer.getUint32ArrayView(tokensLookupIndexSize);
+ const bucketsIndex = buffer.getUint32ArrayView(bucketsIndexSize);
+ const filtersIndexStart = buffer.getPos();
+ // For each filter, find the best token (least seen) based on histogram.
+ // Since we are iterating again on the filters, we populate "filters index"
+ // in the same loop and keep track of their indices so that we can later
+ // populate "buckets index".
+ for (let i = 0; i < filtersTokens.length; i += 1) {
+ const filter = filters[i];
+ const multiTokens = filtersTokens[i];
+ // Serialize this filter and keep track of its index in the byte array;
+ // it will be used in "buckets index" to point to this filter.
+ const filterIndex = buffer.pos;
+ filter.serialize(buffer);
+ // Index the filter once per "tokens"
+ for (const tokens of multiTokens) {
+ // Find best token (least seen) from `tokens` using `histogram`.
+ let bestToken = 0; // default = wildcard bucket
+ let minCount = totalNumberOfTokens + 1;
+ for (const token of tokens) {
+ const tokenCount = histogram[token % histogram.length];
+ if (tokenCount < minCount) {
+ minCount = tokenCount;
+ bestToken = token;
+ // Fast path, if the current token has only been seen once, we can
+ // stop iterating since we will not find a better alternarive!
+ if (minCount === 1) {
+ break;
+ }
+ }
+ }
+ // `bestToken & mask` represents the N last bits of `bestToken`. We
+ // group all filters indexed with a token sharing the same N bits.
+ suffixes[bestToken & mask].push([bestToken, filterIndex]);
+ }
+ }
+ // Populate "tokens index" and "buckets index" based on best token found for each filter.
+ let indexInBucketsIndex = 0;
+ for (let i = 0; i < tokensLookupIndexSize; i += 1) {
+ const filtersForMask = suffixes[i];
+ tokensLookupIndex[i] = indexInBucketsIndex;
+ for (const [token, filterIndex] of filtersForMask) {
+ bucketsIndex[indexInBucketsIndex++] = token;
+ bucketsIndex[indexInBucketsIndex++] = filterIndex;
+ }
+ }
+ // Update internals
+ buffer.seekZero();
+ this.updateInternals({
+ bucketsIndex,
+ filtersIndexStart,
+ numberOfFilters: filtersTokens.length,
+ tokensLookupIndex,
+ view: buffer,
+ });
+ }
+ updateInternals({ bucketsIndex, filtersIndexStart, numberOfFilters, tokensLookupIndex, view, }) {
+ this.bucketsIndex = bucketsIndex;
+ this.filtersIndexStart = filtersIndexStart;
+ this.numberOfFilters = numberOfFilters;
+ this.tokensLookupIndex = tokensLookupIndex;
+ this.view = view;
+ view.seekZero();
+ return this;
+ }
+ /**
+ * If a bucket exists for the given token, call the callback on each filter
+ * found inside. An early termination mechanism is built-in, to stop iterating
+ * as soon as `false` is returned from the callback.
+ */
+ iterBucket(token, requestId, cb) {
+ let bucket = this.config.enableInMemoryCache === true ? this.cache.get(token) : undefined;
+ // Lazily create bucket if it does not yet exist in memory. Lookup the
+ // compact bucket representation and find all filters being associated with
+ // `token`. Create a `Bucket` out of them and store them in cache.
+ if (bucket === undefined) {
+ const offset = token & (this.tokensLookupIndex.length - 1);
+ const startOfBucket = this.tokensLookupIndex[offset];
+ // We do not have any filters for this token
+ if (startOfBucket === EMPTY_BUCKET) {
+ return true;
+ }
+ // Since we do not store explicitly the number of filters in each
+ // "bucket", we check the index of the next one and use it to infer the
+ // number of filters (each filter being stored as a token + index to the
+ // "filters store")
+ const endOfBucket = offset === this.tokensLookupIndex.length - 1
+ ? this.bucketsIndex.length
+ : this.tokensLookupIndex[offset + 1];
+ // Get indices of filters indexed with `token`, if any.
+ const filtersIndices = [];
+ for (let i = startOfBucket; i < endOfBucket; i += 2) {
+ const currentToken = this.bucketsIndex[i];
+ if (currentToken === token) {
+ filtersIndices.push(this.bucketsIndex[i + 1]);
+ }
+ }
+ // No filter indexed with `token`.
+ if (filtersIndices.length === 0) {
+ return true; // continue looking for a match
+ }
+ // If we have filters for `token` then deserialize filters in memory and
+ // create a `Bucket` instance to hold them for future access.
+ const filters = [];
+ const view = this.view;
+ for (let i = 0; i < filtersIndices.length; i += 1) {
+ view.setPos(filtersIndices[i]);
+ filters.push(this.deserializeFilter(view));
+ }
+ // Create new bucket with found filters (only optimize if we have more
+ // than one filter).
+ bucket = {
+ filters: filters.length > 1 ? this.optimize(filters) : filters,
+ lastRequestSeen: -1, // safe because all ids are positive
+ };
+ if (this.config.enableInMemoryCache === true) {
+ this.cache.set(token, bucket);
+ }
+ }
+ // Look for matching filter in this bucket
+ if (bucket.lastRequestSeen !== requestId) {
+ bucket.lastRequestSeen = requestId;
+ const filters = bucket.filters;
+ for (let i = 0; i < filters.length; i += 1) {
+ // Break the loop if the callback returns `false`
+ if (cb(filters[i]) === false) {
+ // Whenever we get a match from a filter, we also swap it one
+ // position up in the list. This way, over time, popular filters will
+ // be first and might match earlier. This should decrease the time
+ // needed to get a match.
+ if (i > 0) {
+ const filter = filters[i];
+ filters[i] = filters[i - 1];
+ filters[i - 1] = filter;
+ }
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+}
+exports.default = ReverseIndex;
+//# sourceMappingURL=reverse-index.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js.map
new file mode 100644
index 0000000..8457629
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/engine/reverse-index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"reverse-index.js","sourceRoot":"","sources":["../../../../src/engine/reverse-index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js
new file mode 100644
index 0000000..b3d9949
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js
@@ -0,0 +1,96 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EventEmitter = void 0;
+const queue_microtask_1 = require("./queue-microtask");
+/**
+ * Add `callback` listener for `event` in `listeners` Map.
+ */
+function registerCallback(event, callback, listeners) {
+ let listenersForEvent = listeners.get(event);
+ if (listenersForEvent === undefined) {
+ listenersForEvent = [];
+ listeners.set(event, listenersForEvent);
+ }
+ listenersForEvent.push(callback);
+}
+/**
+ * Remove `callback` listener for `event` from `listeners` Map.
+ */
+function unregisterCallback(event, callback, listeners) {
+ const listenersForEvent = listeners.get(event);
+ if (listenersForEvent !== undefined) {
+ const indexOfCallback = listenersForEvent.indexOf(callback);
+ if (indexOfCallback !== -1) {
+ listenersForEvent.splice(indexOfCallback, 1);
+ }
+ }
+}
+/**
+ * Call all registered listeners for `event` with `args` as arguments. Return
+ * `true` if at least one callback was registered and `false` otherwise.
+ */
+function triggerCallback(event, args, listeners) {
+ // Fast-path for cases where no listener is registered
+ if (listeners.size === 0) {
+ return false;
+ }
+ const listenersForEvent = listeners.get(event);
+ if (listenersForEvent !== undefined) {
+ (0, queue_microtask_1.queueMicrotask)(() => {
+ for (const listener of listenersForEvent) {
+ listener(...args);
+ }
+ });
+ return true;
+ }
+ return false;
+}
+/**
+ * Simple and efficient `EventEmitter` abstraction (following conventions from
+ * Node.js) allowing partially typed event emitting. The set of event names is
+ * specified as a type parameter while instantiating the event emitter.
+ */
+class EventEmitter {
+ constructor() {
+ this.onceListeners = new Map();
+ this.onListeners = new Map();
+ }
+ /**
+ * Register an event listener for `event`.
+ */
+ on(event, callback) {
+ registerCallback(event, callback, this.onListeners);
+ }
+ /**
+ * Register an event listener for `event`; but only listen to first instance
+ * of this event. The listener is automatically deleted afterwards.
+ */
+ once(event, callback) {
+ registerCallback(event, callback, this.onceListeners);
+ }
+ /**
+ * Remove `callback` from list of listeners for `event`.
+ */
+ unsubscribe(event, callback) {
+ unregisterCallback(event, callback, this.onListeners);
+ unregisterCallback(event, callback, this.onceListeners);
+ }
+ /**
+ * Emit an event. Call all registered listeners to this event.
+ */
+ emit(event, ...args) {
+ triggerCallback(event, args, this.onListeners);
+ if (triggerCallback(event, args, this.onceListeners) === true) {
+ this.onceListeners.delete(event);
+ }
+ }
+}
+exports.EventEmitter = EventEmitter;
+//# sourceMappingURL=events.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js.map
new file mode 100644
index 0000000..152fa64
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/events.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/events.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,uDAAmD;AAcnD;;GAEG;AACH,SAAS,gBAAgB,CACvB,KAAiB,EACjB,QAAuB,EACvB,SAAqC;IAErC,IAAI,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE7C,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,iBAAiB,GAAG,EAAE,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;KACzC;IAED,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAAiB,EACjB,QAAuB,EACvB,SAAqC;IAErC,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,MAAM,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;YAC1B,iBAAiB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;SAC9C;KACF;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,KAAiB,EACjB,IAAW,EACX,SAAqC;IAErC,sDAAsD;IACtD,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,IAAA,gCAAc,EAAC,GAAG,EAAE;YAClB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;gBACxC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAa,YAAY;IAAzB;QACU,kBAAa,GAA+B,IAAI,GAAG,EAAE,CAAC;QACtD,gBAAW,GAA+B,IAAI,GAAG,EAAE,CAAC;IAkC9D,CAAC;IAhCC;;OAEG;IACI,EAAE,CAAC,KAAiB,EAAE,QAAuB;QAClD,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACI,IAAI,CAAC,KAAiB,EAAE,QAAuB;QACpD,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,KAAiB,EAAE,QAAuB;QAC3D,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,KAAiB,EAAE,GAAG,IAAW;QAC3C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC;IACH,CAAC;CACF;AApCD,oCAoCC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js
new file mode 100644
index 0000000..2d4882e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js
@@ -0,0 +1,78 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fetchResources = exports.fetchLists = exports.fullLists = exports.adsAndTrackingLists = exports.adsLists = exports.fetchWithRetry = void 0;
+/**
+ * Built-in fetch helpers can be used to initialize the adblocker from
+ * pre-built presets or raw lists (fetched from multiple sources). In case of
+ * failure (e.g. timeout), the whole process of initialization fails. Timeouts
+ * are not so uncommon, and retrying to fetch usually succeeds.
+ */
+function fetchWithRetry(fetch, url) {
+ let retry = 3;
+ // Wrap `fetch` into a lightweight retry function which makes sure that if
+ // fetching fails, it can be retried up to three times. Failure can happen if
+ // the remote server times-out, but retrying fetching of the same URL will
+ // usually succeed.
+ const fetchWrapper = () => {
+ return fetch(url).catch((ex) => {
+ if (retry > 0) {
+ retry -= 1;
+ return new Promise((resolve, reject) => {
+ setTimeout(() => {
+ fetchWrapper().then(resolve).catch(reject);
+ }, 500);
+ });
+ }
+ throw ex;
+ });
+ };
+ return fetchWrapper();
+}
+exports.fetchWithRetry = fetchWithRetry;
+function fetchResource(fetch, url) {
+ return fetchWithRetry(fetch, url).then((response) => response.text());
+}
+const PREFIX = 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';
+exports.adsLists = [
+ `${PREFIX}/easylist/easylist.txt`,
+ `${PREFIX}/easylist/easylistgermany.txt`,
+ `${PREFIX}/peter-lowe/serverlist.txt`,
+ `${PREFIX}/ublock-origin/annoyances.txt`,
+ `${PREFIX}/ublock-origin/badware.txt`,
+ `${PREFIX}/ublock-origin/filters.txt`,
+ `${PREFIX}/ublock-origin/filters-2020.txt`,
+ `${PREFIX}/ublock-origin/filters-2021.txt`,
+ `${PREFIX}/ublock-origin/filters-2022.txt`,
+ `${PREFIX}/ublock-origin/filters-2023.txt`,
+ `${PREFIX}/ublock-origin/resource-abuse.txt`,
+ `${PREFIX}/ublock-origin/unbreak.txt`,
+];
+exports.adsAndTrackingLists = [
+ ...exports.adsLists,
+ `${PREFIX}/easylist/easyprivacy.txt`,
+ `${PREFIX}/ublock-origin/privacy.txt`,
+];
+exports.fullLists = [...exports.adsAndTrackingLists, `${PREFIX}/easylist/easylist-cookie.txt`];
+/**
+ * Fetch latest version of enabledByDefault blocking lists.
+ */
+function fetchLists(fetch, urls) {
+ return Promise.all(urls.map((url) => fetchResource(fetch, url)));
+}
+exports.fetchLists = fetchLists;
+/**
+ * Fetch latest version of uBlock Origin's resources, used to inject scripts in
+ * the page or redirect request to data URLs.
+ */
+function fetchResources(fetch) {
+ return fetchResource(fetch, `${PREFIX}/ublock-origin/resources.txt`);
+}
+exports.fetchResources = fetchResources;
+//# sourceMappingURL=fetch.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js.map
new file mode 100644
index 0000000..12f97f4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/fetch.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/fetch.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAUH;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,KAAY,EAAE,GAAW;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,mBAAmB;IACnB,MAAM,YAAY,GAAG,GAA2B,EAAE;QAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7B,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,UAAU,CAAC,GAAG,EAAE;wBACd,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC7C,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;aACJ;YAED,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAvBD,wCAuBC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,GAAW;IAC9C,OAAO,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,MAAM,GACV,wFAAwF,CAAC;AAE9E,QAAA,QAAQ,GAAG;IACtB,GAAG,MAAM,wBAAwB;IACjC,GAAG,MAAM,+BAA+B;IACxC,GAAG,MAAM,4BAA4B;IACrC,GAAG,MAAM,+BAA+B;IACxC,GAAG,MAAM,4BAA4B;IACrC,GAAG,MAAM,4BAA4B;IACrC,GAAG,MAAM,iCAAiC;IAC1C,GAAG,MAAM,iCAAiC;IAC1C,GAAG,MAAM,iCAAiC;IAC1C,GAAG,MAAM,iCAAiC;IAC1C,GAAG,MAAM,mCAAmC;IAC5C,GAAG,MAAM,4BAA4B;CACtC,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,GAAG,gBAAQ;IACX,GAAG,MAAM,2BAA2B;IACpC,GAAG,MAAM,4BAA4B;CACtC,CAAC;AAEW,QAAA,SAAS,GAAG,CAAC,GAAG,2BAAmB,EAAE,GAAG,MAAM,+BAA+B,CAAC,CAAC;AAE5F;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAY,EAAE,IAAc;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAFD,gCAEC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAY;IACzC,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,MAAM,8BAA8B,CAAC,CAAC;AACvE,CAAC;AAFD,wCAEC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js
new file mode 100644
index 0000000..76045b0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js
@@ -0,0 +1,701 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DEFAULT_HIDDING_STYLE = void 0;
+const adblocker_extended_selectors_1 = require("@cliqz/adblocker-extended-selectors");
+const domains_1 = require("../engine/domains");
+const data_view_1 = require("../data-view");
+const request_1 = require("../request");
+const utils_1 = require("../utils");
+const html_filtering_1 = require("../html-filtering");
+const EMPTY_TOKENS = [data_view_1.EMPTY_UINT32_ARRAY];
+exports.DEFAULT_HIDDING_STYLE = 'display: none !important;';
+const REGEXP_UNICODE_COMMA = new RegExp(/\\u002C/, 'g');
+const REGEXP_UNICODE_BACKSLASH = new RegExp(/\\u005C/, 'g');
+/**
+ * Given a `selector` starting with either '#' or '.' check if what follows is
+ * a simple CSS selector: /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/
+ */
+function isSimpleSelector(selector) {
+ for (let i = 1; i < selector.length; i += 1) {
+ const code = selector.charCodeAt(i);
+ if (!(code === 45 /* '-' */ ||
+ code === 95 /* '_' */ ||
+ (code >= 48 && code <= 57) /* [0-9] */ ||
+ (code >= 65 && code <= 90) /* [A-Z] */ ||
+ (code >= 97 && code <= 122)) /* [a-z] */) {
+ if (i < selector.length - 1) {
+ // Check if what follows is a ' >' or ' ~' or ' +', in which case we
+ // also consider it a simple selector and the token this filter can be
+ // indexed with is the first selector.
+ const nextCode = selector.charCodeAt(i + 1);
+ if (code === 91 /* '[' */ ||
+ code === 46 /* '.' */ ||
+ code === 58 /* ':' */ ||
+ (code === 32 /* ' ' */ &&
+ (nextCode === 62 /* '>' */ ||
+ nextCode === 43 /* '+' */ ||
+ nextCode === 126 /* '~' */ ||
+ nextCode === 46 /* '.' */ ||
+ nextCode === 35)) /* '#' */) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+ return true;
+}
+/**
+ * Given a `selector` starting with either 'a[' or '[', check if what follows
+ * is a simple href attribute selector of the form: 'href^=' or 'href*='.
+ */
+function isSimpleHrefSelector(selector, start) {
+ return (selector.startsWith('href^="', start) ||
+ selector.startsWith('href*="', start) ||
+ selector.startsWith('href="', start));
+}
+/**
+ * Validate CSS selector. There is a fast path for simple selectors (e.g.: #foo
+ * or .bar) which are the most common case. For complex ones, we rely on
+ * `Element.matches` (if available).
+ */
+const isValidCss = (() => {
+ const div = typeof document !== 'undefined'
+ ? document.createElement('div')
+ : {
+ matches: () => {
+ /* noop */
+ },
+ };
+ const matches = (selector) => div.matches(selector);
+ const validSelectorRe = /^[#.]?[\w-.]+$/;
+ return function isValidCssImpl(selector) {
+ if (validSelectorRe.test(selector)) {
+ return true;
+ }
+ try {
+ matches(selector);
+ }
+ catch (ex) {
+ return false;
+ }
+ return true;
+ };
+})();
+function computeFilterId(mask, selector, domains, style) {
+ let hash = (5437 * 33) ^ mask;
+ if (selector !== undefined) {
+ for (let i = 0; i < selector.length; i += 1) {
+ hash = (hash * 33) ^ selector.charCodeAt(i);
+ }
+ }
+ if (domains !== undefined) {
+ hash = domains.updateId(hash);
+ }
+ if (style !== undefined) {
+ for (let i = 0; i < style.length; i += 1) {
+ hash = (hash * 33) ^ style.charCodeAt(i);
+ }
+ }
+ return hash >>> 0;
+}
+/***************************************************************************
+ * Cosmetic filters parsing
+ * ************************************************************************ */
+class CosmeticFilter {
+ /**
+ * Given a line that we know contains a cosmetic filter, create a CosmeticFiler
+ * instance out of it. This function should be *very* efficient, as it will be
+ * used to parse tens of thousands of lines.
+ */
+ static parse(line, debug = false) {
+ const rawLine = line;
+ // Mask to store attributes. Each flag (unhide, scriptInject, etc.) takes
+ // only 1 bit at a specific offset defined in COSMETICS_MASK.
+ // cf: COSMETICS_MASK for the offset of each property
+ let mask = 0;
+ let selector;
+ let domains;
+ let style;
+ const sharpIndex = line.indexOf('#');
+ // Start parsing the line
+ const afterSharpIndex = sharpIndex + 1;
+ let suffixStartIndex = afterSharpIndex + 1;
+ // hostname1,hostname2#?#.selector
+ // hostname1,hostname2#@#.selector
+ // ^^ ^
+ // || |
+ // || suffixStartIndex
+ // |afterSharpIndex
+ // sharpIndex
+ // Check if unhide
+ if (line.length > afterSharpIndex) {
+ if (line[afterSharpIndex] === '@') {
+ mask = (0, utils_1.setBit)(mask, 1 /* COSMETICS_MASK.unhide */);
+ suffixStartIndex += 1;
+ }
+ else if (line[afterSharpIndex] === '?') {
+ suffixStartIndex += 1;
+ }
+ }
+ if (suffixStartIndex >= line.length) {
+ return null;
+ }
+ // Parse hostnames and entitites as well as their negations.
+ //
+ // - ~hostname##.selector
+ // - hostname##.selector
+ // - entity.*##.selector
+ // - ~entity.*##.selector
+ //
+ // Each kind will have its own Uint32Array containing hashes, sorted by
+ // number of labels considered. This allows a compact representation of
+ // hostnames and fast matching without any string copy.
+ if (sharpIndex > 0) {
+ domains = domains_1.Domains.parse(line.slice(0, sharpIndex).split(','), debug);
+ }
+ if (line.endsWith(':remove()')) {
+ // ##selector:remove()
+ mask = (0, utils_1.setBit)(mask, 64 /* COSMETICS_MASK.remove */);
+ mask = (0, utils_1.setBit)(mask, 128 /* COSMETICS_MASK.extended */);
+ line = line.slice(0, -9);
+ }
+ else if (line.length - suffixStartIndex >= 8 &&
+ line.endsWith(')') &&
+ line.indexOf(':style(', suffixStartIndex) !== -1) {
+ // ##selector:style(...)
+ const indexOfStyle = line.indexOf(':style(', suffixStartIndex);
+ style = line.slice(indexOfStyle + 7, -1);
+ line = line.slice(0, indexOfStyle);
+ }
+ // Deal with HTML filters
+ if (line.charCodeAt(suffixStartIndex) === 94 /* '^' */) {
+ if ((0, utils_1.fastStartsWithFrom)(line, 'script:has-text(', suffixStartIndex + 1) === false ||
+ line.charCodeAt(line.length - 1) !== 41 /* ')' */) {
+ return null;
+ }
+ // NOTE: currently only ^script:has-text(...) is supported.
+ //
+ // ^script:has-text(selector)
+ // ^ ^
+ // | |
+ // | |
+ // | line.length
+ // |
+ // suffixStartIndex
+ //
+ selector = line.slice(suffixStartIndex, line.length);
+ if ((0, html_filtering_1.extractHTMLSelectorFromRule)(selector) === undefined) {
+ return null;
+ }
+ }
+ else if (line.length - suffixStartIndex > 4 &&
+ line.charCodeAt(suffixStartIndex) === 43 /* '+' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, '+js(', suffixStartIndex)) {
+ // Generic scriptlets are invalid, unless they are un-hide
+ if ((domains === undefined ||
+ (domains.hostnames === undefined && domains.entities === undefined)) &&
+ (0, utils_1.getBit)(mask, 1 /* COSMETICS_MASK.unhide */) === false) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 2 /* COSMETICS_MASK.scriptInject */);
+ selector = line.slice(suffixStartIndex + 4, line.length - 1);
+ // An empty scriptlet (i.e. '+js()') can be specified to cancel injections
+ // on a specific domain or globally. It does not make sense though to have
+ // an empty scriptlet without an exception (i.e. '#@#' is mandatory).
+ if ((0, utils_1.getBit)(mask, 1 /* COSMETICS_MASK.unhide */) === false && selector.length === 0) {
+ return null;
+ }
+ }
+ else {
+ selector = line.slice(suffixStartIndex);
+ const selectorType = (0, adblocker_extended_selectors_1.classifySelector)(selector);
+ if (selectorType === adblocker_extended_selectors_1.SelectorType.Extended) {
+ mask = (0, utils_1.setBit)(mask, 128 /* COSMETICS_MASK.extended */);
+ }
+ else if (selectorType === adblocker_extended_selectors_1.SelectorType.Invalid || !isValidCss(selector)) {
+ // console.error('Invalid', line);
+ // TODO - maybe perform `isValidCss` from the other module.
+ return null;
+ }
+ }
+ // Extended selectors should always be specific to some domain.
+ if (domains === undefined && (0, utils_1.getBit)(mask, 128 /* COSMETICS_MASK.extended */) === true) {
+ return null;
+ }
+ if (selector !== undefined) {
+ // Check if unicode appears in selector
+ if ((0, utils_1.hasUnicode)(selector)) {
+ mask = (0, utils_1.setBit)(mask, 4 /* COSMETICS_MASK.isUnicode */);
+ }
+ // Classify selector
+ if ((0, utils_1.getBit)(mask, 2 /* COSMETICS_MASK.scriptInject */) === false &&
+ (0, utils_1.getBit)(mask, 64 /* COSMETICS_MASK.remove */) === false &&
+ (0, utils_1.getBit)(mask, 128 /* COSMETICS_MASK.extended */) === false &&
+ selector.startsWith('^') === false) {
+ const c0 = selector.charCodeAt(0);
+ const c1 = selector.charCodeAt(1);
+ const c2 = selector.charCodeAt(2);
+ // Check if we have a specific case of simple selector (id, class or
+ // href) These are the most common filters and will benefit greatly from
+ // a custom dispatch mechanism.
+ if ((0, utils_1.getBit)(mask, 2 /* COSMETICS_MASK.scriptInject */) === false) {
+ if (c0 === 46 /* '.' */ && isSimpleSelector(selector)) {
+ mask = (0, utils_1.setBit)(mask, 8 /* COSMETICS_MASK.isClassSelector */);
+ }
+ else if (c0 === 35 /* '#' */ && isSimpleSelector(selector)) {
+ mask = (0, utils_1.setBit)(mask, 16 /* COSMETICS_MASK.isIdSelector */);
+ }
+ else if (c0 === 97 /* a */ &&
+ c1 === 91 /* '[' */ &&
+ c2 === 104 /* 'h' */ &&
+ isSimpleHrefSelector(selector, 2)) {
+ mask = (0, utils_1.setBit)(mask, 32 /* COSMETICS_MASK.isHrefSelector */);
+ }
+ else if (c0 === 91 /* '[' */ &&
+ c1 === 104 /* 'h' */ &&
+ isSimpleHrefSelector(selector, 1)) {
+ mask = (0, utils_1.setBit)(mask, 32 /* COSMETICS_MASK.isHrefSelector */);
+ }
+ }
+ }
+ }
+ return new CosmeticFilter({
+ mask,
+ rawLine: debug === true ? rawLine : undefined,
+ selector,
+ style,
+ domains,
+ });
+ }
+ /**
+ * Deserialize cosmetic filters. The code accessing the buffer should be
+ * symetrical to the one in `serializeCosmeticFilter`.
+ */
+ static deserialize(buffer) {
+ const mask = buffer.getUint8();
+ const isUnicode = (0, utils_1.getBit)(mask, 4 /* COSMETICS_MASK.isUnicode */);
+ const optionalParts = buffer.getUint8();
+ const selector = isUnicode ? buffer.getUTF8() : buffer.getCosmeticSelector();
+ // The order of these fields should be the same as when we serialize them.
+ return new CosmeticFilter({
+ // Mandatory fields
+ mask,
+ selector,
+ // Optional fields
+ domains: (optionalParts & 1) === 1 ? domains_1.Domains.deserialize(buffer) : undefined,
+ rawLine: (optionalParts & 2) === 2 ? buffer.getRawCosmetic() : undefined,
+ style: (optionalParts & 4) === 4 ? buffer.getASCII() : undefined,
+ });
+ }
+ constructor({ mask, selector, domains, rawLine, style, }) {
+ this.mask = mask;
+ this.selector = selector;
+ this.domains = domains;
+ this.style = style;
+ this.id = undefined;
+ this.rawLine = rawLine;
+ }
+ isCosmeticFilter() {
+ return true;
+ }
+ isNetworkFilter() {
+ return false;
+ }
+ /**
+ * The format of a cosmetic filter is:
+ *
+ * | mask | selector length | selector... | hostnames length | hostnames...
+ * 32 16 16
+ *
+ * The header (mask) is 32 bits, then we have a total of 32 bits to store the
+ * length of `selector` and `hostnames` (16 bits each).
+ *
+ * Improvements similar to the onces mentioned in `serializeNetworkFilters`
+ * could be applied here, to get a more compact representation.
+ */
+ serialize(buffer) {
+ // Mandatory fields
+ buffer.pushUint8(this.mask);
+ const index = buffer.getPos();
+ buffer.pushUint8(0);
+ if (this.isUnicode()) {
+ buffer.pushUTF8(this.selector);
+ }
+ else {
+ buffer.pushCosmeticSelector(this.selector);
+ }
+ // This bit-mask indicates which optional parts of the filter were serialized.
+ let optionalParts = 0;
+ if (this.domains !== undefined) {
+ optionalParts |= 1;
+ this.domains.serialize(buffer);
+ }
+ if (this.rawLine !== undefined) {
+ optionalParts |= 2;
+ buffer.pushRawCosmetic(this.rawLine);
+ }
+ if (this.style !== undefined) {
+ optionalParts |= 4;
+ buffer.pushASCII(this.style);
+ }
+ buffer.setByte(index, optionalParts);
+ }
+ /**
+ * Return an estimation of the size (in bytes) needed to persist this filter
+ * in a DataView. This does not need to be 100% accurate but should be an
+ * upper-bound. It should also be as fast as possible.
+ */
+ getSerializedSize(compression) {
+ let estimate = 1 + 1; // mask (1 byte) + optional parts (1 byte)
+ if (this.isUnicode()) {
+ estimate += (0, data_view_1.sizeOfUTF8)(this.selector);
+ }
+ else {
+ estimate += (0, data_view_1.sizeOfCosmeticSelector)(this.selector, compression);
+ }
+ if (this.domains !== undefined) {
+ estimate += this.domains.getSerializedSize();
+ }
+ if (this.rawLine !== undefined) {
+ estimate += (0, data_view_1.sizeOfRawCosmetic)(this.rawLine, compression);
+ }
+ if (this.style !== undefined) {
+ estimate += (0, data_view_1.sizeOfASCII)(this.style);
+ }
+ return estimate;
+ }
+ /**
+ * Create a more human-readable version of this filter. It is mainly used for
+ * debugging purpose, as it will expand the values stored in the bit mask.
+ */
+ toString() {
+ if (this.rawLine !== undefined) {
+ return this.rawLine;
+ }
+ let filter = '';
+ if (this.domains !== undefined) {
+ if (this.domains.parts !== undefined) {
+ filter += this.domains.parts;
+ }
+ else {
+ filter += '<hostnames>';
+ }
+ }
+ if (this.isUnhide()) {
+ filter += '#@#';
+ }
+ else {
+ filter += '##';
+ }
+ if (this.isScriptInject()) {
+ filter += '+js(';
+ filter += this.selector;
+ filter += ')';
+ }
+ else {
+ filter += this.selector;
+ }
+ return filter;
+ }
+ match(hostname, domain) {
+ // Not constraint on hostname, match is true
+ if (this.hasHostnameConstraint() === false) {
+ return true;
+ }
+ // No `hostname` available but this filter has some constraints on hostname.
+ if (!hostname && this.hasHostnameConstraint()) {
+ return false;
+ }
+ if (this.domains !== undefined) {
+ // TODO - this hashing could be re-used between cosmetics by using an
+ // abstraction like `Request` (similar to network filters matching).
+ // Maybe could we reuse `Request` directly without any change?
+ return this.domains.match(hostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : (0, request_1.getHostnameHashesFromLabelsBackward)(hostname, domain), hostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : (0, request_1.getEntityHashesFromLabelsBackward)(hostname, domain));
+ }
+ return true;
+ }
+ /**
+ * Get tokens for this filter. It can be indexed multiple times if multiple
+ * hostnames are specified (e.g.: host1,host2##.selector).
+ */
+ getTokens() {
+ const tokens = [];
+ // Note, we do not need to use negated domains or entities as tokens here
+ // since they will by definition not match on their own, unless accompanied
+ // by a domain or entity. Instead, they are handled in
+ // `CosmeticFilterBucket.getCosmeticsFilters(...)`.
+ if (this.domains !== undefined) {
+ const { hostnames, entities } = this.domains;
+ if (hostnames !== undefined) {
+ for (const hostname of hostnames) {
+ tokens.push(new Uint32Array([hostname]));
+ }
+ }
+ if (entities !== undefined) {
+ for (const entity of entities) {
+ tokens.push(new Uint32Array([entity]));
+ }
+ }
+ }
+ // Here we only take selector into account if the filter is not unHide.
+ if (tokens.length === 0 && this.isUnhide() === false) {
+ if (this.isIdSelector() || this.isClassSelector()) {
+ // Here we try to identify the end of selector si that we can extract a
+ // valid token out of it. In all these examples, 'selector' is our
+ // token:
+ //
+ // .selector[...]
+ // #selector[...]
+ // #selector ~ foo
+ // .selector:not(...)
+ // .selector.foo
+ //
+ // We now try to identify the first valid end of selector which will
+ // also be the end of our token: space, bracket, colon, dot.
+ let endOfSelector = 1;
+ const selector = this.selector;
+ for (; endOfSelector < selector.length; endOfSelector += 1) {
+ const code = selector.charCodeAt(endOfSelector);
+ if (code === 32 /* ' ' */ ||
+ code === 46 /* '.' */ ||
+ code === 58 /* ':' */ ||
+ code === 91 /* '[' */) {
+ break;
+ }
+ }
+ const arr = new Uint32Array(1);
+ arr[0] = (0, utils_1.fastHashBetween)(selector, 1, endOfSelector);
+ tokens.push(arr);
+ }
+ else if (this.isHrefSelector() === true) {
+ const selector = this.getSelector();
+ // Locate 'href' in selector
+ let hrefIndex = selector.indexOf('href');
+ if (hrefIndex === -1) {
+ return EMPTY_TOKENS;
+ }
+ hrefIndex += 4;
+ // Tokenize optimally depending on the kind of selector: 'href=',
+ // 'href*=', 'href^='.
+ let skipFirstToken = false;
+ let skipLastToken = true;
+ if (selector.charCodeAt(hrefIndex) === 42 /* '*' */) {
+ // skip: '*'
+ skipFirstToken = true;
+ hrefIndex += 1;
+ }
+ else if (selector.charCodeAt(hrefIndex) === 94 /* '^' */) {
+ // skip: '^'
+ hrefIndex += 1;
+ }
+ else {
+ skipLastToken = false;
+ }
+ hrefIndex += 2; // skip: '="'
+ // Locate end of href
+ const hrefEnd = selector.indexOf('"', hrefIndex);
+ if (hrefEnd === -1) {
+ // That cannot happen unless the filter is not well-formed. In this
+ // case, we just return no tokens, which will result in this filter
+ // ending up in the "wildcard" bucket of the index.
+ return EMPTY_TOKENS;
+ }
+ tokens.push((0, utils_1.tokenize)(this.selector.slice(hrefIndex, hrefEnd), skipFirstToken, skipLastToken));
+ }
+ }
+ if (tokens.length === 0) {
+ return EMPTY_TOKENS;
+ }
+ return tokens;
+ }
+ parseScript() {
+ const selector = this.getSelector();
+ if (selector.length === 0) {
+ return undefined;
+ }
+ const parts = [];
+ let index = 0;
+ let lastComaIndex = -1;
+ let inDoubleQuotes = false;
+ let inSingleQuotes = false;
+ let inRegexp = false;
+ let objectNesting = 0;
+ let lastCharIsBackslash = false;
+ let inArgument = false;
+ for (; index < selector.length; index += 1) {
+ const char = selector[index];
+ if (lastCharIsBackslash === false) {
+ if (inDoubleQuotes === true) {
+ if (char === '"') {
+ inDoubleQuotes = false;
+ }
+ }
+ else if (inSingleQuotes === true) {
+ if (char === "'") {
+ inSingleQuotes = false;
+ }
+ }
+ else if (objectNesting !== 0) {
+ if (char === '{') {
+ objectNesting += 1;
+ }
+ else if (char === '}') {
+ objectNesting -= 1;
+ }
+ else if (char === '"') {
+ inDoubleQuotes = true;
+ }
+ else if (char === "'") {
+ inSingleQuotes = true;
+ }
+ }
+ else if (inRegexp === true) {
+ if (char === '/') {
+ inRegexp = false;
+ }
+ }
+ else {
+ if (inArgument === false) {
+ if (char === ' ') {
+ // ignore
+ }
+ else if (char === '"' && selector.indexOf('"', index + 1) > 0) {
+ inDoubleQuotes = true;
+ }
+ else if (char === "'" && selector.indexOf("'", index + 1) > 0) {
+ inSingleQuotes = true;
+ }
+ else if (char === '{' && selector.indexOf('}', index + 1) > 0) {
+ objectNesting += 1;
+ }
+ else if (char === '/' && selector.indexOf('/', index + 1) > 0) {
+ inRegexp = true;
+ }
+ else {
+ inArgument = true;
+ }
+ }
+ if (char === ',') {
+ parts.push(selector.slice(lastComaIndex + 1, index).trim());
+ lastComaIndex = index;
+ inArgument = false;
+ }
+ }
+ }
+ lastCharIsBackslash = char === '\\';
+ }
+ parts.push(selector.slice(lastComaIndex + 1).trim());
+ if (parts.length === 0) {
+ return undefined;
+ }
+ const args = parts
+ .slice(1)
+ .map((part) => {
+ if ((part.startsWith(`'`) && part.endsWith(`'`)) ||
+ (part.startsWith(`"`) && part.endsWith(`"`))) {
+ return part.substring(1, part.length - 1);
+ }
+ return part;
+ })
+ .map((part) => part.replace(REGEXP_UNICODE_COMMA, ',').replace(REGEXP_UNICODE_BACKSLASH, '\\'));
+ return { name: parts[0], args };
+ }
+ getScript(js) {
+ const parsed = this.parseScript();
+ if (parsed === undefined) {
+ return undefined;
+ }
+ const { name, args } = parsed;
+ let script = js.get(name);
+ if (script !== undefined) {
+ for (let i = 0; i < args.length; i += 1) {
+ // escape some characters so they wont get evaluated with escape characters during script injection
+ const arg = args[i].replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+ script = script.replace(`{{${i + 1}}}`, arg);
+ }
+ return script;
+ } // TODO - else throw an exception?
+ return undefined;
+ }
+ hasHostnameConstraint() {
+ return this.domains !== undefined;
+ }
+ getId() {
+ if (this.id === undefined) {
+ this.id = computeFilterId(this.mask, this.selector, this.domains, this.style);
+ }
+ return this.id;
+ }
+ hasCustomStyle() {
+ return this.style !== undefined;
+ }
+ getStyle() {
+ return this.style || exports.DEFAULT_HIDDING_STYLE;
+ }
+ getStyleAttributeHash() {
+ return `s${(0, utils_1.fastHash)(this.getStyle())}`;
+ }
+ getSelector() {
+ return this.selector;
+ }
+ getSelectorAST() {
+ return (0, adblocker_extended_selectors_1.parse)(this.getSelector());
+ }
+ getExtendedSelector() {
+ return (0, html_filtering_1.extractHTMLSelectorFromRule)(this.selector);
+ }
+ isExtended() {
+ return (0, utils_1.getBit)(this.mask, 128 /* COSMETICS_MASK.extended */);
+ }
+ isRemove() {
+ return (0, utils_1.getBit)(this.mask, 64 /* COSMETICS_MASK.remove */);
+ }
+ isUnhide() {
+ return (0, utils_1.getBit)(this.mask, 1 /* COSMETICS_MASK.unhide */);
+ }
+ isScriptInject() {
+ return (0, utils_1.getBit)(this.mask, 2 /* COSMETICS_MASK.scriptInject */);
+ }
+ isCSS() {
+ return this.isScriptInject() === false;
+ }
+ isIdSelector() {
+ return (0, utils_1.getBit)(this.mask, 16 /* COSMETICS_MASK.isIdSelector */);
+ }
+ isClassSelector() {
+ return (0, utils_1.getBit)(this.mask, 8 /* COSMETICS_MASK.isClassSelector */);
+ }
+ isHrefSelector() {
+ return (0, utils_1.getBit)(this.mask, 32 /* COSMETICS_MASK.isHrefSelector */);
+ }
+ isUnicode() {
+ return (0, utils_1.getBit)(this.mask, 4 /* COSMETICS_MASK.isUnicode */);
+ }
+ isHtmlFiltering() {
+ return this.getSelector().startsWith('^');
+ }
+ // A generic hide cosmetic filter is one that:
+ //
+ // * Do not have a domain specified. "Hide this element on all domains"
+ // * Have only domain exceptions specified. "Hide this element on all domains except example.com"
+ //
+ // For example: ~example.com##.ad is a generic filter as well!
+ isGenericHide() {
+ var _a, _b;
+ return ((_a = this === null || this === void 0 ? void 0 : this.domains) === null || _a === void 0 ? void 0 : _a.hostnames) === undefined && ((_b = this === null || this === void 0 ? void 0 : this.domains) === null || _b === void 0 ? void 0 : _b.entities) === undefined;
+ }
+}
+exports.default = CosmeticFilter;
+//# sourceMappingURL=cosmetic.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js.map
new file mode 100644
index 0000000..9d48586
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/cosmetic.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic.js","sourceRoot":"","sources":["../../../../src/filters/cosmetic.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js
new file mode 100644
index 0000000..bd6659c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js
@@ -0,0 +1,112 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hide = exports.block = void 0;
+class HidingBuilder {
+}
+class NetworkBuilder {
+ constructor() {
+ this.options = new Set();
+ this.prefix = undefined;
+ this.infix = undefined;
+ this.suffix = undefined;
+ this.redirect = undefined;
+ }
+ blockRequestsWithType(t) {
+ if (this.options.has(t)) {
+ throw new Error(`Already blocking type ${t}`);
+ }
+ this.options.add(t);
+ return this;
+ }
+ images() {
+ return this.blockRequestsWithType('image');
+ }
+ scripts() {
+ return this.blockRequestsWithType('script');
+ }
+ frames() {
+ return this.blockRequestsWithType('frame');
+ }
+ fonts() {
+ return this.blockRequestsWithType('font');
+ }
+ medias() {
+ return this.blockRequestsWithType('media');
+ }
+ styles() {
+ return this.blockRequestsWithType('css');
+ }
+ redirectTo(redirect) {
+ if (this.redirect !== undefined) {
+ throw new Error(`Already redirecting: ${this.redirect}`);
+ }
+ this.redirect = `redirect=${redirect}`;
+ return this;
+ }
+ urlContains(infix) {
+ if (this.infix !== undefined) {
+ throw new Error(`Already matching pattern: ${this.infix}`);
+ }
+ this.infix = infix;
+ return this;
+ }
+ urlStartsWith(prefix) {
+ if (this.prefix !== undefined) {
+ throw new Error(`Already matching prefix: ${this.prefix}`);
+ }
+ this.prefix = `|${prefix}`;
+ return this;
+ }
+ urlEndsWith(suffix) {
+ if (this.suffix !== undefined) {
+ throw new Error(`Already matching suffix: ${this.suffix}`);
+ }
+ this.suffix = `${suffix}|`;
+ return this;
+ }
+ withHostname(hostname) {
+ if (this.prefix !== undefined) {
+ throw new Error(`Cannot match hostname if filter already has prefix: ${this.prefix}`);
+ }
+ this.prefix = `||${hostname}^`;
+ return this;
+ }
+ toString() {
+ const parts = [];
+ if (this.prefix !== undefined) {
+ parts.push(this.prefix);
+ }
+ if (this.infix !== undefined) {
+ parts.push(this.infix);
+ }
+ if (this.suffix !== undefined) {
+ parts.push(this.suffix);
+ }
+ const options = ['important'];
+ if (this.options.size !== 0) {
+ for (const option of this.options) {
+ options.push(option);
+ }
+ }
+ if (this.redirect !== undefined) {
+ options.push(this.redirect);
+ }
+ return `${parts.length === 0 ? '*' : parts.join('*')}$${options.join(',')}`;
+ }
+}
+function block() {
+ return new NetworkBuilder();
+}
+exports.block = block;
+function hide() {
+ return new HidingBuilder();
+}
+exports.hide = hide;
+//# sourceMappingURL=dsl.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js.map
new file mode 100644
index 0000000..1c21d01
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/dsl.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../../../src/filters/dsl.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js
new file mode 100644
index 0000000..ace04fd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js
@@ -0,0 +1,10 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=interface.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js.map
new file mode 100644
index 0000000..7822ec9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/interface.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/filters/interface.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js
new file mode 100644
index 0000000..f2c696e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js
@@ -0,0 +1,1341 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isAnchoredByHostname = exports.normalizeRawFilterOptions = void 0;
+const domains_1 = require("../engine/domains");
+const data_view_1 = require("../data-view");
+const punycode_1 = require("../punycode");
+const request_1 = require("../request");
+const tokens_buffer_1 = require("../tokens-buffer");
+const utils_1 = require("../utils");
+const HTTP_HASH = (0, utils_1.fastHash)('http');
+const HTTPS_HASH = (0, utils_1.fastHash)('https');
+function isAllowedHostname(ch) {
+ return ((0, utils_1.isDigit)(ch) || (0, utils_1.isAlpha)(ch) || ch === 95 /* '_' */ || ch === 45 /* '-' */ || ch === 46 /* '.' */);
+}
+const NORMALIZE_OPTIONS = {
+ 'document': 'doc',
+ 'first-party': '1p',
+ 'generichide': 'ghide',
+ 'object-subrequest': 'object',
+ 'stylesheet': 'css',
+ 'subdocument': 'frame',
+ 'third-party': '3p',
+ 'xmlhttprequest': 'xhr',
+ '~first-party': '3p',
+ '~third-party': '1p',
+ 'all': '',
+};
+/**
+ * Normalize a raw filter by replacing options with their canonical forms. For
+ * example `||foo.com$stylesheet,first-party,xhr` would be normalized to
+ * `||foo.com$css,1p,xhr`.
+ */
+const REGEX = /all|~third-party|~first-party|third-party|first-party|object-subrequest|stylesheet|subdocument|xmlhttprequest|document|generichide/g;
+function normalizeRawFilterOptions(rawFilter) {
+ rawFilter = rawFilter.toLowerCase();
+ let indexOfOptions = rawFilter.lastIndexOf('$');
+ if (indexOfOptions === -1) {
+ return rawFilter;
+ }
+ // Remove trailing '*' if possible
+ if (indexOfOptions !== 0 && rawFilter[indexOfOptions - 1] === '*') {
+ rawFilter = rawFilter.slice(0, indexOfOptions - 1) + rawFilter.slice(indexOfOptions);
+ indexOfOptions -= 1;
+ }
+ // Normalize options
+ const options = rawFilter.slice(indexOfOptions + 1);
+ const normalizedOptions = options
+ .replace(REGEX, (option) => {
+ const normalized = NORMALIZE_OPTIONS[option];
+ if (normalized === undefined) {
+ return option;
+ }
+ return normalized;
+ })
+ .split(',')
+ .sort()
+ .join(',');
+ if (options === normalizedOptions) {
+ return rawFilter;
+ }
+ if (normalizedOptions === '') {
+ return rawFilter.slice(0, indexOfOptions);
+ }
+ return `${rawFilter.slice(0, indexOfOptions)}$${normalizedOptions}`;
+}
+exports.normalizeRawFilterOptions = normalizeRawFilterOptions;
+/**
+ * Mask used when a network filter can be applied on any content type.
+ */
+const FROM_ANY = 1 /* NETWORK_FILTER_MASK.fromDocument */ |
+ 2 /* NETWORK_FILTER_MASK.fromFont */ |
+ 16 /* NETWORK_FILTER_MASK.fromImage */ |
+ 32 /* NETWORK_FILTER_MASK.fromMedia */ |
+ 64 /* NETWORK_FILTER_MASK.fromObject */ |
+ 128 /* NETWORK_FILTER_MASK.fromOther */ |
+ 256 /* NETWORK_FILTER_MASK.fromPing */ |
+ 512 /* NETWORK_FILTER_MASK.fromScript */ |
+ 1024 /* NETWORK_FILTER_MASK.fromStylesheet */ |
+ 2048 /* NETWORK_FILTER_MASK.fromSubdocument */ |
+ 4096 /* NETWORK_FILTER_MASK.fromWebsocket */ |
+ 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */;
+/**
+ * Map content type value to mask the corresponding mask.
+ * ref: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy
+ */
+const REQUEST_TYPE_TO_MASK = {
+ beacon: 256 /* NETWORK_FILTER_MASK.fromPing */,
+ document: 1 /* NETWORK_FILTER_MASK.fromDocument */,
+ cspviolationreport: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ fetch: 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */,
+ font: 2 /* NETWORK_FILTER_MASK.fromFont */,
+ image: 16 /* NETWORK_FILTER_MASK.fromImage */,
+ imageset: 16 /* NETWORK_FILTER_MASK.fromImage */,
+ mainFrame: 1 /* NETWORK_FILTER_MASK.fromDocument */,
+ main_frame: 1 /* NETWORK_FILTER_MASK.fromDocument */,
+ media: 32 /* NETWORK_FILTER_MASK.fromMedia */,
+ object: 64 /* NETWORK_FILTER_MASK.fromObject */,
+ object_subrequest: 64 /* NETWORK_FILTER_MASK.fromObject */,
+ ping: 256 /* NETWORK_FILTER_MASK.fromPing */,
+ script: 512 /* NETWORK_FILTER_MASK.fromScript */,
+ stylesheet: 1024 /* NETWORK_FILTER_MASK.fromStylesheet */,
+ subFrame: 2048 /* NETWORK_FILTER_MASK.fromSubdocument */,
+ sub_frame: 2048 /* NETWORK_FILTER_MASK.fromSubdocument */,
+ webSocket: 4096 /* NETWORK_FILTER_MASK.fromWebsocket */,
+ websocket: 4096 /* NETWORK_FILTER_MASK.fromWebsocket */,
+ xhr: 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */,
+ xmlhttprequest: 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */,
+ // Other
+ cspReport: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ csp_report: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ eventsource: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ manifest: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ other: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ prefetch: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ preflight: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ signedexchange: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ speculative: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ texttrack: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ web_manifest: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ xml_dtd: 128 /* NETWORK_FILTER_MASK.fromOther */,
+ xslt: 128 /* NETWORK_FILTER_MASK.fromOther */,
+};
+function getListOfRequestTypesNegated(filter) {
+ const types = [];
+ if (filter.fromDocument() === false) {
+ types.push('document');
+ }
+ if (filter.fromImage() === false) {
+ types.push('image');
+ }
+ if (filter.fromMedia() === false) {
+ types.push('media');
+ }
+ if (filter.fromObject() === false) {
+ types.push('object');
+ }
+ if (filter.fromOther() === false) {
+ types.push('other');
+ }
+ if (filter.fromPing() === false) {
+ types.push('ping');
+ }
+ if (filter.fromScript() === false) {
+ types.push('script');
+ }
+ if (filter.fromStylesheet() === false) {
+ types.push('stylesheet');
+ }
+ if (filter.fromSubdocument() === false) {
+ types.push('sub_frame');
+ }
+ if (filter.fromWebsocket() === false) {
+ types.push('websocket');
+ }
+ if (filter.fromXmlHttpRequest() === false) {
+ types.push('xhr');
+ }
+ if (filter.fromFont() === false) {
+ types.push('font');
+ }
+ return types;
+}
+function getListOfRequestTypes(filter) {
+ const types = [];
+ if (filter.fromDocument()) {
+ types.push('document');
+ }
+ if (filter.fromImage()) {
+ types.push('image');
+ }
+ if (filter.fromMedia()) {
+ types.push('media');
+ }
+ if (filter.fromObject()) {
+ types.push('object');
+ }
+ if (filter.fromOther()) {
+ types.push('other');
+ }
+ if (filter.fromPing()) {
+ types.push('ping');
+ }
+ if (filter.fromScript()) {
+ types.push('script');
+ }
+ if (filter.fromStylesheet()) {
+ types.push('stylesheet');
+ }
+ if (filter.fromSubdocument()) {
+ types.push('sub_frame');
+ }
+ if (filter.fromWebsocket()) {
+ types.push('websocket');
+ }
+ if (filter.fromXmlHttpRequest()) {
+ types.push('xhr');
+ }
+ if (filter.fromFont()) {
+ types.push('font');
+ }
+ return types;
+}
+function computeFilterId(csp, mask, filter, hostname, domains, denyallow, redirect) {
+ let hash = (7907 * 33) ^ mask;
+ if (csp !== undefined) {
+ for (let i = 0; i < csp.length; i += 1) {
+ hash = (hash * 33) ^ csp.charCodeAt(i);
+ }
+ }
+ if (domains !== undefined) {
+ hash = domains.updateId(hash);
+ }
+ if (denyallow !== undefined) {
+ hash = denyallow.updateId(hash);
+ }
+ if (filter !== undefined) {
+ for (let i = 0; i < filter.length; i += 1) {
+ hash = (hash * 33) ^ filter.charCodeAt(i);
+ }
+ }
+ if (hostname !== undefined) {
+ for (let i = 0; i < hostname.length; i += 1) {
+ hash = (hash * 33) ^ hostname.charCodeAt(i);
+ }
+ }
+ if (redirect !== undefined) {
+ for (let i = 0; i < redirect.length; i += 1) {
+ hash = (hash * 33) ^ redirect.charCodeAt(i);
+ }
+ }
+ return hash >>> 0;
+}
+/**
+ * Compiles a filter pattern to a regex. This is only performed *lazily* for
+ * filters containing at least a * or ^ symbol. Because Regexes are expansive,
+ * we try to convert some patterns to plain filters.
+ */
+function compileRegex(filter, isLeftAnchor, isRightAnchor, isFullRegex) {
+ if (isFullRegex === true) {
+ return new RegExp(filter.slice(1, filter.length - 1), 'i');
+ }
+ // Escape special regex characters: |.$+?{}()[]\
+ filter = filter.replace(/([|.$+?{}()[\]\\])/g, '\\$1');
+ // * can match anything
+ filter = filter.replace(/\*/g, '.*');
+ // ^ can match any separator or the end of the pattern
+ filter = filter.replace(/\^/g, '(?:[^\\w\\d_.%-]|$)');
+ // Should match end of url
+ if (isRightAnchor) {
+ filter = `${filter}$`;
+ }
+ if (isLeftAnchor) {
+ filter = `^${filter}`;
+ }
+ return new RegExp(filter);
+}
+const MATCH_ALL = new RegExp('');
+class NetworkFilter {
+ static parse(line, debug = false) {
+ // Represent options as a bitmask
+ let mask = 32768 /* NETWORK_FILTER_MASK.thirdParty */ |
+ 16384 /* NETWORK_FILTER_MASK.firstParty */ |
+ 8 /* NETWORK_FILTER_MASK.fromHttps */ |
+ 4 /* NETWORK_FILTER_MASK.fromHttp */;
+ // Temporary masks for positive (e.g.: $script) and negative (e.g.: $~script)
+ // content type options.
+ let cptMaskPositive = 0;
+ let cptMaskNegative = FROM_ANY;
+ let hostname;
+ let domains;
+ let denyallow;
+ let redirect;
+ let csp;
+ // Start parsing
+ let filterIndexStart = 0;
+ let filterIndexEnd = line.length;
+ // @@filter == Exception
+ if (line.charCodeAt(0) === 64 /* '@' */ && line.charCodeAt(1) === 64 /* '@' */) {
+ filterIndexStart += 2;
+ mask = (0, utils_1.setBit)(mask, 134217728 /* NETWORK_FILTER_MASK.isException */);
+ }
+ // filter$options == Options
+ // ^ ^
+ // | |
+ // | optionsIndex
+ // filterIndexStart
+ const optionsIndex = line.lastIndexOf('$');
+ if (optionsIndex !== -1 && line.charCodeAt(optionsIndex + 1) !== 47 /* '/' */) {
+ // Parse options and set flags
+ filterIndexEnd = optionsIndex;
+ // --------------------------------------------------------------------- //
+ // parseOptions
+ // --------------------------------------------------------------------- //
+ for (const rawOption of line.slice(optionsIndex + 1).split(',')) {
+ const negation = rawOption.charCodeAt(0) === 126; /* '~' */
+ let option = negation === true ? rawOption.slice(1) : rawOption;
+ // Check for options: option=value1|value2
+ let optionValue = '';
+ const indexOfEqual = option.indexOf('=');
+ if (indexOfEqual !== -1) {
+ optionValue = option.slice(indexOfEqual + 1);
+ option = option.slice(0, indexOfEqual);
+ }
+ switch (option) {
+ case 'denyallow': {
+ denyallow = domains_1.Domains.parse(optionValue.split('|'), debug);
+ break;
+ }
+ case 'domain': {
+ // domain list starting or ending with '|' is invalid
+ if (optionValue.charCodeAt(0) === 124 /* '|' */ ||
+ optionValue.charCodeAt(optionValue.length - 1) === 124 /* '|' */) {
+ return null;
+ }
+ domains = domains_1.Domains.parse(optionValue.split('|'), debug);
+ break;
+ }
+ case 'badfilter':
+ mask = (0, utils_1.setBit)(mask, 131072 /* NETWORK_FILTER_MASK.isBadFilter */);
+ break;
+ case 'important':
+ // Note: `negation` should always be `false` here.
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 1048576 /* NETWORK_FILTER_MASK.isImportant */);
+ break;
+ case 'match-case':
+ // Note: `negation` should always be `false` here.
+ if (negation) {
+ return null;
+ }
+ // We currently consider all filters to be case-insensitive.
+ break;
+ case '3p':
+ case 'third-party':
+ if (negation) {
+ // ~third-party means we should clear the flag
+ mask = (0, utils_1.clearBit)(mask, 32768 /* NETWORK_FILTER_MASK.thirdParty */);
+ }
+ else {
+ // third-party means ~first-party
+ mask = (0, utils_1.clearBit)(mask, 16384 /* NETWORK_FILTER_MASK.firstParty */);
+ }
+ break;
+ case '1p':
+ case 'first-party':
+ if (negation) {
+ // ~first-party means we should clear the flag
+ mask = (0, utils_1.clearBit)(mask, 16384 /* NETWORK_FILTER_MASK.firstParty */);
+ }
+ else {
+ // first-party means ~third-party
+ mask = (0, utils_1.clearBit)(mask, 32768 /* NETWORK_FILTER_MASK.thirdParty */);
+ }
+ break;
+ case 'redirect-rule':
+ case 'redirect':
+ // Negation of redirection doesn't make sense
+ if (negation) {
+ return null;
+ }
+ // Ignore this filter if no redirection resource is specified
+ if (optionValue.length === 0) {
+ return null;
+ }
+ if (option === 'redirect-rule') {
+ mask = (0, utils_1.setBit)(mask, 536870912 /* NETWORK_FILTER_MASK.isRedirectRule */);
+ }
+ redirect = optionValue;
+ break;
+ case 'csp':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 262144 /* NETWORK_FILTER_MASK.isCSP */);
+ if (optionValue.length > 0) {
+ csp = optionValue;
+ }
+ break;
+ case 'ehide':
+ case 'elemhide':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 524288 /* NETWORK_FILTER_MASK.isGenericHide */);
+ mask = (0, utils_1.setBit)(mask, 2097152 /* NETWORK_FILTER_MASK.isSpecificHide */);
+ break;
+ case 'shide':
+ case 'specifichide':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 2097152 /* NETWORK_FILTER_MASK.isSpecificHide */);
+ break;
+ case 'ghide':
+ case 'generichide':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 524288 /* NETWORK_FILTER_MASK.isGenericHide */);
+ break;
+ case 'inline-script':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 262144 /* NETWORK_FILTER_MASK.isCSP */);
+ csp =
+ "script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:";
+ break;
+ case 'inline-font':
+ if (negation) {
+ return null;
+ }
+ mask = (0, utils_1.setBit)(mask, 262144 /* NETWORK_FILTER_MASK.isCSP */);
+ csp =
+ "font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:";
+ break;
+ default: {
+ // Handle content type options separatly
+ let optionMask = 0;
+ switch (option) {
+ case 'all':
+ if (negation) {
+ return null;
+ }
+ // NOTE: Currently a filter cannot be both blocking and CSP, so
+ // we will have to create multiple filters to keep the semantics
+ // of 'all'.
+ // mask = setBit(mask, NETWORK_FILTER_MASK.isCSP);
+ // csp = [
+ // "script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:",
+ // "font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:",
+ // ].join('; ');
+ break;
+ case 'image':
+ optionMask = 16 /* NETWORK_FILTER_MASK.fromImage */;
+ break;
+ case 'media':
+ optionMask = 32 /* NETWORK_FILTER_MASK.fromMedia */;
+ break;
+ case 'object':
+ case 'object-subrequest':
+ optionMask = 64 /* NETWORK_FILTER_MASK.fromObject */;
+ break;
+ case 'other':
+ optionMask = 128 /* NETWORK_FILTER_MASK.fromOther */;
+ break;
+ case 'ping':
+ case 'beacon':
+ optionMask = 256 /* NETWORK_FILTER_MASK.fromPing */;
+ break;
+ case 'script':
+ optionMask = 512 /* NETWORK_FILTER_MASK.fromScript */;
+ break;
+ case 'css':
+ case 'stylesheet':
+ optionMask = 1024 /* NETWORK_FILTER_MASK.fromStylesheet */;
+ break;
+ case 'frame':
+ case 'subdocument':
+ optionMask = 2048 /* NETWORK_FILTER_MASK.fromSubdocument */;
+ break;
+ case 'xhr':
+ case 'xmlhttprequest':
+ optionMask = 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */;
+ break;
+ case 'websocket':
+ optionMask = 4096 /* NETWORK_FILTER_MASK.fromWebsocket */;
+ break;
+ case 'font':
+ optionMask = 2 /* NETWORK_FILTER_MASK.fromFont */;
+ break;
+ case 'doc':
+ case 'document':
+ optionMask = 1 /* NETWORK_FILTER_MASK.fromDocument */;
+ break;
+ default:
+ // Disable this filter if we don't support all the options
+ return null;
+ }
+ // We got a valid cpt option, update mask
+ if (negation) {
+ cptMaskNegative = (0, utils_1.clearBit)(cptMaskNegative, optionMask);
+ }
+ else {
+ cptMaskPositive = (0, utils_1.setBit)(cptMaskPositive, optionMask);
+ }
+ break;
+ }
+ }
+ }
+ // End of option parsing
+ // --------------------------------------------------------------------- //
+ }
+ if (cptMaskPositive === 0) {
+ mask |= cptMaskNegative;
+ }
+ else if (cptMaskNegative === FROM_ANY) {
+ mask |= cptMaskPositive;
+ }
+ else {
+ mask |= cptMaskPositive & cptMaskNegative;
+ }
+ // Identify kind of pattern
+ let filter;
+ // Detect Regexps (i.e.: /pattern/)
+ if (filterIndexEnd - filterIndexStart >= 2 &&
+ line.charCodeAt(filterIndexStart) === 47 /* '/' */ &&
+ line.charCodeAt(filterIndexEnd - 1) === 47 /* '/' */) {
+ // Some extra ideas which could be applied to RegExp filters:
+ // * convert rules without any special RegExp syntax to plain patterns
+ // * remove extra `isFullRegex` flag since `isRegex` might be enough
+ // * apply some optimizations on the fly: /^https?:\\/\\/rest => isHttp + isHttps + rest
+ filter = line.slice(filterIndexStart, filterIndexEnd);
+ // Validate RegExp to make sure this rule is fine
+ try {
+ compileRegex(filter, false /* isLeftAnchor */, false /* isRightAnchor */, true /* isFullRegex */);
+ }
+ catch (ex) {
+ return null; // invalid RegExp
+ }
+ mask = (0, utils_1.setBit)(mask, 4194304 /* NETWORK_FILTER_MASK.isFullRegex */);
+ }
+ else {
+ // Deal with hostname pattern
+ if (filterIndexEnd > 0 && line.charCodeAt(filterIndexEnd - 1) === 124 /* '|' */) {
+ mask = (0, utils_1.setBit)(mask, 67108864 /* NETWORK_FILTER_MASK.isRightAnchor */);
+ filterIndexEnd -= 1;
+ }
+ if (filterIndexStart < filterIndexEnd &&
+ line.charCodeAt(filterIndexStart) === 124 /* '|' */) {
+ if (filterIndexStart < filterIndexEnd - 1 &&
+ line.charCodeAt(filterIndexStart + 1) === 124 /* '|' */) {
+ mask = (0, utils_1.setBit)(mask, 268435456 /* NETWORK_FILTER_MASK.isHostnameAnchor */);
+ filterIndexStart += 2;
+ }
+ else {
+ mask = (0, utils_1.setBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ filterIndexStart += 1;
+ }
+ }
+ // const isRegex = checkIsRegex(line, filterIndexStart, filterIndexEnd);
+ // mask = setNetworkMask(mask, NETWORK_FILTER_MASK.isRegex, isRegex);
+ if ((0, utils_1.getBit)(mask, 268435456 /* NETWORK_FILTER_MASK.isHostnameAnchor */)) {
+ // Split at the first character which is not allowed in a hostname
+ let firstSeparator = filterIndexStart;
+ while (firstSeparator < filterIndexEnd &&
+ isAllowedHostname(line.charCodeAt(firstSeparator)) === true) {
+ firstSeparator += 1;
+ }
+ // No separator found so hostname has full length
+ if (firstSeparator === filterIndexEnd) {
+ hostname = line.slice(filterIndexStart, filterIndexEnd);
+ filterIndexStart = filterIndexEnd;
+ // mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);
+ }
+ else {
+ // Found a separator
+ hostname = line.slice(filterIndexStart, firstSeparator);
+ filterIndexStart = firstSeparator;
+ const separatorCode = line.charCodeAt(firstSeparator);
+ if (separatorCode === 94 /* '^' */) {
+ // If the only symbol remaining for the selector is '^' then ignore it
+ // but set the filter as right anchored since there should not be any
+ // other label on the right
+ if (filterIndexEnd - filterIndexStart === 1) {
+ filterIndexStart = filterIndexEnd;
+ mask = (0, utils_1.setBit)(mask, 67108864 /* NETWORK_FILTER_MASK.isRightAnchor */);
+ }
+ else {
+ mask = (0, utils_1.setBit)(mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */);
+ mask = (0, utils_1.setBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ }
+ }
+ else if (separatorCode === 42 /* '*' */) {
+ mask = (0, utils_1.setBit)(mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */);
+ // mask = setBit(mask, NETWORK_FILTER_MASK.isLeftAnchor);
+ }
+ else {
+ mask = (0, utils_1.setBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ }
+ }
+ }
+ // Remove trailing '*'
+ if (filterIndexEnd - filterIndexStart > 0 &&
+ line.charCodeAt(filterIndexEnd - 1) === 42 /* '*' */) {
+ filterIndexEnd -= 1;
+ }
+ // Remove leading '*' if the filter is not hostname anchored.
+ if ((0, utils_1.getBit)(mask, 268435456 /* NETWORK_FILTER_MASK.isHostnameAnchor */) === false &&
+ filterIndexEnd - filterIndexStart > 0 &&
+ line.charCodeAt(filterIndexStart) === 42 /* '*' */) {
+ mask = (0, utils_1.clearBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ filterIndexStart += 1;
+ }
+ // Transform filters on protocol (http, https, ws)
+ if ((0, utils_1.getBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */)) {
+ if (filterIndexEnd - filterIndexStart === 5 &&
+ (0, utils_1.fastStartsWithFrom)(line, 'ws://', filterIndexStart)) {
+ mask = (0, utils_1.setBit)(mask, 4096 /* NETWORK_FILTER_MASK.fromWebsocket */);
+ mask = (0, utils_1.clearBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ mask = (0, utils_1.clearBit)(mask, 4 /* NETWORK_FILTER_MASK.fromHttp */);
+ mask = (0, utils_1.clearBit)(mask, 8 /* NETWORK_FILTER_MASK.fromHttps */);
+ filterIndexStart = filterIndexEnd;
+ }
+ else if (filterIndexEnd - filterIndexStart === 7 &&
+ (0, utils_1.fastStartsWithFrom)(line, 'http://', filterIndexStart)) {
+ mask = (0, utils_1.setBit)(mask, 4 /* NETWORK_FILTER_MASK.fromHttp */);
+ mask = (0, utils_1.clearBit)(mask, 8 /* NETWORK_FILTER_MASK.fromHttps */);
+ mask = (0, utils_1.clearBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ filterIndexStart = filterIndexEnd;
+ }
+ else if (filterIndexEnd - filterIndexStart === 8 &&
+ (0, utils_1.fastStartsWithFrom)(line, 'https://', filterIndexStart)) {
+ mask = (0, utils_1.setBit)(mask, 8 /* NETWORK_FILTER_MASK.fromHttps */);
+ mask = (0, utils_1.clearBit)(mask, 4 /* NETWORK_FILTER_MASK.fromHttp */);
+ mask = (0, utils_1.clearBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ filterIndexStart = filterIndexEnd;
+ }
+ else if (filterIndexEnd - filterIndexStart === 8 &&
+ (0, utils_1.fastStartsWithFrom)(line, 'http*://', filterIndexStart)) {
+ mask = (0, utils_1.setBit)(mask, 8 /* NETWORK_FILTER_MASK.fromHttps */);
+ mask = (0, utils_1.setBit)(mask, 4 /* NETWORK_FILTER_MASK.fromHttp */);
+ mask = (0, utils_1.clearBit)(mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ filterIndexStart = filterIndexEnd;
+ }
+ }
+ if (filterIndexEnd - filterIndexStart > 0) {
+ filter = line.slice(filterIndexStart, filterIndexEnd).toLowerCase();
+ mask = setNetworkMask(mask, 16777216 /* NETWORK_FILTER_MASK.isUnicode */, (0, utils_1.hasUnicode)(filter));
+ if ((0, utils_1.getBit)(mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */) === false) {
+ mask = setNetworkMask(mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */, checkIsRegex(filter, 0, filter.length));
+ }
+ }
+ // TODO
+ // - ignore hostname anchor is not hostname provided
+ if (hostname !== undefined) {
+ hostname = hostname.toLowerCase();
+ if ((0, utils_1.hasUnicode)(hostname)) {
+ mask = setNetworkMask(mask, 16777216 /* NETWORK_FILTER_MASK.isUnicode */, true);
+ hostname = (0, punycode_1.toASCII)(hostname);
+ }
+ }
+ }
+ return new NetworkFilter({
+ csp,
+ filter,
+ hostname,
+ mask,
+ domains,
+ denyallow,
+ rawLine: debug === true ? line : undefined,
+ redirect,
+ regex: undefined,
+ });
+ }
+ /**
+ * Deserialize network filters. The code accessing the buffer should be
+ * symetrical to the one in `serializeNetworkFilter`.
+ */
+ static deserialize(buffer) {
+ const mask = buffer.getUint32();
+ const optionalParts = buffer.getUint8();
+ const isUnicode = (0, utils_1.getBit)(mask, 16777216 /* NETWORK_FILTER_MASK.isUnicode */);
+ // The order of these statements is important. Since `buffer.getX()` will
+ // internally increment the position of next byte to read, they need to be
+ // retrieved in the exact same order they were serialized (check
+ // `serializeNetworkFilter`).
+ return new NetworkFilter({
+ // Mandatory field
+ mask,
+ // Optional parts
+ csp: (optionalParts & 1) === 1 ? buffer.getNetworkCSP() : undefined,
+ filter: (optionalParts & 2) === 2
+ ? isUnicode
+ ? buffer.getUTF8()
+ : buffer.getNetworkFilter()
+ : undefined,
+ hostname: (optionalParts & 4) === 4 ? buffer.getNetworkHostname() : undefined,
+ domains: (optionalParts & 8) === 8 ? domains_1.Domains.deserialize(buffer) : undefined,
+ rawLine: (optionalParts & 16) === 16 ? buffer.getRawNetwork() : undefined,
+ redirect: (optionalParts & 32) === 32 ? buffer.getNetworkRedirect() : undefined,
+ denyallow: (optionalParts & 64) === 64 ? domains_1.Domains.deserialize(buffer) : undefined,
+ regex: undefined,
+ });
+ }
+ constructor({ csp, filter, hostname, mask, domains, denyallow, rawLine, redirect, regex, }) {
+ this.csp = csp;
+ this.filter = filter;
+ this.hostname = hostname;
+ this.mask = mask;
+ this.domains = domains;
+ this.denyallow = denyallow;
+ this.redirect = redirect;
+ this.rawLine = rawLine;
+ this.id = undefined;
+ this.regex = regex;
+ }
+ isCosmeticFilter() {
+ return false;
+ }
+ isNetworkFilter() {
+ return true;
+ }
+ match(request) {
+ return checkOptions(this, request) && checkPattern(this, request);
+ }
+ /**
+ * To allow for a more compact representation of network filters, the
+ * representation is composed of a mandatory header, and some optional
+ *
+ * Header:
+ * =======
+ *
+ * | opt | mask
+ * 8 32
+ *
+ * For an empty filter having no pattern, hostname, the minimum size is: 42 bits.
+ *
+ * Then for each optional part (filter, hostname optDomains, optNotDomains,
+ * redirect), it takes 16 bits for the length of the string + the length of the
+ * string in bytes.
+ *
+ * The optional parts are written in order of there number of occurrence in the
+ * filter list used by the adblocker. The most common being `hostname`, then
+ * `filter`, `optDomains`, `optNotDomains`, `redirect`.
+ *
+ * Example:
+ * ========
+ *
+ * @@||cliqz.com would result in a serialized version:
+ *
+ * | 1 | mask | 9 | c | l | i | q | z | . | c | o | m (16 bytes)
+ *
+ * In this case, the serialized version is actually bigger than the original
+ * filter, but faster to deserialize. In the future, we could optimize the
+ * representation to compact small filters better.
+ *
+ * Ideas:
+ * * variable length encoding for the mask (if not option, take max 1 byte).
+ * * first byte could contain the mask as well if small enough.
+ * * when packing ascii string, store several of them in each byte.
+ */
+ serialize(buffer) {
+ buffer.pushUint32(this.mask);
+ const index = buffer.getPos();
+ buffer.pushUint8(0);
+ // This bit-mask indicates which optional parts of the filter were serialized.
+ let optionalParts = 0;
+ if (this.csp !== undefined) {
+ optionalParts |= 1;
+ buffer.pushNetworkCSP(this.csp);
+ }
+ if (this.filter !== undefined) {
+ optionalParts |= 2;
+ if (this.isUnicode()) {
+ buffer.pushUTF8(this.filter);
+ }
+ else {
+ buffer.pushNetworkFilter(this.filter);
+ }
+ }
+ if (this.hostname !== undefined) {
+ optionalParts |= 4;
+ buffer.pushNetworkHostname(this.hostname);
+ }
+ if (this.domains !== undefined) {
+ optionalParts |= 8;
+ this.domains.serialize(buffer);
+ }
+ if (this.rawLine !== undefined) {
+ optionalParts |= 16;
+ buffer.pushRawNetwork(this.rawLine);
+ }
+ if (this.redirect !== undefined) {
+ optionalParts |= 32;
+ buffer.pushNetworkRedirect(this.redirect);
+ }
+ if (this.denyallow !== undefined) {
+ optionalParts |= 64;
+ this.denyallow.serialize(buffer);
+ }
+ buffer.setByte(index, optionalParts);
+ }
+ getSerializedSize(compression) {
+ let estimate = 4 + 1; // mask = 4 bytes // optional parts = 1 byte
+ if (this.csp !== undefined) {
+ estimate += (0, data_view_1.sizeOfNetworkCSP)(this.csp, compression);
+ }
+ if (this.filter !== undefined) {
+ if (this.isUnicode() === true) {
+ estimate += (0, data_view_1.sizeOfUTF8)(this.filter);
+ }
+ else {
+ estimate += (0, data_view_1.sizeOfNetworkFilter)(this.filter, compression);
+ }
+ }
+ if (this.hostname !== undefined) {
+ estimate += (0, data_view_1.sizeOfNetworkHostname)(this.hostname, compression);
+ }
+ if (this.domains !== undefined) {
+ estimate += this.domains.getSerializedSize();
+ }
+ if (this.rawLine !== undefined) {
+ estimate += (0, data_view_1.sizeOfRawNetwork)(this.rawLine, compression);
+ }
+ if (this.redirect !== undefined) {
+ estimate += (0, data_view_1.sizeOfNetworkRedirect)(this.redirect, compression);
+ }
+ if (this.denyallow !== undefined) {
+ estimate += this.denyallow.getSerializedSize();
+ }
+ return estimate;
+ }
+ /**
+ * Tries to recreate the original representation of the filter (adblock
+ * syntax) from the internal representation. If `rawLine` is set (when filters
+ * are parsed in `debug` mode for example), then it is returned directly.
+ * Otherwise, we try to stick as closely as possible to the original form;
+ * there are things which cannot be recovered though, like domains options
+ * of which only hashes are stored.
+ */
+ toString() {
+ if (this.rawLine !== undefined) {
+ return this.rawLine;
+ }
+ let filter = '';
+ if (this.isException()) {
+ filter += '@@';
+ }
+ if (this.isHostnameAnchor()) {
+ filter += '||';
+ }
+ else if (this.fromHttp() !== this.fromHttps()) {
+ if (this.fromHttp()) {
+ filter += '|http://';
+ }
+ else {
+ filter += '|https://';
+ }
+ }
+ else if (this.isLeftAnchor()) {
+ filter += '|';
+ }
+ if (this.hasHostname()) {
+ filter += this.getHostname();
+ filter += '^';
+ }
+ if (this.isFullRegex()) {
+ filter += `/${this.getRegex().source}/`;
+ }
+ else if (this.isRegex()) {
+ filter += this.getRegex().source;
+ }
+ else {
+ filter += this.getFilter();
+ }
+ if (this.isRightAnchor()) {
+ filter += '|';
+ }
+ // Options
+ const options = [];
+ if (this.fromAny() === false) {
+ const numberOfCptOptions = (0, utils_1.bitCount)(this.getCptMask());
+ const numberOfNegatedOptions = (0, utils_1.bitCount)(FROM_ANY) - numberOfCptOptions;
+ if (numberOfNegatedOptions < numberOfCptOptions) {
+ for (const type of getListOfRequestTypesNegated(this)) {
+ options.push(`~${type}`);
+ }
+ }
+ else {
+ for (const type of getListOfRequestTypes(this)) {
+ options.push(type);
+ }
+ }
+ }
+ if (this.isImportant()) {
+ options.push('important');
+ }
+ if (this.isRedirectRule()) {
+ options.push(`redirect-rule=${this.getRedirect()}`);
+ }
+ else if (this.isRedirect()) {
+ options.push(`redirect=${this.getRedirect()}`);
+ }
+ if (this.isCSP()) {
+ options.push(`csp=${this.csp}`);
+ }
+ if (this.isElemHide()) {
+ options.push('elemhide');
+ }
+ if (this.isSpecificHide()) {
+ options.push('specifichide');
+ }
+ if (this.isGenericHide()) {
+ options.push('generichide');
+ }
+ if (this.firstParty() !== this.thirdParty()) {
+ if (this.firstParty()) {
+ options.push('1p');
+ }
+ if (this.thirdParty()) {
+ options.push('3p');
+ }
+ }
+ if (this.domains !== undefined) {
+ if (this.domains.parts !== undefined) {
+ options.push(`domain=${this.domains.parts}`);
+ }
+ else {
+ options.push('domain=<hashed>');
+ }
+ }
+ if (this.denyallow !== undefined) {
+ if (this.denyallow.parts !== undefined) {
+ options.push(`denyallow=${this.denyallow.parts}`);
+ }
+ else {
+ options.push('denyallow=<hashed>');
+ }
+ }
+ if (this.isBadFilter()) {
+ options.push('badfilter');
+ }
+ if (options.length > 0) {
+ filter += `$${options.join(',')}`;
+ }
+ return filter;
+ }
+ // Public API (Read-Only)
+ getIdWithoutBadFilter() {
+ // This method computes the id ignoring the $badfilter option (which will
+ // correspond to the ID of filters being discarded). This allows us to
+ // eliminate bad filters by comparing IDs, which is more robust and faster
+ // than string comparison.
+ return computeFilterId(this.csp, this.mask & ~131072 /* NETWORK_FILTER_MASK.isBadFilter */, this.filter, this.hostname, this.domains, this.denyallow, this.redirect);
+ }
+ getId() {
+ if (this.id === undefined) {
+ this.id = computeFilterId(this.csp, this.mask, this.filter, this.hostname, this.domains, this.denyallow, this.redirect);
+ }
+ return this.id;
+ }
+ hasFilter() {
+ return this.filter !== undefined;
+ }
+ hasDomains() {
+ return this.domains !== undefined;
+ }
+ getMask() {
+ return this.mask;
+ }
+ getCptMask() {
+ return this.getMask() & FROM_ANY;
+ }
+ isRedirect() {
+ return this.redirect !== undefined;
+ }
+ isRedirectRule() {
+ return (0, utils_1.getBit)(this.mask, 536870912 /* NETWORK_FILTER_MASK.isRedirectRule */);
+ }
+ getRedirect() {
+ return this.redirect || '';
+ }
+ hasHostname() {
+ return this.hostname !== undefined;
+ }
+ getHostname() {
+ return this.hostname || '';
+ }
+ getFilter() {
+ return this.filter || '';
+ }
+ getRegex() {
+ if (this.regex === undefined) {
+ this.regex =
+ this.filter !== undefined && this.isRegex()
+ ? compileRegex(this.filter, this.isLeftAnchor(), this.isRightAnchor(), this.isFullRegex())
+ : MATCH_ALL;
+ }
+ return this.regex;
+ }
+ getTokens() {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ // If there is only one domain and no domain negation, we also use this
+ // domain as a token.
+ if (this.domains !== undefined &&
+ this.domains.hostnames !== undefined &&
+ this.domains.entities === undefined &&
+ this.domains.notHostnames === undefined &&
+ this.domains.notEntities === undefined &&
+ this.domains.hostnames.length === 1) {
+ tokens_buffer_1.TOKENS_BUFFER.push(this.domains.hostnames[0]);
+ }
+ // Get tokens from filter
+ if (this.isFullRegex() === false) {
+ if (this.filter !== undefined) {
+ const skipLastToken = !this.isRightAnchor();
+ const skipFirstToken = !this.isLeftAnchor();
+ (0, utils_1.tokenizeWithWildcardsInPlace)(this.filter, skipFirstToken, skipLastToken, tokens_buffer_1.TOKENS_BUFFER);
+ }
+ // Append tokens from hostname, if any
+ if (this.hostname !== undefined) {
+ (0, utils_1.tokenizeInPlace)(this.hostname, false, this.filter !== undefined && this.filter.charCodeAt(0) === 42 /* '*' */, tokens_buffer_1.TOKENS_BUFFER);
+ }
+ }
+ else if (this.filter !== undefined) {
+ (0, utils_1.tokenizeRegexInPlace)(this.filter, tokens_buffer_1.TOKENS_BUFFER);
+ }
+ // If we got no tokens for the filter/hostname part, then we will dispatch
+ // this filter in multiple buckets based on the domains option.
+ if (tokens_buffer_1.TOKENS_BUFFER.empty() === true &&
+ this.domains !== undefined &&
+ this.domains.hostnames !== undefined &&
+ this.domains.entities === undefined &&
+ this.domains.notHostnames === undefined &&
+ this.domains.notEntities === undefined) {
+ const result = [];
+ for (const hostname of this.domains.hostnames) {
+ const arr = new Uint32Array(1);
+ arr[0] = hostname;
+ result.push(arr);
+ }
+ return result;
+ }
+ // Add optional token for types
+ if (tokens_buffer_1.TOKENS_BUFFER.empty() === true && this.fromAny() === false) {
+ const types = getListOfRequestTypes(this);
+ if (types.length !== 0) {
+ const result = [];
+ for (const type of types) {
+ const arr = new Uint32Array(1);
+ arr[0] = request_1.NORMALIZED_TYPE_TOKEN[type];
+ result.push(arr);
+ }
+ return result;
+ }
+ }
+ // Add optional token for protocol
+ if (this.fromHttp() === true && this.fromHttps() === false) {
+ tokens_buffer_1.TOKENS_BUFFER.push(HTTP_HASH);
+ }
+ else if (this.fromHttps() === true && this.fromHttp() === false) {
+ tokens_buffer_1.TOKENS_BUFFER.push(HTTPS_HASH);
+ }
+ return [tokens_buffer_1.TOKENS_BUFFER.slice()];
+ }
+ /**
+ * Check if this filter should apply to a request with this content type.
+ */
+ isCptAllowed(cpt) {
+ const mask = REQUEST_TYPE_TO_MASK[cpt];
+ if (mask !== undefined) {
+ return (0, utils_1.getBit)(this.mask, mask);
+ }
+ // If content type is not supported (or not specified), we return `true`
+ // only if the filter does not specify any resource type.
+ return this.fromAny();
+ }
+ isException() {
+ return (0, utils_1.getBit)(this.mask, 134217728 /* NETWORK_FILTER_MASK.isException */);
+ }
+ isHostnameAnchor() {
+ return (0, utils_1.getBit)(this.mask, 268435456 /* NETWORK_FILTER_MASK.isHostnameAnchor */);
+ }
+ isRightAnchor() {
+ return (0, utils_1.getBit)(this.mask, 67108864 /* NETWORK_FILTER_MASK.isRightAnchor */);
+ }
+ isLeftAnchor() {
+ return (0, utils_1.getBit)(this.mask, 33554432 /* NETWORK_FILTER_MASK.isLeftAnchor */);
+ }
+ isImportant() {
+ return (0, utils_1.getBit)(this.mask, 1048576 /* NETWORK_FILTER_MASK.isImportant */);
+ }
+ isFullRegex() {
+ return (0, utils_1.getBit)(this.mask, 4194304 /* NETWORK_FILTER_MASK.isFullRegex */);
+ }
+ isRegex() {
+ return ((0, utils_1.getBit)(this.mask, 8388608 /* NETWORK_FILTER_MASK.isRegex */) ||
+ (0, utils_1.getBit)(this.mask, 4194304 /* NETWORK_FILTER_MASK.isFullRegex */));
+ }
+ isPlain() {
+ return !this.isRegex();
+ }
+ isCSP() {
+ return (0, utils_1.getBit)(this.mask, 262144 /* NETWORK_FILTER_MASK.isCSP */);
+ }
+ isElemHide() {
+ return this.isSpecificHide() && this.isGenericHide();
+ }
+ isSpecificHide() {
+ return (0, utils_1.getBit)(this.mask, 2097152 /* NETWORK_FILTER_MASK.isSpecificHide */);
+ }
+ isGenericHide() {
+ return (0, utils_1.getBit)(this.mask, 524288 /* NETWORK_FILTER_MASK.isGenericHide */);
+ }
+ isBadFilter() {
+ return (0, utils_1.getBit)(this.mask, 131072 /* NETWORK_FILTER_MASK.isBadFilter */);
+ }
+ isUnicode() {
+ return (0, utils_1.getBit)(this.mask, 16777216 /* NETWORK_FILTER_MASK.isUnicode */);
+ }
+ fromAny() {
+ return this.getCptMask() === FROM_ANY;
+ }
+ thirdParty() {
+ return (0, utils_1.getBit)(this.mask, 32768 /* NETWORK_FILTER_MASK.thirdParty */);
+ }
+ firstParty() {
+ return (0, utils_1.getBit)(this.mask, 16384 /* NETWORK_FILTER_MASK.firstParty */);
+ }
+ fromImage() {
+ return (0, utils_1.getBit)(this.mask, 16 /* NETWORK_FILTER_MASK.fromImage */);
+ }
+ fromMedia() {
+ return (0, utils_1.getBit)(this.mask, 32 /* NETWORK_FILTER_MASK.fromMedia */);
+ }
+ fromObject() {
+ return (0, utils_1.getBit)(this.mask, 64 /* NETWORK_FILTER_MASK.fromObject */);
+ }
+ fromOther() {
+ return (0, utils_1.getBit)(this.mask, 128 /* NETWORK_FILTER_MASK.fromOther */);
+ }
+ fromPing() {
+ return (0, utils_1.getBit)(this.mask, 256 /* NETWORK_FILTER_MASK.fromPing */);
+ }
+ fromScript() {
+ return (0, utils_1.getBit)(this.mask, 512 /* NETWORK_FILTER_MASK.fromScript */);
+ }
+ fromStylesheet() {
+ return (0, utils_1.getBit)(this.mask, 1024 /* NETWORK_FILTER_MASK.fromStylesheet */);
+ }
+ fromDocument() {
+ return (0, utils_1.getBit)(this.mask, 1 /* NETWORK_FILTER_MASK.fromDocument */);
+ }
+ fromSubdocument() {
+ return (0, utils_1.getBit)(this.mask, 2048 /* NETWORK_FILTER_MASK.fromSubdocument */);
+ }
+ fromWebsocket() {
+ return (0, utils_1.getBit)(this.mask, 4096 /* NETWORK_FILTER_MASK.fromWebsocket */);
+ }
+ fromHttp() {
+ return (0, utils_1.getBit)(this.mask, 4 /* NETWORK_FILTER_MASK.fromHttp */);
+ }
+ fromHttps() {
+ return (0, utils_1.getBit)(this.mask, 8 /* NETWORK_FILTER_MASK.fromHttps */);
+ }
+ fromXmlHttpRequest() {
+ return (0, utils_1.getBit)(this.mask, 8192 /* NETWORK_FILTER_MASK.fromXmlHttpRequest */);
+ }
+ fromFont() {
+ return (0, utils_1.getBit)(this.mask, 2 /* NETWORK_FILTER_MASK.fromFont */);
+ }
+}
+exports.default = NetworkFilter;
+// ---------------------------------------------------------------------------
+// Filter parsing
+// ---------------------------------------------------------------------------
+function setNetworkMask(mask, m, value) {
+ if (value === true) {
+ return (0, utils_1.setBit)(mask, m);
+ }
+ return (0, utils_1.clearBit)(mask, m);
+}
+/**
+ * Check if the sub-string contained between the indices start and end is a
+ * regex filter (it contains a '*' or '^' char).
+ */
+function checkIsRegex(filter, start, end) {
+ const indexOfSeparator = filter.indexOf('^', start);
+ if (indexOfSeparator !== -1 && indexOfSeparator < end) {
+ return true;
+ }
+ const indexOfWildcard = filter.indexOf('*', start);
+ return indexOfWildcard !== -1 && indexOfWildcard < end;
+}
+/**
+ * Handle hostname anchored filters, given 'hostname' from ||hostname and
+ * request's hostname, check if there is a match. This is tricky because
+ * filters authors rely and different assumptions. We can have prefix of suffix
+ * matches of anchor.
+ */
+function isAnchoredByHostname(filterHostname, hostname, isFollowedByWildcard) {
+ // Corner-case, if `filterHostname` is empty, then it's a match
+ if (filterHostname.length === 0) {
+ return true;
+ }
+ // `filterHostname` cannot be longer than actual hostname
+ if (filterHostname.length > hostname.length) {
+ return false;
+ }
+ // If they have the same length, they should be equal
+ if (filterHostname.length === hostname.length) {
+ return filterHostname === hostname;
+ }
+ // Check if `filterHostname` appears anywhere in `hostname`
+ const matchIndex = hostname.indexOf(filterHostname);
+ // No match
+ if (matchIndex === -1) {
+ return false;
+ }
+ // `filterHostname` is a prefix of `hostname` and needs to match full a label.
+ //
+ // Examples (filterHostname, hostname):
+ // * (foo, foo.com)
+ // * (sub.foo, sub.foo.com)
+ if (matchIndex === 0) {
+ return (isFollowedByWildcard === true ||
+ hostname.charCodeAt(filterHostname.length) === 46 /* '.' */ ||
+ filterHostname.charCodeAt(filterHostname.length - 1) === 46 /* '.' */);
+ }
+ // `filterHostname` is a suffix of `hostname`.
+ //
+ // Examples (filterHostname, hostname):
+ // * (foo.com, sub.foo.com)
+ // * (com, foo.com)
+ if (hostname.length === matchIndex + filterHostname.length) {
+ return (hostname.charCodeAt(matchIndex - 1) === 46 /* '.' */ ||
+ filterHostname.charCodeAt(0) === 46 /* '.' */);
+ }
+ // `filterHostname` is infix of `hostname` and needs match full labels
+ return ((isFollowedByWildcard === true ||
+ hostname.charCodeAt(filterHostname.length) === 46 /* '.' */ ||
+ filterHostname.charCodeAt(filterHostname.length - 1) === 46) /* '.' */ &&
+ (hostname.charCodeAt(matchIndex - 1) === 46 || filterHostname.charCodeAt(0) === 46));
+}
+exports.isAnchoredByHostname = isAnchoredByHostname;
+/**
+ * Specialize a network filter depending on its type. It allows for more
+ * efficient matching function.
+ */
+function checkPattern(filter, request) {
+ const pattern = filter.getFilter();
+ if (filter.isHostnameAnchor() === true) {
+ // Make sure request is anchored by hostname before proceeding to matching
+ const filterHostname = filter.getHostname();
+ if (isAnchoredByHostname(filterHostname, request.hostname, filter.filter !== undefined && filter.filter.charCodeAt(0) === 42 /* '*' */) === false) {
+ return false;
+ }
+ // At this point we know request is hostname anchored so we match the rest of the filter.
+ if (filter.isRegex()) {
+ // ||pattern*^
+ return filter
+ .getRegex()
+ .test(request.url.slice(request.url.indexOf(filterHostname) + filterHostname.length));
+ }
+ else if (filter.isRightAnchor() && filter.isLeftAnchor()) {
+ // |||pattern|
+ // Since this is not a regex, the filter pattern must follow the hostname
+ // with nothing in between. So we extract the part of the URL following
+ // after hostname and will perform the matching on it.
+ const urlAfterHostname = request.url.slice(request.url.indexOf(filterHostname) + filterHostname.length);
+ // Since it must follow immediatly after the hostname and be a suffix of
+ // the URL, we conclude that filter must be equal to the part of the
+ // url following the hostname.
+ return pattern === urlAfterHostname;
+ }
+ else if (filter.isRightAnchor()) {
+ // ||pattern|
+ const requestHostname = request.hostname;
+ if (filter.hasFilter() === false) {
+ // In this specific case it means that the specified hostname should match
+ // at the end of the hostname of the request. This allows to prevent false
+ // positive like ||foo.bar which would match https://foo.bar.baz where
+ // ||foo.bar^ would not.
+ return (filterHostname.length === requestHostname.length ||
+ requestHostname.endsWith(filterHostname));
+ }
+ else {
+ // pattern|
+ return request.url.endsWith(pattern);
+ }
+ }
+ else if (filter.isLeftAnchor()) {
+ // ||pattern + left-anchor => This means that a plain pattern needs to appear
+ // exactly after the hostname, with nothing in between.
+ // Since this is not a regex, the filter pattern must follow the hostname
+ // with nothing in between. So we extract the part of the URL following
+ // after hostname and will perform the matching on it.
+ return (0, utils_1.fastStartsWithFrom)(request.url, pattern, request.url.indexOf(filterHostname) + filterHostname.length);
+ }
+ if (filter.hasFilter() === false) {
+ return true;
+ }
+ // We consider this a match if the plain patter (i.e.: filter) appears anywhere.
+ return (request.url.indexOf(pattern, request.url.indexOf(filterHostname) + filterHostname.length) !==
+ -1);
+ }
+ else if (filter.isRegex()) {
+ // pattern*^
+ return filter.getRegex().test(request.url);
+ }
+ else if (filter.isLeftAnchor() && filter.isRightAnchor()) {
+ // |pattern|
+ return request.url === pattern;
+ }
+ else if (filter.isLeftAnchor()) {
+ // |pattern
+ return (0, utils_1.fastStartsWith)(request.url, pattern);
+ }
+ else if (filter.isRightAnchor()) {
+ // pattern|
+ return request.url.endsWith(pattern);
+ }
+ // pattern
+ if (filter.hasFilter() === false) {
+ return true;
+ }
+ return request.url.indexOf(pattern) !== -1;
+}
+function checkOptions(filter, request) {
+ // We first discard requests based on type, protocol and party. This is really
+ // cheap and should be done first.
+ if (filter.isCptAllowed(request.type) === false ||
+ (request.isHttps === true && filter.fromHttps() === false) ||
+ (request.isHttp === true && filter.fromHttp() === false) ||
+ (filter.firstParty() === false && request.isFirstParty === true) ||
+ (filter.thirdParty() === false && request.isThirdParty === true)) {
+ return false;
+ }
+ // If `sourceHostname` is *not* matched by `domain` then the request should be allowed.
+ if (filter.domains !== undefined &&
+ filter.domains.match(request.sourceHostnameHashes, request.sourceEntityHashes) === false) {
+ return false;
+ }
+ // If `hostname` is matched by `denyallow` then the request should be allowed.
+ if (filter.denyallow !== undefined &&
+ filter.denyallow.match(request.getHostnameHashes(), request.getEntityHashes()) === true) {
+ return false;
+ }
+ return true;
+}
+//# sourceMappingURL=network.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js.map
new file mode 100644
index 0000000..2b54475
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/filters/network.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../src/filters/network.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,+CAA4C;AAC5C,4CAQsB;AACtB,0CAAsC;AACtC,wCAAyE;AACzE,oDAAiD;AACjD,oCAckB;AAGlB,MAAM,SAAS,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;AAErC,SAAS,iBAAiB,CAAC,EAAU;IACnC,OAAO,CACL,IAAA,eAAO,EAAC,EAAE,CAAC,IAAI,IAAA,eAAO,EAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAChG,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAiC;IACtD,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,OAAO;IACtB,mBAAmB,EAAE,QAAQ;IAC7B,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,KAAK,GACT,qIAAqI,CAAC;AACxI,SAAgB,yBAAyB,CAAC,SAAiB;IACzD,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IAED,kCAAkC;IAClC,IAAI,cAAc,KAAK,CAAC,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QACjE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrF,cAAc,IAAI,CAAC,CAAC;KACrB;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,OAAO;SAC9B,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS,EAAE;YAC5B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,CAAC;SACV,IAAI,EAAE;SACN,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,IAAI,OAAO,KAAK,iBAAiB,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,iBAAiB,KAAK,EAAE,EAAE;QAC5B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;KAC3C;IAED,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,iBAAiB,EAAE,CAAC;AACtE,CAAC;AArCD,8DAqCC;AA6CD;;GAEG;AACH,MAAM,QAAQ,GACZ;wCAC4B;0CACC;0CACA;2CACC;2CACD;0CACD;4CACE;iDACI;kDACC;gDACF;qDACK,CAAC;AAEzC;;;GAGG;AACH,MAAM,oBAAoB,GAA+C;IACvE,MAAM,wCAA8B;IACpC,QAAQ,0CAAkC;IAC1C,kBAAkB,yCAA+B;IACjD,KAAK,mDAAwC;IAC7C,IAAI,sCAA8B;IAClC,KAAK,wCAA+B;IACpC,QAAQ,wCAA+B;IACvC,SAAS,0CAAkC;IAC3C,UAAU,0CAAkC;IAC5C,KAAK,wCAA+B;IACpC,MAAM,yCAAgC;IACtC,iBAAiB,yCAAgC;IACjD,IAAI,wCAA8B;IAClC,MAAM,0CAAgC;IACtC,UAAU,+CAAoC;IAC9C,QAAQ,gDAAqC;IAC7C,SAAS,gDAAqC;IAC9C,SAAS,8CAAmC;IAC5C,SAAS,8CAAmC;IAC5C,GAAG,mDAAwC;IAC3C,cAAc,mDAAwC;IAEtD,QAAQ;IACR,SAAS,yCAA+B;IACxC,UAAU,yCAA+B;IACzC,WAAW,yCAA+B;IAC1C,QAAQ,yCAA+B;IACvC,KAAK,yCAA+B;IACpC,QAAQ,yCAA+B;IACvC,SAAS,yCAA+B;IACxC,cAAc,yCAA+B;IAC7C,WAAW,yCAA+B;IAC1C,SAAS,yCAA+B;IACxC,YAAY,yCAA+B;IAC3C,OAAO,yCAA+B;IACtC,IAAI,yCAA+B;CACpC,CAAC;AAEF,SAAS,4BAA4B,CAAC,MAAqB;IACzD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE;QACnC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACxB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;QACjC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpB;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;QACjC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC1B;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,KAAK,KAAK,EAAE;QACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,KAAK,EAAE;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,KAAK,KAAK,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnB;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAqB;IAClD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;QACzB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACxB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpB;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;IAED,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC1B;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE;QAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnB;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACtB,GAAuB,EACvB,IAAY,EACZ,MAA0B,EAC1B,QAA4B,EAC5B,OAA4B,EAC5B,SAA8B,EAC9B,QAA4B;IAE5B,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAE9B,IAAI,GAAG,KAAK,SAAS,EAAE;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACxC;KACF;IAED,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC7C;KACF;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC7C;KACF;IAED,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,MAAc,EACd,YAAqB,EACrB,aAAsB,EACtB,WAAoB;IAEpB,IAAI,WAAW,KAAK,IAAI,EAAE;QACxB,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC5D;IAED,gDAAgD;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAEvD,uBAAuB;IACvB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAErC,sDAAsD;IACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAEtD,0BAA0B;IAC1B,IAAI,aAAa,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;KACvB;IAED,IAAI,YAAY,EAAE;QAChB,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;KACvB;IAED,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAEjC,MAAqB,aAAa;IACzB,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,QAAiB,KAAK;QACtD,iCAAiC;QACjC,IAAI,IAAI,GACN;sDAC8B;iDACD;gDACD,CAAC;QAE/B,6EAA6E;QAC7E,wBAAwB;QACxB,IAAI,eAAe,GAAW,CAAC,CAAC;QAChC,IAAI,eAAe,GAAW,QAAQ,CAAC;QAEvC,IAAI,QAA4B,CAAC;QACjC,IAAI,OAA4B,CAAC;QACjC,IAAI,SAA8B,CAAC;QACnC,IAAI,QAA4B,CAAC;QACjC,IAAI,GAAuB,CAAC;QAE5B,gBAAgB;QAChB,IAAI,gBAAgB,GAAW,CAAC,CAAC;QACjC,IAAI,cAAc,GAAW,IAAI,CAAC,MAAM,CAAC;QAEzC,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;YAC9E,gBAAgB,IAAI,CAAC,CAAC;YACtB,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,kDAAkC,CAAC;SACtD;QAED,4BAA4B;QAC5B,UAAU;QACV,UAAU;QACV,qBAAqB;QACrB,mBAAmB;QACnB,MAAM,YAAY,GAAW,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;YAC7E,8BAA8B;YAC9B,cAAc,GAAG,YAAY,CAAC;YAE9B,2EAA2E;YAC3E,eAAe;YACf,2EAA2E;YAC3E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS;gBAC3D,IAAI,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEhE,0CAA0C;gBAC1C,IAAI,WAAW,GAAW,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;oBACvB,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBAC7C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;iBACxC;gBAED,QAAQ,MAAM,EAAE;oBACd,KAAK,WAAW,CAAC,CAAC;wBAChB,SAAS,GAAG,iBAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;wBACzD,MAAM;qBACP;oBACD,KAAK,QAAQ,CAAC,CAAC;wBACb,qDAAqD;wBACrD,IACE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS;4BAC3C,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,EAChE;4BACA,OAAO,IAAI,CAAC;yBACb;wBAED,OAAO,GAAG,iBAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;wBACvD,MAAM;qBACP;oBACD,KAAK,WAAW;wBACd,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,+CAAkC,CAAC;wBACrD,MAAM;oBACR,KAAK,WAAW;wBACd,kDAAkD;wBAClD,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,gDAAkC,CAAC;wBACrD,MAAM;oBACR,KAAK,YAAY;wBACf,kDAAkD;wBAClD,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,4DAA4D;wBAC5D,MAAM;oBACR,KAAK,IAAI,CAAC;oBACV,KAAK,aAAa;wBAChB,IAAI,QAAQ,EAAE;4BACZ,8CAA8C;4BAC9C,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,6CAAiC,CAAC;yBACvD;6BAAM;4BACL,iCAAiC;4BACjC,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,6CAAiC,CAAC;yBACvD;wBACD,MAAM;oBACR,KAAK,IAAI,CAAC;oBACV,KAAK,aAAa;wBAChB,IAAI,QAAQ,EAAE;4BACZ,8CAA8C;4BAC9C,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,6CAAiC,CAAC;yBACvD;6BAAM;4BACL,iCAAiC;4BACjC,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,6CAAiC,CAAC;yBACvD;wBACD,MAAM;oBACR,KAAK,eAAe,CAAC;oBACrB,KAAK,UAAU;wBACb,6CAA6C;wBAC7C,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,6DAA6D;wBAC7D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC5B,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,MAAM,KAAK,eAAe,EAAE;4BAC9B,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,qDAAqC,CAAC;yBACzD;wBAED,QAAQ,GAAG,WAAW,CAAC;wBACvB,MAAM;oBACR,KAAK,KAAK;wBACR,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,yCAA4B,CAAC;wBAC/C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC1B,GAAG,GAAG,WAAW,CAAC;yBACnB;wBACD,MAAM;oBACR,KAAK,OAAO,CAAC;oBACb,KAAK,UAAU;wBACb,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,iDAAoC,CAAC;wBACvD,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,mDAAqC,CAAC;wBACxD,MAAM;oBACR,KAAK,OAAO,CAAC;oBACb,KAAK,cAAc;wBACjB,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,mDAAqC,CAAC;wBACxD,MAAM;oBACR,KAAK,OAAO,CAAC;oBACb,KAAK,aAAa;wBAChB,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,iDAAoC,CAAC;wBACvD,MAAM;oBACR,KAAK,eAAe;wBAClB,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,yCAA4B,CAAC;wBAC/C,GAAG;4BACD,mFAAmF,CAAC;wBACtF,MAAM;oBACR,KAAK,aAAa;wBAChB,IAAI,QAAQ,EAAE;4BACZ,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,yCAA4B,CAAC;wBAC/C,GAAG;4BACD,iFAAiF,CAAC;wBACpF,MAAM;oBACR,OAAO,CAAC,CAAC;wBACP,wCAAwC;wBACxC,IAAI,UAAU,GAAW,CAAC,CAAC;wBAC3B,QAAQ,MAAM,EAAE;4BACd,KAAK,KAAK;gCACR,IAAI,QAAQ,EAAE;oCACZ,OAAO,IAAI,CAAC;iCACb;gCAED,+DAA+D;gCAC/D,gEAAgE;gCAChE,YAAY;gCACZ,kDAAkD;gCAClD,UAAU;gCACV,yFAAyF;gCACzF,uFAAuF;gCACvF,gBAAgB;gCAChB,MAAM;4BACR,KAAK,OAAO;gCACV,UAAU,yCAAgC,CAAC;gCAC3C,MAAM;4BACR,KAAK,OAAO;gCACV,UAAU,yCAAgC,CAAC;gCAC3C,MAAM;4BACR,KAAK,QAAQ,CAAC;4BACd,KAAK,mBAAmB;gCACtB,UAAU,0CAAiC,CAAC;gCAC5C,MAAM;4BACR,KAAK,OAAO;gCACV,UAAU,0CAAgC,CAAC;gCAC3C,MAAM;4BACR,KAAK,MAAM,CAAC;4BACZ,KAAK,QAAQ;gCACX,UAAU,yCAA+B,CAAC;gCAC1C,MAAM;4BACR,KAAK,QAAQ;gCACX,UAAU,2CAAiC,CAAC;gCAC5C,MAAM;4BACR,KAAK,KAAK,CAAC;4BACX,KAAK,YAAY;gCACf,UAAU,gDAAqC,CAAC;gCAChD,MAAM;4BACR,KAAK,OAAO,CAAC;4BACb,KAAK,aAAa;gCAChB,UAAU,iDAAsC,CAAC;gCACjD,MAAM;4BACR,KAAK,KAAK,CAAC;4BACX,KAAK,gBAAgB;gCACnB,UAAU,oDAAyC,CAAC;gCACpD,MAAM;4BACR,KAAK,WAAW;gCACd,UAAU,+CAAoC,CAAC;gCAC/C,MAAM;4BACR,KAAK,MAAM;gCACT,UAAU,uCAA+B,CAAC;gCAC1C,MAAM;4BACR,KAAK,KAAK,CAAC;4BACX,KAAK,UAAU;gCACb,UAAU,2CAAmC,CAAC;gCAC9C,MAAM;4BACR;gCACE,0DAA0D;gCAC1D,OAAO,IAAI,CAAC;yBACf;wBAED,yCAAyC;wBACzC,IAAI,QAAQ,EAAE;4BACZ,eAAe,GAAG,IAAA,gBAAQ,EAAC,eAAe,EAAE,UAAU,CAAC,CAAC;yBACzD;6BAAM;4BACL,eAAe,GAAG,IAAA,cAAM,EAAC,eAAe,EAAE,UAAU,CAAC,CAAC;yBACvD;wBACD,MAAM;qBACP;iBACF;aACF;YACD,wBAAwB;YACxB,2EAA2E;SAC5E;QAED,IAAI,eAAe,KAAK,CAAC,EAAE;YACzB,IAAI,IAAI,eAAe,CAAC;SACzB;aAAM,IAAI,eAAe,KAAK,QAAQ,EAAE;YACvC,IAAI,IAAI,eAAe,CAAC;SACzB;aAAM;YACL,IAAI,IAAI,eAAe,GAAG,eAAe,CAAC;SAC3C;QAED,2BAA2B;QAC3B,IAAI,MAA0B,CAAC;QAE/B,mCAAmC;QACnC,IACE,cAAc,GAAG,gBAAgB,IAAI,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,SAAS;YAClD,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EACpD;YACA,6DAA6D;YAC7D,sEAAsE;YACtE,oEAAoE;YACpE,wFAAwF;YACxF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAEtD,iDAAiD;YACjD,IAAI;gBACF,YAAY,CACV,MAAM,EACN,KAAK,CAAC,kBAAkB,EACxB,KAAK,CAAC,mBAAmB,EACzB,IAAI,CAAC,iBAAiB,CACvB,CAAC;aACH;YAAC,OAAO,EAAE,EAAE;gBACX,OAAO,IAAI,CAAC,CAAC,iBAAiB;aAC/B;YAED,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,gDAAkC,CAAC;SACtD;aAAM;YACL,6BAA6B;YAC7B,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE;gBAC/E,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,mDAAoC,CAAC;gBACvD,cAAc,IAAI,CAAC,CAAC;aACrB;YAED,IACE,gBAAgB,GAAG,cAAc;gBACjC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,SAAS,EACnD;gBACA,IACE,gBAAgB,GAAG,cAAc,GAAG,CAAC;oBACrC,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,EACvD;oBACA,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,uDAAuC,CAAC;oBAC1D,gBAAgB,IAAI,CAAC,CAAC;iBACvB;qBAAM;oBACL,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,kDAAmC,CAAC;oBACtD,gBAAgB,IAAI,CAAC,CAAC;iBACvB;aACF;YAED,wEAAwE;YACxE,qEAAqE;YAErE,IAAI,IAAA,cAAM,EAAC,IAAI,uDAAuC,EAAE;gBACtD,kEAAkE;gBAClE,IAAI,cAAc,GAAG,gBAAgB,CAAC;gBACtC,OACE,cAAc,GAAG,cAAc;oBAC/B,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,EAC3D;oBACA,cAAc,IAAI,CAAC,CAAC;iBACrB;gBAED,iDAAiD;gBACjD,IAAI,cAAc,KAAK,cAAc,EAAE;oBACrC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;oBACxD,gBAAgB,GAAG,cAAc,CAAC;oBAClC,yDAAyD;iBAC1D;qBAAM;oBACL,oBAAoB;oBACpB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;oBACxD,gBAAgB,GAAG,cAAc,CAAC;oBAClC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBAEtD,IAAI,aAAa,KAAK,EAAE,CAAC,SAAS,EAAE;wBAClC,sEAAsE;wBACtE,qEAAqE;wBACrE,2BAA2B;wBAC3B,IAAI,cAAc,GAAG,gBAAgB,KAAK,CAAC,EAAE;4BAC3C,gBAAgB,GAAG,cAAc,CAAC;4BAClC,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,mDAAoC,CAAC;yBACxD;6BAAM;4BACL,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,4CAA8B,CAAC;4BACjD,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,kDAAmC,CAAC;yBACvD;qBACF;yBAAM,IAAI,aAAa,KAAK,EAAE,CAAC,SAAS,EAAE;wBACzC,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,4CAA8B,CAAC;wBACjD,yDAAyD;qBAC1D;yBAAM;wBACL,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,kDAAmC,CAAC;qBACvD;iBACF;aACF;YAED,sBAAsB;YACtB,IACE,cAAc,GAAG,gBAAgB,GAAG,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EACpD;gBACA,cAAc,IAAI,CAAC,CAAC;aACrB;YAED,6DAA6D;YAC7D,IACE,IAAA,cAAM,EAAC,IAAI,uDAAuC,KAAK,KAAK;gBAC5D,cAAc,GAAG,gBAAgB,GAAG,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,SAAS,EAClD;gBACA,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,kDAAmC,CAAC;gBACxD,gBAAgB,IAAI,CAAC,CAAC;aACvB;YAED,kDAAkD;YAClD,IAAI,IAAA,cAAM,EAAC,IAAI,kDAAmC,EAAE;gBAClD,IACE,cAAc,GAAG,gBAAgB,KAAK,CAAC;oBACvC,IAAA,0BAAkB,EAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,EACnD;oBACA,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,+CAAoC,CAAC;oBACvD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,kDAAmC,CAAC;oBACxD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,uCAA+B,CAAC;oBACpD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,wCAAgC,CAAC;oBACrD,gBAAgB,GAAG,cAAc,CAAC;iBACnC;qBAAM,IACL,cAAc,GAAG,gBAAgB,KAAK,CAAC;oBACvC,IAAA,0BAAkB,EAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EACrD;oBACA,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,uCAA+B,CAAC;oBAClD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,wCAAgC,CAAC;oBACrD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,kDAAmC,CAAC;oBACxD,gBAAgB,GAAG,cAAc,CAAC;iBACnC;qBAAM,IACL,cAAc,GAAG,gBAAgB,KAAK,CAAC;oBACvC,IAAA,0BAAkB,EAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,EACtD;oBACA,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,wCAAgC,CAAC;oBACnD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,uCAA+B,CAAC;oBACpD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,kDAAmC,CAAC;oBACxD,gBAAgB,GAAG,cAAc,CAAC;iBACnC;qBAAM,IACL,cAAc,GAAG,gBAAgB,KAAK,CAAC;oBACvC,IAAA,0BAAkB,EAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,EACtD;oBACA,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,wCAAgC,CAAC;oBACnD,IAAI,GAAG,IAAA,cAAM,EAAC,IAAI,uCAA+B,CAAC;oBAClD,IAAI,GAAG,IAAA,gBAAQ,EAAC,IAAI,kDAAmC,CAAC;oBACxD,gBAAgB,GAAG,cAAc,CAAC;iBACnC;aACF;YAED,IAAI,cAAc,GAAG,gBAAgB,GAAG,CAAC,EAAE;gBACzC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;gBAEpE,IAAI,GAAG,cAAc,CAAC,IAAI,gDAAiC,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC,CAAC;gBAC/E,IAAI,IAAA,cAAM,EAAC,IAAI,4CAA8B,KAAK,KAAK,EAAE;oBACvD,IAAI,GAAG,cAAc,CACnB,IAAI,6CAEJ,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CACvC,CAAC;iBACH;aACF;YAED,OAAO;YACP,oDAAoD;YAEpD,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAClC,IAAI,IAAA,kBAAU,EAAC,QAAQ,CAAC,EAAE;oBACxB,IAAI,GAAG,cAAc,CAAC,IAAI,gDAAiC,IAAI,CAAC,CAAC;oBACjE,QAAQ,GAAG,IAAA,kBAAO,EAAC,QAAQ,CAAC,CAAC;iBAC9B;aACF;SACF;QAED,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG;YACH,MAAM;YACN,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,SAAS;YACT,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1C,QAAQ;YACR,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,MAAsB;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,+CAAgC,CAAC;QAE9D,yEAAyE;QACzE,0EAA0E;QAC1E,gEAAgE;QAChE,6BAA6B;QAC7B,OAAO,IAAI,aAAa,CAAC;YACvB,kBAAkB;YAClB,IAAI;YAEJ,iBAAiB;YACjB,GAAG,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;YACnE,MAAM,EACJ,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvB,CAAC,CAAC,SAAS;oBACT,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;oBAClB,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBAC7B,CAAC,CAAC,SAAS;YACf,QAAQ,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7E,OAAO,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5E,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;YACzE,QAAQ,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/E,SAAS,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YAChF,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAiBD,YAAY,EACV,GAAG,EACH,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,GAWN;QACC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,gBAAgB;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACM,eAAe;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAgB;QAC3B,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACI,SAAS,CAAC,MAAsB;QACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEpB,8EAA8E;QAC9E,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,aAAa,IAAI,CAAC,CAAC;YACnB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,aAAa,IAAI,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC9B;iBAAM;gBACL,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC;SACF;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC/B,aAAa,IAAI,CAAC,CAAC;YACnB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,aAAa,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,aAAa,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC/B,aAAa,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,aAAa,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;IAEM,iBAAiB,CAAC,WAAoB;QAC3C,IAAI,QAAQ,GAAW,CAAC,GAAG,CAAC,CAAC,CAAC,4CAA4C;QAE1E,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,QAAQ,IAAI,IAAA,4BAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACrD;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAC7B,QAAQ,IAAI,IAAA,sBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrC;iBAAM;gBACL,QAAQ,IAAI,IAAA,+BAAmB,EAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC3D;SACF;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC/B,QAAQ,IAAI,IAAA,iCAAqB,EAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC/D;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,QAAQ,IAAI,IAAA,4BAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC/B,QAAQ,IAAI,IAAA,iCAAqB,EAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC/D;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;SAChD;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,IAAI,IAAI,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,MAAM,IAAI,IAAI,CAAC;SAChB;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,MAAM,IAAI,UAAU,CAAC;aACtB;iBAAM;gBACL,MAAM,IAAI,WAAW,CAAC;aACvB;SACF;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC;SACf;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC;SACf;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;SACzC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;SAClC;aAAM;YACL,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,CAAC;SACf;QAED,UAAU;QACV,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE;YAC5B,MAAM,kBAAkB,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACvD,MAAM,sBAAsB,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;YAEvE,IAAI,sBAAsB,GAAG,kBAAkB,EAAE;gBAC/C,KAAK,MAAM,IAAI,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAE;oBACrD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;iBAC1B;aACF;iBAAM;gBACL,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;oBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;aACF;SACF;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACrD;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;YACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;gBACpC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;aAC9C;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACjC;SACF;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;gBACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;aACnD;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACpC;SACF;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC3B;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SACnC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IAClB,qBAAqB;QAC1B,yEAAyE;QACzE,sEAAsE;QACtE,0EAA0E;QAC1E,0BAA0B;QAC1B,OAAO,eAAe,CACpB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,GAAG,6CAAgC,EAC5C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,EAAE,GAAG,eAAe,CACvB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,CACd,CAAC;SACH;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;IACpC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IACnC,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;IACrC,CAAC;IAEM,cAAc;QACnB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,qDAAqC,CAAC;IAC/D,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;IACrC,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEM,QAAQ;QACb,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,KAAK;gBACR,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;oBACzC,CAAC,CAAC,YAAY,CACV,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,WAAW,EAAE,CACnB;oBACH,CAAC,CAAC,SAAS,CAAC;SACjB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,SAAS;QACd,6BAAa,CAAC,KAAK,EAAE,CAAC;QAEtB,uEAAuE;QACvE,qBAAqB;QACrB,IACE,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;YACnC,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;YACvC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACtC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EACnC;YACA,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC7B,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC5C,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAA,oCAA4B,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,6BAAa,CAAC,CAAC;aACzF;YAED,sCAAsC;YACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;gBAC/B,IAAA,uBAAe,EACb,IAAI,CAAC,QAAQ,EACb,KAAK,EACL,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EACvE,6BAAa,CACd,CAAC;aACH;SACF;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YACpC,IAAA,4BAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,6BAAa,CAAC,CAAC;SAClD;QAED,0EAA0E;QAC1E,+DAA+D;QAC/D,IACE,6BAAa,CAAC,KAAK,EAAE,KAAK,IAAI;YAC9B,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;YACnC,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;YACvC,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,EACtC;YACA,MAAM,MAAM,GAAkB,EAAE,CAAC;YACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC7C,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;YACD,OAAO,MAAM,CAAC;SACf;QAED,+BAA+B;QAC/B,IAAI,6BAAa,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE;YAC9D,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,MAAM,MAAM,GAAkB,EAAE,CAAC;gBACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,+BAAqB,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAClB;gBACD,OAAO,MAAM,CAAC;aACf;SACF;QAED,kCAAkC;QAClC,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;YAC1D,6BAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;YACjE,6BAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAChC;QAED,OAAO,CAAC,6BAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,GAAgB;QAClC,MAAM,IAAI,GAAuB,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAChC;QAED,wEAAwE;QACxE,yDAAyD;QACzD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAEM,WAAW;QAChB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,kDAAkC,CAAC;IAC5D,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,uDAAuC,CAAC;IACjE,CAAC;IAEM,aAAa;QAClB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,mDAAoC,CAAC;IAC9D,CAAC;IAEM,YAAY;QACjB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,kDAAmC,CAAC;IAC7D,CAAC;IAEM,WAAW;QAChB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,gDAAkC,CAAC;IAC5D,CAAC;IAEM,WAAW;QAChB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,gDAAkC,CAAC;IAC5D,CAAC;IAEM,OAAO;QACZ,OAAO,CACL,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,4CAA8B;YAC9C,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,gDAAkC,CACnD,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEM,KAAK;QACV,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,yCAA4B,CAAC;IACtD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IACvD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,mDAAqC,CAAC;IAC/D,CAAC;IAEM,aAAa;QAClB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,iDAAoC,CAAC;IAC9D,CAAC;IAEM,WAAW;QAChB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,+CAAkC,CAAC;IAC5D,CAAC;IAEM,SAAS;QACd,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,+CAAgC,CAAC;IAC1D,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,CAAC;IACxC,CAAC;IAEM,UAAU;QACf,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,6CAAiC,CAAC;IAC3D,CAAC;IAEM,UAAU;QACf,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,6CAAiC,CAAC;IAC3D,CAAC;IAEM,SAAS;QACd,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,yCAAgC,CAAC;IAC1D,CAAC;IAEM,SAAS;QACd,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,yCAAgC,CAAC;IAC1D,CAAC;IAEM,UAAU;QACf,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,0CAAiC,CAAC;IAC3D,CAAC;IAEM,SAAS;QACd,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,0CAAgC,CAAC;IAC1D,CAAC;IAEM,QAAQ;QACb,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,yCAA+B,CAAC;IACzD,CAAC;IAEM,UAAU;QACf,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,2CAAiC,CAAC;IAC3D,CAAC;IAEM,cAAc;QACnB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,gDAAqC,CAAC;IAC/D,CAAC;IAEM,YAAY;QACjB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,2CAAmC,CAAC;IAC7D,CAAC;IAEM,eAAe;QACpB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,iDAAsC,CAAC;IAChE,CAAC;IAEM,aAAa;QAClB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,+CAAoC,CAAC;IAC9D,CAAC;IAEM,QAAQ;QACb,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,uCAA+B,CAAC;IACzD,CAAC;IAEM,SAAS;QACd,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,wCAAgC,CAAC;IAC1D,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,oDAAyC,CAAC;IACnE,CAAC;IAEM,QAAQ;QACb,OAAO,IAAA,cAAM,EAAC,IAAI,CAAC,IAAI,uCAA+B,CAAC;IACzD,CAAC;CACF;AA1lCD,gCA0lCC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,cAAc,CAAC,IAAY,EAAE,CAAS,EAAE,KAAc;IAC7D,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO,IAAA,cAAM,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACxB;IAED,OAAO,IAAA,gBAAQ,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW;IAC9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,CAAC,CAAC,IAAI,gBAAgB,GAAG,GAAG,EAAE;QACrD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,eAAe,KAAK,CAAC,CAAC,IAAI,eAAe,GAAG,GAAG,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,cAAsB,EACtB,QAAgB,EAChB,oBAA6B;IAE7B,+DAA+D;IAC/D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,yDAAyD;IACzD,IAAI,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC3C,OAAO,KAAK,CAAC;KACd;IAED,qDAAqD;IACrD,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;QAC7C,OAAO,cAAc,KAAK,QAAQ,CAAC;KACpC;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpD,WAAW;IACX,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,8EAA8E;IAC9E,EAAE;IACF,uCAAuC;IACvC,qBAAqB;IACrB,6BAA6B;IAC7B,IAAI,UAAU,KAAK,CAAC,EAAE;QACpB,OAAO,CACL,oBAAoB,KAAK,IAAI;YAC7B,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS;YAC3D,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CACtE,CAAC;KACH;IAED,8CAA8C;IAC9C,EAAE;IACF,uCAAuC;IACvC,8BAA8B;IAC9B,sBAAsB;IACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE;QAC1D,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;YACpD,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAC9C,CAAC;KACH;IAED,sEAAsE;IACtE,OAAO,CACL,CAAC,oBAAoB,KAAK,IAAI;QAC5B,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS;QAC3D,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS;QACxE,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CACpF,CAAC;AACJ,CAAC;AA5DD,oDA4DC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAqB,EAAE,OAAgB;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAEnC,IAAI,MAAM,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QACtC,0EAA0E;QAC1E,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,IACE,oBAAoB,CAClB,cAAc,EACd,OAAO,CAAC,QAAQ,EAChB,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAC5E,KAAK,KAAK,EACX;YACA,OAAO,KAAK,CAAC;SACd;QAED,yFAAyF;QACzF,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YACpB,cAAc;YACd,OAAO,MAAM;iBACV,QAAQ,EAAE;iBACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;SACzF;aAAM,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;YAC1D,cAAc;YACd,yEAAyE;YACzE,uEAAuE;YACvE,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAC5D,CAAC;YAEF,wEAAwE;YACxE,oEAAoE;YACpE,8BAA8B;YAC9B,OAAO,OAAO,KAAK,gBAAgB,CAAC;SACrC;aAAM,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;YACjC,aAAa;YACb,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;gBAChC,0EAA0E;gBAC1E,0EAA0E;gBAC1E,sEAAsE;gBACtE,wBAAwB;gBACxB,OAAO,CACL,cAAc,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;oBAChD,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CACzC,CAAC;aACH;iBAAM;gBACL,WAAW;gBACX,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACtC;SACF;aAAM,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;YAChC,6EAA6E;YAC7E,uDAAuD;YACvD,yEAAyE;YACzE,uEAAuE;YACvE,sDAAsD;YACtD,OAAO,IAAA,0BAAkB,EACvB,OAAO,CAAC,GAAG,EACX,OAAO,EACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAC5D,CAAC;SACH;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QAED,gFAAgF;QAChF,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;YACzF,CAAC,CAAC,CACH,CAAC;KACH;SAAM,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;QAC3B,YAAY;QACZ,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5C;SAAM,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;QAC1D,YAAY;QACZ,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC;KAChC;SAAM,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;QAChC,WAAW;QACX,OAAO,IAAA,sBAAc,EAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC7C;SAAM,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;QACjC,WAAW;QACX,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACtC;IAED,UAAU;IACV,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB,EAAE,OAAgB;IAC3D,8EAA8E;IAC9E,kCAAkC;IAClC,IACE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK;QAC3C,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC;QAC1D,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;QACxD,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;QAChE,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,EAChE;QACA,OAAO,KAAK,CAAC;KACd;IAED,uFAAuF;IACvF,IACE,MAAM,CAAC,OAAO,KAAK,SAAS;QAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,KAAK,EACxF;QACA,OAAO,KAAK,CAAC;KACd;IAED,8EAA8E;IAC9E,IACE,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,IAAI,EACvF;QACA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js
new file mode 100644
index 0000000..112c4ba
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js
@@ -0,0 +1,210 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.removeTagsFromHtml = exports.selectTagsToRemove = exports.extractSelectorsFromRules = exports.extractTagsFromHtml = exports.extractHTMLSelectorFromRule = void 0;
+function extractHTMLSelectorFromRule(rule) {
+ if (rule.startsWith('^script') === false) {
+ return undefined;
+ }
+ const prefix = ':has-text(';
+ const selectors = [];
+ let index = 7;
+ // ^script:has-text
+ // ^ 7
+ // Prepare for finding one or more ':has-text(' selectors in a row
+ while (rule.startsWith(prefix, index)) {
+ index += prefix.length;
+ let currentParsingDepth = 1;
+ const startOfSelectorIndex = index;
+ let prev = -1; // previous character
+ for (; index < rule.length && currentParsingDepth !== 0; index += 1) {
+ const code = rule.charCodeAt(index);
+ if (prev !== 92 /* '\' */) {
+ if (code === 40 /* '(' */) {
+ currentParsingDepth += 1;
+ }
+ if (code === 41 /* ')' */) {
+ currentParsingDepth -= 1;
+ }
+ }
+ prev = code;
+ }
+ selectors.push(rule.slice(startOfSelectorIndex, index - 1));
+ }
+ if (index !== rule.length) {
+ return undefined;
+ }
+ return ['script', selectors];
+}
+exports.extractHTMLSelectorFromRule = extractHTMLSelectorFromRule;
+function extractTagsFromHtml(html, tag) {
+ const tags = [];
+ const prefix = `<${tag}`;
+ const suffix = `</${tag}>`;
+ // Keep track of the beginning of current identified tag
+ let index = html.indexOf(prefix);
+ // Keep tracks of index immediately following last extracted tag
+ let endOfLastTag = 0;
+ while (index !== -1) {
+ // Find index of end of current tag. If we do not find it, it could be
+ // because it will come in the next chunk and we should try parsing it
+ // again then.
+ const endOfTagIndex = html.indexOf('>', index + prefix.length);
+ if (endOfTagIndex === -1) {
+ return [tags, html.slice(0, index), html.slice(index)];
+ }
+ // Handle short tag form <tag/> which will not have a closing tag.
+ if (html.charCodeAt(endOfTagIndex - 1) === 47 /* '/' */) {
+ endOfLastTag = endOfTagIndex + 1;
+ tags.push([index, html.slice(index, endOfLastTag)]);
+ }
+ else {
+ // Find index of closing tag '</tag>'. If we do not find it, again, it
+ // could mean that it will come in next chunk and we need to try parsing
+ // it again with more input.
+ const indexOfClosingTag = html.indexOf(suffix, endOfTagIndex);
+ if (indexOfClosingTag === -1) {
+ return [tags, html.slice(0, index), html.slice(index)];
+ }
+ tags.push([index, html.slice(index, indexOfClosingTag + suffix.length)]);
+ endOfLastTag = indexOfClosingTag + suffix.length;
+ }
+ index = html.indexOf(prefix, endOfLastTag);
+ }
+ // Make sure we consume as much input as possible so that we do not parse the
+ // same portion of HTML again next time and we can stream chunks as early as
+ // possible.
+ //
+ // We check if there is at least one '<' char after the end of the last
+ // extracted tag; this would indicate that the next chunk might contain the
+ // remaining of a valid tag. We then look up to N characters after this '<'
+ // character, where N is the size of 'prefix'. The rational is that if we
+ // reached this part of the code, then it cannot be a match otherwise we
+ // would have returned earlier (from the loop).
+ let lastClosingTagIndex = html.lastIndexOf('>');
+ if (lastClosingTagIndex === -1) {
+ lastClosingTagIndex = endOfLastTag;
+ }
+ const indexOfNextTag = html.indexOf('<', lastClosingTagIndex);
+ // If no '<' in the remaining of input, then it means we can count this chunk
+ // as fully parsed (i.e.: next chunk can be parsed independently without
+ // missing a tag which would start in this one).
+ if (indexOfNextTag === -1) {
+ return [tags, html, ''];
+ }
+ // In case of a partial tag ending this 'html' chunk. Then check if we have
+ // enough information to discard it already based on the kind of tags we are
+ // looking for.
+ if (html.length - indexOfNextTag >= prefix.length ||
+ prefix.startsWith(html.slice(indexOfNextTag)) === false) {
+ return [tags, html, ''];
+ }
+ return [tags, html.slice(0, indexOfNextTag), html.slice(indexOfNextTag)];
+}
+exports.extractTagsFromHtml = extractTagsFromHtml;
+function extractSelectorsFromRules(filter) {
+ const patterns = [];
+ for (const [, selectors] of filter) {
+ const plainPatterns = [];
+ const regexpPatterns = [];
+ for (const selector of selectors) {
+ if (selector.charCodeAt(0) === 47 /* '/' */) {
+ if (selector.endsWith('/')) {
+ regexpPatterns.push(new RegExp(selector.slice(1, -1)));
+ }
+ else if (selector.endsWith('/i')) {
+ regexpPatterns.push(new RegExp(selector.slice(1, -2), 'i'));
+ }
+ }
+ else {
+ plainPatterns.push(selector);
+ }
+ }
+ if (plainPatterns.length !== 0 || regexpPatterns.length !== 0) {
+ patterns.push([plainPatterns, regexpPatterns]);
+ }
+ }
+ return patterns;
+}
+exports.extractSelectorsFromRules = extractSelectorsFromRules;
+/**
+ * Check if `tag` should be removed from HTML based on `plainPatterns` and
+ * `regexpPatterns`. For a tag to be removed, all elements from `plainPatterns`
+ * and `regexpPatterns` must match.
+ */
+function tagShouldBeRemoved(tag, plainPatterns, regexpPatterns) {
+ for (const pattern of plainPatterns) {
+ if (tag.indexOf(pattern) === -1) {
+ return false;
+ }
+ }
+ for (const pattern of regexpPatterns) {
+ if (pattern.test(tag) === false) {
+ return false;
+ }
+ }
+ return true;
+}
+function selectTagsToRemove(patterns, tags) {
+ const toRemove = [];
+ for (const tag of tags) {
+ for (const [plainPatterns, regexpPatterns] of patterns) {
+ if (tagShouldBeRemoved(tag[1], plainPatterns, regexpPatterns)) {
+ toRemove.push(tag);
+ break;
+ }
+ }
+ }
+ return toRemove;
+}
+exports.selectTagsToRemove = selectTagsToRemove;
+function removeTagsFromHtml(html, toRemove) {
+ if (toRemove.length === 0) {
+ return html;
+ }
+ let filteredHtml = html;
+ toRemove.reverse(); // make sure to remove from last to first tag (preserve indices)
+ for (const [index, tag] of toRemove) {
+ filteredHtml = filteredHtml.slice(0, index) + filteredHtml.slice(index + tag.length);
+ }
+ return filteredHtml;
+}
+exports.removeTagsFromHtml = removeTagsFromHtml;
+class StreamingHtmlFilter {
+ constructor(selectors) {
+ this.buffer = '';
+ this.patterns = extractSelectorsFromRules(selectors);
+ }
+ flush() {
+ return this.buffer;
+ }
+ write(chunk) {
+ // If there are no valid selectors, abort.
+ if (this.patterns.length === 0) {
+ return chunk;
+ }
+ // If given an empty string, abort.
+ if (chunk.length === 0) {
+ return chunk;
+ }
+ // Accumulate buffer + new data
+ this.buffer += chunk;
+ // Parse tags from `this.buffer`
+ const [tags, parsed, rest] = extractTagsFromHtml(this.buffer, 'script');
+ this.buffer = rest;
+ // If no tags were found, just return the parsed version
+ if (tags.length === 0) {
+ return parsed;
+ }
+ // Perform tags filtering using `this.patterns` and `this.regexps`.
+ return removeTagsFromHtml(parsed, selectTagsToRemove(this.patterns, tags));
+ }
+}
+exports.default = StreamingHtmlFilter;
+//# sourceMappingURL=html-filtering.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js.map
new file mode 100644
index 0000000..9ed918f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/html-filtering.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"html-filtering.js","sourceRoot":"","sources":["../../../src/html-filtering.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js
new file mode 100644
index 0000000..a3ed475
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js
@@ -0,0 +1,246 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.mergeDiffs = exports.generateDiff = exports.getLinesWithFilters = exports.parseFilters = exports.f = exports.parseFilter = exports.detectFilterType = void 0;
+const config_1 = require("./config");
+const cosmetic_1 = require("./filters/cosmetic");
+const network_1 = require("./filters/network");
+const utils_1 = require("./utils");
+/**
+ * Given a single line (string), checks if this would likely be a cosmetic
+ * filter, a network filter or something that is not supported. This check is
+ * performed before calling a more specific parser to create an instance of
+ * `NetworkFilter` or `CosmeticFilter`.
+ */
+function detectFilterType(line) {
+ // Ignore empty line
+ if (line.length === 0 || line.length === 1) {
+ return 0 /* FilterType.NOT_SUPPORTED */;
+ }
+ // Ignore comments
+ const firstCharCode = line.charCodeAt(0);
+ const secondCharCode = line.charCodeAt(1);
+ if (firstCharCode === 33 /* '!' */ ||
+ (firstCharCode === 35 /* '#' */ && secondCharCode <= 32) ||
+ (firstCharCode === 91 /* '[' */ && (0, utils_1.fastStartsWith)(line, '[Adblock'))) {
+ return 0 /* FilterType.NOT_SUPPORTED */;
+ }
+ // Fast heuristics to detect network filters
+ const lastCharCode = line.charCodeAt(line.length - 1);
+ if (firstCharCode === 36 /* '$' */ ||
+ firstCharCode === 38 /* '&' */ ||
+ firstCharCode === 42 /* '*' */ ||
+ firstCharCode === 45 /* '-' */ ||
+ firstCharCode === 46 /* '.' */ ||
+ firstCharCode === 47 /* '/' */ ||
+ firstCharCode === 58 /* ':' */ ||
+ firstCharCode === 61 /* '=' */ ||
+ firstCharCode === 63 /* '?' */ ||
+ firstCharCode === 64 /* '@' */ ||
+ firstCharCode === 95 /* '_' */ ||
+ firstCharCode === 124 /* '|' */ ||
+ lastCharCode === 124 /* '|' */) {
+ return 1 /* FilterType.NETWORK */;
+ }
+ // Ignore Adguard cosmetics
+ // `$$` = HTML filtering rules
+ const dollarIndex = line.indexOf('$');
+ if (dollarIndex !== -1 && dollarIndex !== line.length - 1) {
+ const afterDollarIndex = dollarIndex + 1;
+ const afterDollarCharCode = line.charCodeAt(afterDollarIndex);
+ // Ignore Adguard HTML rewrite rules
+ if (afterDollarCharCode === 36 /* '$' */ ||
+ (afterDollarCharCode === 64 /* '@' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, /* $@$ */ '@$', afterDollarIndex))) {
+ return 0 /* FilterType.NOT_SUPPORTED */;
+ }
+ }
+ // Check if filter is cosmetics
+ const sharpIndex = line.indexOf('#');
+ if (sharpIndex !== -1 && sharpIndex !== line.length - 1) {
+ const afterSharpIndex = sharpIndex + 1;
+ const afterSharpCharCode = line.charCodeAt(afterSharpIndex);
+ if (afterSharpCharCode === 35 /* '#'*/ ||
+ (afterSharpCharCode === 64 /* '@' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, /* #@# */ '@#', afterSharpIndex))
+ // TODO - support ADB/AdGuard extended css selectors
+ // || (afterSharpCharCode === 63 /* '?' */ &&
+ // fastStartsWithFrom(line, /* #?# */ '?#', afterSharpIndex))
+ ) {
+ // Parse supported cosmetic filter
+ // `##` `#@#`
+ return 2 /* FilterType.COSMETIC */;
+ }
+ else if ((afterSharpCharCode === 64 /* '@'*/ &&
+ ((0, utils_1.fastStartsWithFrom)(line, /* #@$# */ '@$#', afterSharpIndex) ||
+ (0, utils_1.fastStartsWithFrom)(line, /* #@%# */ '@%#', afterSharpIndex))) ||
+ (afterSharpCharCode === 37 /* '%' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, /* #%# */ '%#', afterSharpIndex)) ||
+ (afterSharpCharCode === 36 /* '$' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, /* #$# */ '$#', afterSharpIndex)) ||
+ (afterSharpCharCode === 63 /* '?' */ &&
+ (0, utils_1.fastStartsWithFrom)(line, /* #?# */ '?#', afterSharpIndex))) {
+ // Ignore Adguard cosmetics
+ // `#$#` `#@$#`
+ // `#%#` `#@%#`
+ // `#?#`
+ return 0 /* FilterType.NOT_SUPPORTED */;
+ }
+ }
+ // Everything else is a network filter
+ return 1 /* FilterType.NETWORK */;
+}
+exports.detectFilterType = detectFilterType;
+function parseFilter(filter) {
+ const filterType = detectFilterType(filter);
+ if (filterType === 1 /* FilterType.NETWORK */) {
+ return network_1.default.parse(filter, true);
+ }
+ else if (filterType === 2 /* FilterType.COSMETIC */) {
+ return cosmetic_1.default.parse(filter, true);
+ }
+ return null;
+}
+exports.parseFilter = parseFilter;
+function f(strings) {
+ return parseFilter(strings[0]);
+}
+exports.f = f;
+function parseFilters(list, config = new config_1.default()) {
+ config = new config_1.default(config);
+ const networkFilters = [];
+ const cosmeticFilters = [];
+ const lines = list.split('\n');
+ for (let i = 0; i < lines.length; i += 1) {
+ let line = lines[i];
+ // Check if `line` should be left-trimmed
+ if (line.length !== 0 && line.charCodeAt(0) <= 32) {
+ line = line.trim();
+ }
+ // Handle continuations
+ if (line.length > 2) {
+ while (i < lines.length - 1 &&
+ line.charCodeAt(line.length - 1) === 92 &&
+ line.charCodeAt(line.length - 2) === 32) {
+ line = line.slice(0, -2);
+ const nextLine = lines[i + 1];
+ if (nextLine.length > 4 &&
+ nextLine.charCodeAt(0) === 32 &&
+ nextLine.charCodeAt(1) === 32 &&
+ nextLine.charCodeAt(2) === 32 &&
+ nextLine.charCodeAt(3) === 32 &&
+ nextLine.charCodeAt(4) !== 32) {
+ line += nextLine.slice(4);
+ i += 1;
+ }
+ else {
+ break;
+ }
+ }
+ }
+ // Check if `line` should be right-trimmed
+ if (line.length !== 0 && line.charCodeAt(line.length - 1) <= 32) {
+ line = line.trim();
+ }
+ // Detect if filter is supported, network or cosmetic
+ const filterType = detectFilterType(line);
+ if (filterType === 1 /* FilterType.NETWORK */ && config.loadNetworkFilters === true) {
+ const filter = network_1.default.parse(line, config.debug);
+ if (filter !== null) {
+ networkFilters.push(filter);
+ }
+ }
+ else if (filterType === 2 /* FilterType.COSMETIC */ && config.loadCosmeticFilters === true) {
+ const filter = cosmetic_1.default.parse(line, config.debug);
+ if (filter !== null) {
+ if (config.loadGenericCosmeticsFilters === true || filter.isGenericHide() === false) {
+ cosmeticFilters.push(filter);
+ }
+ }
+ }
+ }
+ return { networkFilters, cosmeticFilters };
+}
+exports.parseFilters = parseFilters;
+function getFilters(list, config) {
+ const { networkFilters, cosmeticFilters } = parseFilters(list, config);
+ const filters = [];
+ return filters.concat(networkFilters).concat(cosmeticFilters);
+}
+/**
+ * Helper used to return a set of lines as strings where each line is
+ * guaranteed to be a valid filter (i.e.: comments, empty lines and
+ * un-supported filters are dropped).
+ */
+function getLinesWithFilters(list, config = new config_1.default()) {
+ // Set config to `debug` so that we keep track of raw lines for each filter
+ return new Set(getFilters(list, new config_1.default(Object.assign({}, config, { debug: true }))).map(({ rawLine }) => rawLine));
+}
+exports.getLinesWithFilters = getLinesWithFilters;
+/**
+ * Given two versions of the same subscription (e.g.: EasyList) as a string,
+ * generate a raw diff (i.e.: a list of filters added and filters removed, in
+ * their raw string form).
+ */
+function generateDiff(prevRevision, newRevision, config = new config_1.default()) {
+ // Set config to `debug` so that we keep track of raw lines for each filter
+ const debugConfig = new config_1.default(Object.assign({}, config, { debug: true }));
+ const prevRevisionFilters = getFilters(prevRevision, debugConfig);
+ const prevRevisionIds = new Set(prevRevisionFilters.map((filter) => filter.getId()));
+ const newRevisionFilters = getFilters(newRevision, debugConfig);
+ const newRevisionIds = new Set(newRevisionFilters.map((filter) => filter.getId()));
+ // Check which filters were added, based on ID
+ const added = new Set();
+ for (const filter of newRevisionFilters) {
+ if (!prevRevisionIds.has(filter.getId())) {
+ added.add(filter.rawLine);
+ }
+ }
+ // Check which filters were removed, based on ID
+ const removed = new Set();
+ for (const filter of prevRevisionFilters) {
+ if (!newRevisionIds.has(filter.getId())) {
+ removed.add(filter.rawLine);
+ }
+ }
+ return { added: Array.from(added), removed: Array.from(removed) };
+}
+exports.generateDiff = generateDiff;
+/**
+ * Merge several raw diffs into one, taking care of accumulating added and
+ * removed filters, even if several diffs add/remove the same ones.
+ */
+function mergeDiffs(diffs) {
+ const addedCumul = new Set();
+ const removedCumul = new Set();
+ for (const { added, removed } of diffs) {
+ if (added !== undefined) {
+ for (const str of added) {
+ if (removedCumul.has(str)) {
+ removedCumul.delete(str);
+ }
+ addedCumul.add(str);
+ }
+ }
+ if (removed !== undefined) {
+ for (const str of removed) {
+ if (addedCumul.has(str)) {
+ addedCumul.delete(str);
+ }
+ removedCumul.add(str);
+ }
+ }
+ }
+ return {
+ added: Array.from(addedCumul),
+ removed: Array.from(removedCumul),
+ };
+}
+exports.mergeDiffs = mergeDiffs;
+//# sourceMappingURL=lists.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js.map
new file mode 100644
index 0000000..a079613
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/lists.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../../src/lists.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js
new file mode 100644
index 0000000..6e218cb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js
@@ -0,0 +1,346 @@
+"use strict";
+/*!
+ * Copyright Mathias Bynens <https://mathiasbynens.be/>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.version = exports.toASCII = exports.toUnicode = exports.encode = exports.decode = void 0;
+/** Highest positive signed 32-bit float value */
+const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
+/** Bootstring parameters */
+const base = 36;
+const tMin = 1;
+const tMax = 26;
+const skew = 38;
+const damp = 700;
+const initialBias = 72;
+const initialN = 128; // 0x80
+const delimiter = '-'; // '\x2D'
+/** Regular expressions */
+const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
+const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
+const errors = {
+ 'invalid-input': 'Invalid input',
+ 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
+ 'overflow': 'Overflow: input needs wider integers to process',
+};
+/** Convenience shortcuts */
+const baseMinusTMin = base - tMin;
+/*--------------------------------------------------------------------------*/
+/**
+ * A generic error utility function.
+ * @private
+ * @param {String} type The error type.
+ * @returns {Error} Throws a `RangeError` with the applicable error message.
+ */
+function error(type) {
+ throw new RangeError(errors[type]);
+}
+/**
+ * Creates an array containing the numeric code points of each Unicode
+ * character in the string. While JavaScript uses UCS-2 internally,
+ * this function will convert a pair of surrogate halves (each of which
+ * UCS-2 exposes as separate characters) into a single code point,
+ * matching UTF-16.
+ * @see `punycode.ucs2.encode`
+ * @see <https://mathiasbynens.be/notes/javascript-encoding>
+ * @memberOf punycode.ucs2
+ * @name decode
+ * @param {String} string The Unicode input string (UCS-2).
+ * @returns {Array} The new array of code points.
+ */
+function ucs2decode(str) {
+ const output = [];
+ let counter = 0;
+ const length = str.length;
+ while (counter < length) {
+ const value = str.charCodeAt(counter++);
+ if (value >= 0xd800 && value <= 0xdbff && counter < length) {
+ // It's a high surrogate, and there is a next character.
+ const extra = str.charCodeAt(counter++);
+ if ((extra & 0xfc00) === 0xdc00) {
+ // Low surrogate.
+ output.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
+ }
+ else {
+ // It's an unmatched surrogate; only append this code unit, in case the
+ // next code unit is the high surrogate of a surrogate pair.
+ output.push(value);
+ counter--;
+ }
+ }
+ else {
+ output.push(value);
+ }
+ }
+ return output;
+}
+/**
+ * Converts a basic code point into a digit/integer.
+ * @see `digitToBasic()`
+ * @private
+ * @param {Number} codePoint The basic numeric code point value.
+ * @returns {Number} The numeric value of a basic code point (for use in
+ * representing integers) in the range `0` to `base - 1`, or `base` if
+ * the code point does not represent a value.
+ */
+function basicToDigit(codePoint) {
+ if (codePoint - 0x30 < 0x0a) {
+ return codePoint - 0x16;
+ }
+ if (codePoint - 0x41 < 0x1a) {
+ return codePoint - 0x41;
+ }
+ if (codePoint - 0x61 < 0x1a) {
+ return codePoint - 0x61;
+ }
+ return base;
+}
+/**
+ * Converts a digit/integer into a basic code point.
+ * @see `basicToDigit()`
+ * @private
+ * @param {Number} digit The numeric value of a basic code point.
+ * @returns {Number} The basic code point whose value (when used for
+ * representing integers) is `digit`, which needs to be in the range
+ * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
+ * used; else, the lowercase form is used. The behavior is undefined
+ * if `flag` is non-zero and `digit` has no uppercase form.
+ */
+function digitToBasic(digit, flag) {
+ // 0..25 map to ASCII a..z or A..Z
+ // 26..35 map to ASCII 0..9
+ return digit + 22 + 75 * (digit < 26 ? 1 : 0) - ((flag !== 0 ? 1 : 0) << 5);
+}
+/**
+ * Bias adaptation function as per section 3.4 of RFC 3492.
+ * https://tools.ietf.org/html/rfc3492#section-3.4
+ * @private
+ */
+function adapt(delta, numPoints, firstTime) {
+ let k = 0;
+ delta = firstTime ? Math.floor(delta / damp) : delta >> 1;
+ delta += Math.floor(delta / numPoints);
+ for (; /* no initialization */ delta > (baseMinusTMin * tMax) >> 1; k += base) {
+ delta = Math.floor(delta / baseMinusTMin);
+ }
+ return Math.floor(k + ((baseMinusTMin + 1) * delta) / (delta + skew));
+}
+/**
+ * Converts a Punycode string of ASCII-only symbols to a string of Unicode
+ * symbols.
+ * @memberOf punycode
+ * @param {String} input The Punycode string of ASCII-only symbols.
+ * @returns {String} The resulting string of Unicode symbols.
+ */
+function decode(input) {
+ // Don't use UCS-2.
+ const output = [];
+ const inputLength = input.length;
+ let i = 0;
+ let n = initialN;
+ let bias = initialBias;
+ // Handle the basic code points: let `basic` be the number of input code
+ // points before the last delimiter, or `0` if there is none, then copy
+ // the first basic code points to the output.
+ let basic = input.lastIndexOf(delimiter);
+ if (basic < 0) {
+ basic = 0;
+ }
+ for (let j = 0; j < basic; ++j) {
+ // if it's not a basic code point
+ if (input.charCodeAt(j) >= 0x80) {
+ error('not-basic');
+ }
+ output.push(input.charCodeAt(j));
+ }
+ // Main decoding loop: start just after the last delimiter if any basic code
+ // points were copied; start at the beginning otherwise.
+ for (let index = basic > 0 ? basic + 1 : 0; index < inputLength /* no final expression */;) {
+ // `index` is the index of the next character to be consumed.
+ // Decode a generalized variable-length integer into `delta`,
+ // which gets added to `i`. The overflow checking is easier
+ // if we increase `i` as we go, then subtract off its starting
+ // value at the end to obtain `delta`.
+ const oldi = i;
+ for (let w = 1, k = base /* no condition */;; k += base) {
+ if (index >= inputLength) {
+ error('invalid-input');
+ }
+ const digit = basicToDigit(input.charCodeAt(index++));
+ if (digit >= base || digit > Math.floor((maxInt - i) / w)) {
+ error('overflow');
+ }
+ i += digit * w;
+ const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+ if (digit < t) {
+ break;
+ }
+ const baseMinusT = base - t;
+ if (w > Math.floor(maxInt / baseMinusT)) {
+ error('overflow');
+ }
+ w *= baseMinusT;
+ }
+ const out = output.length + 1;
+ bias = adapt(i - oldi, out, oldi === 0);
+ // `i` was supposed to wrap around from `out` to `0`,
+ // incrementing `n` each time, so we'll fix that now:
+ if (Math.floor(i / out) > maxInt - n) {
+ error('overflow');
+ }
+ n += Math.floor(i / out);
+ i %= out;
+ // Insert `n` at position `i` of the output.
+ output.splice(i++, 0, n);
+ }
+ return String.fromCodePoint.apply(null, output);
+}
+exports.decode = decode;
+/**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ * @memberOf punycode
+ * @param {String} input The string of Unicode symbols.
+ * @returns {String} The resulting Punycode string of ASCII-only symbols.
+ */
+function encode(str) {
+ const output = [];
+ // Convert the input in UCS-2 to an array of Unicode code points.
+ const input = ucs2decode(str);
+ // Cache the length.
+ const inputLength = input.length;
+ // Initialize the state.
+ let n = initialN;
+ let delta = 0;
+ let bias = initialBias;
+ // Handle the basic code points.
+ for (let i = 0; i < input.length; i += 1) {
+ const currentValue = input[i];
+ if (currentValue < 0x80) {
+ output.push(String.fromCharCode(currentValue));
+ }
+ }
+ const basicLength = output.length;
+ let handledCPCount = basicLength;
+ // `handledCPCount` is the number of code points that have been handled;
+ // `basicLength` is the number of basic code points.
+ // Finish the basic string with a delimiter unless it's empty.
+ if (basicLength) {
+ output.push(delimiter);
+ }
+ // Main encoding loop:
+ while (handledCPCount < inputLength) {
+ // All non-basic code points < n have been handled already. Find the next
+ // larger one:
+ let m = maxInt;
+ for (let i = 0; i < input.length; i += 1) {
+ const currentValue = input[i];
+ if (currentValue >= n && currentValue < m) {
+ m = currentValue;
+ }
+ }
+ // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
+ // but guard against overflow.
+ const handledCPCountPlusOne = handledCPCount + 1;
+ if (m - n > Math.floor((maxInt - delta) / handledCPCountPlusOne)) {
+ error('overflow');
+ }
+ delta += (m - n) * handledCPCountPlusOne;
+ n = m;
+ for (let i = 0; i < input.length; i += 1) {
+ const currentValue = input[i];
+ if (currentValue < n && ++delta > maxInt) {
+ error('overflow');
+ }
+ if (currentValue === n) {
+ // Represent delta as a generalized variable-length integer.
+ let q = delta;
+ for (let k = base /* no condition */;; k += base) {
+ const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+ if (q < t) {
+ break;
+ }
+ const qMinusT = q - t;
+ const baseMinusT = base - t;
+ output.push(String.fromCharCode(digitToBasic(t + (qMinusT % baseMinusT), 0)));
+ q = Math.floor(qMinusT / baseMinusT);
+ }
+ output.push(String.fromCharCode(digitToBasic(q, 0)));
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
+ delta = 0;
+ ++handledCPCount;
+ }
+ }
+ ++delta;
+ ++n;
+ }
+ return output.join('');
+}
+exports.encode = encode;
+/**
+ * Converts a Punycode string representing a domain name or an email address
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
+ * it doesn't matter if you call it on a string that has already been
+ * converted to Unicode.
+ * @memberOf punycode
+ * @param {String} input The Punycoded domain name or email address to
+ * convert to Unicode.
+ * @returns {String} The Unicode representation of the given Punycode
+ * string.
+ */
+function toUnicode(input) {
+ const labels = input.replace(regexSeparators, '\x2E').split('.');
+ const encoded = [];
+ for (let i = 0; i < labels.length; i += 1) {
+ encoded.push(labels[i].startsWith('xn--') ? decode(labels[i].slice(4).toLowerCase()) : labels[i]);
+ }
+ return encoded.join('.');
+}
+exports.toUnicode = toUnicode;
+/**
+ * Converts a Unicode string representing a domain name or an email address to
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
+ * i.e. it doesn't matter if you call it with a domain that's already in
+ * ASCII.
+ * @memberOf punycode
+ * @param {String} input The domain name or email address to convert, as a
+ * Unicode string.
+ * @returns {String} The Punycode representation of the given domain name or
+ * email address.
+ */
+function toASCII(input) {
+ // Avoid `split(regex)` for IE8 compatibility. See #17.
+ const labels = input.replace(regexSeparators, '\x2E').split('.');
+ const encoded = [];
+ for (let i = 0; i < labels.length; i += 1) {
+ encoded.push(regexNonASCII.test(labels[i]) ? 'xn--' + encode(labels[i]) : labels[i]);
+ }
+ return encoded.join('.');
+}
+exports.toASCII = toASCII;
+/**
+ * A string representing the current Punycode.js version number.
+ * @memberOf punycode
+ * @type String
+ */
+exports.version = '2.1.0';
+//# sourceMappingURL=punycode.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js.map
new file mode 100644
index 0000000..7d753bf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/punycode.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"punycode.js","sourceRoot":"","sources":["../../../src/punycode.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js
new file mode 100644
index 0000000..f21c968
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js
@@ -0,0 +1,18 @@
+"use strict";
+/**
+ * The MIT License (MIT)
+ *
+ * Copyright (c) Feross Aboukhadijeh
+ *
+ * Originally from: https://github.com/feross/queue-microtask
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.queueMicrotask = void 0;
+let promise;
+exports.queueMicrotask = typeof window !== 'undefined' && typeof window.queueMicrotask === 'function'
+ ? (cb) => window.queueMicrotask(cb)
+ : // reuse resolved promise, and allocate it lazily
+ (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => {
+ throw err;
+ }, 0));
+//# sourceMappingURL=queue-microtask.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js.map
new file mode 100644
index 0000000..9414341
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/queue-microtask.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queue-microtask.js","sourceRoot":"","sources":["../../../src/queue-microtask.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,IAAI,OAAkC,CAAC;AAI1B,QAAA,cAAc,GACzB,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU;IAC1E,CAAC,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7C,CAAC,CAAC,iDAAiD;QACjD,CAAC,EAAY,EAAE,EAAE,CACf,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAChE,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,GAAG,CAAC;QACZ,CAAC,EAAE,CAAC,CAAC,CACN,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js
new file mode 100644
index 0000000..8113a7c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js
@@ -0,0 +1,270 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeRequest = exports.getHostnameHashesFromLabelsBackward = exports.getEntityHashesFromLabelsBackward = exports.getHostnameWithoutPublicSuffix = exports.getHashesFromLabelsBackward = exports.hashHostnameBackward = exports.NORMALIZED_TYPE_TOKEN = void 0;
+const guess_url_type_1 = require("@remusao/guess-url-type");
+const tldts_experimental_1 = require("tldts-experimental");
+const data_view_1 = require("./data-view");
+const tokens_buffer_1 = require("./tokens-buffer");
+const utils_1 = require("./utils");
+const TLDTS_OPTIONS = {
+ extractHostname: true,
+ mixedInputs: false,
+ validateHostname: false,
+};
+exports.NORMALIZED_TYPE_TOKEN = {
+ beacon: (0, utils_1.fastHash)('type:beacon'),
+ cspReport: (0, utils_1.fastHash)('type:csp'),
+ csp_report: (0, utils_1.fastHash)('type:csp'),
+ cspviolationreport: (0, utils_1.fastHash)('type:cspviolationreport'),
+ document: (0, utils_1.fastHash)('type:document'),
+ eventsource: (0, utils_1.fastHash)('type:other'),
+ fetch: (0, utils_1.fastHash)('type:xhr'),
+ font: (0, utils_1.fastHash)('type:font'),
+ image: (0, utils_1.fastHash)('type:image'),
+ imageset: (0, utils_1.fastHash)('type:image'),
+ mainFrame: (0, utils_1.fastHash)('type:document'),
+ main_frame: (0, utils_1.fastHash)('type:document'),
+ manifest: (0, utils_1.fastHash)('type:other'),
+ media: (0, utils_1.fastHash)('type:media'),
+ object: (0, utils_1.fastHash)('type:object'),
+ object_subrequest: (0, utils_1.fastHash)('type:object'),
+ other: (0, utils_1.fastHash)('type:other'),
+ ping: (0, utils_1.fastHash)('type:ping'),
+ prefetch: (0, utils_1.fastHash)('type:other'),
+ preflight: (0, utils_1.fastHash)('type:preflight'),
+ script: (0, utils_1.fastHash)('type:script'),
+ signedexchange: (0, utils_1.fastHash)('type:signedexchange'),
+ speculative: (0, utils_1.fastHash)('type:other'),
+ stylesheet: (0, utils_1.fastHash)('type:stylesheet'),
+ subFrame: (0, utils_1.fastHash)('type:subdocument'),
+ sub_frame: (0, utils_1.fastHash)('type:subdocument'),
+ texttrack: (0, utils_1.fastHash)('type:other'),
+ webSocket: (0, utils_1.fastHash)('type:websocket'),
+ web_manifest: (0, utils_1.fastHash)('type:other'),
+ websocket: (0, utils_1.fastHash)('type:websocket'),
+ xhr: (0, utils_1.fastHash)('type:xhr'),
+ xml_dtd: (0, utils_1.fastHash)('type:other'),
+ xmlhttprequest: (0, utils_1.fastHash)('type:xhr'),
+ xslt: (0, utils_1.fastHash)('type:other'),
+};
+function hashHostnameBackward(hostname) {
+ let hash = utils_1.HASH_SEED;
+ for (let j = hostname.length - 1; j >= 0; j -= 1) {
+ hash = (hash * 33) ^ hostname.charCodeAt(j);
+ }
+ return hash >>> 0;
+}
+exports.hashHostnameBackward = hashHostnameBackward;
+function getHashesFromLabelsBackward(hostname, end, startOfDomain) {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ let hash = utils_1.HASH_SEED;
+ // Compute hash backward, label per label
+ for (let i = end - 1; i >= 0; i -= 1) {
+ const code = hostname.charCodeAt(i);
+ // Process label
+ if (code === 46 /* '.' */ && i < startOfDomain) {
+ tokens_buffer_1.TOKENS_BUFFER.push(hash >>> 0);
+ }
+ // Update hash
+ hash = (hash * 33) ^ code;
+ }
+ tokens_buffer_1.TOKENS_BUFFER.push(hash >>> 0);
+ return tokens_buffer_1.TOKENS_BUFFER.slice();
+}
+exports.getHashesFromLabelsBackward = getHashesFromLabelsBackward;
+/**
+ * Given a hostname and its domain, return the hostname without the public
+ * suffix. We know that the domain, with one less label on the left, will be a
+ * the public suffix; and from there we know which trailing portion of
+ * `hostname` we should remove.
+ */
+function getHostnameWithoutPublicSuffix(hostname, domain) {
+ let hostnameWithoutPublicSuffix = null;
+ const indexOfDot = domain.indexOf('.');
+ if (indexOfDot !== -1) {
+ const publicSuffix = domain.slice(indexOfDot + 1);
+ hostnameWithoutPublicSuffix = hostname.slice(0, -publicSuffix.length - 1);
+ }
+ return hostnameWithoutPublicSuffix;
+}
+exports.getHostnameWithoutPublicSuffix = getHostnameWithoutPublicSuffix;
+function getEntityHashesFromLabelsBackward(hostname, domain) {
+ const hostnameWithoutPublicSuffix = getHostnameWithoutPublicSuffix(hostname, domain);
+ if (hostnameWithoutPublicSuffix !== null) {
+ return getHashesFromLabelsBackward(hostnameWithoutPublicSuffix, hostnameWithoutPublicSuffix.length, hostnameWithoutPublicSuffix.length);
+ }
+ return data_view_1.EMPTY_UINT32_ARRAY;
+}
+exports.getEntityHashesFromLabelsBackward = getEntityHashesFromLabelsBackward;
+function getHostnameHashesFromLabelsBackward(hostname, domain) {
+ return getHashesFromLabelsBackward(hostname, hostname.length, hostname.length - domain.length);
+}
+exports.getHostnameHashesFromLabelsBackward = getHostnameHashesFromLabelsBackward;
+function isThirdParty(hostname, domain, sourceHostname, sourceDomain, type) {
+ if (type === 'main_frame' || type === 'mainFrame') {
+ return false;
+ }
+ else if (domain.length !== 0 && sourceDomain.length !== 0) {
+ return domain !== sourceDomain;
+ }
+ else if (domain.length !== 0 && sourceHostname.length !== 0) {
+ return domain !== sourceHostname;
+ }
+ else if (sourceDomain.length !== 0 && hostname.length !== 0) {
+ return hostname !== sourceDomain;
+ }
+ return false;
+}
+class Request {
+ /**
+ * Create an instance of `Request` from raw request details.
+ */
+ static fromRawDetails({ requestId = '0', tabId = 0, url = '', hostname, domain, sourceUrl = '', sourceHostname, sourceDomain, type = 'main_frame', _originalRequestDetails, }) {
+ url = url.toLowerCase();
+ if (hostname === undefined || domain === undefined) {
+ const parsed = (0, tldts_experimental_1.parse)(url, TLDTS_OPTIONS);
+ hostname = hostname || parsed.hostname || '';
+ domain = domain || parsed.domain || '';
+ }
+ // Initialize source URL
+ if (sourceHostname === undefined || sourceDomain === undefined) {
+ const parsed = (0, tldts_experimental_1.parse)(sourceHostname || sourceDomain || sourceUrl, TLDTS_OPTIONS);
+ sourceHostname = sourceHostname || parsed.hostname || '';
+ sourceDomain = sourceDomain || parsed.domain || sourceHostname || '';
+ }
+ return new Request({
+ requestId,
+ tabId,
+ domain,
+ hostname,
+ url,
+ sourceDomain,
+ sourceHostname,
+ sourceUrl,
+ type,
+ _originalRequestDetails,
+ });
+ }
+ constructor({ requestId, tabId, type, domain, hostname, url, sourceDomain, sourceHostname, _originalRequestDetails, }) {
+ // Lazy attributes
+ this.tokens = undefined;
+ this.hostnameHashes = undefined;
+ this.entityHashes = undefined;
+ this._originalRequestDetails = _originalRequestDetails;
+ this.id = requestId;
+ this.tabId = tabId;
+ this.type = type;
+ this.url = url;
+ this.hostname = hostname;
+ this.domain = domain;
+ this.sourceHostnameHashes =
+ sourceHostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : getHostnameHashesFromLabelsBackward(sourceHostname, sourceDomain);
+ this.sourceEntityHashes =
+ sourceHostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : getEntityHashesFromLabelsBackward(sourceHostname, sourceDomain);
+ // Decide on partiness
+ this.isThirdParty = isThirdParty(hostname, domain, sourceHostname, sourceDomain, type);
+ this.isFirstParty = !this.isThirdParty;
+ // Check protocol
+ this.isSupported = true;
+ if (this.type === 'websocket' || this.url.startsWith('ws:') || this.url.startsWith('wss:')) {
+ this.isHttp = false;
+ this.isHttps = false;
+ this.type = 'websocket';
+ this.isSupported = true;
+ }
+ else if (this.url.startsWith('http:')) {
+ this.isHttp = true;
+ this.isHttps = false;
+ }
+ else if (this.url.startsWith('https:')) {
+ this.isHttps = true;
+ this.isHttp = false;
+ }
+ else if (this.url.startsWith('data:')) {
+ this.isHttp = false;
+ this.isHttps = false;
+ // Only keep prefix of URL
+ const indexOfComa = this.url.indexOf(',');
+ if (indexOfComa !== -1) {
+ this.url = this.url.slice(0, indexOfComa);
+ }
+ }
+ else {
+ this.isHttp = false;
+ this.isHttps = false;
+ this.isSupported = false;
+ }
+ }
+ getHostnameHashes() {
+ if (this.hostnameHashes === undefined) {
+ this.hostnameHashes =
+ this.hostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : getHostnameHashesFromLabelsBackward(this.hostname, this.domain);
+ }
+ return this.hostnameHashes;
+ }
+ getEntityHashes() {
+ if (this.entityHashes === undefined) {
+ this.entityHashes =
+ this.hostname.length === 0
+ ? data_view_1.EMPTY_UINT32_ARRAY
+ : getEntityHashesFromLabelsBackward(this.hostname, this.domain);
+ }
+ return this.entityHashes;
+ }
+ getTokens() {
+ if (this.tokens === undefined) {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ for (const hash of this.sourceHostnameHashes) {
+ tokens_buffer_1.TOKENS_BUFFER.push(hash);
+ }
+ // Add token corresponding to request type
+ tokens_buffer_1.TOKENS_BUFFER.push(exports.NORMALIZED_TYPE_TOKEN[this.type]);
+ (0, utils_1.tokenizeNoSkipInPlace)(this.url, tokens_buffer_1.TOKENS_BUFFER);
+ this.tokens = tokens_buffer_1.TOKENS_BUFFER.slice();
+ }
+ return this.tokens;
+ }
+ isMainFrame() {
+ return this.type === 'main_frame' || this.type === 'mainFrame';
+ }
+ isSubFrame() {
+ return this.type === 'sub_frame' || this.type === 'subFrame';
+ }
+ /**
+ * Calling this method will attempt to guess the type of a request based on
+ * information found in `url` only. This can be useful to try and fine-tune
+ * the type of a Request when it is not otherwise available or if it was
+ * inferred as 'other'.
+ */
+ guessTypeOfRequest() {
+ const currentType = this.type;
+ this.type = (0, guess_url_type_1.default)(this.url);
+ if (currentType !== this.type) {
+ this.tokens = undefined;
+ }
+ return this.type;
+ }
+}
+exports.default = Request;
+/**
+ * Kept for backward compatibility. The recommended way is to call
+ * `Request.fromRawDetails` directly.
+ */
+function makeRequest(details) {
+ return Request.fromRawDetails(details);
+}
+exports.makeRequest = makeRequest;
+//# sourceMappingURL=request.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js.map
new file mode 100644
index 0000000..4d1eb0e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/request.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js
new file mode 100644
index 0000000..2195085
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js
@@ -0,0 +1,138 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const small_1 = require("@remusao/small");
+const data_view_1 = require("./data-view");
+// Polyfill for `btoa`
+function btoaPolyfill(buffer) {
+ if (typeof btoa !== 'undefined') {
+ return btoa(buffer);
+ }
+ else if (typeof Buffer !== 'undefined') {
+ return Buffer.from(buffer).toString('base64');
+ }
+ return buffer;
+}
+// TODO - support # alias
+// TODO - support empty resource body
+/**
+ * Abstraction on top of resources.txt used for redirections as well as script
+ * injections. It contains logic to parse, serialize and get resources by name
+ * for use in the engine.
+ */
+class Resources {
+ static deserialize(buffer) {
+ const checksum = buffer.getASCII();
+ // Deserialize `resources`
+ const resources = new Map();
+ const numberOfResources = buffer.getUint16();
+ for (let i = 0; i < numberOfResources; i += 1) {
+ resources.set(buffer.getASCII(), {
+ contentType: buffer.getASCII(),
+ body: buffer.getASCII(),
+ });
+ }
+ // Deserialize `js`
+ const js = new Map();
+ resources.forEach(({ contentType, body }, name) => {
+ if (contentType === 'application/javascript') {
+ js.set(name, body);
+ }
+ });
+ return new Resources({
+ checksum,
+ js,
+ resources,
+ });
+ }
+ static parse(data, { checksum }) {
+ const typeToResource = new Map();
+ const trimComments = (str) => str.replace(/^\s*#.*$/gm, '');
+ const chunks = data.split('\n\n');
+ for (const chunk of chunks) {
+ const resource = trimComments(chunk).trim();
+ if (resource.length !== 0) {
+ const firstNewLine = resource.indexOf('\n');
+ const split = resource.slice(0, firstNewLine).split(/\s+/);
+ const name = split[0];
+ const type = split[1];
+ const body = resource.slice(firstNewLine + 1);
+ if (name === undefined || type === undefined || body === undefined) {
+ continue;
+ }
+ let resources = typeToResource.get(type);
+ if (resources === undefined) {
+ resources = new Map();
+ typeToResource.set(type, resources);
+ }
+ resources.set(name, body);
+ }
+ }
+ // The resource containing javascirpts to be injected
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ const js = typeToResource.get('application/javascript') || new Map();
+ for (const [key, value] of js.entries()) {
+ if (key.endsWith('.js')) {
+ js.set(key.slice(0, -3), value);
+ }
+ }
+ // Create a mapping from resource name to { contentType, data }
+ // used for request redirection.
+ const resourcesByName = new Map();
+ typeToResource.forEach((resources, contentType) => {
+ resources.forEach((resource, name) => {
+ resourcesByName.set(name, {
+ contentType,
+ body: resource,
+ });
+ });
+ });
+ return new Resources({
+ checksum,
+ js,
+ resources: resourcesByName,
+ });
+ }
+ constructor({ checksum = '', js = new Map(), resources = new Map() } = {}) {
+ this.checksum = checksum;
+ this.js = js;
+ this.resources = resources;
+ }
+ getResource(name) {
+ const { body, contentType } = this.resources.get(name) || (0, small_1.getResourceForMime)(name);
+ let dataUrl;
+ if (contentType.indexOf(';') !== -1) {
+ dataUrl = `data:${contentType},${body}`;
+ }
+ else {
+ dataUrl = `data:${contentType};base64,${btoaPolyfill(body)}`;
+ }
+ return { body, contentType, dataUrl };
+ }
+ getSerializedSize() {
+ let estimatedSize = (0, data_view_1.sizeOfASCII)(this.checksum) + 2 * (0, data_view_1.sizeOfByte)(); // resources.size
+ this.resources.forEach(({ contentType, body }, name) => {
+ estimatedSize += (0, data_view_1.sizeOfASCII)(name) + (0, data_view_1.sizeOfASCII)(contentType) + (0, data_view_1.sizeOfASCII)(body);
+ });
+ return estimatedSize;
+ }
+ serialize(buffer) {
+ // Serialize `checksum`
+ buffer.pushASCII(this.checksum);
+ // Serialize `resources`
+ buffer.pushUint16(this.resources.size);
+ this.resources.forEach(({ contentType, body }, name) => {
+ buffer.pushASCII(name);
+ buffer.pushASCII(contentType);
+ buffer.pushASCII(body);
+ });
+ }
+}
+exports.default = Resources;
+//# sourceMappingURL=resources.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js.map
new file mode 100644
index 0000000..85fedbb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/resources.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/resources.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js
new file mode 100644
index 0000000..587010d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js
@@ -0,0 +1,43 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TOKENS_BUFFER = exports.TokensBuffer = void 0;
+/**
+ * Thin abstraction around a Uint32Array which allows to push tokens
+ * whithout caring for the offset. It is used as a way to avoid multiple
+ * allocations while calling tokenization (mostly beneficitial for
+ * `NetworkFilter.getTokens()`).
+ */
+class TokensBuffer {
+ constructor(size) {
+ this.pos = 0;
+ this.buffer = new Uint32Array(size);
+ }
+ reset() {
+ this.pos = 0;
+ }
+ slice() {
+ return this.buffer.slice(0, this.pos);
+ }
+ push(token) {
+ this.buffer[this.pos++] = token;
+ }
+ empty() {
+ return this.pos === 0;
+ }
+ full() {
+ return this.pos === this.buffer.length;
+ }
+ remaining() {
+ return this.buffer.length - this.pos;
+ }
+}
+exports.TokensBuffer = TokensBuffer;
+exports.TOKENS_BUFFER = new TokensBuffer(1024);
+//# sourceMappingURL=tokens-buffer.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js.map
new file mode 100644
index 0000000..a633987
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/tokens-buffer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"tokens-buffer.js","sourceRoot":"","sources":["../../../src/tokens-buffer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;GAKG;AACH,MAAa,YAAY;IAIvB,YAAY,IAAY;QAFjB,QAAG,GAAW,CAAC,CAAC;QAGrB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEM,IAAI,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACxB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IACvC,CAAC;CACF;AA/BD,oCA+BC;AAEY,QAAA,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js b/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js
new file mode 100644
index 0000000..aa3ed8d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js
@@ -0,0 +1,347 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hasUnicode = exports.binLookup = exports.binSearch = exports.tokenizeRegexInPlace = exports.tokenize = exports.tokenizeWithWildcards = exports.tokenizeNoSkip = exports.tokenizeNoSkipInPlace = exports.tokenizeInPlace = exports.tokenizeWithWildcardsInPlace = exports.isAlpha = exports.isDigit = exports.fastStartsWithFrom = exports.fastStartsWith = exports.hashStrings = exports.fastHash = exports.fastHashBetween = exports.clearBit = exports.setBit = exports.getBit = exports.bitCount = exports.HASH_SEED = void 0;
+const tokens_buffer_1 = require("./tokens-buffer");
+exports.HASH_SEED = 7877;
+/***************************************************************************
+ * Bitwise helpers
+ * ************************************************************************* */
+// From: https://stackoverflow.com/a/43122214/1185079
+function bitCount(n) {
+ n = n - ((n >> 1) & 0x55555555);
+ n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
+ return (((n + (n >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
+}
+exports.bitCount = bitCount;
+function getBit(n, mask) {
+ return !!(n & mask);
+}
+exports.getBit = getBit;
+function setBit(n, mask) {
+ return n | mask;
+}
+exports.setBit = setBit;
+function clearBit(n, mask) {
+ return n & ~mask;
+}
+exports.clearBit = clearBit;
+function fastHashBetween(str, begin, end) {
+ let hash = exports.HASH_SEED;
+ for (let i = begin; i < end; i += 1) {
+ hash = (hash * 33) ^ str.charCodeAt(i);
+ }
+ return hash >>> 0;
+}
+exports.fastHashBetween = fastHashBetween;
+function fastHash(str) {
+ if (typeof str !== 'string') {
+ return exports.HASH_SEED;
+ }
+ if (str.length === 0) {
+ return exports.HASH_SEED;
+ }
+ return fastHashBetween(str, 0, str.length);
+}
+exports.fastHash = fastHash;
+function hashStrings(strings) {
+ const result = new Uint32Array(strings.length);
+ let index = 0;
+ for (const str of strings) {
+ result[index++] = fastHash(str);
+ }
+ return result;
+}
+exports.hashStrings = hashStrings;
+// https://jsperf.com/string-startswith/21
+function fastStartsWith(haystack, needle) {
+ if (haystack.length < needle.length) {
+ return false;
+ }
+ const ceil = needle.length;
+ for (let i = 0; i < ceil; i += 1) {
+ if (haystack[i] !== needle[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+exports.fastStartsWith = fastStartsWith;
+function fastStartsWithFrom(haystack, needle, start) {
+ if (haystack.length - start < needle.length) {
+ return false;
+ }
+ const ceil = start + needle.length;
+ for (let i = start; i < ceil; i += 1) {
+ if (haystack[i] !== needle[i - start]) {
+ return false;
+ }
+ }
+ return true;
+}
+exports.fastStartsWithFrom = fastStartsWithFrom;
+function isDigit(ch) {
+ // 48 == '0'
+ // 57 == '9'
+ return ch >= 48 && ch <= 57;
+}
+exports.isDigit = isDigit;
+function isAlpha(ch) {
+ // 65 == 'A'
+ // 90 == 'Z'
+ // 97 == 'a'
+ // 122 === 'z'
+ return (ch >= 97 && ch <= 122) || (ch >= 65 && ch <= 90);
+}
+exports.isAlpha = isAlpha;
+function isAlphaExtended(ch) {
+ // 192 -> 450
+ // À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø
+ // Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ
+ // ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ
+ // ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ
+ // Ĥ ĥ Ħ ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ
+ // Ľ ľ Ŀ ŀ Ł ł Ń ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ
+ // Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů
+ // ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ſ ƀ Ɓ Ƃ ƃ Ƅ ƅ Ɔ Ƈ
+ // ƈ Ɖ Ɗ Ƌ ƌ ƍ Ǝ Ə Ɛ Ƒ ƒ Ɠ Ɣ ƕ Ɩ Ɨ Ƙ ƙ ƚ ƛ Ɯ Ɲ ƞ Ɵ Ơ
+ // ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ
+ // ƺ ƻ Ƽ ƽ ƾ ƿ ǀ ǁ ǂ
+ return ch >= 192 && ch <= 450;
+}
+function isCyrillic(ch) {
+ // 1024 -> 1279
+ // Ѐ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х
+ // Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы
+ // ь э ю я ѐ ё ђ ѓ є ѕ і ї ј љ њ ћ ќ ѝ ў џ Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ
+ // Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ Ҁ ҁ ҂ ҃ ҄ ҅ ҆ ҇ ҈ ҉ Ҋ ҋ Ҍ ҍ Ҏ ҏ Ґ ґ Ғ ғ Ҕ ҕ Җ җ Ҙ ҙ
+ // Қ қ Ҝ ҝ Ҟ ҟ Ҡ ҡ Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ Ү ү Ұ ұ Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ Ҿ
+ // ҿ Ӏ Ӂ ӂ Ӄ ӄ Ӆ ӆ Ӈ ӈ Ӊ ӊ Ӌ ӌ Ӎ ӎ ӏ Ӑ ӑ Ӓ ӓ Ӕ ӕ Ӗ ӗ Ә ә Ӛ ӛ Ӝ ӝ Ӟ ӟ Ӡ ӡ Ӣ ӣ Ӥ
+ // ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ Ӱ ӱ Ӳ ӳ Ӵ ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ
+ return ch >= 1024 && ch <= 1279;
+}
+function isAllowedCode(ch) {
+ return (isAlpha(ch) || isDigit(ch) || ch === 37 /* '%' */ || isAlphaExtended(ch) || isCyrillic(ch));
+}
+function tokenizeWithWildcardsInPlace(pattern, skipFirstToken, skipLastToken, buffer) {
+ // TODO maybe better to check if buffer is full?
+ // Otherwise we are under-using the space.
+ const len = Math.min(pattern.length, buffer.remaining() * 2);
+ let inside = false;
+ let precedingCh = 0;
+ let start = 0;
+ let hash = exports.HASH_SEED;
+ for (let i = 0; i < len; i += 1) {
+ const ch = pattern.charCodeAt(i);
+ if (isAllowedCode(ch) === true) {
+ if (inside === false) {
+ hash = exports.HASH_SEED;
+ inside = true;
+ start = i;
+ }
+ hash = (hash * 33) ^ ch;
+ }
+ else {
+ if (inside === true) {
+ inside = false;
+ if (i - start > 1 && // Ignore tokens of 1 character
+ ch !== 42 && // Ignore tokens followed by a '*'
+ precedingCh !== 42 && // Ignore tokens preceeded by a '*'
+ (skipFirstToken === false || start !== 0)) {
+ buffer.push(hash >>> 0);
+ }
+ }
+ precedingCh = ch;
+ }
+ }
+ if (skipLastToken === false &&
+ inside === true &&
+ precedingCh !== 42 && // Ignore tokens preceeded by a '*'
+ pattern.length - start > 1 && // Ignore tokens of 1 character
+ buffer.full() === false) {
+ buffer.push(hash >>> 0);
+ }
+}
+exports.tokenizeWithWildcardsInPlace = tokenizeWithWildcardsInPlace;
+function tokenizeInPlace(pattern, skipFirstToken, skipLastToken, buffer) {
+ const len = Math.min(pattern.length, buffer.remaining() * 2);
+ let inside = false;
+ let start = 0;
+ let hash = exports.HASH_SEED;
+ for (let i = 0; i < len; i += 1) {
+ const ch = pattern.charCodeAt(i);
+ if (isAllowedCode(ch) === true) {
+ if (inside === false) {
+ hash = exports.HASH_SEED;
+ inside = true;
+ start = i;
+ }
+ hash = (hash * 33) ^ ch;
+ }
+ else if (inside === true) {
+ inside = false;
+ if (i - start > 1 && // Ignore tokens of 1 character
+ (skipFirstToken === false || start !== 0)) {
+ buffer.push(hash >>> 0);
+ }
+ }
+ }
+ if (inside === true &&
+ skipLastToken === false &&
+ pattern.length - start > 1 && // Ignore tokens of 1 character
+ buffer.full() === false) {
+ buffer.push(hash >>> 0);
+ }
+}
+exports.tokenizeInPlace = tokenizeInPlace;
+function tokenizeNoSkipInPlace(pattern, buffer) {
+ const len = Math.min(pattern.length, buffer.remaining() * 2);
+ let inside = false;
+ let start = 0;
+ let hash = exports.HASH_SEED;
+ for (let i = 0; i < len; i += 1) {
+ const ch = pattern.charCodeAt(i);
+ if (isAllowedCode(ch) === true) {
+ if (inside === false) {
+ hash = exports.HASH_SEED;
+ inside = true;
+ start = i;
+ }
+ hash = (hash * 33) ^ ch;
+ }
+ else if (inside === true) {
+ inside = false;
+ if (i - start > 1) {
+ buffer.push(hash >>> 0);
+ }
+ }
+ }
+ if (inside === true && pattern.length - start > 1 && buffer.full() === false) {
+ buffer.push(hash >>> 0);
+ }
+}
+exports.tokenizeNoSkipInPlace = tokenizeNoSkipInPlace;
+function tokenizeNoSkip(pattern) {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ tokenizeNoSkipInPlace(pattern, tokens_buffer_1.TOKENS_BUFFER);
+ return tokens_buffer_1.TOKENS_BUFFER.slice();
+}
+exports.tokenizeNoSkip = tokenizeNoSkip;
+function tokenizeWithWildcards(pattern, skipFirstToken, skipLastToken) {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ tokenizeWithWildcardsInPlace(pattern, skipFirstToken, skipLastToken, tokens_buffer_1.TOKENS_BUFFER);
+ return tokens_buffer_1.TOKENS_BUFFER.slice();
+}
+exports.tokenizeWithWildcards = tokenizeWithWildcards;
+function tokenize(pattern, skipFirstToken, skipLastToken) {
+ tokens_buffer_1.TOKENS_BUFFER.reset();
+ tokenizeInPlace(pattern, skipFirstToken, skipLastToken, tokens_buffer_1.TOKENS_BUFFER);
+ return tokens_buffer_1.TOKENS_BUFFER.slice();
+}
+exports.tokenize = tokenize;
+function tokenizeRegexInPlace(selector, tokens) {
+ let end = selector.length - 1;
+ let begin = 1;
+ let prev = 0;
+ // Try to find the longest safe *prefix* that we can tokenize
+ for (; begin < end; begin += 1) {
+ const code = selector.charCodeAt(begin);
+ // If we encounter '|' before any other opening bracket, then it's not safe
+ // to tokenize this filter (e.g.: 'foo|bar'). Instead we abort tokenization
+ // to be safe.
+ if (code === 124 /* '|' */) {
+ return;
+ }
+ if (code === 40 /* '(' */ ||
+ code === 42 /* '*' */ ||
+ code === 43 /* '+' */ ||
+ code === 63 /* '?' */ ||
+ code === 91 /* '[' */ ||
+ code === 123 /* '{' */ ||
+ (code === 46 /* '.' */ && prev !== 92) /* '\' */ ||
+ (code === 92 /* '\' */ && isAlpha(selector.charCodeAt(begin + 1)))) {
+ break;
+ }
+ prev = code;
+ }
+ // Try to find the longest safe *suffix* that we can tokenize
+ prev = 0;
+ for (; end >= begin; end -= 1) {
+ const code = selector.charCodeAt(end);
+ // If we encounter '|' before any other opening bracket, then it's not safe
+ // to tokenize this filter (e.g.: 'foo|bar'). Instead we abort tokenization
+ // to be safe.
+ if (code === 124 /* '|' */) {
+ return;
+ }
+ if (code === 41 /* ')' */ ||
+ code === 42 /* '*' */ ||
+ code === 43 /* '+' */ ||
+ code === 63 /* '?' */ ||
+ code === 93 /* ']' */ ||
+ code === 125 /* '}' */ ||
+ (code === 46 /* '.' */ && selector.charCodeAt(end - 1) !== 92) /* '\' */ ||
+ (code === 92 /* '\' */ && isAlpha(prev))) {
+ break;
+ }
+ prev = code;
+ }
+ if (end < begin) {
+ // Full selector is safe
+ const skipFirstToken = selector.charCodeAt(1) !== 94; /* '^' */
+ const skipLastToken = selector.charCodeAt(selector.length - 1) !== 36; /* '$' */
+ tokenizeInPlace(selector.slice(1, selector.length - 1), skipFirstToken, skipLastToken, tokens);
+ }
+ else {
+ // Tokenize prefix
+ if (begin > 1) {
+ tokenizeInPlace(selector.slice(1, begin), selector.charCodeAt(1) !== 94 /* '^' */, // skipFirstToken
+ true, tokens);
+ }
+ // Tokenize suffix
+ if (end < selector.length - 1) {
+ tokenizeInPlace(selector.slice(end + 1, selector.length - 1), true, selector.charCodeAt(selector.length - 1) !== 94 /* '^' */, // skipLastToken
+ tokens);
+ }
+ }
+}
+exports.tokenizeRegexInPlace = tokenizeRegexInPlace;
+function binSearch(arr, elt) {
+ if (arr.length === 0) {
+ return -1;
+ }
+ let low = 0;
+ let high = arr.length - 1;
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const midVal = arr[mid];
+ if (midVal < elt) {
+ low = mid + 1;
+ }
+ else if (midVal > elt) {
+ high = mid - 1;
+ }
+ else {
+ return mid;
+ }
+ }
+ return -1;
+}
+exports.binSearch = binSearch;
+function binLookup(arr, elt) {
+ return binSearch(arr, elt) !== -1;
+}
+exports.binLookup = binLookup;
+// eslint-disable-next-line no-control-regex
+const hasUnicodeRe = /[^\u0000-\u00ff]/;
+function hasUnicode(str) {
+ return hasUnicodeRe.test(str);
+}
+exports.hasUnicode = hasUnicode;
+//# sourceMappingURL=utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js.map
new file mode 100644
index 0000000..c1104a8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/src/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js
new file mode 100644
index 0000000..7692f95
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js
@@ -0,0 +1,46 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const compact_set_1 = require("../src/compact-set");
+function a(strings) {
+ const str = strings.raw[0];
+ const array = new Uint32Array(str.length);
+ for (let i = 0; i < str.length; i += 1) {
+ array[i] = str.charCodeAt(i);
+ }
+ return array;
+}
+it('#compactTokens', () => {
+ (0, chai_1.expect)((0, compact_set_1.compactTokens)(a ``)).to.eql(a ``);
+ (0, chai_1.expect)((0, compact_set_1.compactTokens)(a `b`)).to.eql(a `b`);
+ (0, chai_1.expect)((0, compact_set_1.compactTokens)(a `foo`)).to.eql(a `fo`);
+ (0, chai_1.expect)((0, compact_set_1.compactTokens)(a `bbbaaacc`)).to.eql(a `abc`);
+});
+it('#hasEmptyIntersection', () => {
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a `abcde`, a `efgh`)).to.be.false;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a `efgh`, a `abcde`)).to.be.false;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a `bcde`, a `aefgh`)).to.be.false;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a `abcde`, a `fgh`)).to.be.true;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a ``, a ``)).to.be.true;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a `abc`, a ``)).to.be.true;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a ``, a `abc`)).to.be.true;
+ (0, chai_1.expect)((0, compact_set_1.hasEmptyIntersection)(a ``, a `abc`)).to.be.true;
+});
+it('#mergeCompactSets', () => {
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a ``, a ``])).to.eql(a ``);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a ``, a `cde`])).to.eql(a `cde`);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a `abc`, a ``])).to.eql(a `abc`);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a `abc`, a `cde`])).to.eql(a `abcde`);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a `abc`, a `def`])).to.eql(a `abcdef`);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a `cba`, a `cde`])).to.eql(a `abcde`);
+ (0, chai_1.expect)((0, compact_set_1.mergeCompactSets)([a `c`, a `b`, a `a`, a `cde`])).to.eql(a `abcde`);
+});
+//# sourceMappingURL=compact-set.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js.map
new file mode 100644
index 0000000..39a2915
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/compact-set.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"compact-set.test.js","sourceRoot":"","sources":["../../../test/compact-set.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js
new file mode 100644
index 0000000..a39636c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js
@@ -0,0 +1,184 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const data_view_1 = require("../src/data-view");
+const utils_1 = require("./utils");
+describe('#StaticDataView', () => {
+ describe('#slice', () => {
+ it('returns empty buffer if no data and empty initial size', () => {
+ const view = data_view_1.StaticDataView.empty({ enableCompression: false });
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(0);
+ });
+ it('returns empty buffer if no data', () => {
+ const view = data_view_1.StaticDataView.allocate(10, { enableCompression: false });
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(0);
+ });
+ });
+ describe('#pushASCII', () => {
+ const view = data_view_1.StaticDataView.allocate(1000, { enableCompression: false });
+ const checkString = (str) => {
+ view.seekZero();
+ view.pushASCII(str);
+ view.seekZero();
+ (0, chai_1.expect)(view.getASCII()).to.equal(str);
+ };
+ it('empty string', () => {
+ checkString('');
+ });
+ [
+ 'expogrim.com',
+ '/reklam/',
+ '/playplugins/*/ga/ga.min.js',
+ '.ad-text-blockA01',
+ 'ad.pandora.tv',
+ '#header_ad_167',
+ 'a > img[src][style]',
+ 'stat.youku.com',
+ 'addEventListener-defuser.js, load, 2000',
+ 'table[width="952"][height="115"]',
+ '#sb_left_tower',
+ '#header_bottom',
+ '.SimpleAcceptableTextAds',
+ '.ads-right',
+ '.bottom-slider-ads',
+ 'cnt.spbland.ru',
+ 'tracking.base.de',
+ '.RGAdBoxMainDiv',
+ 'thumbnail-galleries.net',
+ '/ad_campaigns/',
+ '/product-ad/',
+ '[href*=".an0n."]',
+ '.code-block',
+ '/media/flash/*.swf',
+ 'amunx.de',
+ 'infusionextreme.com',
+ 'pc-magazin.de',
+ '/core/media/automatico/',
+ 'smartadserver.com',
+ 'button[onclick^="verivox_go("]',
+ '/wrap?',
+ 'roarmyng.bid',
+ '.fusion-ads',
+ '/dist/assets/omniture/visitorapi.min.js',
+ ].forEach((str) => {
+ it(str, () => {
+ checkString(str);
+ });
+ });
+ });
+ describe('#pushUTF8', () => {
+ const view = data_view_1.StaticDataView.allocate(10000, { enableCompression: false });
+ const checkString = (str) => {
+ view.seekZero();
+ view.pushUTF8(str);
+ view.seekZero();
+ (0, chai_1.expect)(view.getUTF8()).to.equal(str);
+ };
+ it('empty string', () => {
+ checkString('');
+ });
+ [
+ 'expogrim.com',
+ '/reklam/',
+ '/playplugins/*/ga/ga.min.js',
+ '.ad-text-blockA01',
+ 'ad.pandora.tv',
+ '#header_ad_167',
+ 'a > img[src][style]',
+ 'stat.youku.com',
+ 'addEventListener-defuser.js, load, 2000',
+ 'table[width="952"][height="115"]',
+ '#sb_left_tower',
+ '#header_bottom',
+ '.SimpleAcceptableTextAds',
+ '.ads-right',
+ '.bottom-slider-ads',
+ 'cnt.spbland.ru',
+ 'tracking.base.de',
+ '.RGAdBoxMainDiv',
+ 'thumbnail-galleries.net',
+ '/ad_campaigns/',
+ '/product-ad/',
+ '[href*=".an0n."]',
+ '.code-block',
+ '/media/flash/*.swf',
+ 'amunx.de',
+ 'infusionextreme.com',
+ 'pc-magazin.de',
+ '/core/media/automatico/',
+ 'smartadserver.com',
+ 'button[onclick^="verivox_go("]',
+ '/wrap?',
+ 'roarmyng.bid',
+ '.fusion-ads',
+ '/dist/assets/omniture/visitorapi.min.js',
+ ...(0, utils_1.getNaughtyStrings)(),
+ ].forEach((str) => {
+ it(str, () => {
+ checkString(str);
+ });
+ });
+ });
+ describe('#getUint32ArrayView', () => {
+ it('empty view', () => {
+ const view = data_view_1.StaticDataView.allocate(0, { enableCompression: false });
+ const v = view.getUint32ArrayView(0);
+ (0, chai_1.expect)(v).to.have.lengthOf(0);
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(0);
+ });
+ it('should allocate buffer of size 1', () => {
+ const view = data_view_1.StaticDataView.allocate(4, { enableCompression: false });
+ const v = view.getUint32ArrayView(1);
+ (0, chai_1.expect)(v).to.have.lengthOf(1);
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(4);
+ });
+ it('should align', () => {
+ const view = data_view_1.StaticDataView.allocate(8, { enableCompression: false });
+ view.setPos(3);
+ const v = view.getUint32ArrayView(1);
+ (0, chai_1.expect)(v).to.have.lengthOf(1);
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(8);
+ });
+ it('should not align if already aligned', () => {
+ const view = data_view_1.StaticDataView.allocate(8, { enableCompression: false });
+ view.setPos(4);
+ const v = view.getUint32ArrayView(1);
+ (0, chai_1.expect)(v).to.have.lengthOf(1);
+ (0, chai_1.expect)(view.slice()).to.have.lengthOf(8);
+ });
+ it('should write in original buffer', () => {
+ const view = data_view_1.StaticDataView.allocate(4, { enableCompression: false });
+ let v = view.getUint32ArrayView(1);
+ v[0] = Number.MAX_SAFE_INTEGER >>> 0;
+ view.seekZero();
+ v = view.getUint32ArrayView(1);
+ (0, chai_1.expect)(v[0]).to.equal(Number.MAX_SAFE_INTEGER >>> 0);
+ (0, chai_1.expect)(view.pos).to.equal(4);
+ (0, chai_1.expect)(view.slice()).to.eql(new Uint8Array([255, 255, 255, 255]));
+ });
+ it('serialize/deserialize', () => {
+ const view = data_view_1.StaticDataView.allocate(20, { enableCompression: false });
+ view.pushBool(true);
+ const v = view.getUint32ArrayView(4);
+ v[0] = 1;
+ v[1] = 2;
+ v[2] = Number.MAX_SAFE_INTEGER >>> 0;
+ v[3] = 3;
+ const cropped = view.slice();
+ (0, chai_1.expect)(cropped).to.eql(new Uint8Array([1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 255, 255, 255, 255, 3, 0, 0, 0]));
+ // Reload
+ const newView = data_view_1.StaticDataView.fromUint8Array(cropped, { enableCompression: false });
+ (0, chai_1.expect)(newView.getBool()).to.be.true;
+ (0, chai_1.expect)(newView.getUint32ArrayView(4)).to.eql(new Uint32Array([1, 2, Number.MAX_SAFE_INTEGER >>> 0, 3]));
+ });
+ });
+});
+//# sourceMappingURL=data-view.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js.map
new file mode 100644
index 0000000..41725f5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data-view.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"data-view.test.js","sourceRoot":"","sources":["../../../test/data-view.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js
new file mode 100644
index 0000000..d194fa7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js
@@ -0,0 +1,52926 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = [
+ {
+ filters: ['||google-analytics.com^', '||google-analytics.com/analytics.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||fastly-insights.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.fastly-insights.com',
+ },
+ {
+ filters: ['@@||google.com/recaptcha/$script', '@@||google.com/recaptcha/$image,script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/recaptcha/',
+ },
+ {
+ filters: [
+ '||googleadservices.com^',
+ '||googleadservices.com^$third-party',
+ '/pagead/conversion.',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.googleadservices.com/pagead/conversion.js',
+ },
+ {
+ filters: ['||googletagmanager.com/gtm.js?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['/generate_204$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://clients1.google.com/generate_204',
+ },
+ {
+ filters: [
+ '|https://$image,media,script,third-party,domain=~feedback.pornhub.com|pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ '@@||phncdn.com/www-static/js/lib/$script',
+ ],
+ sourceUrl: 'https://www.pornhub.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/lib/',
+ },
+ {
+ filters: ['/atatus.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/atatus.js',
+ },
+ {
+ filters: [
+ '@@||phncdn.com^$image,media,object,stylesheet,domain=gaytube.com|pornhub.com|redtube.com|redtube.it|tube8.com|tube8.es|tube8.fr|xtube.com|youjizz.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.pornhub.com',
+ type: 'stylesheet',
+ url: 'https://ci.phncdn.com',
+ },
+ {
+ filters: ['@@||phncdn.com/mg_utils-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/mg_utils-1.0.0.js',
+ },
+ {
+ filters: ['@@||phncdn.com/www-static/js/mg_modal-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/mg_modal-1.0.0.js',
+ },
+ {
+ filters: ['@@||phncdn.com/www-static/js/vmobile/utils.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/utils.js',
+ },
+ {
+ filters: ['@@||phncdn.com/www-static/js/vmobile/html5-canvas.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/html5-canvas.js',
+ },
+ {
+ filters: [
+ '|https://$image,xmlhttprequest,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ '@@||phncdn.com^$image,object-subrequest,other,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ '@@||phncdn.com^$image,media,object,stylesheet,domain=gaytube.com|pornhub.com|redtube.com|redtube.it|tube8.com|tube8.es|tube8.fr|xtube.com|youjizz.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.pornhub.com',
+ type: 'image',
+ url: 'https://ci.phncdn.com',
+ },
+ {
+ filters: ['||vntsm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hb.vntsm.com',
+ },
+ {
+ filters: ['@@||gstatic.com/recaptcha/$image,script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.gstatic.com/recaptcha/',
+ },
+ {
+ filters: [
+ '/googleads.$domain=~googleads.media|~googleads.blog',
+ '/googleads.',
+ '||doubleclick.net^',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://googleads.g.doubleclick.net',
+ },
+ {
+ filters: ['||microsoft.com/_log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://uhf.microsoft.com/_log?',
+ },
+ {
+ filters: ['||google.com/pagead/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.google.com/pagead/',
+ },
+ {
+ filters: ['||bing.com/fd/ls/$~ping'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.bing.com/fd/ls/',
+ },
+ {
+ check: true,
+ filters: [
+ '||trafficjunky.net^$third-party,important',
+ '||trafficjunky.net^$third-party',
+ '||trafficjunky.net^',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.trafficjunky.net',
+ },
+ {
+ filters: ['@@||fbcdn.net/rsrc.php/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://static.xx.fbcdn.net/rsrc.php/',
+ },
+ {
+ filters: [
+ '||quantserve.com^',
+ '||quantserve.com^$~object-subrequest,third-party',
+ '/quant.js',
+ '||quantserve.com^$third-party,script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.quantserve.com/quant.js',
+ },
+ {
+ filters: ['||connect.facebook.net^*/fbevents.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://connect.facebook.net/en_US/fbevents.js',
+ },
+ {
+ filters: ['||scorecardresearch.com^', '||scorecardresearch.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sb.scorecardresearch.com',
+ },
+ {
+ check: true,
+ filters: [
+ '||doubleclick.net^$third-party,domain=3news.co.nz|92q.com|abc-7.com|addictinggames.com|allbusiness.com|bizjournals.com|bloomberg.com|bnn.ca|boom92houston.com|boom945.com|boomphilly.com|break.com|cbc.ca|cbs19.tv|cbs3springfield.com|cbslocal.com|complex.com|dailymail.co.uk|darkhorizons.com|doubleviking.com|euronews.com|extratv.com|fandango.com|fox19.com|fox5vegas.com|gorillanation.com|hawaiinewsnow.com|hellobeautiful.com|hiphopnc.com|hot1041stl.com|hothiphopdetroit.com|hotspotatl.com|hulu.com|imdb.com|indiatimes.com|indyhiphop.com|ipowerrichmond.com|joblo.com|kcra.com|kctv5.com|ketv.com|koat.com|koco.com|kolotv.com|kpho.com|kptv.com|ksat.com|ksbw.com|ksfy.com|ksl.com|kypost.com|kysdc.com|live5news.com|livestation.com|livestream.com|metro.us|metronews.ca|miamiherald.com|my9nj.com|myboom1029.com|mycolumbuspower.com|nbcrightnow.com|neatorama.com|necn.com|neopets.com|news.com.au|news4jax.com|newsone.com|nintendoeverything.com|oldschoolcincy.com|pagesuite-professional.co.uk|pandora.com|play.it|player.theplatform.com|radio.com|radionowindy.com|rottentomatoes.com|sbsun.com|shacknews.com|sk-gaming.com|ted.com|thebeatdfw.com|theboxhouston.com|theglobeandmail.com|timesnow.tv|tv2.no|ustream.tv|wapt.com|washingtonpost.com|wate.com|wbaltv.com|wcvb.com|wdrb.com|wdsu.com|wflx.com|wfmz.com|wfsb.com|wgal.com|whdh.com|wired.com|wisn.com|wiznation.com|wlky.com|wlns.com|wlwt.com|wmur.com|wnem.com|wowt.com|wral.com|wsj.com|wsmv.com|wsvn.com|wtae.com|wthr.com|wxii12.com|wyff4.com|yahoo.com|youtube-nocookie.com|youtube.com|zhiphopcleveland.com',
+ ],
+ sourceUrl: 'https://m.youtube.com',
+ type: 'xhr',
+ url: 'https://googleads.g.doubleclick.net',
+ },
+ {
+ filters: ['/r/collect?', '||google-analytics.com/r/collect^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google-analytics.com/r/collect?',
+ },
+ {
+ filters: ['||quantcount.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rules.quantcount.com',
+ },
+ {
+ filters: ['||connect.facebook.net/signals/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://connect.facebook.net/signals/',
+ },
+ {
+ filters: ['/ad_data_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.youtube.com/ad_data_204',
+ },
+ {
+ filters: ['/js/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform.linkedin.com/js/analytics.js',
+ },
+ {
+ filters: ['||moatads.com^$third-party', '||moatads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://z.moatads.com',
+ },
+ {
+ filters: ['||rs.mail.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rs.mail.ru',
+ },
+ {
+ filters: ['||tns-counter.ru^', '||tns-counter.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.tns-counter.ru',
+ },
+ {
+ check: true,
+ filters: ['||counter.yadro.ru^', '||yadro.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://counter.yadro.ru',
+ },
+ {
+ filters: ['||mail.ru/k?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r3.mail.ru/k?',
+ },
+ {
+ filters: ['/adservice.$domain=~adservice.io'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://adservice.google.de',
+ },
+ {
+ filters: ['/securepubads.', '/pubads_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['||facebook.com/tr$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/tr',
+ },
+ {
+ filters: ['||trafficfactory.biz^$third-party', '||trafficfactory.biz^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rpc-php.trafficfactory.biz',
+ },
+ {
+ filters: ['||top-fwz1.mail.ru^', '||mail.ru/counter?', '/counter?id='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://top-fwz1.mail.ru/counter?id=2579437;pid=0;r=',
+ },
+ {
+ filters: ['@@||upload.wikimedia.org/wikipedia/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://upload.wikimedia.org/wikipedia/',
+ },
+ {
+ filters: ['/px.js?ch=$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform.linkedin.com/js/px.js?ch=1',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/jquery-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/jquery-2.0.3.js',
+ },
+ {
+ check: true,
+ filters: ['||doubleclick.net^$image,third-party', '||stats.g.doubleclick.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.g.doubleclick.net',
+ },
+ {
+ filters: ['||xhcdn.com^*/xpops.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-cl.xhcdn.com/js/mobile/xpops.js',
+ },
+ {
+ filters: ['||tsyndicate.com^$third-party', '||tsyndicate.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.tsyndicate.com',
+ },
+ {
+ filters: ['.jp/ads/', '/ads/images/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.co.jp/ads/images/',
+ },
+ {
+ filters: ['/ads/js/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/js/',
+ },
+ {
+ filters: ['||google.*/client_204?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.mx/client_204?',
+ },
+ {
+ filters: ['.com/ads/$image,object,subdocument'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['.de/ads/$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.de/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||rover.ebay.$image,object,script'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rover.ebay.com',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/jquery/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/jquery/',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/head.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/head.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vtablet/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vtablet/',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/autocomplete-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/autocomplete-search.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/phub.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/phub.js',
+ },
+ {
+ check: true,
+ filters: ['/popunder-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/popunder-build.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/footer.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/vmobile/footer.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/promo-banner.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ci.phncdn.com/www-static/js/promo-banner.js',
+ },
+ {
+ check: true,
+ filters: ['||contentabc.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn11.contentabc.com',
+ },
+ {
+ filters: ['||microsoft.com/collect/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web.vortex.data.microsoft.com/collect/',
+ },
+ {
+ filters: ['||ad.mail.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.mail.ru',
+ },
+ {
+ check: true,
+ filters: ['||google-analytics.com/collect'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google-analytics.com/collect',
+ },
+ {
+ check: true,
+ filters: ['.net/ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads.trafficjunky.net/ads_batch',
+ },
+ {
+ filters: ['||youtube.com/*_204?$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.youtube.com/csi_204?',
+ },
+ {
+ filters: ['||analytics.163.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.163.com',
+ },
+ {
+ filters: ['||amazon.*/uedata/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.amazon.com/uedata/',
+ },
+ {
+ filters: ['/showads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.media-amazon.com/images/G/01/csm/showads.v2.js',
+ },
+ {
+ filters: ['||mc.yandex.ru^', '||yandex.ru/metrika/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mc.yandex.ru/metrika/',
+ },
+ {
+ filters: ['||btrace.qq.com^', '||qq.com/kvcollect?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://btrace.qq.com/kvcollect?',
+ },
+ {
+ filters: ['||qq.com/collect?'],
+ sourceUrl: 'https://xw.qq.com',
+ type: 'image',
+ url: 'https://trace.qq.com/collect?',
+ },
+ {
+ filters: ['/pingd?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pingfore.qq.com/pingd?',
+ },
+ {
+ filters: ['||app.link^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://app.link',
+ },
+ {
+ filters: ['||events.redditmedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.redditmedia.com',
+ },
+ {
+ filters: ['||netflix.com/ichnaea/log'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.netflix.com/ichnaea/log',
+ },
+ {
+ filters: [
+ '.in/ads/',
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: ['/log-reporter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s1.hdslb.com/bfs/seed/jinkela/short/report/log-reporter.js',
+ },
+ {
+ filters: ['/log/report/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s1.hdslb.com/bfs/seed/log/report/',
+ },
+ {
+ filters: ['||amplitude.com^', '||amplitude.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.amplitude.com',
+ },
+ {
+ filters: ['||imgur.com/lumbar.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.imgur.com/lumbar.gif?',
+ },
+ {
+ filters: ['||branch.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.branch.io',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.in',
+ type: 'image',
+ url: 'https://www.google.co.in/ads/',
+ },
+ {
+ filters: ['@@||api.branch.io^*/open$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.branch.io/v1/open',
+ },
+ {
+ filters: ['||amazon-adsystem.com^$third-party', '||amazon-adsystem.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.amazon-adsystem.com',
+ },
+ {
+ filters: ['||wl.jd.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wl.jd.com',
+ },
+ {
+ filters: ['/delstats/*', '/imp/rtm?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://svcs.ebay.com/delstats/imp/rtm?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/ht.js?site_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hubt.pornhub.com/js/ht.js?site_id=3',
+ },
+ {
+ check: true,
+ filters: [
+ '|http://$image,script,third-party,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ '|http://$image,xmlhttprequest,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ '|http://$image,media,script,third-party,domain=~feedback.pornhub.com|pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.pornhub.com',
+ type: 'image',
+ url: 'http://foo.com',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/vortex-simple-*.js|$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/vortex-simple-1.0.0.js',
+ },
+ {
+ check: true,
+ filters: ['||yandex.*/clck/$~ping'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://yandex.ru/clck/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['||pubmatic.com^$third-party', '||pubmatic.com^', '/adserver/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.pubmatic.com/AdServer/',
+ },
+ {
+ filters: ['||beacon.wikia-services.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://beacon.wikia-services.com',
+ },
+ {
+ filters: ['@@||wikia.nocookie.net^*/images/$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://static.wikia.nocookie.net/qube-assets/f2/3430/images/',
+ },
+ {
+ check: true,
+ filters: ['||ib.adnxs.com^', '||adnxs.com^$third-party', '||adnxs.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ib.adnxs.com',
+ },
+ {
+ check: true,
+ filters: ['||bidder.criteo.com^$third-party', '||criteo.com^', '||criteo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bidder.criteo.com',
+ },
+ {
+ filters: ['||contextweb.com^$third-party', '||contextweb.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bid.contextweb.com',
+ },
+ {
+ filters: ['||districtm.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dmx.districtm.io',
+ },
+ {
+ check: true,
+ filters: ['||google.com/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://play.google.com/log?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||googletagmanager.com/gtm.js?$domain=adsoup.com|airasia.com|asus.com|bhaskar.com|broadcom.com|computerworlduk.com|desigual.com|drumstick.com|ebuyer.com|elevationscu.com|gamepix.com|git-tower.com|google.com|itv.com|jobs.net|keygames.com|magicjack.com|moviefone.com|nestio.com|newsy.com|optus.com.au|rebtel.com|rockstargames.com|rollingstone.com|rozetka.com.ua|sixflags.com|support.amd.com|talktalk.co.uk|techradar.com|toto.co.jp|usmagazine.com',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['/conversion_async.', '/pagead/conversion_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googleadservices.com/pagead/conversion_async.js',
+ },
+ {
+ filters: ['/o.svg?'],
+ sourceUrl: 'http://foo.com',
+ type: 'fetch',
+ url: 'https://pdata.pops.fastly-insights.com/o.svg?',
+ },
+ {
+ filters: ['||media-imdb.com/twilight/?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.media-imdb.com/twilight/?',
+ },
+ {
+ filters: ['||zergnet.com/zerg.js$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.zergnet.com/zerg.js',
+ },
+ {
+ filters: ['/amp-analytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js',
+ },
+ {
+ filters: ['||rlcdn.com^', '||rlcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://id.rlcdn.com',
+ },
+ {
+ filters: ['||alb.reddit.com^', '.com/i.gif?'],
+ sourceUrl: 'https://www.reddit.com',
+ type: 'image',
+ url: 'https://alb.reddit.com/i.gif?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||collector.xhamster.com^', '?log=stats&'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://collector.xhamster.com/?log=stats&ref=&_=1540302682391',
+ },
+ {
+ filters: ['.com/v.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hpd.baidu.com/v.gif?',
+ },
+ {
+ filters: ['||mookie1.com^$third-party', '||mookie1.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://odr.mookie1.com',
+ },
+ {
+ filters: ['||spotxchange.com^$third-party', '||spotxchange.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.search.spotxchange.com',
+ },
+ {
+ filters: ['||agkn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://aa.agkn.com',
+ },
+ {
+ filters: ['||adform.net^', '||adform.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c1.adform.net',
+ },
+ {
+ filters: ['||1rx.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.1rx.io',
+ },
+ {
+ filters: ['||krxd.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://usermatch.krxd.net',
+ },
+ {
+ check: true,
+ filters: ['||cm.g.doubleclick.net^', '||doubleclick.net/pixel?$third-party', '/pixel?google_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.g.doubleclick.net/pixel?google_nid=a9&google_cm&ex=doubleclick.net',
+ },
+ {
+ filters: ['||bidswitch.net^', '||bidswitch.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://x.bidswitch.net',
+ },
+ {
+ filters: ['||bluekai.com^', '||bluekai.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tags.bluekai.com',
+ },
+ {
+ filters: ['.openx.$domain=~openx.com', '||openx.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://us-u.openx.net',
+ },
+ {
+ filters: ['||casalemedia.com^$third-party', '||casalemedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssum-sec.casalemedia.com',
+ },
+ {
+ filters: ['||advertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.advertising.com',
+ },
+ {
+ filters: ['||rubiconproject.com^$third-party', '||rubiconproject.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://token.rubiconproject.com',
+ },
+ {
+ filters: ['||ads.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.yahoo.com',
+ },
+ {
+ filters: ['||ipredictive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.ipredictive.com',
+ },
+ {
+ filters: ['||demdex.net^', '||demdex.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dpm.demdex.net',
+ },
+ {
+ check: true,
+ filters: ['||taboola.com^$third-party', '||taboola.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trc.taboola.com',
+ },
+ {
+ filters: ['||googlesyndication.com^', '||googlesyndication.com/safeframe/'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://tpc.googlesyndication.com/safeframe/',
+ },
+ {
+ filters: ['||veta.naver.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mv.veta.naver.com',
+ },
+ {
+ filters: ['||lcs.naver.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lcs.naver.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||mmstat.com^$third-party', '.com/g.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gj.mmstat.com/g.gif?',
+ },
+ {
+ filters: ['/1x1.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.aliexpress.com/img/1x1.gif?',
+ },
+ {
+ filters: ['/__utm.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssl.google-analytics.com/r/__utm.gif',
+ },
+ {
+ filters: ['@@||google.com/jsapi$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/jsapi',
+ },
+ {
+ check: true,
+ filters: ['||optimizely.com^$third-party', '||optimizely.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.optimizely.com',
+ },
+ {
+ filters: ['/web_page_view?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://data.bilibili.com/v/web/web_page_view?',
+ },
+ {
+ filters: ['/log/web?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://data.bilibili.com/log/web?',
+ },
+ {
+ filters: ['||stats.wp.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stats.wp.com',
+ },
+ {
+ filters: ['||pixel.wp.com^', '.com/b.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.wp.com/b.gif?',
+ },
+ {
+ filters: ['/yads-', '/yads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://yads.c.yimg.jp/js/yads-async.js',
+ },
+ {
+ filters: ['/yads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.yimg.jp/images/listing/tool/yads/',
+ },
+ {
+ filters: [
+ '@@||yimg.jp/images/listing/tool/yads/yads-stream-conf-top_smp.js$domain=yahoo.co.jp',
+ ],
+ sourceUrl: 'https://m.yahoo.co.jp',
+ type: 'script',
+ url: 'https://s.yimg.jp/images/listing/tool/yads/yads-stream-conf-top_smp.js',
+ },
+ {
+ filters: ['||wordpress.com/geo/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://public-api.wordpress.com/geo/',
+ },
+ {
+ filters: ['/t.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.wp.com/t.gif?',
+ },
+ {
+ filters: ['://c1.*/c.gif?', '.com/c.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c1.microsoft.com/c.gif?',
+ },
+ {
+ filters: ['||weborama.fr^$third-party', '||weborama.fr^', '/dispatch.fcgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://wcm.solution.weborama.fr/fcgi-bin/dispatch.fcgi?',
+ },
+ {
+ filters: ['://c.*/c.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.bing.com/c.gif?',
+ },
+ {
+ filters: ['||mediator.mail.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mediator.mail.ru',
+ },
+ {
+ filters: ['||msecnd.net/scripts/a/ai.0.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://az416426.vo.msecnd.net/scripts/a/ai.0.js',
+ },
+ {
+ filters: ['||petametrics.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.petametrics.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||vk.com/js/lib/px.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vk.com/js/lib/px.js',
+ },
+ {
+ filters: ['@@||gravatar.com/avatar$image,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://2.gravatar.com/avatar',
+ },
+ {
+ filters: ['||msecnd.net/scripts/jsll-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://az725175.vo.msecnd.net/scripts/jsll-4.js',
+ },
+ {
+ filters: ['||clicktale.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdnssl.clicktale.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||visualstudio.com/v2/track$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dc.services.visualstudio.com/v2/track',
+ },
+ {
+ check: true,
+ filters: ['||google-analytics.com/plugins/', '@@||google-analytics.com/plugins/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/plugins/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||criteo.net^$third-party', '/publishertag.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.criteo.net/js/ld/publishertag.js',
+ },
+ {
+ filters: ['||cxense.com^', '||cxense.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.cxense.com',
+ },
+ {
+ filters: ['||twitter.com/i/jot'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://syndication.twitter.com/i/jot',
+ },
+ {
+ filters: ['||props.id^', '||props.id^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st-a.props.id',
+ },
+ {
+ filters: ['||creativecdn.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://pubs2-asia.creativecdn.com',
+ },
+ {
+ filters: ['||adobedtm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.adobedtm.com',
+ },
+ {
+ filters: ['||static.criteo.net/images^$third-party', '/pixel.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://static.criteo.net/images/pixel.gif?',
+ },
+ {
+ filters: ['||3.cn/cesu/r?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://fd.3.cn/cesu/r?',
+ },
+ {
+ filters: ['||yahoo.com/b?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ganon.yahoo.com/b?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||yimg.jp/images/listing/tool/yads/impl/yads-stream-conf-top_smp.js$domain=yahoo.co.jp',
+ ],
+ sourceUrl: 'https://m.yahoo.co.jp',
+ type: 'script',
+ url: 'https://s.yimg.jp/images/listing/tool/yads/impl/yads-stream-conf-top_smp.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/html5player/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/html5player/',
+ },
+ {
+ filters: ['||pingjs.qq.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pingjs.qq.com',
+ },
+ {
+ check: true,
+ filters: ['||mxpnl.com^$third-party', '/mixpanel-*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js',
+ },
+ {
+ filters: ['/m.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.mmstat.com/m.gif?',
+ },
+ {
+ filters: ['||beacon.sina.com.cn^', '.cn/a.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://beacon.sina.com.cn/a.gif?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['||mixpanel.com^$third-party', '||mixpanel.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.mixpanel.com',
+ },
+ {
+ filters: [
+ '/advertising/*$~xmlhttprequest,domain=~advertising.org.il|~commercialplanet.eu|~kloterfarms.com|~temple.edu|~themarker.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://images-fe.ssl-images-amazon.com/images/G/01/ads/advertising/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/prebid1.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.espncdn.com/prod/scripts/prebid1.15.0.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/quality-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://di.phncdn.com/www-static/js/quality-selector.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/widget-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://di.phncdn.com/www-static/js/vmobile/widget-player.js',
+ },
+ {
+ filters: ['||google-analytics.com/gtm/js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/gtm/js?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||googletagmanager.com/gtag/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtag/',
+ },
+ {
+ filters: ['/atrk.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://d31qbv1cthcecs.cloudfront.net/atrk.js',
+ },
+ {
+ filters: ['/beacon.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://b.scorecardresearch.com/beacon.js',
+ },
+ {
+ filters: ['/ad_status.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.doubleclick.net/instream/ad_status.js',
+ },
+ {
+ filters: ['||imasdk.googleapis.com^$third-party', '/ima3.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['||baidu.com/hm.gif?'],
+ sourceUrl: 'https://m.baidu.com',
+ type: 'image',
+ url: 'https://hm.baidu.com/hm.gif?',
+ },
+ {
+ filters: ['||alexametrics.com^$third-party', '/atrk.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://certify.alexametrics.com/atrk.gif?',
+ },
+ {
+ filters: ['||cloudfront-labs.amazonaws.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cloudfront-labs.amazonaws.com',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/show.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://di.phncdn.com/www-static/js/vmobile/show.js',
+ },
+ {
+ check: true,
+ filters: ['@@||phncdn.com/www-static/js/vmobile/comments.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://di.phncdn.com/www-static/js/vmobile/comments.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/yads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.yimg.jp/images/listing/tool/yads/uadf/yads_vimps.js',
+ },
+ {
+ filters: ['||yjtag.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.yjtag.jp',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||yjtag.yahoo.co.jp^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://yjtag.yahoo.co.jp',
+ },
+ {
+ filters: ['||alipay.com/service/clear.png?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ynuf.alipay.com/service/clear.png?',
+ },
+ {
+ filters: ['/in.php?referer='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.xvideos.com/in.php?referer=',
+ },
+ {
+ filters: ['||everesttech.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.everesttech.net',
+ },
+ {
+ filters: ['||an.yandex.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://an.yandex.ru',
+ },
+ {
+ filters: ['||popads.net^$third-party', '||popads.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.popads.net',
+ },
+ {
+ filters: ['||omtrdc.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://espndotcom.tt.omtrdc.net',
+ },
+ {
+ filters: ['.com/ad/$~image,third-party,domain=~mediaplex.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.espncdn.com/ad/',
+ },
+ {
+ filters: ['/omniture/tracking.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.espncdn.com/js/omniture/tracking.js',
+ },
+ {
+ filters: ['?_siteid='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rs.mail.ru/d20304452.gif?_SITEID=173&rnd=322507571&ts=1540302687',
+ },
+ {
+ check: true,
+ filters: ['||cas.criteo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cas.criteo.com',
+ },
+ {
+ filters: ['||cmap.alibaba.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cmap.alibaba.com',
+ },
+ {
+ filters: ['||bat.bing.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bat.bing.com',
+ },
+ {
+ filters: ['||tmall.com/add?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pass.tmall.com/add?',
+ },
+ {
+ filters: ['||sohu.com/pv.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.sohu.com/pv.js',
+ },
+ {
+ filters: ['||xnxx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.xnxx.com',
+ },
+ {
+ filters: ['||im.ov.yahoo.co.jp^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://im.ov.yahoo.co.jp',
+ },
+ {
+ filters: ['||quantummetric.com^', '||quantummetric.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.quantummetric.com',
+ },
+ {
+ filters: ['||hm.baidu.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hm.baidu.com',
+ },
+ {
+ filters: ['||track.pricespider.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.pricespider.com',
+ },
+ {
+ filters: ['/adjs/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img3.doubanio.com/f/adjs/',
+ },
+ {
+ filters: ['||teads.tv^$third-party', '||teads.tv^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.teads.tv',
+ },
+ {
+ filters: ['/rsya-tag-users/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://yastatic.net/q/set/s/rsya-tag-users/',
+ },
+ {
+ filters: ['||pv.sohu.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pv.sohu.com',
+ },
+ {
+ filters: ['@@||youtube.com/iframe_api$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.youtube.com/iframe_api',
+ },
+ {
+ filters: ['||bing.com/action/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bat.bing.com/action/',
+ },
+ {
+ filters: ['/pagead/conversion/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.googleadservices.com/pagead/conversion/',
+ },
+ {
+ filters: ['||vk.com/rtrg?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://vk.com/rtrg?',
+ },
+ {
+ filters: ['||xnxx.com/in.php?referer'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.xnxx.com/in.php?referer=',
+ },
+ {
+ filters: ['/pagead/js/*', '||googlesyndication.com/pagead/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tpc.googlesyndication.com/pagead/js/',
+ },
+ {
+ filters: [
+ '/pagead2.',
+ '||pagead2.googlesyndication.com^$~object-subrequest',
+ '/pagead/osd.',
+ '||pagead2.googlesyndication.com^$script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/osd.js',
+ },
+ {
+ filters: ['/uedata?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.amazon.com/ap/uedata?',
+ },
+ {
+ filters: ['.net/ads/', '/ads/img/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.sstatic.net/ads/img/',
+ },
+ {
+ filters: ['||ensighten.com^', '||ensighten.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://nexus.ensighten.com',
+ },
+ {
+ filters: ['||t.paypal.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.paypal.com',
+ },
+ {
+ filters: ['/gajs/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.paypalobjects.com/gajs/analytics.js',
+ },
+ {
+ filters: ['/yandex-metrica-watch/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.jsdelivr.net/npm/yandex-metrica-watch/',
+ },
+ {
+ filters: ['/sa.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.sohu.com/sa.gif?',
+ },
+ {
+ filters: ['||impact-ad.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://aw.dw.impact-ad.jp',
+ },
+ {
+ filters: ['||beacon.tingyun.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://beacon.tingyun.com',
+ },
+ {
+ filters: ['||collector1.xhamster.com^', '?log=stats-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://collector1.xhamster.com/?log=stats-beta&ref=&v=3.1&_=1540302692023',
+ },
+ {
+ filters: ['||sohu.com/count/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.go.sohu.com/count/',
+ },
+ {
+ filters: ['||exosrv.com^$third-party', '||exosrv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.exosrv.com',
+ },
+ {
+ filters: ['/optimizely.$domain=~optimizely.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.espn.com/sports/optimizely.js',
+ },
+ {
+ filters: ['||collector.githubapp.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://collector.githubapp.com',
+ },
+ {
+ filters: ['/getads?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://v.amazon-adsystem.com/va/fw/getAds?',
+ },
+ {
+ filters: ['/advert.$domain=~advert.ae|~advert.io|~motortrader.com.my'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://mc.webvisor.org/metrika/advert.gif',
+ },
+ {
+ filters: ['||aralego.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://sync.aralego.com',
+ },
+ {
+ filters: ['||github.com/_private/browser/stats'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.github.com/_private/browser/stats',
+ },
+ {
+ filters: ['||imp.optaim.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imp.optaim.com',
+ },
+ {
+ check: true,
+ filters: ['||outbrain.com^$third-party', '||outbrain.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://widgets.outbrain.com',
+ },
+ {
+ filters: ['||irs01.$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://iqiyi.irs01.com',
+ },
+ {
+ filters: ['/amp4ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ampproject.org/rtv/011810152207300/amp4ads-host-v0.js',
+ },
+ {
+ check: true,
+ filters: ['/adview?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://securepubads.g.doubleclick.net/pagead/adview?',
+ },
+ {
+ filters: ['/adchoices/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/pagead/images/adchoices/',
+ },
+ {
+ filters: ['||visualrevenue.com^', '||visualrevenue.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.visualrevenue.com',
+ },
+ {
+ filters: ['||abmr.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ak1s.abmr.net',
+ },
+ {
+ check: true,
+ filters: ['/google-analytics.'],
+ sourceUrl: 'https://appsource.microsoft.com',
+ type: 'script',
+ url: 'https://appsource.microsoft.com/google-analytics.js',
+ },
+ {
+ filters: ['.net/p.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.typekit.net/p.gif?',
+ },
+ {
+ filters: ['||imrworldwide.com^', '||imrworldwide.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn-gl.imrworldwide.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||fout.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.rfp.fout.jp',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/smartads.$domain=~smartads.cz|~smartads.io', '/mobileads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smartads.mobile.yahoo.co.jp/MobileAds/',
+ },
+ {
+ filters: ['||adsrvr.org^$third-party', '||adsrvr.org^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://match.adsrvr.org',
+ },
+ {
+ filters: ['||exelator.com^', '||exelator.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://loadm.exelator.com',
+ },
+ {
+ filters: ['||xplosion.de^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ups.xplosion.de',
+ },
+ {
+ filters: ['/imgad?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/pagead/imgad?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['||log.optimizely.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://341800575.log.optimizely.com',
+ },
+ {
+ filters: ['||youku.com/ypvlog?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://p.l.youku.com/ypvlog?',
+ },
+ {
+ check: true,
+ filters: ['/showad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads.pubmatic.com/AdServer/js/showad.js',
+ },
+ {
+ filters: ['||demandbase.com^', '||demandbase.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.demandbase.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||zog.link^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://in6.zog.link',
+ },
+ {
+ filters: ['||qq.com/dataimport/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tudg.qq.com/dataimport/',
+ },
+ {
+ filters: ['/log.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hermes.jd.com/log.gif?',
+ },
+ {
+ filters: ['||betrad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://l.betrad.com',
+ },
+ {
+ check: true,
+ filters: ['||acuityplatform.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://acuityplatform.com',
+ },
+ {
+ filters: ['||mxptint.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://lrp.mxptint.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||rdsig.yahoo.co.jp^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rdsig.yahoo.co.jp',
+ },
+ {
+ filters: ['||zemanta.com^$third-party', '||zemanta.com/usersync/outbrain/?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://b1sync.zemanta.com/usersync/outbrain/?',
+ },
+ {
+ filters: ['||tubecorporate.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://st.tubecorporate.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: [
+ '||ad.doubleclick.net^$~object-subrequest,third-party',
+ '||ad.doubleclick.net^$third-party,image',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.doubleclick.net',
+ },
+ {
+ filters: ['||pos.baidu.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pos.baidu.com',
+ },
+ {
+ check: true,
+ filters: ['||turn.com^$third-party', '||ad.turn.com^', '||turn.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ad.turn.com',
+ },
+ {
+ check: true,
+ filters: ['||de17a.com^', '||de17a.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://d5p.de17a.com',
+ },
+ {
+ filters: ['||mathtag.com^', '||mathtag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://sync.mathtag.com',
+ },
+ {
+ check: true,
+ filters: ['.adsby.', '||bidtheatre.com^$third-party', '||adsby.bidtheatre.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://match.adsby.bidtheatre.com',
+ },
+ {
+ check: true,
+ filters: ['||basebanner.com^$third-party', '||basebanner.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://match.basebanner.com',
+ },
+ {
+ filters: ['||sitescout.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://pixel-sync.sitescout.com',
+ },
+ {
+ filters: ['||upravel.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://sync.upravel.com',
+ },
+ {
+ check: true,
+ filters: ['||rfihub.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://p.rfihub.com',
+ },
+ {
+ filters: ['||quantserve.com^$third-party,image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pixel.quantserve.com',
+ },
+ {
+ filters: ['||dotomi.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pubmatic-match.dotomi.com',
+ },
+ {
+ filters: ['||onaudience.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://pixel.onaudience.com',
+ },
+ {
+ filters: ['.com/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.exosrv.com/ads.js',
+ },
+ {
+ filters: ['||csi.gstatic.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'other',
+ url: 'https://csi.gstatic.com',
+ },
+ {
+ filters: ['||erne.co/tags?'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://grey.erne.co/tags?',
+ },
+ {
+ filters: ['.com/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://syndication.exosrv.com/ads-priv.php',
+ },
+ {
+ filters: ['||facebook.com/brandlift.php'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/brandlift.php',
+ },
+ {
+ filters: ['||googlesyndication.com/simgad/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/simgad/',
+ },
+ {
+ filters: ['||googlesyndication.com^*/simgad/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/daca_images/simgad/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||chartbeat.com^', '/chartbeat_', '||chartbeat.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.chartbeat.com/js/chartbeat_pub.js',
+ },
+ {
+ filters: ['/alog.min.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://fex.bdstatic.com/hunter/alog/alog.min.js',
+ },
+ {
+ filters: ['||simpli.fi^', '||simpli.fi^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://um.simpli.fi',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/adnetwork.$domain=~adnetwork.ai|~adnetwork.ie'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://adnetwork.adasiaholdings.com',
+ },
+ {
+ filters: ['.ar/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.ar/ads/',
+ },
+ {
+ filters: ['/adsense_$domain=~adsense.googleblog.com|~support.google.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.ar/images/branding/product/1x/adsense_64dp.png',
+ },
+ {
+ filters: ['||ptengine.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.ptengine.jp',
+ },
+ {
+ filters: ['?bannerid='],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads.nicovideo.jp/bannertext?bannerid=81392&zoneid=1209&',
+ },
+ {
+ filters: ['/track.gif^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.hao123.com/images/track.gif',
+ },
+ {
+ filters: ['||bizible.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.bizible.com',
+ },
+ {
+ filters: ['||maxmind.com^*/geoip2.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js',
+ },
+ {
+ filters: ['||marketo.net^$third-party', '@@||munchkin.marketo.net/munchkin.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://munchkin.marketo.net/munchkin.js',
+ },
+ {
+ filters: ['||c212.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.c212.net',
+ },
+ {
+ filters: ['||smartadserver.com^$third-party', '||smartadserver.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://sync.smartadserver.com',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=txxx.com'],
+ sourceUrl: 'https://m.txxx.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||i-mobile.co.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://spad.i-mobile.co.jp',
+ },
+ {
+ check: true,
+ filters: [
+ '/advertising.$domain=~advertising.amazon.ca|~advertising.amazon.cn|~advertising.amazon.co.jp|~advertising.amazon.co.uk|~advertising.amazon.com|~advertising.amazon.com.au|~advertising.amazon.com.mx|~advertising.amazon.de|~advertising.amazon.es|~advertising.amazon.fr|~advertising.amazon.in|~advertising.amazon.it|~advertising.berlin-airport.de|~advertising.bulurum.com|~advertising.byhoxby.com|~advertising.dailymotion.com|~advertising.expedia.com|~advertising.lavenir.net|~advertising.mobile.de|~advertising.org.il|~advertising.roku.com|~advertising.sevenwestmedia.com.au|~advertising.shpock.com|~advertising.theguardian.com',
+ '/advertising.$domain=~advertising.amazon.ca|~advertising.amazon.cn|~advertising.amazon.co.jp|~advertising.amazon.co.uk|~advertising.amazon.com|~advertising.amazon.com.au|~advertising.amazon.com.mx|~advertising.amazon.de|~advertising.amazon.es|~advertising.amazon.fr|~advertising.amazon.in|~advertising.amazon.it|~advertising.berlin-airport.de|~advertising.bulurum.com|~advertising.byhoxby.com|~advertising.dailymotion.com|~advertising.expedia.com|~advertising.lavenir.net|~advertising.mobile.de|~advertising.org.il|~advertising.sevenwestmedia.com.au|~advertising.shpock.com|~advertising.theguardian.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.txxx.com/js/advertising.js',
+ },
+ {
+ check: true,
+ filters: ['||hotjar.com^$third-party', '||hotjar.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.hotjar.com',
+ },
+ {
+ filters: ['||eclick.baidu.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://eclick.baidu.com',
+ },
+ {
+ filters: ['/LogImpression?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.nicovideo.jp/api/OxBannerService/logImpression?',
+ },
+ {
+ filters: ['||effectivemeasure.net^$third-party', '||effectivemeasure.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://me-ssl.effectivemeasure.net',
+ },
+ {
+ filters: ['/gen_204?$image,script', '||google.*/gen_204?$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.eg/gen_204?',
+ },
+ {
+ filters: ['||js-agent.newrelic.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js-agent.newrelic.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['.com/s.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kcart.alipay.com/s.gif?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/amp-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ampproject.org/rtv/011810152207300/v0/amp-ad-exit-0.1.js',
+ },
+ {
+ filters: ['||nr-data.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bam.nr-data.net',
+ },
+ {
+ filters: ['||socdm.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://d.socdm.com',
+ },
+ {
+ filters: ['||apvdr.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://apvdr.com',
+ },
+ {
+ filters: ['||adtdp.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://adsd-sync.amanad.adtdp.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '$script,third-party,domain=0dt.net|123videos.tv|171gifs.com|1proxy.de|2ddl.download|2ddl.ooo|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4downfiles.org|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|a-o.ninja|abcmalayalam.co|abgdianci.com|acidimg.cc|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|akvideo.stream|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animepahe.com|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|atchtheofficeonline.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|bdsmstreak.com|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bemetal.net|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.com|bilasport.me|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|btdb.to|bugiltelanjang17.com|byetv.org|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|centrum-dramy.pl|cholotubex.com|cinemamkv.xyz|cinetux.net|clicknupload.org|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coreimg.net|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|ddlfr.pw|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|fbstreams.me|felipephtutoriais.com.br|filecrypt.cc|fileflares.com|filerocks.us|filesupload.org|filma24.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|firstrowas1.cc|flashbd24.blogspot.com|flixanity.online|foxurl.net|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freemoviestream.xyz|freeomovie.com|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|go4up.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaihaven.org|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hitomi.la|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iiddl.net|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imagecool.org|img2share.com|imgshot.pw|imgshots.com|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|kwik.cx|l2s.io|lacajita.xyz|lambingan.su|latinohentai.com|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livecamtv.me|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|mbfsports.com|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|minkly.me|mitemovie.com|mixhdporn.com|mkvcage.com|mkvtv.net|mlbstream.me|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|mp4upload.com|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|myreadingmanga.info|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|nbastreams.me|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newmusic.trade|newpct.com|newpct1.com|nflstream.net|nflstreams.me|ngentot.tv|nhlstreams.me|ninfetasnovinhas.net|nodefiles.com|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|oload.tv|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openload.co|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|owndrives.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|playpornfree.org|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|rapidvideo.com|raptu.com|realcam.me|reallifecamhd.com|reallifecamvd.com|ripvod.com|root.sx|rosextube.com|runvideo.net|sankakucomplex.com|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sextop.net|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|smallencode.com|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sportp2p.com|sports4u.net|sportshd.me|sportups.me|srkcast.com|stadium-live.biz|streamango.com|streamcherry.com|streamingok.com|streamjav.net|streamlord.com|streampornfree.com|strikeout.co|strikeout.me|suki48.web.id|superteenz.com|sweext.com|swfchan.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|taxidrivermovie.com|tddl.tv|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|twoddl.co|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidfile.net|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipbox.nu|vipcast.pw|vipleague.co|vipleague.ws|vipracing.biz|viralfeedhindi.com|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watcheng.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchmygamesonline.com|watchparksandrecreation.cc|watchparksandrecreation.net|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldfree4u.lol|worldfree4u.ws|worldfree4umovie.live|worldvidz.com|wplocker.com|xbnat.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youav.com|youpornzz.com|yourbittorrent.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zippysharemediafire.club|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://openload.co',
+ type: 'script',
+ url: 'https://uod2quk646.com/a4a81342d44754d915ef43ea77312574/invoke.js',
+ },
+ {
+ filters: ['@@||dailymotion.com/cdn/manifest/video/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dmxleo.dailymotion.com/cdn/manifest/video/',
+ },
+ {
+ filters: ['-dspcookiematching.', '||dmxleo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://public-prod-dspcookiematching.dmxleo.com',
+ },
+ {
+ filters: ['||exactag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://m.exactag.com',
+ },
+ {
+ filters: ['/pageadimg/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://tpc.googlesyndication.com/pageadimg/',
+ },
+ {
+ filters: ['||stadig.ifeng.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stadig.ifeng.com',
+ },
+ {
+ filters: ['||pixanalytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://falcon.pixanalytics.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||gscontxt.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://bbc.gscontxt.net',
+ },
+ {
+ filters: ['||crwdcntrl.net^', '||crwdcntrl.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://tags.crwdcntrl.net',
+ },
+ {
+ check: true,
+ filters: ['||ad.crwdcntrl.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ad.crwdcntrl.net',
+ },
+ {
+ filters: ['||cdn.onesignal.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.onesignal.com',
+ },
+ {
+ filters: ['/js_tracking?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://www.booking.com/js_tracking?',
+ },
+ {
+ filters: ['||adadvisor.net^$third-party', '||adadvisor.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adadvisor.net',
+ },
+ {
+ filters: ['||dyntrk.com^', '||dyntrk.com^$third-party', '.com/adx/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gu.dyntrk.com/adx/',
+ },
+ {
+ filters: ['||bidr.io^', '||bidr.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://match.prod.bidr.io',
+ },
+ {
+ filters: ['/cm.gif?', '||atm.youku.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.miaozhen.atm.youku.com/cm.gif?',
+ },
+ {
+ filters: ['||clmbtech.com^$third-party', '/ad/commons/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.clmbtech.com/ad/commons/',
+ },
+ {
+ filters: ['||cricbuzz.com/js/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.cricbuzz.com/js/banners/',
+ },
+ {
+ filters: ['||ssc.api.bbc.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ssc.api.bbc.com',
+ },
+ {
+ filters: ['/adx.$domain=~adx.uk.com|~adx.wowfi.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://wn.pos.baidu.com/adx.php',
+ },
+ {
+ filters: ['||company-target.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.company-target.com',
+ },
+ {
+ filters: ['||sa.bbc.co.uk^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sa.bbc.co.uk',
+ },
+ {
+ filters: ['||tns.simba.taobao.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tns.simba.taobao.com',
+ },
+ {
+ filters: ['||tribalfusion.com^$third-party', '||tribalfusion.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.tribalfusion.com',
+ },
+ {
+ filters: ['||skimresources.com^', '||skimresources.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://x.skimresources.com',
+ },
+ {
+ filters: ['||netmng.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://pubmatic2waycm-atl.netmng.com',
+ },
+ {
+ filters: ['||widespace.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://sync.widespace.com',
+ },
+ {
+ filters: ['||adhigh.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://px.adhigh.net',
+ },
+ {
+ check: true,
+ filters: ['||tapad.com^$third-party', '||tapad.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://pixel.tapad.com',
+ },
+ {
+ filters: ['||gwallet.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://rp.gwallet.com',
+ },
+ {
+ check: true,
+ filters: ['||gumgum.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://rtb.gumgum.com',
+ },
+ {
+ filters: ['||rundsp.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://match.rundsp.com',
+ },
+ {
+ check: true,
+ filters: ['||w55c.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pm.w55c.net',
+ },
+ {
+ filters: ['/log/browser/event'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://de.ask.com/log/browser/event',
+ },
+ {
+ filters: [
+ '||visiblemeasures.com^$~object-subrequest,third-party',
+ '||visiblemeasures.com^',
+ '||visiblemeasures.com^$third-party,image',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://l2.visiblemeasures.com',
+ },
+ {
+ filters: ['||3lift.com^$third-party', '||3lift.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ib.3lift.com',
+ },
+ {
+ filters: ['||adotmob.com^$third-party', '||adotmob.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.adotmob.com',
+ },
+ {
+ filters: ['.com/1.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://log.mmstat.com/1.gif?',
+ },
+ {
+ filters: ['/overlayad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://transit.yahoo.co.jp/js/overlayAd.js',
+ },
+ {
+ filters: ['||stickyadstv.com^$third-party', '||stickyadstv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.stickyadstv.com',
+ },
+ {
+ filters: ['||adsafeprotected.com^$third-party', '||adsafeprotected.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.adsafeprotected.com',
+ },
+ {
+ filters: ['/show_ads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/show_ads.js',
+ },
+ {
+ check: true,
+ filters: ['||ero-advertising.com^$third-party', '||ero-advertising.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://go.ero-advertising.com',
+ },
+ {
+ check: true,
+ filters: ['/pagead/html/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://googleads.g.doubleclick.net/pagead/html/',
+ },
+ {
+ check: true,
+ filters: ['/pagead/ads?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://googleads.g.doubleclick.net/pagead/ads?',
+ },
+ {
+ filters: ['||ct.pinterest.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ct.pinterest.com',
+ },
+ {
+ filters: ['||pingdom.net^$third-party', '/prum.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rum-static.pingdom.net/prum.min.js',
+ },
+ {
+ filters: ['||analytics.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sp.analytics.yahoo.com',
+ },
+ {
+ filters: ['||affinity.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://backfills3.ph.affinity.com',
+ },
+ {
+ filters: ['/alog/dp.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://fex.bdstatic.com/hunter/alog/dp.mobile.min.js',
+ },
+ {
+ filters: ['||254a.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://r.254a.com',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: ['||adition.com^$third-party', '||adition.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://dsp.adfarm1.adition.com',
+ },
+ {
+ filters: ['||lijit.com^', '||lijit.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ap.lijit.com',
+ },
+ {
+ filters: ['/ads.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://de.softonic.com/ads.min.js',
+ },
+ {
+ filters: ['||dnn506yrbagrg.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dnn506yrbagrg.cloudfront.net',
+ },
+ {
+ filters: ['/chartbeat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.chartbeat.com/js/chartbeat.js',
+ },
+ {
+ filters: ['||edigitalsurvey.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://edigitalsurvey.com',
+ },
+ {
+ filters: ['/openx/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pr-bh.ybp.yahoo.com/sync/openx/',
+ },
+ {
+ filters: ['||bttrack.com^$third-party', '||bttrack.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://bttrack.com',
+ },
+ {
+ filters: ['||volvelle.tech^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://a.volvelle.tech',
+ },
+ {
+ filters: ['/adtest/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.yimg.jp/bdv/adtest/',
+ },
+ {
+ filters: ['||visualwebsiteoptimizer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dev.visualwebsiteoptimizer.com',
+ },
+ {
+ filters: ['||luckyorange.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.luckyorange.com',
+ },
+ {
+ filters: ['/event-tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.canvaslms.com/js/event-tracking.js',
+ },
+ {
+ filters: ['/beacon.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rum-collector-2.pingdom.net/img/beacon.gif?',
+ },
+ {
+ filters: ['||maxmind.com/geoip/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geoip-js.maxmind.com/geoip/',
+ },
+ {
+ filters: ['.lms-analytics/', '-analytics/insight.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://snap.licdn.com/li.lms-analytics/insight.min.js',
+ },
+ {
+ filters: ['||servebom.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.servebom.com',
+ },
+ {
+ filters: [
+ '||fwmrm.net^$~object-subrequest,third-party',
+ '.net/ad/$~object-subrequest',
+ '||fwmrm.net^$third-party,image',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://1f2e7.v.fwmrm.net/ad/',
+ },
+ {
+ filters: ['||brightedge.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ccdn.brightedge.com',
+ },
+ {
+ filters: ['||ads-twitter.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ads-twitter.com',
+ },
+ {
+ filters: ['||luckyorange.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://settings.luckyorange.net',
+ },
+ {
+ filters: ['||bizographics.com^$third-party', '||bizographics.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sjs.bizographics.com',
+ },
+ {
+ filters: ['||yimg.com/wi/ytc.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.yimg.com/wi/ytc.js',
+ },
+ {
+ filters: ['||yahoo.co.jp/js/s_retargeting.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://b92.yahoo.co.jp/js/s_retargeting.js',
+ },
+ {
+ filters: ['||serving-sys.com^', '||serving-sys.com^$third-party', '/ebonetag.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure-ds.serving-sys.com/SemiCachedScripts/ebOneTag.js',
+ },
+ {
+ filters: ['||ads.linkedin.com^$third-party', '||ads.linkedin.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://px.ads.linkedin.com',
+ },
+ {
+ filters: ['||exdynsrv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.exdynsrv.com',
+ },
+ {
+ filters: ['/generic.ads.', '.ads.css'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cdnstatic.detik.com/live/css/msite/generic.ads.css',
+ },
+ {
+ filters: ['||creative-serving.com^$third-party', '||ads.creative-serving.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.creative-serving.com',
+ },
+ {
+ filters: ['/adsct?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.co/i/adsct?',
+ },
+ {
+ filters: ['||analytics.twitter.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.twitter.com',
+ },
+ {
+ filters: ['||crazyegg.com^', '||crazyegg.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sample.crazyegg.com',
+ },
+ {
+ filters: ['||gtrk.s3.amazonaws.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gtrk.s3.amazonaws.com',
+ },
+ {
+ filters: ['||admedo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pool.admedo.com',
+ },
+ {
+ filters: ['||pix.impdesk.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pix.impdesk.com',
+ },
+ {
+ filters: ['||eyeota.net^', '||eyeota.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ps.eyeota.net',
+ },
+ {
+ filters: ['.com/pv.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pb.sogou.com/pv.gif?',
+ },
+ {
+ filters: ['||nexac.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://r.nexac.com',
+ },
+ {
+ filters: ['||ib-ibi.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://global.ib-ibi.com',
+ },
+ {
+ filters: ['/adsbygoogle.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js',
+ },
+ {
+ filters: ['||tidaltv.com^$third-party', '||tidaltv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.tidaltv.com',
+ },
+ {
+ filters: ['/delivery/spc.', '/spc.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://newrevive.detik.com/delivery/spc.php',
+ },
+ {
+ filters: ['/delivery/fl.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://newrevive.detik.com/delivery/fl.js',
+ },
+ {
+ filters: ['/hit.xiti?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://logws1363.ati-host.net/hit.xiti?',
+ },
+ {
+ filters: ['/LogAnalysisTracker/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.detik.net.id/LogAnalysisTracker/',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||ajax.googleapis.com^$script,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['@@||ravenjs.com^$script,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://cdn.ravenjs.com',
+ },
+ {
+ filters: ['||fc2.com/counter_img.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://media.fc2.com/counter_img.php?',
+ },
+ {
+ filters: ['||fc2.com/ana/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://media3.fc2.com/ana/',
+ },
+ {
+ filters: ['/includes/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.cricbuzz.com/includes/ads/',
+ },
+ {
+ filters: ['||google.*/gen204?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://translate.google.cn/gen204?',
+ },
+ {
+ filters: ['||sinaimg.cn/unipro/pub/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.sinaimg.cn/unipro/pub/',
+ },
+ {
+ filters: ['||microad.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://j.microad.net',
+ },
+ {
+ filters: ['/468x60.', '468x60.gif|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://click.sabavision.com/public/public/images/loadings/468x60.gif',
+ },
+ {
+ filters: ['||microadinc.com^$third-party', '.com/ad?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s-rtb.send.microadinc.com/ad?',
+ },
+ {
+ filters: ['||ds-aksb-a.akamaihd.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ds-aksb-a.akamaihd.net',
+ },
+ {
+ check: true,
+ filters: ['||pixel.adsafeprotected.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.adsafeprotected.com',
+ },
+ {
+ filters: ['||in.zog.link^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://in.zog.link',
+ },
+ {
+ filters: ['||rfihub.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c1.rfihub.net',
+ },
+ {
+ filters: [
+ '||2mdn.net^$~object-subrequest,third-party',
+ '||2mdn.net^',
+ '||2mdn.net^$third-party,script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s0.2mdn.net',
+ },
+ {
+ filters: ['||t.sharethis.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.sharethis.com',
+ },
+ {
+ filters: ['||ml314.com^$third-party', '||ml314.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ml314.com',
+ },
+ {
+ filters: ['||su.addthis.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://su.addthis.com',
+ },
+ {
+ filters: ['@@||connect.facebook.net^$script,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://connect.facebook.net',
+ },
+ {
+ filters: ['/spacer.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.agkn.com/spacer.gif?',
+ },
+ {
+ filters: ['/delivery/lg.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://newrevive.detik.com/delivery/lg.php',
+ },
+ {
+ check: true,
+ filters: ['@@||tubecup.org^$xmlhttprequest,domain=txxx.com'],
+ sourceUrl: 'https://m.txxx.com',
+ type: 'xhr',
+ url: 'https://st.tubecup.org',
+ },
+ {
+ filters: ['@@||p.jwpcdn.com^$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.p.jwpcdn.com',
+ },
+ {
+ filters: ['/script/ads.', '/ads.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://spdeliver.i-mobile.co.jp/script/ads.js?',
+ },
+ {
+ filters: ['||ru4.com^', '||ru4.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://msec.xp1.ru4.com',
+ },
+ {
+ filters: ['||smaato.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://soma.smaato.net',
+ },
+ {
+ filters: ['||acxiomapac.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.acxiomapac.com',
+ },
+ {
+ filters: ['||userreport.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pdw-usr.userreport.com',
+ },
+ {
+ filters: ['||rkdms.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mid.rkdms.com',
+ },
+ {
+ filters: ['||media.net^$third-party', '||media.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://contextual.media.net',
+ },
+ {
+ filters: ['||rqtrk.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ws2.rqtrk.eu',
+ },
+ {
+ filters: ['||adsafety.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tags.adsafety.net',
+ },
+ {
+ filters: [
+ '@@||scorecardresearch.com/beacon.js$domain=agame.com|ahmedabadmirror.com|allmusic.com|amctv.com|apl.tv|babycenter.com|bonappetit.com|calgaryherald.com|canada.com|cbc.ca|dailymail.co.uk|deviantart.com|discovery.com|edmontonjournal.com|fastcompany.com|financialpost.com|firstwefeast.com|hitfix.com|huffingtonpost.com|indiatimes.com|investigationdiscovery.com|landandfarm.com|last.fm|leaderpost.com|m.tmz.com|montrealgazette.com|nationalpost.com|newsday.com|ottawacitizen.com|outsideonline.com|radaronline.com|salon.com|sci2.tv|syfy.com|theprovince.com|thestar.com|thestarphoenix.com|thinkatheist.com|tlc.com|tmz.com|v3.co.uk|vancouversun.com|windsorstar.com',
+ ],
+ sourceUrl: 'https://www.deviantart.com',
+ type: 'script',
+ url: 'https://sb.scorecardresearch.com/beacon.js',
+ },
+ {
+ filters: ['||discordapp.com^*/science'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://discordapp.com/api/science',
+ },
+ {
+ filters: ['||da-ads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.da-ads.com',
+ },
+ {
+ filters: ['||360yield.com^$third-party', '||360yield.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.360yield.com',
+ },
+ {
+ filters: ['||semasio.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://uip.semasio.net',
+ },
+ {
+ filters: ['||liadm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.liadm.com',
+ },
+ {
+ filters: ['?adzone=', '&adsize=', '=300x250&', '&advid=$~image'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.da-ads.com/ads.js?adzone=top&adsize=300x250&advid=1540302710304',
+ },
+ {
+ filters: [
+ '||frog.wix.com^',
+ '||frog.wix.com/da-client$image,redirect=1x1-transparent.gif,domain=deviantart.com',
+ ],
+ sourceUrl: 'https://www.deviantart.com',
+ type: 'image',
+ url: 'https://frog.wix.com/da-client',
+ },
+ {
+ filters: ['||ebaystatic.com^*/iam_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secureir.ebaystatic.com/cr/v/c1/iam_ebay_506_4.js',
+ },
+ {
+ filters: ['||ebaystatic.com^*/agof_survey_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secureir.ebaystatic.com/cr/v/c1/agof_survey_ebay_506.min.js',
+ },
+ {
+ filters: ['||ioam.de^', '||ioam.de/tx.io?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['/adcore_$domain=~adcore.ch|~adcore.com.au'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://spdeliver.i-mobile.co.jp/script/adcore_pc_inline.js',
+ },
+ {
+ filters: ['/ad_spot.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://spnet2-1.i-mobile.co.jp/ad_spot.aspx',
+ },
+ {
+ filters: ['/prebid_$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st.deviantart.net/css/prebid_jc.js',
+ },
+ {
+ filters: ['||appier.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gocm.c.appier.net',
+ },
+ {
+ filters: ['||tm.jsuol.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tm.jsuol.com.br',
+ },
+ {
+ filters: ['_300x250_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.grumft.com/gt/ZONA_IAB_300x250_2',
+ },
+ {
+ filters: ['||googletagservices.com/tag/js/gpt_$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googletagservices.com/tag/js/gpt_mobile.js',
+ },
+ {
+ filters: ['||sonobi.com^$third-party', '||sonobi.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://apex.go.sonobi.com',
+ },
+ {
+ filters: ['_prebid_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ap.lijit.com/rtb/bid?src=prebid_prebid_1.18.0',
+ },
+ {
+ filters: ['||amung.us^', '||amung.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://whos.amung.us',
+ },
+ {
+ filters: ['/dfp/dfp-', '/dfp-gpt.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ettoday.net/dfp/dfp-gpt.js',
+ },
+ {
+ filters: ['/pagead/gen_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pagead2.googlesyndication.com/pagead/gen_204',
+ },
+ {
+ filters: ['||dapxl.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dapxl.com',
+ },
+ {
+ filters: ['||googlesyndication.com/sodar/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tpc.googlesyndication.com/sodar/',
+ },
+ {
+ filters: ['||creativecdn.com/tags?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://asia.creativecdn.com/tags?',
+ },
+ {
+ filters: ['||2mdn.net^$third-party,image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net',
+ },
+ {
+ filters: ['||tm.uol.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tm.uol.com.br',
+ },
+ {
+ filters: ['||vimeocdn.com/js_opt/ablincoln_combined.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://f.vimeocdn.com/js_opt/ablincoln_combined.min.js',
+ },
+ {
+ filters: ['/ad/common/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.grumft.com/ad/common/',
+ },
+ {
+ filters: ['.net/ads.', '/ads.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.ettoday.net/ads.php',
+ },
+ {
+ filters: ['/promo/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.licdn.com/scds/common/u/images/promo/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||flagcounter.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s07.flagcounter.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['||brealtime.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://cookie.brealtime.com',
+ },
+ {
+ check: true,
+ filters: ['||domdex.com^$third-party', '||domdex.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://magnetic.t.domdex.com',
+ },
+ {
+ filters: ['||s.pixfs.net/js/pixlogger.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.pixfs.net/js/pixlogger.min.js',
+ },
+ {
+ filters: ['/fingerprint.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://front.pixfs.net/js/fingerprint.min.js',
+ },
+ {
+ filters: ['||googlesyndication.com/sadbundle/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tpc.googlesyndication.com/sadbundle/',
+ },
+ {
+ filters: ['||redintelligence.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://hal9000.redintelligence.net',
+ },
+ {
+ filters: ['||sbeacon.sina.com.cn/e.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sbeacon.sina.com.cn/e.gif',
+ },
+ {
+ filters: ['||tynt.com^', '||tynt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tcr.tynt.com',
+ },
+ {
+ filters: ['/prebid.$script,domain=~prebid.org', '/prebid/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ettoday.net/ad/prebid/prebid.js',
+ },
+ {
+ filters: [
+ '.za/ads/',
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.co.za',
+ type: 'image',
+ url: 'https://www.google.co.za/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['||doubleclick.net^*/trackimp/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.doubleclick.net/ddm/trackimp/',
+ },
+ {
+ filters: ['||admaster.com.cn^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://v.admaster.com.cn',
+ },
+ {
+ filters: ['/addata.$domain=~addata.io'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tpc.googlesyndication.com/pagead/gadgets/html5/addata.js',
+ },
+ {
+ filters: ['||eyeviewads.com^$third-party', '||eyeviewads.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://track.eyeviewads.com',
+ },
+ {
+ filters: ['||vindicosuite.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://mpp.vindicosuite.com',
+ },
+ {
+ check: true,
+ filters: ['||cx.atdmt.com^', '||atdmt.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cx.atdmt.com',
+ },
+ {
+ check: true,
+ filters: ['||amplify.outbrain.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://amplify.outbrain.com',
+ },
+ {
+ filters: ['/videojs.ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://player.ivideosmart.com/ivxplayer/v1/js/videojs.ads.js',
+ },
+ {
+ filters: ['/ads-2.', '/js/ads-', '@@||ads.nicovideo.jp/assets/js/ads-*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.nicovideo.jp/assets/js/ads-2.28.3.min.js',
+ },
+ {
+ check: true,
+ filters: ['||ad.zanox.com^', '||zanox.com^', '||zanox.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://ad.zanox.com',
+ },
+ {
+ check: true,
+ filters: [
+ '://banners.$third-party',
+ '||banners.webmasterplan.com^$third-party',
+ '||webmasterplan.com^',
+ '||webmasterplan.com^$third-party',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://banners.webmasterplan.com',
+ },
+ {
+ filters: ['://banner.$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://banner.congstar.de',
+ },
+ {
+ check: true,
+ filters: ['||zanox.com/ppv/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://ad.zanox.com/ppv/',
+ },
+ {
+ filters: ['||myvisualiq.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vt.myvisualiq.net',
+ },
+ {
+ filters: ['||indexww.com^$third-party', '||indexww.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js-sec.indexww.com',
+ },
+ {
+ filters: ['/prebid-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.cnn.com/ads/adfuel/modules/prebid-1.23.0.js',
+ },
+ {
+ filters: ['||ugdturner.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ugdturner.com',
+ },
+ {
+ filters: ['/keypress.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.cdn.turner.com/ads/adfuel/modules/keypress.js',
+ },
+ {
+ filters: ['.io/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.imfast.io/ads.js',
+ },
+ {
+ filters: ['||postrelease.com^$third-party', '||postrelease.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.postrelease.com',
+ },
+ {
+ filters: ['||sharethrough.com^$third-party', '||sharethrough.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://native.sharethrough.com',
+ },
+ {
+ filters: ['||beemray.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cnn.sdk.beemray.com',
+ },
+ {
+ filters: ['/adsense/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/adsense/',
+ },
+ {
+ filters: ['||contentspread.net^$third-party', '_120x60.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://cdn.contentspread.net/24i/pb_logo_120x60.gif',
+ },
+ {
+ filters: ['||ti.tradetracker.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ti.tradetracker.net',
+ },
+ {
+ check: true,
+ filters: ['||doubleclick.net^*/ad/$~object-subrequest,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.doubleclick.net/ddm/ad/',
+ },
+ {
+ filters: ['@@||translate.google.com^$script,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://translate.google.com',
+ },
+ {
+ filters: ['||twitter.com/oct.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform.twitter.com/oct.js',
+ },
+ {
+ filters: ['||static.tradetracker.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://static.tradetracker.net',
+ },
+ {
+ filters: ['@@||translate.googleapis.com^$script,domain=mediafire.com'],
+ sourceUrl: 'https://www.mediafire.com',
+ type: 'script',
+ url: 'https://translate.googleapis.com',
+ },
+ {
+ filters: ['||siftscience.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.siftscience.com',
+ },
+ {
+ filters: ['||bounceexchange.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.bounceexchange.com/340/i.js',
+ },
+ {
+ check: true,
+ filters: ['||amplifypixel.outbrain.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://amplifypixel.outbrain.com',
+ },
+ {
+ filters: ['/VisitorIdentification.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.niddk.nih.gov/layouts/system/VisitorIdentification.js',
+ },
+ {
+ check: true,
+ filters: ['||taboola.com^*/log/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://trc.taboola.com/yahoojp-p4-c3-dl/log/',
+ },
+ {
+ filters: ['||haostat.qihoo.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://haostat.qihoo.com',
+ },
+ {
+ filters: ['/js/ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.diply.com/resources/js/ads.min.js',
+ },
+ {
+ filters: ['||digitalgov.gov/Universal-Federated-Analytics-Min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dap.digitalgov.gov/Universal-Federated-Analytics-Min.js',
+ },
+ {
+ filters: ['||foresee.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gateway.foresee.com',
+ },
+ {
+ filters: ['/Criteo/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ettoday.net/ad/criteo/',
+ },
+ {
+ filters: ['||clickiocdn.com/t/common_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.clickiocdn.com/t/common_258.js',
+ },
+ {
+ filters: ['||usabilla.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://w.usabilla.com',
+ },
+ {
+ filters: ['/packed.analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mstatic.spankbang.com/static_mobile/gen/packed.analytics.f015fde7.js',
+ },
+ {
+ filters: ['||spankbang.com^*/mpop.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mstatic.spankbang.com/static_mobile/JS/mpop.js',
+ },
+ {
+ filters: ['||proper.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://global.proper.io',
+ },
+ {
+ filters: ['||spoutable.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.spoutable.com',
+ },
+ {
+ filters: ['||addthisedge.com/live/', '||m.addthisedge.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.addthisedge.com/live/',
+ },
+ {
+ filters: ['||addthis.com/live/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.addthis.com/live/',
+ },
+ {
+ check: true,
+ filters: [
+ '$xmlhttprequest,domain=adfreetv.ch|alltube.pl|alltube.tv|auroravid.to|catrumahminimalis.me|ddmix.net|dekoder.ws|estream.to|flashx.cc|freecontent.stream|leon08.tk|leon12.tk|leon16.tk|myeffect.net|nowvideo.sx|onlinevideoconverter.com|powvideo.net|sleeptimer.org|sorteosrd.com|streambeam.io|streamplay.top|szukajka.tv|tainies.online|vidfile.net|vidgg.to|wholecloud.net',
+ ],
+ sourceUrl: 'https://www.onlinevideoconverter.com',
+ type: 'xhr',
+ url: 'https://',
+ },
+ {
+ filters: ['||micpn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stlftx5f.micpn.com',
+ },
+ {
+ filters: ['||analytics.spankbang.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.spankbang.com',
+ },
+ {
+ filters: ['||googletagmanager.com/ns.html?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.googletagmanager.com/ns.html?',
+ },
+ {
+ filters: ['-300x250-$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ettoday.net/ad/prebid/prebid-mw-300x250-2-cf.js',
+ },
+ {
+ filters: ['/www/delivery/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.spankbang.com/www/delivery/',
+ },
+ {
+ filters: ['||traffichunt.com^$third-party', '||traffichunt.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads.traffichunt.com',
+ },
+ {
+ filters: ['||scupio.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rec.scupio.com',
+ },
+ {
+ check: true,
+ filters: ['||rva.outbrain.com^', '/analytics-v1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rva.outbrain.com/analytics-v1.js',
+ },
+ {
+ filters: ['/dtagent_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.onlinesbi.com/dtagent_ICA23egjrvx_6000500111012.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||t.insigit.com^', '||insigit.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.insigit.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/geoip_script?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.scribd.com/ssi/geoip_script?',
+ },
+ {
+ filters: ['/adsbytenmax.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tenmax-static.cacafly.net/ssp/adsbytenmax.js',
+ },
+ {
+ filters: ['||tenmax.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dmp.tenmax.io',
+ },
+ {
+ filters: ['/publicidade.', '/publicidade/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://s3.glbimg.com/cdn/libs/publicidade/1.1.0/publicidade.css',
+ },
+ {
+ filters: ['||navdmp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.navdmp.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['/ads2.', '||ads2.contentabc.com^', '.com/ads?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads2.contentabc.com/ads?',
+ },
+ {
+ filters: ['/LogImpression.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.nicovideo.jp/api/OxBannerService/logImpression.jsonp',
+ },
+ {
+ check: true,
+ filters: ['||doublemax.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ad.doublemax.net',
+ },
+ {
+ filters: ['||et.nytimes.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://et.nytimes.com',
+ },
+ {
+ filters: [
+ '@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=120sports.com|al.com|allmusic.com|beqala.com|blastingnews.com|bodas.com.mx|bodas.net|brandonsun.com|canoe.com|caranddriver.com|casamentos.com.br|casamentos.pt|casamiento.com.uy|casamientos.com.ar|cbsnews.com|cleveland.com|consequenceofsound.net|cwtv.com|daveramsey.com|deadspin.com|denofgeek.co|denofgeek.com|drupalcommerce.org|ebaumsworld.com|economist.com|ew.com|fastcompany.com|flightcentre.co.uk|foodkick.com|foxnews.com|gamespot.com|gawker.com|gizmodo.com|goalzz.com|greyhoundbet.racingpost.com|gsmarena.com|gulflive.com|independent.co.uk|indianexpress.com|investopedia.com|io9.com|jalopnik.com|jezebel.com|kotaku.com|latimes.com|lehighvalleylive.com|lifehacker.com|liverpoolfc.com|livescience.com|m.tmz.com|mardigras.com|mariages.net|marvel.com|masslive.com|matrimonio.com|matrimonio.com.co|matrimonio.com.pe|matrimonios.cl|merriam-webster.com|mlb.com|mlive.com|nauticexpo.com|nj.com|nola.com|noodle.com|nydailynews.com|nytimes.com|opb.org|orbitz.com|oregonlive.com|out.com|pennlive.com|phonearena.com|phoronix.com|pianobuyer.com|pocketnow.com|qz.com|ripley.cl|ripley.com.pe|seahawks.com|sendtonews.com|silive.com|syracuse.com|thesimsresource.com|thoughtcatalog.com|time.com|tmz.com|upi.com|urbandictionary.com|vanityfair.com|video.foxbusiness.com|vroomvroomvroom.com.au|washingtonexaminer.com|weather.com|weddingspot.co.uk|winnipegfreepress.com|wlj.net|wsj.com|wtop.com|wwe.com|zavvi.com|zdnet.com|zillow.com',
+ ],
+ sourceUrl: 'https://www.nytimes.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['/webad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://webad.fivecdm.com',
+ },
+ {
+ filters: ['||freshmarketer.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.freshmarketer.com/222317/774992.js',
+ },
+ {
+ filters: ['/ads/bz_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hw-cdn.contentabc.com/ads/bz_300x250_807417',
+ },
+ {
+ filters: ['/js/adv.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wapv.sogou.com/style_2016/js/adv.min.js',
+ },
+ {
+ filters: ['/dynaTraceMonitor^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.onlinesbi.com/dynaTraceMonitor',
+ },
+ {
+ filters: ['||linkedin.com/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.linkedin.com/analytics/',
+ },
+ {
+ filters: ['||im-apps.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.im-apps.net',
+ },
+ {
+ filters: ['||perimeterx.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://client.perimeterx.net',
+ },
+ {
+ filters: ['||adingo.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-fluct.sh.adingo.jp',
+ },
+ {
+ filters: ['||ssp.hinet.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.ssp.hinet.net',
+ },
+ {
+ filters: ['||fqtag.com^', '||fqtag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.fqtag.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||innity.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://as.innity.com',
+ },
+ {
+ filters: ['||hexagon-analytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hexagon-analytics.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||ipify.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.ipify.org',
+ },
+ {
+ filters: ['/count.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://mb.dkn.tv/counter/count.php?',
+ },
+ {
+ filters: ['||exoclick.com^$third-party', '||exoclick.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://syndication.exoclick.com',
+ },
+ {
+ filters: ['||googletagservices.com/dcm/dcmads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googletagservices.com/dcm/dcmads.js',
+ },
+ {
+ filters: ['/clickm.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://clickm.fang.com/click/new/clickm.js',
+ },
+ {
+ filters: ['||d1z2jf7jlzjs58.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1z2jf7jlzjs58.cloudfront.net',
+ },
+ {
+ filters: ['||s.360.cn^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.360.cn',
+ },
+ {
+ filters: ['||ads.yap.yahoo.com^', '/getads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.yap.yahoo.com/nosdk/wj/v1/getAds.do',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||netseer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.netseer.com',
+ },
+ {
+ filters: ['||ctnsnet.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.ctnsnet.com',
+ },
+ {
+ filters: ['||parsely.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://srv-2018-10-23-13.config.parsely.com',
+ },
+ {
+ filters: ['/horizon-track.'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://horizon-track.globo.com',
+ },
+ {
+ check: true,
+ filters: ['||traffichaus.com^$third-party', '/adserve/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://syndication.traffichaus.com/adserve/',
+ },
+ {
+ filters: ['||admixer.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://inv-nets.admixer.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||d1z2jf7jlzjs58.cloudfront.net/p.js$script,domain=nfl.com'],
+ sourceUrl: 'https://www.nfl.com',
+ type: 'script',
+ url: 'https://d1z2jf7jlzjs58.cloudfront.net/p.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||pixel.parsely.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://srv-2018-10-23-13.pixel.parsely.com',
+ },
+ {
+ check: true,
+ filters: ['||adstatic.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://vip.adstatic.com',
+ },
+ {
+ filters: ['||globo.com/geo?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.globo.com/geo?',
+ },
+ {
+ filters: ['||chartbeat.net^', '||chartbeat.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mabping.chartbeat.net',
+ },
+ {
+ filters: ['||ad-m.asia^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://sync-dsp.ad-m.asia',
+ },
+ {
+ filters: ['||rotumal.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.rotumal.com',
+ },
+ {
+ filters: ['||connextra.com^$third-party', '||connextra.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://zz.connextra.com',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||ypncdn.com/cb/assets/js/$script,domain=youporn.com|youporngay.com|youpornru.com',
+ ],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'script',
+ url: 'https://fs.ypncdn.com/cb/assets/js/',
+ },
+ {
+ check: true,
+ filters: ['@@||ypncdn.com^$image,media,other,domain=youporn.com|youporngay.com|youpornru.com'],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'image',
+ url: 'https://fs.ypncdn.com',
+ },
+ {
+ filters: ['||deliver.ifeng.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://iis1.deliver.ifeng.com',
+ },
+ {
+ check: true,
+ filters: ['.co/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.co/ads/',
+ },
+ {
+ filters: ['/300x600-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/5546726/300x600-Brand2.gif',
+ },
+ {
+ filters: ['||youporn.com^$script,domain=youporn.com'],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'script',
+ url: 'https://ht.youporn.com',
+ },
+ {
+ filters: ['||nytimes.com^*/data-layer?'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://a.nytimes.com/svc/nyt/data-layer?',
+ },
+ {
+ filters: ['||bkrtx.com^$third-party', '/bk-coretag.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.bkrtx.com/js/bk-coretag.js',
+ },
+ {
+ filters: ['/show-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a1.nyt.com/analytics/show-ads.js',
+ },
+ {
+ filters: ['||cnzz.com^$third-party', '||cnzz.com/c.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://w.cnzz.com/c.php?',
+ },
+ {
+ filters: ['||swiftypecdn.com/cc.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.swiftypecdn.com/cc.js',
+ },
+ {
+ filters: ['||cc.swiftype.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cc.swiftype.com',
+ },
+ {
+ filters: ['||baidu.com/h.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://hm.baidu.com/h.js?',
+ },
+ {
+ filters: [
+ '://adv.$domain=~adv.cincsys.com|~adv.co.it|~adv.derfunke.at|~adv.ee|~adv.gg|~adv.michaelgat.com|~adv.msk.ru|~adv.ru|~adv.vg|~adv.works|~advids.co|~erti.se|~escreverdireito.com|~farapp.com|~forex-tv-online.com|~r7.com|~typeform.com|~welaika.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://adv.office-partner.de',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,domain=yts.am', '.com/ntfc.php?$script'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://pushno.com/ntfc.php?',
+ },
+ {
+ check: true,
+ filters: ['@@||ajax.cloudflare.com/cdn-cgi/scripts/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ajax.cloudflare.com/cdn-cgi/scripts/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||oclasrv.com^$third-party',
+ '||oclasrv.com^',
+ '.php?zoneid=',
+ '||go.oclasrv.com/apu.php$script,redirect=noopjs',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.oclasrv.com/apu.php?zoneid=1655784',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||doublepimpssl.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.doublepimpssl.com',
+ },
+ {
+ filters: ['||nextoptim.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.nextoptim.com',
+ },
+ {
+ filters: ['||miaozhen.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://g.cn.miaozhen.com',
+ },
+ {
+ filters: ['||cnzz.com/stat.', '/stat.htm?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://q14.cnzz.com/stat.htm?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||vimeocdn.com/add/player-stats?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://fresnel.vimeocdn.com/add/player-stats?',
+ },
+ {
+ filters: ['||inmobi.com^$third-party', '||inmobi.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cf.cdn.inmobi.com',
+ },
+ {
+ filters: ['||globalwebindex.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://gwiqcdn.globalwebindex.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||mediaforge.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.mediaforge.com',
+ },
+ {
+ filters: ['/track/pix2.asp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www2.smartadserver.com/track/pix2.asp?',
+ },
+ {
+ filters: ['||innovid.com^$third-party', '||innovid.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ag.innovid.com',
+ },
+ {
+ filters: ['||gemius.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://googlecm.hit.gemius.pl',
+ },
+ {
+ filters: ['/afr.php?', '/delivery/afr.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://a.spankbang.com/www/delivery/afr.php?',
+ },
+ {
+ filters: ['/horizon-pageview?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://horizon.globo.com/auth-session/activity/home_2016/horizon-pageview?',
+ },
+ {
+ filters: ['||treasuredata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.treasuredata.com',
+ },
+ {
+ filters: ['||vimeo.com/log/'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://player.vimeo.com/log/',
+ },
+ {
+ filters: ['||scanscout.com^$third-party', '||scanscout.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dt.scanscout.com',
+ },
+ {
+ filters: ['||sociaplus.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bukalapak.api.sociaplus.com',
+ },
+ {
+ filters: ['/gweb/analytics/*', '/autotrack.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/js/gweb/analytics/autotrack.js',
+ },
+ {
+ filters: ['/quantcast/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.ladbible.com/assets/images/quantcast/',
+ },
+ {
+ filters: ['||contentfeed.net^$third-party', '/adv_banner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://banners.contentfeed.net/12515/ADV_Banner_49.jpg',
+ },
+ {
+ filters: ['||6sc.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://j.6sc.co',
+ },
+ {
+ filters: ['/img.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.6sc.co/v1/beacon/img.gif?',
+ },
+ {
+ filters: [
+ '@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=concursovirtual.com.br|forum.kooora.com|lavozdegalicia.es|payback.pl|posta.com.tr|uol.com.br',
+ ],
+ sourceUrl: 'https://www.uol.com.br',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['||tailtarget.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tt-10162-1.seg.t.tailtarget.com',
+ },
+ {
+ filters: ['||shared.65twenty.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://shared.65twenty.com',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ filters: ['||ero-advertising.com^*/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://data.ero-advertising.com/datanew/banners/',
+ },
+ {
+ filters: ['||counter.snackly.co^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://counter.snackly.co',
+ },
+ {
+ filters: ['/gscounters.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gscounters.us1.gigya.com',
+ },
+ {
+ filters: ['/commercial/sponsor/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.theguardian.com/commercial/sponsor/',
+ },
+ {
+ filters: [
+ '/advertiser/*$domain=~affili.net|~affiliprint.com|~bingads.microsoft.com|~linkpizza.com|~mobileapptracking.com|~trialpay.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.contentspread.net/24i/advertiser/',
+ },
+ {
+ filters: ['||stroeerdigitalmedia.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.stroeerdigitalmedia.de',
+ },
+ {
+ filters: ['||stroeerdigitalgroup.de/metatag/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.stroeerdigitalgroup.de/metatag/',
+ },
+ {
+ filters: ['||phar.gu-web.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://phar.gu-web.net',
+ },
+ {
+ filters: ['/werbemittel/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.twin-media.de/banner/zoro/Werbemittel/',
+ },
+ {
+ check: true,
+ filters: [
+ '||webgains.com/link.html$third-party',
+ '||webgains.com^',
+ '||webgains.com^$third-party',
+ '||track.webgains.com^',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.webgains.com/link.html',
+ },
+ {
+ filters: ['.com/x.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://shunfei-cm.cn.miaozhen.com/x.gif?',
+ },
+ {
+ filters: ['||mxcdn.net^$third-party', '/serve/mtrcs_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s400.mxcdn.net/bb-mx/serve/mtrcs_679600.js',
+ },
+ {
+ filters: ['||m6r.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracking.m6r.eu',
+ },
+ {
+ filters: ['||nuggad.net^', '||nuggad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://si.nuggad.net',
+ },
+ {
+ check: true,
+ filters: [
+ '||fullstory.com^$third-party',
+ '||fullstory.com/s/fs.js$script',
+ '||fullstory.com^',
+ '||fullstory.com/s/fs.js$third-party',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fullstory.com/s/fs.js',
+ },
+ {
+ filters: [
+ '@@||evidon.com/geo/*$script,domain=cnet.com|marieclaire.com|techrepublic.com|zdnet.com',
+ ],
+ sourceUrl: 'https://www.cnet.com',
+ type: 'script',
+ url: 'https://c.evidon.com/geo/',
+ },
+ {
+ filters: ['/v60.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure-au.imrworldwide.com/v60.js',
+ },
+ {
+ filters: ['||meetrics.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lb17.s400.meetrics.net',
+ },
+ {
+ filters: ['||dc8xl0ndzn2cb.cloudfront.net^', '||cloudfront.net*/keywee.min.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dc8xl0ndzn2cb.cloudfront.net/js/theladbiblecom/v0/keywee.min.js',
+ },
+ {
+ filters: ['||adscale.de^$third-party', '||adscale.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.adscale.de',
+ },
+ {
+ filters: ['||theadex.com^', '||theadex.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dmp.theadex.com',
+ },
+ {
+ filters: ['||ibillboard.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bbcdn-bbnaut.ibillboard.com',
+ },
+ {
+ filters: ['||emetriq.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.emetriq.de',
+ },
+ {
+ filters: [
+ '||go-mpulse.net^$third-party',
+ '@@||go-mpulse.net/boomerang/$script,domain=cnet.com',
+ ],
+ sourceUrl: 'https://www.cnet.com',
+ type: 'script',
+ url: 'https://c.go-mpulse.net/boomerang/',
+ },
+ {
+ filters: ['/300x250-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/6785415/300x250-FK-herbst.gif',
+ },
+ {
+ check: true,
+ filters: ['||track.adform.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.adform.net',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ filters: ['||marketing.alibaba.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://marketing.alibaba.com',
+ },
+ {
+ check: true,
+ filters: ['||velocecdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://velocecdn.com/script/native_render.js',
+ },
+ {
+ filters: ['_dfp_targeting.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.roiq-vice.ranker.com/client/assets/minified/roiq_dfp_targeting.js',
+ },
+ {
+ check: true,
+ filters: ['||buzzadnetwork.com^$third-party', '/a/display.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://buzzadnetwork.com/a/display.php?',
+ },
+ {
+ filters: ['||cookiex.ngd.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cookiex.ngd.yahoo.com',
+ },
+ {
+ filters: ['||maxymiser.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://service.maxymiser.net',
+ },
+ {
+ filters: ['||rutarget.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://google-sync.rutarget.ru',
+ },
+ {
+ filters: ['/criteo.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cmap.alibaba.com/criteo.gif',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~imagebam.com|~japan-guide.com|~linkedin.com|~mediaplex.com|~sitioswebmexi.com|~online.wsj.com',
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||wikihow.com/x/collect?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.wikihow.com/x/collect?',
+ },
+ {
+ filters: ['||visualdna.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://e.visualdna.com',
+ },
+ {
+ filters: ['/Maxymiser/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a248.e.akamai.net/assets.huluim.com/maxymiser/',
+ },
+ {
+ filters: ['/dynamic_ytrack_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://liveramp.sync.yume.com/tracker/dynamic_ytrack_sync',
+ },
+ {
+ filters: ['||dynad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'font',
+ url: 'https://static.dynad.net',
+ },
+ {
+ check: true,
+ filters: ['@@||thumbs-cdn.redtube.com^$image,domain=redtube.com|redtube.com.br'],
+ sourceUrl: 'https://www.redtube.com',
+ type: 'image',
+ url: 'https://thumbs-cdn.redtube.com',
+ },
+ {
+ check: true,
+ filters: ['@@||redtube.com^*/media/videos/$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://thumbs-cdn.redtube.com/m=e4L18f/media/videos/',
+ },
+ {
+ check: true,
+ filters: ['@@||rdtcdn.com^$image,media,other,domain=redtube.com|redtube.com.br'],
+ sourceUrl: 'https://www.redtube.com',
+ type: 'image',
+ url: 'https://ei-ph.rdtcdn.com',
+ },
+ {
+ filters: ['||doubleverify.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.doubleverify.com',
+ },
+ {
+ filters: ['.io/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://w-it.m-t.io/track?',
+ },
+ {
+ filters: ['.com/p.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://perf.mmstat.com/p.gif?',
+ },
+ {
+ filters: [
+ '||doubleclick.net^*/adj/$~object-subrequest,third-party',
+ '||ad.doubleclick.net^$third-party,script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.doubleclick.net/ddm/adj/',
+ },
+ {
+ filters: ['/mtiFontTrackingCode.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vice-web-statics-cdn.vice.com/fonts/mtiFontTrackingCode.js',
+ },
+ {
+ filters: ['||naver.net/wcslog.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wcs.naver.net/wcslog.js',
+ },
+ {
+ check: true,
+ filters: ['||statcounter.com^$third-party', '||statcounter.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.statcounter.com',
+ },
+ {
+ filters: ['||tracker.bt.uol.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.bt.uol.com.br',
+ },
+ {
+ filters: ['||wcs.naver.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://wcs.naver.com',
+ },
+ {
+ filters: ['/omniture/visitorapi.', '/VisitorAPI.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://p.nfltags.com/omniture/VisitorAPI.js',
+ },
+ {
+ filters: ['/scripts/ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.nflcdn.com/static/site/7.5/scripts/ad.js',
+ },
+ {
+ filters: [],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'other',
+ url: 'https://',
+ },
+ {
+ filters: [
+ '|ws://$other,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|xtube.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'other',
+ url: 'wss://',
+ },
+ {
+ filters: [
+ '|ws://$other,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|xtube.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'other',
+ url: 'ws://',
+ },
+ {
+ filters: [
+ '|ws://$other,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|xtube.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.youporn.com',
+ type: 'websocket',
+ url: 'https://',
+ },
+ {
+ filters: ['/ad.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t1.daumcdn.net/adfit/static/ad.min.js',
+ },
+ {
+ filters: ['/google_analytics_'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://secure.hulu.com/api/4.0/site_config/dev/google_analytics_config',
+ },
+ {
+ filters: ['||daumcdn.net/tiara/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m2.daumcdn.net/tiara/',
+ },
+ {
+ filters: ['||meter-svc.nytimes.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://meter-svc.nytimes.com',
+ },
+ {
+ filters: ['||pswec.com/px/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://n.pswec.com/px/',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ filters: ['?adspot_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nt.compass-fit.jp/lift_widget.js?adspot_id=4274010',
+ },
+ {
+ filters: ['||adxvip.com^$third-party', '/CookieMapping?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.adxvip.com/CookieMapping?',
+ },
+ {
+ filters: ['||flashtalking.com^$third-party', '||flashtalking.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://servedby.flashtalking.com',
+ },
+ {
+ filters: [
+ '||static.parsely.com^$third-party',
+ '@@||static.parsely.com/p.js$script,domain=nfl.com',
+ ],
+ sourceUrl: 'http://www.nfl.com',
+ type: 'script',
+ url: 'http://static.parsely.com/p.js',
+ },
+ {
+ filters: ['||t.pswec.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://t.pswec.com',
+ },
+ {
+ filters: ['/rest/analytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://explore.researchgate.net/rest/analytics/',
+ },
+ {
+ filters: [
+ '||innity.net^$third-party',
+ '/admanager.$~object-subrequest,domain=~admanager.google.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.innity.net/admanager.js',
+ },
+ {
+ filters: ['||logly.co.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://l.logly.co.jp',
+ },
+ {
+ filters: ['||fastapi.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.fastapi.net',
+ },
+ {
+ filters: ['||adsymptotic.com^', '||adsymptotic.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.adsymptotic.com',
+ },
+ {
+ filters: ['||googlesyndication.com/ddm/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ade.googlesyndication.com/ddm/',
+ },
+ {
+ check: true,
+ filters: [
+ '||cdn.taboola.com/libtrc/*/loader.js$script,redirect=noopjs,important,domain=cnet.com',
+ ],
+ sourceUrl: 'https://www.cnet.com',
+ type: 'script',
+ url: 'https://cdn.taboola.com/libtrc/cbsinteractive-cnet/loader.js',
+ },
+ {
+ filters: ['||dw.cbsi.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dw.cbsi.com',
+ },
+ {
+ filters: ['||tru.am^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tru.am',
+ },
+ {
+ filters: ['||tealiumiq.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://collect.tealiumiq.com',
+ },
+ {
+ filters: ['||segment.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.segment.io',
+ },
+ {
+ filters: ['.com/ad.$domain=~ad-tuning.de'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web-scripts.vice.com/ad.vice.com',
+ },
+ {
+ filters: ['||analytics.mlstatic.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.mlstatic.com',
+ },
+ {
+ filters: ['@@||dw.cbsi.com/anonc.js$domain=cnet.com|gamespot.com|giantbomb.com'],
+ sourceUrl: 'https://www.cnet.com',
+ type: 'script',
+ url: 'https://dw.cbsi.com/anonc.js',
+ },
+ {
+ filters: ['||trowel.twitch.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trowel.twitch.tv',
+ },
+ {
+ filters: ['||tubemogul.com^$third-party', '||tubemogul.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://psi.tubemogul.com',
+ },
+ {
+ filters: ['/asyncjs.$domain=~asyncjs.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://revive.outin.cn/www/gtr/asyncjs.php',
+ },
+ {
+ filters: ['||sinajs.cn/open/analytics/', '/analytics/js/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tjs.sjs.sinajs.cn/open/analytics/js/',
+ },
+ {
+ filters: ['/prebid?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb.openx.net/sync/prebid?',
+ },
+ {
+ filters: ['/clear/c.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dw.cbsi.com/clear/c.gif?',
+ },
+ {
+ filters: ['||perfectmarket.com^$third-party', '||widget.perfectmarket.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.perfectmarket.com',
+ },
+ {
+ filters: ['/load.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dejavu.mercadolibre.com/load.gif?',
+ },
+ {
+ filters: ['||mercadoclics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dejavu.mercadoclics.com',
+ },
+ {
+ filters: ['||dejavu.mlapps.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dejavu.mlapps.com',
+ },
+ {
+ filters: ['||dejavu.mercadolivre.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dejavu.mercadolivre.com.br',
+ },
+ {
+ filters: ['||track.tiara.daum.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.tiara.daum.net',
+ },
+ {
+ filters: ['/display.ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://display.ad.daum.net',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/adscale.$domain=~adscale.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://adscale.nuggad.net',
+ },
+ {
+ filters: ['/Nuggad?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ih.adscale.de/adscale-ih/nuggad?',
+ },
+ {
+ filters: ['||rs.sinajs.cn^', '.cn/b.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://rs.sinajs.cn/b.gif?',
+ },
+ {
+ filters: ['||lndata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.lndata.com',
+ },
+ {
+ filters: ['||dna.uol.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dna.uol.com.br',
+ },
+ {
+ filters: ['/vglnk.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.viglink.com/api/vglnk.js',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ filters: ['/adrequisitor-', '/logclick.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adrequisitor-af.lp.uol.com.br/logClick.js',
+ },
+ {
+ filters: ['||client-event-reporter.twitch.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://client-event-reporter.twitch.tv',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['@@||alicdn.com/retcode/log/log.js$script,domain=alibaba.com'],
+ sourceUrl: 'https://m.alibaba.com',
+ type: 'script',
+ url: 'https://g.alicdn.com/retcode/log/log.js',
+ },
+ {
+ check: true,
+ filters: ['||partner.googleadservices.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://partner.googleadservices.com',
+ },
+ {
+ filters: ['||viglink.com/images/pixel.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.viglink.com/images/pixel.gif',
+ },
+ {
+ filters: ['/akam/10/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ikea.com/akam/10/',
+ },
+ {
+ filters: ['/compiled/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.genius.com/javascripts/compiled/ads-8e526b9fc894f094e1dc.js',
+ },
+ {
+ filters: ['||akstat.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://22f6a935.akstat.io',
+ },
+ {
+ filters: ['||yieldmanager.com^$third-party', '||yieldmanager.com^', '/pixel?id='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.yieldmanager.com/pixel?id=2261190&t=2',
+ },
+ {
+ filters: ['||fastclick.net^$third-party', '||fastclick.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure.fastclick.net',
+ },
+ {
+ check: true,
+ filters: ['||taboola.com/tb?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://15.taboola.com/tb?',
+ },
+ {
+ filters: ['||viglink.com/api/ping$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.viglink.com/api/ping',
+ },
+ {
+ filters: ['||2mdn.net^$third-party,stylesheet'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://s0.2mdn.net',
+ },
+ {
+ filters: ['/akam/*/pixel_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.ikea.com/akam/10/pixel_6ca16ab6',
+ },
+ {
+ filters: ['||entitlements.jwplayer.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://entitlements.jwplayer.com',
+ },
+ {
+ filters: ['/analytics.ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.ad.daum.net',
+ },
+ {
+ filters: ['/ad/load.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.kixer.com/ad/load.js',
+ },
+ {
+ filters: ['||geoservice.curse.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geoservice.curse.com',
+ },
+ {
+ filters: ['||brand-display.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tr.brand-display.com',
+ },
+ {
+ filters: ['||gtags.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://cms.gtags.net',
+ },
+ {
+ filters: ['@@||google-analytics.com/analytics.js$script,domain=developers.google.com'],
+ sourceUrl: 'https://developers.google.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||ssp.rambler.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssp.rambler.ru',
+ },
+ {
+ filters: ['||livejournal.com/ljcounter/?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://xc3.services.livejournal.com/ljcounter/?',
+ },
+ {
+ filters: ['||d1xfq2052q7thw.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1xfq2052q7thw.cloudfront.net',
+ },
+ {
+ filters: ['/asyncspc.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://revive.outin.cn/www/gtr/asyncspc.php',
+ },
+ {
+ filters: ['/adplayer/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t1.daumcdn.net/biz/ui/adplayer/',
+ },
+ {
+ check: true,
+ filters: ['@@||yts.am/assets/minified/modded1.js$script,first-party'],
+ sourceUrl: 'https://yts.am',
+ type: 'script',
+ url: 'https://yts.am/assets/minified/modded1.js',
+ },
+ {
+ filters: ['||ads.adfox.ru^', '||adfox.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.adfox.ru',
+ },
+ {
+ filters: ['||d2na2p72vtqyok.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2na2p72vtqyok.cloudfront.net',
+ },
+ {
+ filters: ['-contrib-ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-ads/',
+ },
+ {
+ filters: ['/cross_pixels.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dejavu.mercadolivre.com.br/cross_pixels.js',
+ },
+ {
+ filters: ['||insticator.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geoip.insticator.com',
+ },
+ {
+ filters: ['||awaps.yandex.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://awaps.yandex.ru',
+ },
+ {
+ filters: ['/adfox/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://an.yandex.ru/mapuid/adfox/',
+ },
+ {
+ filters: ['||px.dynamicyield.com^', '||px.dynamicyield.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://px.dynamicyield.com',
+ },
+ {
+ filters: ['||rambler.ru/cnt/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kraken.rambler.ru/cnt/',
+ },
+ {
+ filters: ['||serving-sys.com/BurstingPipe/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bs.serving-sys.com/BurstingPipe/',
+ },
+ {
+ filters: ['/ad-server.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad-server.eu',
+ },
+ {
+ filters: ['||adform.net/banners/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s1.adform.net/Banners/',
+ },
+ {
+ filters: ['/librato-collector.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://librato-collector.genius.com',
+ },
+ {
+ filters: ['||rxthdr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pa.rxthdr.com',
+ },
+ {
+ filters: ['||directadvert.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://code.directadvert.ru',
+ },
+ {
+ filters: ['.com/doubleclick/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dclk-match.dotomi.com/doubleclick/',
+ },
+ {
+ check: true,
+ filters: ['/adserver.$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://bs.serving-sys.com/BurstingPipe/adServer.bs',
+ },
+ {
+ filters: ['||dailymail.co.uk/rta2/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.dailymail.co.uk/rta2/',
+ },
+ {
+ filters: ['@@||dailymail.co.uk/abe/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dailymail.co.uk/abe/',
+ },
+ {
+ filters: ['||serving-sys.com/BurstingRes/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure-ds.serving-sys.com/BurstingRes/',
+ },
+ {
+ filters: ['||summerhamster.com^$third-party', '/bcn?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.summerhamster.com/bcn?',
+ },
+ {
+ filters: ['||ted.dailymail.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ted.dailymail.co.uk',
+ },
+ {
+ filters: ['||t.dailymail.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://t.dailymail.co.uk',
+ },
+ {
+ check: true,
+ filters: ['/google-analytics.$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://google-analytics.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||stargame.com/g.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://gg.stargame.com/g.js',
+ },
+ {
+ filters: ['||cloudfront.net*/sp.js|'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1fc8wv8zag5ca.cloudfront.net/2.9.0/sp.js',
+ },
+ {
+ filters: ['||scarabresearch.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://recommender.scarabresearch.com',
+ },
+ {
+ filters: ['||geoip-lookup.vice.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geoip-lookup.vice.com',
+ },
+ {
+ filters: ['||zdbb.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.static.zdbb.net',
+ },
+ {
+ filters: ['||convertexperiments.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-3.convertexperiments.com',
+ },
+ {
+ filters: ['||ynuf.alibaba.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ynuf.alibaba.com',
+ },
+ {
+ filters: ['||rnet.plus^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.rnet.plus',
+ },
+ {
+ filters: ['.snowplowanalytics.$domain=~snowplowanalytics.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://clickstream2.digikala.com/com.snowplowanalytics.snowplow',
+ },
+ {
+ filters: ['||duckduckgo.com/t/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://improving.duckduckgo.com/t/',
+ },
+ {
+ filters: ['/rpc/preccount?'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://de.indeed.com/m/rpc/preccount?',
+ },
+ {
+ filters: ['||sokrati.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.chuknu.sokrati.com/22623/tracker.js',
+ },
+ {
+ filters: ['||forkcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://impulse.forkcdn.com',
+ },
+ {
+ filters: ['-300x250_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/8229649/1-300x250_3sapatilhas99_kvverao.jpg',
+ },
+ {
+ filters: ['||tracking.sokrati.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://tracking.sokrati.com',
+ },
+ {
+ filters: ['||adro.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.adro.co',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||variti.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bael5.variti.net',
+ },
+ {
+ filters: ['/300x250_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/8229649/300x250_3-sapat_nis-99_kv_gnenerico.jpg',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||sync.rambler.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sync.rambler.ru',
+ },
+ {
+ filters: ['/adchoice_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.yimg.com/lq/lib/can_interstitial/icons/adchoice_1.4.png',
+ },
+ {
+ filters: ['||beacon.walmart.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://beacon.walmart.com',
+ },
+ {
+ filters: ['/rpc/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gdc.indeed.com/rpc/log?',
+ },
+ {
+ filters: ['@@||ensighten.com^*/scode/$script,domain=norton.com'],
+ sourceUrl: 'https://safeweb.norton.com',
+ type: 'script',
+ url: 'https://nexus.ensighten.com/symantec/scode/',
+ },
+ {
+ filters: ['||b2c.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://api.b2c.com',
+ },
+ {
+ filters: ['/ajs.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://newrevive.detik.com/delivery/ajs.php?',
+ },
+ {
+ filters: ['||t4ft.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.t4ft.de',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=1337x.to'],
+ sourceUrl: 'https://www.1337x.to',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||djv99sxoqpv11.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://djv99sxoqpv11.cloudfront.net',
+ },
+ {
+ filters: ['@@||ensighten.com^*/serverComponent.php?$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nexus.ensighten.com/symantec/cp1/serverComponent.php?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||adx.com.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adx.com.ru',
+ },
+ {
+ filters: ['||bid.run^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://spb.bid.run',
+ },
+ {
+ filters: ['||datamind.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.datamind.ru',
+ },
+ {
+ filters: ['||bumlam.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.bumlam.com',
+ },
+ {
+ filters: ['||audtd.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.audtd.com',
+ },
+ {
+ filters: ['.adriver.$~object-subrequest', '||adriver.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssp.adriver.ru',
+ },
+ {
+ filters: ['||stats.seedr.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.seedr.com',
+ },
+ {
+ filters: ['||adsniper.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync3.adsniper.ru',
+ },
+ {
+ filters: ['||republer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.republer.com',
+ },
+ {
+ filters: ['/show_ad?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve2.adzouk1tag.com/show_ad?',
+ },
+ {
+ filters: ['/rum.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://beacon.walmart.com/rum.gif?',
+ },
+ {
+ filters: ['||native.ai^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.native.ai',
+ },
+ {
+ filters: ['||engageya.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.engageya.com',
+ },
+ {
+ filters: ['/px?t='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure.adnxs.com/px?t=2&id=847154&seg=7690177',
+ },
+ {
+ filters: ['||disqusads.com^$third-party', '||disqusads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://disqusads.com',
+ },
+ {
+ filters: ['||referrer.disqus.com^', '/event.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://referrer.disqus.com/juggler/event.gif?',
+ },
+ {
+ filters: ['||audsp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.audsp.com',
+ },
+ {
+ filters: ['||beap-bc.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://beap-bc.yahoo.com',
+ },
+ {
+ filters: ['||quantserve.com/api/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.quantserve.com/api/',
+ },
+ {
+ filters: ['/adunit.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://services.brid.tv/player/build/plugins/adunit.js',
+ },
+ {
+ filters: ['||deployads.com^$third-party', '||deployads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags-cdn.deployads.com',
+ },
+ {
+ filters: ['||avocet.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.avocet.io',
+ },
+ {
+ check: true,
+ filters: ['||insightexpressai.com^$third-party', '||insightexpressai.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure.insightexpressai.com',
+ },
+ {
+ filters: ['||aidata.io^$third-party', '.io/0.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://x01.aidata.io/0.gif?',
+ },
+ {
+ filters: ['||genieessp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.genieessp.com',
+ },
+ {
+ filters: ['.ng/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.com.ng/ads/',
+ },
+ {
+ filters: ['/tracking-jquery-shim.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.comcast.com/learn/public/js/dtm/tracking-jquery-shim.min.js',
+ },
+ {
+ filters: ['||bannerflow.com^$third-party', '||bannerflow.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.bannerflow.com',
+ },
+ {
+ filters: ['||boudja.com^$third-party', '||boudja.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://boudja.com',
+ },
+ {
+ filters: ['||xfinity.com/event/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dl.cws.xfinity.com/event/',
+ },
+ {
+ filters: ['/v1/pixel?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://552bb0d73c307b0d68d1e3fb.tracker.bannerflow.com/api/tr/v1/pixel?',
+ },
+ {
+ filters: ['/ping.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.brid.tv/ping.gif?',
+ },
+ {
+ filters: [
+ '|http://$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americanewshub.com|americansublime.com|americasfreedomfighters.com|askmefast.com|auntyacid.com|barbwire.com|beforeitsnews.com|bestfunnyjokes4u.com|bighealthreport.com|bigleaguepolitics.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breakingnews.ie|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|cheapism.com|cheatsheet.com|chicksonright.com|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativetribune.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|faithit.com|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|freewarefiles.com|funnyand.com|gamerant.com|gamersheroes.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|grammarist.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|headcramp.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|knowledgedish.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|lifebuzz.com|madworldnews.com|makeagif.com|medicine.news|mentalflare.com|minutemennews.com|moneyversed.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|parentherald.com|patriotnewswire.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|readysethealth.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|reviveusa.com|rightwingnews.com|rightwingtribune.com|robotics.news|rollingout.com|rpnewswire.com|sarahpalin.com|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|survivalnation.com|techconsumer.com|technobuffalo.com|techtimes.com|terezowens.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|thelibertydaily.com|themattwalshblog.com|thepoke.co.uk|thepolitistick.com|therealside.com|therightscoop.com|theviralmob.com|tinypic.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|vgpie.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ '||rtk.io^$third-party',
+ '.js?dfp=',
+ ],
+ sourceUrl: 'http://www.dailyfeed.co.uk',
+ type: 'script',
+ url: 'http://thor.rtk.io/QcEX/qw1q_ZIkz_qQCt/jita.js?dfp=1',
+ },
+ {
+ filters: [
+ '|https://$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americanewshub.com|americansublime.com|americasfreedomfighters.com|askmefast.com|auntyacid.com|barbwire.com|beforeitsnews.com|bestfunnyjokes4u.com|bighealthreport.com|bigleaguepolitics.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breakingnews.ie|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|cheapism.com|cheatsheet.com|chicksonright.com|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativetribune.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|faithit.com|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|freewarefiles.com|funnyand.com|gamerant.com|gamersheroes.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|grammarist.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|headcramp.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|knowledgedish.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|lifebuzz.com|madworldnews.com|makeagif.com|medicine.news|mentalflare.com|minutemennews.com|moneyversed.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|parentherald.com|patriotnewswire.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|readysethealth.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|reviveusa.com|rightwingnews.com|rightwingtribune.com|robotics.news|rollingout.com|rpnewswire.com|sarahpalin.com|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|survivalnation.com|techconsumer.com|technobuffalo.com|techtimes.com|terezowens.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|thelibertydaily.com|themattwalshblog.com|thepoke.co.uk|thepolitistick.com|therealside.com|therightscoop.com|theviralmob.com|tinypic.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|vgpie.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'http://www.dailyfeed.co.uk',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['/piwik.$image,script,domain=~matomo.org|~piwik.org'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://outbraintrack.optimove.net/piwik.js',
+ },
+ {
+ filters: ['||cloudfront.net*/tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2zah9y47r7bi2.cloudfront.net/releases/current/tracker.js',
+ },
+ {
+ filters: ['||quora.com/qevents.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.quora.com/qevents.js',
+ },
+ {
+ filters: ['||h-bid.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.h-bid.com/w3schools.com/20180525/snhb-w3schools.min.js',
+ },
+ {
+ check: true,
+ filters: ['||kissmetrics.com^$third-party', '||kissmetrics.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.kissmetrics.com',
+ },
+ {
+ check: true,
+ filters: ['/scripts.kissmetrics.com/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.kissmetrics.com/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: [
+ '@@||connect.facebook.net^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|gamerant.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|grammarist.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|headcramp.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|knowledgedish.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'http://www.dailyfeed.co.uk',
+ type: 'script',
+ url: 'https://connect.facebook.net',
+ },
+ {
+ filters: ['||quora.com/_/ad/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://q.quora.com/_/ad/',
+ },
+ {
+ filters: ['||lucklayed.info^$third-party', '||lucklayed.info^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lucklayed.info',
+ },
+ {
+ filters: ['||croissed.info^$third-party', '||croissed.info^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://croissed.info',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: [
+ '@@||s0.2mdn.net/instream/*$domain=cnet.com|nfl.com|wistv.com',
+ '@@||2mdn.net/instream/html5/ima3.js$domain=~superfilm.pl',
+ ],
+ sourceUrl: 'https://www.nfl.com',
+ type: 'script',
+ url: 'https://s0.2mdn.net/instream/html5/ima3.js',
+ },
+ {
+ filters: ['/300x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://d.kapanlaginetwork.com/banner/custom/backfill-kln/300x250.php',
+ },
+ {
+ check: true,
+ filters: ['||irqs.ioam.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://irqs.ioam.de',
+ },
+ {
+ filters: ['||doubleclick.net/json?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fls.doubleclick.net/json?',
+ },
+ {
+ filters: ['||primevideo.com/uedata/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.primevideo.com/uedata/',
+ },
+ {
+ filters: ['||spongecell.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.spongecell.com',
+ },
+ {
+ filters: ['/comscore/streamsense.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.cdn.turner.com/analytics/comscore/streamsense.5.2.0.160629.min.js',
+ },
+ {
+ filters: ['||logger.uol.com.br^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://logger.uol.com.br',
+ },
+ {
+ filters: ['||amazon.*/ajax/counter?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.amazon.it/ah/ajax/counter?',
+ },
+ {
+ filters: ['/static/ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://t1.daumcdn.net/adfit/static/ad-native.min.js',
+ },
+ {
+ filters: ['||iperceptions.com^', '||iperceptions.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://universal.iperceptions.com',
+ },
+ {
+ filters: ['||impactradius-event.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.impactradius-event.com',
+ },
+ {
+ check: true,
+ filters: [
+ '||sumo.com^$third-party,domain=~dante-ri.hr',
+ '||sumo.com^$third-party',
+ '||sumo.com^',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://load.sumo.com',
+ },
+ {
+ filters: ['/imp.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel2.adzouk1tag.com/tracker/imp.gif?',
+ },
+ {
+ filters: ['||trackjs.com/usage.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://usage.trackjs.com/usage.gif?',
+ },
+ {
+ filters: ['@@||youtube.com/player_api$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.youtube.com/player_api',
+ },
+ {
+ filters: ['||trendemon.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://prod.trendemon.com',
+ },
+ {
+ filters: ['||distillery.wistia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://distillery.wistia.com',
+ },
+ {
+ filters: ['||choices.truste.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://choices.truste.com',
+ },
+ {
+ filters: ['/sync.gif?partner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.viglink.com/api/sync.gif?partner_id=lot',
+ },
+ {
+ filters: ['/AdobeAnalyticsSDK.', '@@||vice.com/*/AdobeAnalyticsSDK$script,first-party'],
+ sourceUrl: 'https://video.vice.com',
+ type: 'script',
+ url: 'https://web-scripts.vice.com/v1.0.4/AdobeAnalyticsSDK.min.js',
+ },
+ {
+ filters: ['@@||z.cdn.turner.com/analytics/cnnexpan/jsmd.min.js$script,domain=cnn.com'],
+ sourceUrl: 'https://edition.cnn.com',
+ type: 'script',
+ url: 'https://z.cdn.turner.com/analytics/cnnexpan/jsmd.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['.com/track?$~object', '||aniview.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://track.aniview.com/track?',
+ },
+ {
+ filters: ['/adbet-'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://rutrk.org/iframe/adbet-top-2.html',
+ },
+ {
+ filters: ['||openstat.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://openstat.net',
+ },
+ {
+ filters: ['||viglink.com/api/optimize^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.viglink.com/api/optimize',
+ },
+ {
+ check: true,
+ filters: ['||primevideo.com^*/ref='],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://www.primevideo.com/auth-redirect/ref=atv_nb_sign_in',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||adbetnet.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://xml.adbetnet.com',
+ },
+ {
+ filters: ['||adspirit.de^$third-party', '||adspirit.de^', '/adscript.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://accado.adspirit.de/adscript.php',
+ },
+ {
+ filters: ['||mgid.com^$third-party,domain=~marketgid.com|~marketgid.com.ua', '||mgid.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsc.mgid.com',
+ },
+ {
+ filters: ['/stat?event=', '?event=pixel.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://medium.com/_/stat?event=pixel.load&origin=https%3A%2F%2Fmedium.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/pstats.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://a.rfihub.com/pstats.html',
+ },
+ {
+ filters: ['||marketgid.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://jsc.marketgid.com',
+ },
+ {
+ filters: ['||vogo-vogo.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://vogo-vogo.ru',
+ },
+ {
+ filters: ['/reklama/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://sportvia.ru/reklama/',
+ },
+ {
+ filters: ['||sape.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn-rtb.sape.ru',
+ },
+ {
+ filters: ['||uuidksinc.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://uuidksinc.net',
+ },
+ {
+ filters: ['||advcash.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wallet.advcash.com',
+ },
+ {
+ filters: ['://affiliate.$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://affiliate.olymptrade.com',
+ },
+ {
+ filters: ['.com/adv?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ssp.playbuzz.com/adv?',
+ },
+ {
+ filters: ['/pubads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://pubads.g.doubleclick.net',
+ },
+ {
+ filters: ['||nexage.com^$third-party', '||nexage.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ads.nexage.com',
+ },
+ {
+ filters: [
+ '@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=dibujos.net|ensonhaber.com|f5haber.com|marieclaire.fr|r7.com|radio-canada.ca|tv2.no|uol.com.br',
+ ],
+ sourceUrl: 'https://tvefamosos.uol.com.br',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['||adsnative.com^$third-party', '||adsnative.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.adsnative.com',
+ },
+ {
+ filters: ['||promo-bc.com^$third-party', '/hit.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://promo-bc.com/hit.php?',
+ },
+ {
+ filters: ['||acint.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.acint.net',
+ },
+ {
+ filters: ['||collector-medium.lightstep.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://collector-medium.lightstep.com',
+ },
+ {
+ filters: ['||media6degrees.com^$third-party', '||media6degrees.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://idpix.media6degrees.com',
+ },
+ {
+ filters: ['||appsflyer.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://app.appsflyer.com',
+ },
+ {
+ filters: ['||digitaltarget.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://tag.digitaltarget.ru',
+ },
+ {
+ filters: ['||morgdm.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sync.morgdm.ru',
+ },
+ {
+ filters: ['||trafmag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://t.trafmag.com',
+ },
+ {
+ filters: ['||utarget.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://utarget.ru',
+ },
+ {
+ filters: ['||recreativ.ru^$third-party', '||track.recreativ.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://track.recreativ.ru',
+ },
+ {
+ filters: ['||exe.bid^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://sync-eu.exe.bid',
+ },
+ {
+ filters: ['||targeterra.info^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.targeterra.info',
+ },
+ {
+ filters: ['||octomarket.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://octomarket.com',
+ },
+ {
+ filters: ['||inq.com/tagserver/logging/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://comcast.inq.com/tagserver/logging/',
+ },
+ {
+ filters: ['||adfox.yandex.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://matchid.adfox.yandex.ru',
+ },
+ {
+ filters: ['||archive.org^*/analytics.js', '/includes/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://archive.org/includes/analytics.js',
+ },
+ {
+ filters: ['||betweendigital.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ads.betweendigital.com',
+ },
+ {
+ filters: ['||vertamedia.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sync.vertamedia.com',
+ },
+ {
+ filters: ['.adlabs.$domain=~adlabs.ru'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://stat.adlabs.ru',
+ },
+ {
+ filters: ['||lkqd.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ssp.lkqd.net',
+ },
+ {
+ filters: ['||k.streamrail.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://k.streamrail.com',
+ },
+ {
+ filters: ['||marketgid.com/c?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://c.marketgid.com/c?',
+ },
+ {
+ filters: ['/showads^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ad.setn.com/Ads/ShowAds',
+ },
+ {
+ filters: ['||onetag-sys.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://onetag-sys.com',
+ },
+ {
+ filters: ['||adgrx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.adgrx.com',
+ },
+ {
+ filters: ['||cnt.my^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://x.cnt.my',
+ },
+ {
+ filters: [
+ '@@||graph.facebook.com^$image,script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|patriotoutdoornews.com|patriottribune.com|photobucket.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|truththeory.com|twisted.news|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'http://www.dailyfeed.co.uk',
+ type: 'script',
+ url: 'https://graph.facebook.com',
+ },
+ {
+ filters: ['/adsimages/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://attach.setn.com/adsimages/',
+ },
+ {
+ filters: ['/googima.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.p.jwpcdn.com/player/plugins/googima/v/8.4.2/googima.js',
+ },
+ {
+ filters: ['||yieldlab.net^$third-party', '||yieldlab.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.yieldlab.net',
+ },
+ {
+ filters: ['||analytics.archive.org^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.archive.org',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['_ad_close.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://attach.setn.com/website/m/images/icon/float_ad_close.png',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||justpremium.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ox-d.justpremium.com',
+ },
+ {
+ filters: ['/ad-template.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.adsnative.com/v1/ad-template.json',
+ },
+ {
+ filters: ['||godaddy.com/image.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.godaddy.com/image.aspx?',
+ },
+ {
+ filters: ['||ngastatic.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ngastatic.com/s4c/tracker.js',
+ },
+ {
+ filters: ['||jsrdn.com/s/1.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.jsrdn.com/s/1.js',
+ },
+ {
+ filters: ['||adlightning.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tagan.adlightning.com',
+ },
+ {
+ filters: ['/divolte.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://web-analytics0.com/divolte.js',
+ },
+ {
+ filters: ['||scounter.rambler.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://scounter.rambler.ru',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/320x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdnstatic.detik.com/live/html5/dpr-ri/april2018/18/320x250.jpg',
+ },
+ {
+ filters: ['||ngacm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ngacm.com',
+ },
+ {
+ filters: ['||godaddy.com/pageevents.aspx'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.godaddy.com/pageEvents.aspx',
+ },
+ {
+ filters: ['||seg.sharethis.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://seg.sharethis.com',
+ },
+ {
+ filters: ['/script/analytics/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://script1.s.kakaku.k-img.com/script/analytics/',
+ },
+ {
+ filters: ['||metric.gstatic.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://p4-faaav4qvtwweo-3egofrhggfakx52c-if-v6exp3-v4.metric.gstatic.com',
+ },
+ {
+ filters: ['/csc-event?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://web-analytics0.com/csc-event?',
+ },
+ {
+ filters: ['/pixel.png?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.marathonbet.com/pixel.png?',
+ },
+ {
+ check: true,
+ filters: [
+ '||npttech.com/advertising.js$important,script,redirect=fuckadblock.js-3.2.0',
+ '@@||npttech.com/advertising.js$script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.npttech.com/advertising.js',
+ },
+ {
+ filters: [
+ '/google-analytics-',
+ '@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.yelpblog.com',
+ type: 'script',
+ url: 'https://www.yelpblog.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['_resource/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://corporate.walmart.com/_resource/analytics.js',
+ },
+ {
+ filters: ['||vm5apis.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vawpro.vm5apis.com',
+ },
+ {
+ filters: ['/onead_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.setn.com/m/js/onead_mir.js',
+ },
+ {
+ filters: ['||linksynergy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ct1.ra.linksynergy.com',
+ },
+ {
+ filters: ['||dc-storm.com^', '||dc-storm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://nyt2.dc-storm.com',
+ },
+ {
+ filters: ['||dable.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.dable.io',
+ },
+ {
+ check: true,
+ filters: ['||owneriq.net^', '||px.owneriq.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://px.owneriq.net',
+ },
+ {
+ filters: ['||deepintent.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://euwest-match.deepintent.com',
+ },
+ {
+ filters: ['/directadvert-'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://rutrk.org/iframe/directadvert-240x120-1.html',
+ },
+ {
+ filters: ['/ads8.', '||kompasads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads8.kompasads.com',
+ },
+ {
+ filters: ['||googleapis.com/ivc.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gadasource.storage.googleapis.com/ivc.js',
+ },
+ {
+ filters: ['/CookiePingback?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.tripadvisor.com/CookiePingback?',
+ },
+ {
+ filters: ['||tamgrt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.tamgrt.com',
+ },
+ {
+ filters: ['||bigmining.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.bigmining.com',
+ },
+ {
+ filters: ['/ad-specs.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad-specs.guoshipartners.com',
+ },
+ {
+ check: true,
+ filters: ['/googleanalytics.js'],
+ sourceUrl: 'https://www.setn.com',
+ type: 'script',
+ url: 'https://www.setn.com/js/ga/googleanalytics.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/xgemius.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.allegrostatic.com/display-pl/lib/gem/xgemius.js',
+ },
+ {
+ filters: ['/textad?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ad.setn.com/Ads/TextAD?',
+ },
+ {
+ filters: ['&adslot='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.tacdn.com/img2/x.gif?&ads=1&adsize=2&adslot=3&rnd=93067',
+ },
+ {
+ filters: ['||digitru.st^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.digitru.st',
+ },
+ {
+ check: true,
+ filters: ['||doubleclick.net/activity$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pubads.g.doubleclick.net/activity;dc_iu=',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/set_tracking.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.dmm.com/js/common/set_tracking.js',
+ },
+ {
+ filters: ['||twiago.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.twiago.com',
+ },
+ {
+ filters: ['/ad1.$domain=~ad1.de|~ad1.in|~vereinslinie.de'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad1.adfarm1.adition.com',
+ },
+ {
+ filters: ['/advertisement/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://attach.setddg.com/advertisement/',
+ },
+ {
+ filters: ['/taevents-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.tacdn.com/js3/taevents-c-v22228732872b.js',
+ },
+ {
+ filters: ['||connexity.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pxl.connexity.net',
+ },
+ {
+ filters: ['||extend.tv^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://sync.extend.tv',
+ },
+ {
+ check: true,
+ filters: ['.ace.advertising.', '||ace.advertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ox.pxl.ace.advertising.com',
+ },
+ {
+ filters: ['/advertisement.$domain=~advertisement.solutions.zalando.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static2.farakav.com/varzesh3/assets/js/advertisement.js',
+ },
+ {
+ filters: ['/vice-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vice-ads.s3.amazonaws.com',
+ },
+ {
+ filters: ['/s.gif?l='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://api.share.baidu.com/s.gif?l=http://m.youth.cn/',
+ },
+ {
+ filters: ['||baidu.com^*/s.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif?',
+ },
+ {
+ filters: ['||ad-stir.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://js.ad-stir.com',
+ },
+ {
+ filters: ['||counter2.blog.livedoor.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://counter2.blog.livedoor.com',
+ },
+ {
+ filters: ['||histats.com^', '||histats.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s10.histats.com',
+ },
+ {
+ filters: ['.cc/s.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rlog.popin.cc/s.gif?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||crptentry.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.crptentry.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['-sticky-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ampproject.org/v0/amp-sticky-ad-1.0.js',
+ },
+ {
+ filters: ['/amp-geo-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ampproject.org/v0/amp-geo-0.1.js',
+ },
+ {
+ filters: ['||scroll.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.scroll.com',
+ },
+ {
+ filters: ['||2mdn.net^$third-party,font'],
+ sourceUrl: 'https://foo.com',
+ type: 'font',
+ url: 'https://s0.2mdn.net',
+ },
+ {
+ filters: ['||nend.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js1.nend.net',
+ },
+ {
+ filters: ['/ad2.$domain=~vereinslinie.de'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad2.nend.net',
+ },
+ {
+ filters: ['||web-t.9gag.com^', '/piwik.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://web-t.9gag.com/piwik.php',
+ },
+ {
+ filters: ['/comscore.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://weather.com/weather/assets/comscore.0775758c3c488c7318c16e658da58eb4.js',
+ },
+ {
+ filters: ['||abeagle-public.buzzfeed.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://abeagle-public.buzzfeed.com',
+ },
+ {
+ filters: ['||siteimprove.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://us2.siteimprove.com',
+ },
+ {
+ filters: ['||acq.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.acq.io',
+ },
+ {
+ filters: ['||pixiedust.buzzfeed.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixiedust.buzzfeed.com',
+ },
+ {
+ filters: ['||ads.programattik.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ads.programattik.com',
+ },
+ {
+ filters: ['||amoad.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://j.amoad.com',
+ },
+ {
+ filters: ['||livedoor.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://blogroll.livedoor.net',
+ },
+ {
+ filters: ['/blank.gif?*&'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://blogroll.livedoor.net/img/blank.gif?channel_id=21017&_=1540302784647',
+ },
+ {
+ filters: ['||infolinks.com^$third-party', '||infolinks.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://resources.infolinks.com',
+ },
+ {
+ filters: [
+ '||cdn.segment.com^',
+ '||segment.com^$third-party',
+ '/analytics.js/v1/*',
+ '/analytics.min.',
+ '@@||segment.com/analytics.js/*/analytics.min.js$script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.segment.com/analytics.js/v1/MQh0Jm5dRE/analytics.min.js',
+ },
+ {
+ filters: ['/tracker.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tamasha.com/dist/t1538785732308/js/tracker.min.js',
+ },
+ {
+ filters: ['/js/ads_', '/ads_tracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tamasha.com/dist/t1538785732308/js/ads_tracker.min.js',
+ },
+ {
+ filters: ['||app.pendo.io^', '||app.pendo.io/data/ptm.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://app.pendo.io/data/ptm.gif',
+ },
+ {
+ filters: [
+ '||hlserve.com^$third-party',
+ '/beacon?',
+ '@@||hlserve.com/beacon?$domain=walmart.com',
+ ],
+ sourceUrl: 'https://www.walmart.com',
+ type: 'image',
+ url: 'https://b.hlserve.com/beacon?',
+ },
+ {
+ filters: ['/amplitude-*.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.amplitude.com/libs/amplitude-4.4.0-min.gz.js',
+ },
+ {
+ filters: ['||appboycdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.appboycdn.com',
+ },
+ {
+ filters: ['||pixiv.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.pixiv.org',
+ },
+ {
+ filters: ['/elqcfg.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.en25.com/i/elqCfg.min.js',
+ },
+ {
+ filters: ['||eloqua.com^$~stylesheet,third-party', '||eloqua.com^$third-party,image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s2376.t.eloqua.com',
+ },
+ {
+ filters: ['/ad/jsonp/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d.amoad.com/ad/jsonp/',
+ },
+ {
+ filters: ['||bf-ad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.bf-ad.net',
+ },
+ {
+ filters: ['/adengine.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.bf-ad.net/pubjs/weather/adengine.js',
+ },
+ {
+ filters: ['||youle55.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rwq.youle55.com',
+ },
+ {
+ filters: ['/images/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://enjoy.eastday.com/images/ad/',
+ },
+ {
+ filters: ['||dmm.com^*/dmm.tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.i3.dmm.com/latest/js/dmm.tracking.min.js',
+ },
+ {
+ filters: [
+ '||dyncdn.me/static/20/js/expla*.js$domain=rarbg.is|rarbg.to|rarbgmirror.com|rarbgproxy.org|rarbgprx.org',
+ ],
+ sourceUrl: 'http://www.rarbg.to',
+ type: 'script',
+ url: 'https://dyncdn.me/static/20/js/expla89.js',
+ },
+ {
+ filters: ['||statsy.net^$third-party', '/a.php?ref='],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://statsy.net/a.php?ref=&res=640x360&ab=2&_=1540302786228',
+ },
+ {
+ filters: ['||facebook.com^*/instream/vast.xml?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://an.facebook.com/v1/instream/vast.xml?',
+ },
+ {
+ filters: ['||dmm.com/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://trac.i3.dmm.com/analytics/',
+ },
+ {
+ filters: ['||maxmind.com/js/device.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://device.maxmind.com/js/device.js',
+ },
+ {
+ filters: ['||log.pinterest.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://log.pinterest.com',
+ },
+ {
+ filters: ['/icon_ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.3dmgame.com/page/images/icon_ad.png',
+ },
+ {
+ filters: ['/ads_frame.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.pixiv.net/ads_frame.php',
+ },
+ {
+ filters: ['||50bang.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://union2.50bang.org',
+ },
+ {
+ filters: ['||tanx.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://p.tanx.com',
+ },
+ {
+ filters: ['||gssprt.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cs.gssprt.jp',
+ },
+ {
+ filters: ['||microad.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://s-cs.send.microad.jp',
+ },
+ {
+ filters: ['||yieldmo.com^$third-party', '||yieldmo.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ads.yieldmo.com',
+ },
+ {
+ filters: ['||omnitagjs.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://visitor.omnitagjs.com',
+ },
+ {
+ check: true,
+ filters: ['/log_event?$domain=~youtube.com', '/log_event?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.youtube.com/youtubei/v1/log_event?',
+ },
+ {
+ filters: ['||amazon.com^*/events/$domain=~aws.amazon.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://unagi-eu.amazon.com/1/events/',
+ },
+ {
+ filters: ['/logging/log-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.amazon.es/gp/sponsored-products/logging/log-action.html',
+ },
+ {
+ filters: ['||trafficstars.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.trafficstars.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['/adver.$domain=~adver.biz|~adver.media'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.funshion.net.cn/img/adver.png',
+ },
+ {
+ filters: ['||lp4.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pp.lp4.io',
+ },
+ {
+ filters: ['||atanx.alicdn.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://atanx.alicdn.com',
+ },
+ {
+ filters: ['|https://$script,stylesheet,third-party,xmlhttprequest,domain=zippyshare.com'],
+ sourceUrl: 'https://www.zippyshare.com',
+ type: 'stylesheet',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['/adops.$domain=~adops.co.il'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://s3.amazonaws.com/adops.zillowstatic.com',
+ },
+ {
+ filters: ['||admob.com^$third-party', '||admob.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.admob.com',
+ },
+ {
+ filters: ['||google-analytics.com/cx/api.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/cx/api.js',
+ },
+ {
+ filters: ['||event.api.drift.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://event.api.drift.com',
+ },
+ {
+ filters: ['/webstat_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://stat.baike.com/js/webstat_manage.js',
+ },
+ {
+ filters: ['/pg_pixel?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.airbnb.com/pg_pixel?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||pv.ltn.com.tw^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pv.ltn.com.tw',
+ },
+ {
+ filters: ['/GoogleDFP.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ltn.com.tw/assets/js/GoogleDFP.js',
+ },
+ {
+ filters: ['/fingerprint2.min.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cache.ltn.com.tw/js/fingerprint2.min.js',
+ },
+ {
+ filters: ['/adimg/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.ltn.com.tw/Upload/ADImg/',
+ },
+ {
+ filters: ['/idleAds.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ltn.com.tw/assets/js/idleAds.js',
+ },
+ {
+ filters: ['?ads=$domain=~booking.loganair.co.uk'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://comic.pixiv.net/works/5197?ads=tf_hot_work_index&first_story_only=true',
+ },
+ {
+ filters: ['||stat.zol.com.cn^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://stat.zol.com.cn',
+ },
+ {
+ filters: ['/google_ad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pv.ltn.com.tw/google_ad_block_check.js',
+ },
+ {
+ filters: ['||airbnb.*/tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.airbnb.com/tracking/',
+ },
+ {
+ filters: ['@@||line-apps.com^$domain=line.me'],
+ sourceUrl: 'https://store.line.me',
+ type: 'script',
+ url: 'https://scdn.line-apps.com',
+ },
+ {
+ filters: ['||adx1.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://disqus.rtb.adx1.com',
+ },
+ {
+ filters: ['/eluminate?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sofa.bankofamerica.com/eluminate?',
+ },
+ {
+ filters: ['/setcookie?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ue.flipboard.com/setcookie?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||stat.media^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.media',
+ },
+ {
+ filters: ['||target.mixi.media^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://target.mixi.media',
+ },
+ {
+ filters: ['.at/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.at/ads/',
+ },
+ {
+ filters: ['||unrulymedia.com^$third-party', '||unrulymedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://video.unrulymedia.com',
+ },
+ {
+ filters: ['||popcash.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.popcash.net',
+ },
+ {
+ filters: ['||admarketplace.net^$third-party', '||admarketplace.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://imp.admarketplace.net',
+ },
+ {
+ filters: ['||hudong.com/flux.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ll.hudong.com/flux.js',
+ },
+ {
+ filters: ['://anx.*/anx.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://anx.tb.ask.com/anx.gif?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.nownews.com',
+ type: 'xhr',
+ url: 'https://ad2018.nownews.com/ad/',
+ },
+ {
+ filters: ['||ads.cc^$third-party', '||ads.cc^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.cc',
+ },
+ {
+ filters: ['||yieldoptimizer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tag.yieldoptimizer.com',
+ },
+ {
+ filters: ['||emarbox.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cmp.emarbox.com',
+ },
+ {
+ filters: ['/impression.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cache.ltn.com.tw/app/program/impression.php?',
+ },
+ {
+ filters: ['||33across.com^$third-party', '||33across.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-sic.33across.com',
+ },
+ {
+ filters: ['||dwin1.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dwin1.com',
+ },
+ {
+ filters: ['||xg4ken.com^', '||xg4ken.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://resources.xg4ken.com',
+ },
+ {
+ filters: ['/webdig.js?z='],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tongji.eastday.com/webdig.js?z=1',
+ },
+ {
+ check: true,
+ filters: ['||stats3.unrulymedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats3.unrulymedia.com',
+ },
+ {
+ filters: ['||gstat.orange.fr^', '@@||s.gstat.orange.fr/lib/gs.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.gstat.orange.fr/lib/gs.js?',
+ },
+ {
+ filters: ['/o_tealium.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.woopic.com/Magic/o_tealium.js',
+ },
+ {
+ filters: ['||orangeads.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://all.orfr.adgtw.orangeads.fr',
+ },
+ {
+ filters: ['@@||bat.bing.com/bat.js$script,domain=airbnb.co.uk|airbnb.com'],
+ sourceUrl: 'https://www.airbnb.com',
+ type: 'script',
+ url: 'https://bat.bing.com/bat.js',
+ },
+ {
+ filters: ['||musthird.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ss.musthird.com',
+ },
+ {
+ filters: ['/300x250/*$~media'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sex.com/ads/oct18/300x250/',
+ },
+ {
+ filters: ['||amazonaws.com/ki.js/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/ki.js/',
+ },
+ {
+ filters: ['||s.adroll.com^$third-party', '||s.adroll.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.adroll.com',
+ },
+ {
+ filters: ['/api/log?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://nbrecsys.4paradigm.com/action/api/log?',
+ },
+ {
+ filters: ['@@||fncstatic.com^*/visitorapi.js$script,domain=foxbusiness.com|foxnews.com'],
+ sourceUrl: 'https://www.foxnews.com',
+ type: 'script',
+ url: 'https://global.fncstatic.com/static/isa/app/lib/VisitorAPI.js',
+ },
+ {
+ filters: ['/stat.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s95.cnzz.com/stat.php?',
+ },
+ {
+ filters: ['||d.adroll.com^$third-party', '||d.adroll.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.adroll.com',
+ },
+ {
+ filters: ['||a-ssl.ligatus.com^$third-party', '||ligatus.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a-ssl.ligatus.com',
+ },
+ {
+ filters: ['/collectStats;'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ameblo.jp/_api/collectStats;data=f;kind=view;device=sp;v=1540302801954',
+ },
+ {
+ filters: ['||sy.ameblo.jp^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sy.ameblo.jp',
+ },
+ {
+ filters: ['||adroll.com/pixel/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.adroll.com/pixel/',
+ },
+ {
+ filters: ['*/blockadblock.$script,redirect=fuckadblock.js-3.2.0'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://news.livedoor.com/js/lite/blockadblock.js',
+ },
+ {
+ filters: ['||google-analytics.com/ga_exp.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.google-analytics.com/ga_exp.js',
+ },
+ {
+ filters: ['||trw12.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trw12.com',
+ },
+ {
+ filters: ['||ln.ameba.jp^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ln.ameba.jp',
+ },
+ {
+ filters: ['||uservoice.com^*/track.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://by2.uservoice.com/t2/204861/web/track.js',
+ },
+ {
+ filters: ['/tracker.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.cqq5id8n.com/tracker.php?',
+ },
+ {
+ check: true,
+ filters: ['||bid.g.doubleclick.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bid.g.doubleclick.net',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googletagmanager.com/gtm.js,domain=breitbart.com',
+ ],
+ sourceUrl: 'https://www.breitbart.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js',
+ },
+ {
+ filters: ['-ads3.htm'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://www.breitbart.com/t/assets/iframe/fb-ads3.html',
+ },
+ {
+ filters: ['||ligatus.com/rms/rend?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ssl.ligatus.com/rms/rend?',
+ },
+ {
+ filters: ['.com/z.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.woopic.com/z.gif?',
+ },
+ {
+ filters: ['/px.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ssl.ligatus.com/render/px.gif?',
+ },
+ {
+ filters: ['||invitemedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.invitemedia.com',
+ },
+ {
+ filters: ['||ligadx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://adx.ligadx.com',
+ },
+ {
+ filters: ['||beampulse.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://as-2313968.cdn.beampulse.com',
+ },
+ {
+ check: true,
+ filters: [
+ '||sync.adap.tv^',
+ '||adap.tv^$~object-subrequest,third-party',
+ '||adap.tv^',
+ '||adap.tv^$third-party,image',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.adap.tv',
+ },
+ {
+ filters: [
+ '/amzn_ads.',
+ '||amazon-adsystem.com/aax2/amzn_ads.js$script,redirect=amazon-adsystem.com/aax2/amzn_ads.js',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.amazon-adsystem.com/aax2/amzn_ads.js',
+ },
+ {
+ filters: ['||smartredirect.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.smartredirect.de',
+ },
+ {
+ check: true,
+ filters: ['||adaptv.advertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.adaptv.advertising.com',
+ },
+ {
+ filters: ['||sy.amebame.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sy.amebame.com',
+ },
+ {
+ filters: ['||loopme.me^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://csync.loopme.me',
+ },
+ {
+ filters: ['||stackadapt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://sync.srv.stackadapt.com',
+ },
+ {
+ filters: ['.net/ad2/', '@@||fastly.net/ad2/$image,script,xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://0914.global.ssl.fastly.net/ad2/',
+ },
+ {
+ filters: ['||facebook.com/audiencenetwork/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.facebook.com/audiencenetwork/',
+ },
+ {
+ filters: ['/onead.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://onead.onevision.com.tw',
+ },
+ {
+ filters: ['||powerlinks.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://px.powerlinks.com',
+ },
+ {
+ filters: ['||conative.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.conative.de',
+ },
+ {
+ filters: ['||nativendo.de^$third-party', '||d.nativendo.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://d.nativendo.de',
+ },
+ {
+ filters: ['||logsss.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://glsdk.logsss.com',
+ },
+ {
+ filters: ['||affasi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.affasi.com',
+ },
+ {
+ filters: ['||rhythmxchange.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.rhythmxchange.com',
+ },
+ {
+ filters: ['||afy11.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.afy11.net',
+ },
+ {
+ filters: ['||permutive.com^', '||permutive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.permutive.com',
+ },
+ {
+ filters: ['728x90.jpg|', '_728x90.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.gmw.cn/index_banner/20180920_wlzgj_728x90.jpg',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/us.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.go.sonobi.com/us.gif?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/geoip?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.permutive.com/v2.0/geoip?',
+ },
+ {
+ filters: ['||df-srv.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d.df-srv.de',
+ },
+ {
+ filters: ['||baidu.com/pixel?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.pos.baidu.com/pixel?',
+ },
+ {
+ filters: ['/ads_door.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ent.ltn.com.tw/assets/js/ads_door.js',
+ },
+ {
+ filters: ['/_bm/bd-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.olx.ua/_bm/bd-1-30',
+ },
+ {
+ check: true,
+ filters: ['||taboola.com^*/notify-impression?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://nr.taboola.com/newsroom/1.0/cbsinteractive-cbssports/notify-impression?',
+ },
+ {
+ filters: ['||kameleoon.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://9omvin7vhk.kameleoon.eu',
+ },
+ {
+ filters: ['||polarcdn-pentos.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://polarcdn-pentos.com',
+ },
+ {
+ filters: ['/nativeads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://polarcdn-terrax.com/nativeads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||exposebox.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://server.exposebox.com',
+ },
+ {
+ filters: ['||storygize.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.storygize.net',
+ },
+ {
+ check: true,
+ filters: ['||rtax.criteo.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rtax.criteo.com',
+ },
+ {
+ filters: ['||webterren.com/webdig.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cl.webterren.com/webdig.js?',
+ },
+ {
+ filters: [
+ '||washingtonpost.com/wp-stat/analytics/',
+ '@@||washingtonpost.com/wp-stat/analytics/latest/main.js',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.washingtonpost.com/wp-stat/analytics/latest/main.js',
+ },
+ {
+ filters: ['/adimage/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://img1.kakaku.k-img.com/images/ad/adadmin/adimage/',
+ },
+ {
+ filters: ['/trk.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trk.freepik.com/trk.gif?',
+ },
+ {
+ filters: ['||r.orange.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.orange.fr',
+ },
+ {
+ filters: ['||d1m6l9dfulcyw7.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1m6l9dfulcyw7.cloudfront.net',
+ },
+ {
+ filters: ['||arcpublishing.com^*/datapoint/save'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://cdn-api.arcpublishing.com/v1.0/loxodo/datapoint/save',
+ },
+ {
+ filters: ['/adswrapper.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://o.aolcdn.com/ads/adsWrapper.js',
+ },
+ {
+ filters: ['_fpn.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fpn.flipboard.com/pix/__fpn.gif?',
+ },
+ {
+ filters: ['||kameleoon.com^$third-party', '/visit.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tlp-04.kameleoon.com/visit.gif?',
+ },
+ {
+ filters: ['||contentsquare.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.contentsquare.net',
+ },
+ {
+ filters: ['||atwola.com^$third-party', '||atwola.com^', '/addyn/3.0/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://at.atwola.com/addyn/3.0/',
+ },
+ {
+ filters: ['||geo.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://geo.yahoo.com',
+ },
+ {
+ filters: ['-prebid.$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.fsdn.com/con/js/sftheme/vendor/bizx-prebid.js',
+ },
+ {
+ filters: ['/adframe.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.fsdn.com/con/js/adframe.js',
+ },
+ {
+ filters: ['||mediavoice.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://plugin.mediavoice.com',
+ },
+ {
+ filters: ['||polarmobile.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://meraxes-cdn.polarmobile.com',
+ },
+ {
+ filters: ['||al.autohome.com.cn^', '_pv_init?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://al.autohome.com.cn/mda_pv_init?',
+ },
+ {
+ filters: ['||autohome.com.cn/impress?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pcmx.autohome.com.cn/impress?',
+ },
+ {
+ filters: ['/bannerfarm.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://bannerfarm.aolp.jp',
+ },
+ {
+ filters: ['||adtechus.com^$third-party', '||adtechus.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://aka-cdn.adtechus.com',
+ },
+ {
+ filters: ['/dcs.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sdc-qczj.pingan.com:12743/dcs8ucp91bkqoash0ixxdenxe_9h1b/dcs.gif?',
+ },
+ {
+ filters: ['||ced.sascdn.com^', '||sascdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ced.sascdn.com',
+ },
+ {
+ filters: ['||mediav.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.mediav.com',
+ },
+ {
+ filters: ['||widget.engageya.com/engageya_loader.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.engageya.com/engageya_loader.js',
+ },
+ {
+ filters: ['/adimg.$domain=~adimg.ru'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adimg.daumcdn.net',
+ },
+ {
+ filters: ['||d3cxv97fi8q177.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3cxv97fi8q177.cloudfront.net',
+ },
+ {
+ filters: ['.com/3.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cl3.webterren.com/3.gif?',
+ },
+ {
+ filters: ['||btstatic.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.btstatic.com',
+ },
+ {
+ filters: ['.theadtech.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixels.dsp.theadtech.com',
+ },
+ {
+ filters: ['||mediarithmics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cookie-matching.mediarithmics.com',
+ },
+ {
+ filters: ['||taggify.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.taggify.net',
+ },
+ {
+ filters: ['/ssl-intgr-net/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/ssl-intgr-net/',
+ },
+ {
+ filters: ['/banners/ad_', '||com/banners/$image,object,subdocument'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://o.kooora.com/banners/Ad_21_10_18_320x50.jpg',
+ },
+ {
+ filters: ['/pv_count.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://al.autohome.com.cn/pv_count.php',
+ },
+ {
+ filters: ['_pv_log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://al.autohome.com.cn/mda_pv_log?',
+ },
+ {
+ filters: ['/cover_ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://sports.ltn.com.tw/assets/css/cover_ad.css',
+ },
+ {
+ filters: ['||eyereturn.com^$third-party', '||eyereturn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cm.eyereturn.com',
+ },
+ {
+ filters: ['||thebrighttag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.thebrighttag.com',
+ },
+ {
+ check: true,
+ filters: ['||ce.lijit.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ce.lijit.com',
+ },
+ {
+ filters: ['||atemda.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://atemda.com',
+ },
+ {
+ filters: [
+ '||smartclip.net^$~object-subrequest,third-party',
+ '||smartclip.net^$third-party',
+ '||smartclip.net^$third-party,image',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.sxp.smartclip.net',
+ },
+ {
+ filters: ['/adswrapperintl.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.aolcdn.com/ads/adsWrapperIntl.min.js',
+ },
+ {
+ filters: ['||publir.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.publir.com',
+ },
+ {
+ filters: ['||email-match.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://atout.email-match.com',
+ },
+ {
+ filters: ['||onthe.io^$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.onthe.io',
+ },
+ {
+ filters: ['||nervoussummer.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nervoussummer.com',
+ },
+ {
+ filters: ['||tracker.nbcuas.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracker.nbcuas.com',
+ },
+ {
+ filters: ['||kampyle.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-usent.kampyle.com',
+ },
+ {
+ filters: ['||n.mailfire.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://n.mailfire.io',
+ },
+ {
+ filters: ['||revcontent.com^$third-party', '||revcontent.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trends.revcontent.com',
+ },
+ {
+ filters: ['||tt.onthe.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tt.onthe.io',
+ },
+ {
+ filters: ['||d3qxwzhswv93jk.cloudfront.net^', '||cloudfront.net/esf.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3qxwzhswv93jk.cloudfront.net/esf.js',
+ },
+ {
+ check: true,
+ filters: ['||pagefair.com^$third-party', '||pagefair.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://asset.pagefair.com',
+ },
+ {
+ filters: ['||pagefair.net^$third-party', '||pagefair.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://asset.pagefair.net',
+ },
+ {
+ filters: ['@@||global.fncstatic.com/$script,domain=video.foxnews.com'],
+ sourceUrl: 'https://video.foxnews.com',
+ type: 'script',
+ url: 'https://global.fncstatic.com/',
+ },
+ {
+ check: true,
+ filters: ['/adimages/*$~subdocument', '/adsense.$domain=~adsense.az|~adsense.googleblog.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://asset.pagefair.com/adimages/adsense.js',
+ },
+ {
+ filters: ['/adition.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://imagesrv.adition.com/js/adition.js',
+ },
+ {
+ check: true,
+ filters: ['/stats/page_view_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://stats.pagefair.com/stats/page_view_event',
+ },
+ {
+ filters: ['/pxl.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.yimg.com/ap/build/images/pxl.gif?',
+ },
+ {
+ filters: ['||growingio.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://assets.growingio.com',
+ },
+ {
+ check: true,
+ filters: ['||ads.tremorhub.com^', '||tremorhub.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://gklfs-ktn14.ads.tremorhub.com',
+ },
+ {
+ filters: ['||trustx.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://sofia.trustx.org',
+ },
+ {
+ filters: ['||kargo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://krk.kargo.com',
+ },
+ {
+ filters: ['@@||vidible.tv/prod/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-ssl.vidible.tv/prod/',
+ },
+ {
+ filters: ['||trk*.vidible.tv^', '/impression.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trk.vidible.tv/trk/impression.gif?',
+ },
+ {
+ filters: ['/log/init?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://restapi.amap.com/v3/log/init?',
+ },
+ {
+ filters: ['/pc_ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cpro.baidustatic.com/cpro/ui/noexpire/img/4.0.0/pc_ads.1x.png',
+ },
+ {
+ check: true,
+ filters: [
+ '/advertisers/*$domain=~datalift360.com|~home.tapjoy.com|~panel.rightflow.com|~propelmedia.com|~publisuites.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://video.adaptv.advertising.com/ad/ads/advertisers/',
+ },
+ {
+ filters: ['/brand-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://brand-ad-innovations.s3.amazonaws.com',
+ },
+ {
+ filters: ['||probtn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.probtn.com',
+ },
+ {
+ filters: ['||spotscenered.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.spotscenered.info',
+ },
+ {
+ filters: ['||clrstm.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tag.clrstm.com',
+ },
+ {
+ filters: ['||stat.tianya.cn^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.tianya.cn',
+ },
+ {
+ filters: ['||collect.tianya.cn^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://collect.tianya.cn',
+ },
+ {
+ filters: ['/clickAnalyse.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://collect.tianya.cn/clickAnalyse.jsp',
+ },
+ {
+ check: true,
+ filters: ['/adserver-', '||adtech.advertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://adserver-us.adtech.advertising.com',
+ },
+ {
+ filters: ['_300_250_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.admaru.com/js/baike_admaru_300_250_mobile.js',
+ },
+ {
+ filters: ['||surveywall-api.survata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://px.surveywall-api.survata.com',
+ },
+ {
+ filters: ['||gismeteo.*/stat.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.gismeteo.ru/stat.gif',
+ },
+ {
+ filters: [
+ '|https://$image,script,subdocument,third-party,xmlhttprequest,domain=yourporn.sexy',
+ '@@||ajax.googleapis.com^$script,domain=yourporn.sexy',
+ '@@||googleapis.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|bdsmstreak.com|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freemoviestream.xyz|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|mp4upload.com|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.yourporn.sexy',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['@@||trafficdeposit.com//blog/$image,domain=yourporn.sexy'],
+ sourceUrl: 'https://www.yourporn.sexy',
+ type: 'image',
+ url: 'https://s17.trafficdeposit.com//blog/',
+ },
+ {
+ filters: ['@@||trafficdeposit.com/blog/$image,domain=yourporn.sexy'],
+ sourceUrl: 'https://www.yourporn.sexy',
+ type: 'image',
+ url: 'https://s18.trafficdeposit.com/blog/',
+ },
+ {
+ filters: ['||clcknads.pro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ca.clcknads.pro',
+ },
+ {
+ filters: ['||flickr.com/beacon_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.flickr.com/beacon_page_timings.gne',
+ },
+ {
+ filters: ['||events.ocdn.eu^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.ocdn.eu',
+ },
+ {
+ filters: ['||kropka.onet.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kropka.onet.pl',
+ },
+ {
+ filters: ['||ad.71i.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.71i.de',
+ },
+ {
+ filters: ['||2mdn.net^$third-party,media'],
+ sourceUrl: 'http://foo.com',
+ type: 'media',
+ url: 'https://gcdn.2mdn.net',
+ },
+ {
+ filters: ['/ad.html?', '/html/ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://img.scupio.com/html/ad.html?',
+ },
+ {
+ filters: ['/ad/images/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.scupio.com/ad/images/',
+ },
+ {
+ filters: ['||csr.onet.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://csr.onet.pl',
+ },
+ {
+ filters: ['||constintptr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.constintptr.com',
+ },
+ {
+ filters: ['@@||yps.link/emoji/$image,domain=yourporn.sexy'],
+ sourceUrl: 'https://www.yourporn.sexy',
+ type: 'image',
+ url: 'https://yps.link/emoji/',
+ },
+ {
+ filters: ['/adplayer.$domain=~adplayer.media'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://acdn.adnxs.com/as/1d/extensions/adplayer.css',
+ },
+ {
+ filters: ['||tagger.opecloud.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tagger.opecloud.com',
+ },
+ {
+ filters: ['/banner.php'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://waptianqi.2345.com/public/banner.php',
+ },
+ {
+ check: true,
+ filters: ['||adserver.71i.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver.71i.de',
+ },
+ {
+ filters: ['-720x120-'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://waptianqi.2345.com/images/s11/2018-720x120-2.gif',
+ },
+ {
+ filters: ['/stat.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.zol-img.com.cn/bms/js/stat.js?',
+ },
+ {
+ filters: ['||spanids.dictionary.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://spanids.dictionary.com',
+ },
+ {
+ filters: ['||track.thesaurus.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.thesaurus.com',
+ },
+ {
+ filters: ['||spanids.thesaurus.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://spanids.thesaurus.com',
+ },
+ {
+ filters: ['@@||cdn.shopify.com^*/assets/$script,third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.shopify.com/s/assets/',
+ },
+ {
+ filters: ['/AppMeasurement.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.samsung.com/etc/designs/smg/global/js/AppMeasurement.js',
+ },
+ {
+ filters: ['/stat.gif?', '.gif?event='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://referrer.disqus.com/juggler/stat.gif?event=lounge.loading.view',
+ },
+ {
+ filters: ['||px.spiceworks.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://px.spiceworks.com',
+ },
+ {
+ filters: ['||proxad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://statsweb.proxad.net',
+ },
+ {
+ filters: ['/images/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://waptianqi.2345.com/images/ads/',
+ },
+ {
+ filters: ['||vidcpm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.vidcpm.com',
+ },
+ {
+ filters: ['@@||ensighten.com^*/code/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nexus.ensighten.com/samsungde/prod/code/',
+ },
+ {
+ filters: ['||levexis.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sec.levexis.com',
+ },
+ {
+ filters: ['||idio.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.idio.co',
+ },
+ {
+ filters: ['/snowplow/*$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d78fikflryjgj.cloudfront.net/lib/snowplow/',
+ },
+ {
+ filters: ['||hs-analytics.net^', '||hs-analytics.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.hs-analytics.net',
+ },
+ {
+ filters: ['/pix.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://metrics.gfycat.com/pix.gif?',
+ },
+ {
+ filters: ['/b/ss/*/JS-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://omtr2.partners.salesforce.com/b/ss/salesforcemarketing/1/JS-2.4.0',
+ },
+ {
+ filters: ['||adbetclickin.pink^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://serving.adbetclickin.pink',
+ },
+ {
+ filters: ['||litix.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://img.litix.io',
+ },
+ {
+ filters: ['||pardot.com/pd.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pi.pardot.com/pd.js',
+ },
+ {
+ filters: ['||lh.secure.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lh.secure.yahoo.com',
+ },
+ {
+ filters: ['||d8rk54i4mohrb.cloudfront.net^', '||cloudfront.net/js/reach.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d8rk54i4mohrb.cloudfront.net/js/reach.js',
+ },
+ {
+ filters: ['||track.hubspot.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.hubspot.com',
+ },
+ {
+ filters: ['||invoca.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pnapi.invoca.net',
+ },
+ {
+ filters: ['||simplereach.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://edge.simplereach.com',
+ },
+ {
+ filters: ['||csbew.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.csbew.com',
+ },
+ {
+ filters: ['.com/analytics?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pi.pardot.com/analytics?',
+ },
+ {
+ filters: ['||click.suning.cn^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://click.suning.cn',
+ },
+ {
+ filters: ['||stat.pladform.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://stat.pladform.ru',
+ },
+ {
+ filters: ['/tizers.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://recreativ.ru/tizers.php?',
+ },
+ {
+ filters: ['||o12zs3u2n.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.o12zs3u2n.com',
+ },
+ {
+ filters: ['||cityadspix.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cityadspix.com',
+ },
+ {
+ filters: ['_ads.js?', '_show_ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.eyny.com/data/cache/js_show_ads.js?',
+ },
+ {
+ filters: ['||s-vop.sundaysky.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s-vop.sundaysky.com',
+ },
+ {
+ filters: ['||ethn.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ethn.io',
+ },
+ {
+ filters: ['=728x90&'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.eyny.com/ads&channel=1&format=728x90&type=image&border=0&ajax=1',
+ },
+ {
+ filters: ['||browsiprod.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.browsiprod.com',
+ },
+ {
+ filters: ['/advertise/*$domain=~legl.co'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://a235.static-file.com/shared/upload/advertise/',
+ },
+ {
+ filters: ['/pixelcounter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixelcounter.marca.com',
+ },
+ {
+ check: true,
+ filters: ['||tradedoubler.com^', '||tradedoubler.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://impes.tradedoubler.com',
+ },
+ {
+ filters: ['/advert/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rutube.ru/api/advert/',
+ },
+ {
+ filters: ['/ads/1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.jeded.com/ads/1.js',
+ },
+ {
+ filters: ['||x.fidelity-media.com^$third-party', '/delivery/hb.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://x.fidelity-media.com/delivery/hb.php',
+ },
+ {
+ filters: ['||ad4game.com^$third-party', '||ad4game.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads.ad4game.com',
+ },
+ {
+ check: true,
+ filters: ['@@||jwpsrv.com^$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://assets-jpcust.jwpsrv.com',
+ },
+ {
+ filters: ['||bannersnack.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.bannersnack.com',
+ },
+ {
+ filters: ['/admax/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.nexage.com/js/admax/',
+ },
+ {
+ filters: ['||zeotap.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://spl.zeotap.com',
+ },
+ {
+ filters: ['/adserve.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mtcmed02.nexage.com/admax/adServe.do',
+ },
+ {
+ filters: ['||slack.com/clog/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://slack.com/clog/track/',
+ },
+ {
+ filters: [
+ '@@||cdn.ndtv.com/static/$script,domain=ndtv.com',
+ '@@||ndtv.com^$script,first-party',
+ ],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com/static/',
+ },
+ {
+ filters: ['||ndtv.com^*/banner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://drop.ndtv.com/albums/uploadedpics/banner/',
+ },
+ {
+ filters: ['||d1ivexoxmp59q7.cloudfront.net^*/live.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1ivexoxmp59q7.cloudfront.net/slack/live.js',
+ },
+ {
+ filters: ['||ad.atdmt.com/m/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.atdmt.com/m/',
+ },
+ {
+ filters: ['||convertro.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://slack.sp1.convertro.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://electionsdata.ndtv.com',
+ },
+ {
+ filters: [
+ '||amazonaws.com^$script,domain=300mbdownload.net|bittorrent.am|globes.co.il|grantorrent.net|hdvid.life|hdvid.tv|hdvid.xyz|kannadamovies.biz|katcr.host|macupload.net|mp3goo.com|ndtv.com|onhax.me|onvid.club|onvid.xyz|rgmechanicsgames.com|serietvsubita.net|streamplay.to|thevideobee.to|usersfiles.com|vshare.eu',
+ ],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['/adfox.$domain=~adfox.de|~adfox.group|~adfox.hu'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1.img.ria.ru/min/js/libs/banners/adfox.loader.bind.js',
+ },
+ {
+ filters: ['/ad.css?'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.duba.com/static/v2/css/home/ad/ad.css?',
+ },
+ {
+ filters: ['||decibelinsight.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.decibelinsight.net',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://sports.ndtv.com',
+ },
+ {
+ filters: [
+ '.ie/ads/',
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://www.google.ie',
+ type: 'image',
+ url: 'https://www.google.ie/ads/',
+ },
+ {
+ filters: ['||optimix.asia^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://bshare.optimix.asia',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: [
+ '@@||ensighten.com^*/Bootstrap.js$domain=americanexpress.com|caranddriver.com|cart.autodesk.com|citizensbank.com|dell.com|france24.com|homedepot.com|hp.com|rfi.fr|sbs.com.au|sfgate.com|staples.com|t-mobile.com|target.com|verizonwireless.com|williamhill.com|zales.com',
+ ],
+ sourceUrl: 'https://www8.hp.com',
+ type: 'script',
+ url: 'https://nexus.ensighten.com/hp/hpcom_prod/Bootstrap.js',
+ },
+ {
+ filters: ['||d41.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vid0377.d41.co',
+ },
+ {
+ filters: ['||trugaze.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.trugaze.io',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['/QualtricsSurvey.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.www8.hp.com/h10000/cma/ng/lib/survey/qualtricsSurvey.js',
+ },
+ {
+ check: true,
+ filters: ['||ad.linksynergy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.linksynergy.com',
+ },
+ {
+ filters: ['/adblockDetector.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.addevweb.com/SMSdk/assets/AdBlockDetection/adblockDetector.js',
+ },
+ {
+ filters: ['||collect.igodigital.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://1339402.collect.igodigital.com',
+ },
+ {
+ filters: ['.com/gads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://index.sindonews.com/gads/',
+ },
+ {
+ filters: ['/adtag.', '||adtag.cc^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adtag.cc',
+ },
+ {
+ filters: ['||sentemanactri.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://b.sentemanactri.com',
+ },
+ {
+ filters: ['||wbtrk.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://um.wbtrk.net',
+ },
+ {
+ filters: ['||ria.ru/js/counter.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.ria.ru/js/counter.js',
+ },
+ {
+ filters: ['@@||tags.w55c.net/rs?*&t=marketing$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tags.w55c.net/rs?id=d8e93f81826a42119aa6c2618664e8e8&t=marketing',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/ads/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://beeg.com/static/js/ads/ads.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||beeg.com/logo.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://beeg.com/logo.gif?',
+ },
+ {
+ filters: ['||videoplaza.tv^$~object-subrequest,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://es-sunicontent.videoplaza.tv',
+ },
+ {
+ filters: ['/adlabel.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.addevweb.com/SMSdk/ico/adlabel.png',
+ },
+ {
+ check: true,
+ filters: ['||juicyads.com^$third-party', '||juicyads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver.juicyads.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['||s-onetag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://get.s-onetag.com',
+ },
+ {
+ filters: ['||stats.cloudwp.io^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://stats.cloudwp.io',
+ },
+ {
+ filters: ['/event.cgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.adriver.ru/cgi-bin/event.cgi?',
+ },
+ {
+ filters: ['/nativeads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.exosrv.com/nativeads.js',
+ },
+ {
+ filters: ['/adshow.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://adserver.juicyads.com/adshow.php',
+ },
+ {
+ filters: ['||adrecover.com^$third-party', '||adrecover.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.adrecover.com/27265/adRecover.js',
+ },
+ {
+ filters: ['||tongji.mafengwo.cn^', '/stat_click.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tongji.mafengwo.cn/stat_click.gif',
+ },
+ {
+ filters: ['@@||d1l6p2sc9645hc.cloudfront.net/tracker.js|'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d1l6p2sc9645hc.cloudfront.net/tracker.js',
+ },
+ {
+ filters: ['||twitter.com/i/csp_report?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://twitter.com/i/csp_report?',
+ },
+ {
+ filters: ['||atas.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://spot-01.atas.io',
+ },
+ {
+ filters: ['||data.gosquared.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://data.gosquared.com',
+ },
+ {
+ filters: ['||adlooxtracking.com^$third-party', '||adlooxtracking.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://as.adlooxtracking.com',
+ },
+ {
+ filters: ['/adcontrol.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.mafengwo.cn/news/adControl.php',
+ },
+ {
+ filters: ['||epimg.net/js/pbs/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ep00.epimg.net/js/pbs/',
+ },
+ {
+ filters: ['/pxlctl.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pxlctl.elpais.com',
+ },
+ {
+ filters: [
+ '/AudienceNetworkPrebid.',
+ '@@||connect.facebook.*/*/AudienceNetworkPrebid.js$script,domain=cbssports.com',
+ '@@||connect.facebook.com^*/AudienceNetworkPrebid.js$domain=cbssports.com',
+ ],
+ sourceUrl: 'https://www.cbssports.com',
+ type: 'script',
+ url: 'https://connect.facebook.com/en_US/AudienceNetworkPrebid.js',
+ },
+ {
+ filters: [
+ '@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=allcatvideos.com|audiomack.com|beinsports.com|blastingnews.com|bloomberg.com|cbc.ca|cbsnews.com|cbssports.com|cnet.com|complex.com|cwtv.com|dramafever.com|gamejolt.com|healthmeans.com|indystar.com|metrolyrics.com|mobg.io|news.sky.com|play.ludigames.com|player.performgroup.com|powr.com|rumble.com|snopes.com|thestreet.com|theverge.com|ultimedia.com|usatoday.com|video.foxbusiness.com|video.foxnews.com|vidyomani.com|yiv.com',
+ ],
+ sourceUrl: 'https://www.cbssports.com',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['||infinigraph.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dst.infinigraph.com',
+ },
+ {
+ filters: ['@@||connect.facebook.net^*/AudienceNetworkPrebid.js$domain=cbssports.com'],
+ sourceUrl: 'https://www.cbssports.com',
+ type: 'script',
+ url: 'https://connect.facebook.net/en_US/AudienceNetworkPrebid.js',
+ },
+ {
+ filters: ['/track_event.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tongji.mafengwo.cn/track_event.gif',
+ },
+ {
+ filters: ['||mediametrics.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mediametrics.ru',
+ },
+ {
+ filters: ['||optmd.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://cdn.optmd.com',
+ },
+ {
+ filters: ['||eqads.com^$third-party', '||eqads.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://um2.eqads.com',
+ },
+ {
+ filters: ['||nrich.ai^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dsp.nrich.ai',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['/videoads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://preview-design.gridtechno.com/VIDEOADS/',
+ },
+ {
+ filters: ['/log/analytics'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://open.spotify.com/log/analytics',
+ },
+ {
+ filters: ['||news.smi2.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://news.smi2.ru',
+ },
+ {
+ filters: ['||lentainform.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsn.lentainform.com',
+ },
+ {
+ filters: ['||infox.sg^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rb.infox.sg',
+ },
+ {
+ filters: ['||btrll.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://geo-um.btrll.com',
+ },
+ {
+ filters: ['||target.smi2.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://target.smi2.net',
+ },
+ {
+ filters: ['||nicequest.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mpc.nicequest.com',
+ },
+ {
+ filters: ['||nanovisor.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cenome.nanovisor.io',
+ },
+ {
+ filters: ['&ad_url='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/1635909/1x1image.jpg?&ad_url=',
+ },
+ {
+ filters: ['&ad_channel='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://connect.facebook.net/favicon.ico?&ad_channel=',
+ },
+ {
+ filters: ['||ads.twitter.com^', '&ad_number='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.twitter.com/favicon.ico?&ad_number=',
+ },
+ {
+ filters: ['||intellimize.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.intellimize.co',
+ },
+ {
+ filters: ['||btttag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://slickdeals.btttag.com',
+ },
+ {
+ filters: ['/us-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://us-ads.openx.net',
+ },
+ {
+ filters: ['||tracking.epicgames.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.epicgames.com',
+ },
+ {
+ filters: ['||target.smi2.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://target.smi2.ru',
+ },
+ {
+ filters: ['/track.png?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.epicgames.com/track.png?',
+ },
+ {
+ filters: ['||group-ib.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ibbe.group-ib.ru',
+ },
+ {
+ filters: ['||run-syndicate.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.run-syndicate.com',
+ },
+ {
+ filters: ['||heapanalytics.com^', '||heapanalytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.heapanalytics.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://electionsdata.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://cdn.ndtv.com',
+ },
+ {
+ filters: ['||chinadaily.com.cn/s?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://same.chinadaily.com.cn/s?',
+ },
+ {
+ filters: ['/ad-bottom.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.chinadaily.com.cn/image_e/2018/ad-bottom.png',
+ },
+ {
+ filters: ['||elasticad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://cdn.elasticad.net',
+ },
+ {
+ filters: ['||data2.gosquared.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://data2.gosquared.com',
+ },
+ {
+ check: true,
+ filters: ['/google_analytics/*'],
+ sourceUrl: 'https://www.taboola.com',
+ type: 'script',
+ url: 'https://www.taboola.com/sites/all/modules/google_analytics/',
+ },
+ {
+ filters: ['/adcdn.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adcdn.goo.ne.jp',
+ },
+ {
+ filters: ['||gadgets360.com/pricee/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.gadgets360.com/pricee/',
+ },
+ {
+ filters: ['&ad_keyword='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pagead2.googlesyndication.com/favicon.ico?&ad_keyword=',
+ },
+ {
+ filters: ['_728x90/'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://s0.2mdn.net/6440533/1495124845208/Raise%20Your%20Hands_728x90/',
+ },
+ {
+ check: true,
+ filters: ['@@||t8cdn.com/assets/pc/js/$script,domain=tube8.com|tube8.es|tube8.fr'],
+ sourceUrl: 'https://www.tube8.com',
+ type: 'script',
+ url: 'https://es.t8cdn.com/assets/pc/js/',
+ },
+ {
+ check: true,
+ filters: ['@@||t8cdn.com^$image,media,domain=tube8.com|tube8.es|tube8.fr'],
+ sourceUrl: 'https://www.tube8.com',
+ type: 'image',
+ url: 'https://es.t8cdn.com',
+ },
+ {
+ filters: ['/fuckadblock.min.js', '*/fuckadblock.$script,redirect=fuckadblock.js-3.2.0'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdnjs.cloudflare.com/ajax/libs/fuckadblock/3.2.1/fuckadblock.min.js',
+ },
+ {
+ filters: ['||goo.ne.jp^*/vltracedmd.js'],
+ sourceUrl: 'https://www.goo.ne.jp',
+ type: 'script',
+ url: 'https://log000.goo.ne.jp/js/VLTraceDMD.js',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cdn.jsdelivr.net/algoliasearch/3/algoliasearch.min.js$script,domain=tube8.com|tube8.es|tube8.fr',
+ ],
+ sourceUrl: 'https://www.tube8.com',
+ type: 'script',
+ url: 'https://cdn.jsdelivr.net/algoliasearch/3/algoliasearch.min.js',
+ },
+ {
+ filters: ['/trans/logger.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://icon.zol-img.com.cn/public/bdshare/static/api/js/trans/logger.js',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['/pop.js|'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://thepiratebay3.org/main_files/pop.js',
+ },
+ {
+ filters: ['_files/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://thepiratebay3.org/main_files/analytics.js',
+ },
+ {
+ filters: ['||popads.net/pop.js$script,redirect=popads.net.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c1.popads.net/pop.js',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ check: true,
+ filters: ['||etahub.com^', '||etahub.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://etahub.com',
+ },
+ {
+ filters: ['||lockerdome.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://lockerdome.com',
+ },
+ {
+ filters: ['||adsco.re^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.adsco.re',
+ },
+ {
+ filters: [
+ '||uim.tifbs.net^',
+ '||uim.tifbs.net/js/*.js$script,redirect=noopjs,domain=gmx.net|web.de',
+ ],
+ sourceUrl: 'https://www.gmx.net',
+ type: 'script',
+ url: 'https://uim.tifbs.net/js/3936.js',
+ },
+ {
+ filters: ['||click.ali213.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://click.ali213.net',
+ },
+ {
+ filters: ['||xlisting.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pulsar.xlisting.jp',
+ },
+ {
+ filters: ['/tracklog.', '/empty.js.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracklog.58.com/m/click/empty.js.gif?',
+ },
+ {
+ filters: ['||heapanalytics.com/h?$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://heapanalytics.com/h?',
+ },
+ {
+ filters: ['@@||googlecommerce.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googlecommerce.com',
+ },
+ {
+ filters: ['||smct.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smct.co',
+ },
+ {
+ filters: ['||episerver.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hpde.peerius.episerver.net',
+ },
+ {
+ filters: ['_300x250.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://static.idgdmg.com.cn/html/priming/zol_back_300x250.html',
+ },
+ {
+ filters: ['||uimserv.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://uir.uimserv.net',
+ },
+ {
+ filters: ['||wa.ui-portal.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://wa.ui-portal.de',
+ },
+ {
+ check: true,
+ filters: ['@@||algolia.net^*/indexes/$xmlhttprequest,domain=tube8.com|tube8.es|tube8.fr'],
+ sourceUrl: 'https://www.tube8.com',
+ type: 'xhr',
+ url: 'https://bnzmzkcxit-dsn.algolia.net/1/indexes/',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cdn.jsdelivr.net/autocomplete.js/0/autocomplete.min.js$script,domain=tube8.com|tube8.es|tube8.fr',
+ ],
+ sourceUrl: 'https://www.tube8.com',
+ type: 'script',
+ url: 'https://cdn.jsdelivr.net/autocomplete.js/0/autocomplete.min.js',
+ },
+ {
+ filters: ['/ados.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.wattpad.com/js/ados.js',
+ },
+ {
+ filters: ['/adpic.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://adpic.chinadaily.com.cn',
+ },
+ {
+ filters: ['||clickagy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://aorta.clickagy.com',
+ },
+ {
+ filters: [
+ '/lib/tracking/*',
+ '/tracking/comscore/*',
+ '@@||cbsinteractive.com^*/lib/tracking/comscore/$script',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vidtech.cbsinteractive.com/uvpjs/2.9.2/lib/tracking/comscore/',
+ },
+ {
+ filters: ['||ptengine.cn^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.ptengine.cn',
+ },
+ {
+ filters: ['||adnami.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.adnami.io',
+ },
+ {
+ filters: ['||underdog.media^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://bid.underdog.media',
+ },
+ {
+ filters: ['||google-analytics.com/siteopt.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.google-analytics.com/siteopt.js?',
+ },
+ {
+ filters: ['/track.p?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.ashleymadison.com/app/public/track.p?',
+ },
+ {
+ filters: ['/adservice-', '/adservice/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.ui-portal.de/c/ads/adservice/adservice-2-connector-current.js',
+ },
+ {
+ filters: ['/cookieId.htm'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.shein.com/image/cookieId.html',
+ },
+ {
+ filters: ['||relap.io^*/head.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://relap.io/api/v6/head.js?',
+ },
+ {
+ filters: ['/services/counter/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ria.ru/services/counter/',
+ },
+ {
+ filters: ['/googleads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://game.goo.ne.jp/googleads_ima_html5_samples',
+ },
+ {
+ filters: ['||ad.admitad.com^', '||admitad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.admitad.com',
+ },
+ {
+ filters: ['||emediate.eu^$third-party', '||emediate.eu^', '/eas_tag.1.0.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eas4.emediate.eu/EAS_tag.1.0.js',
+ },
+ {
+ filters: ['&ad_network_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.twitter.com/favicon.ico?&ad_network_',
+ },
+ {
+ filters: ['&ad_zones='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://connect.facebook.net/favicon.ico?&ad_zones=',
+ },
+ {
+ filters: ['&ad_classid='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/1635909/1x1image.jpg?&ad_classid=',
+ },
+ {
+ filters: ['/visualrevenue.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motor.elpais.com/wp-content/themes/motor18/js/visualRevenue.js',
+ },
+ {
+ filters: ['||bebi.com^$third-party', '||bebi.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st.bebi.com',
+ },
+ {
+ filters: ['||mainroll.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://improvedigital.mainroll.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['||beacon.errorception.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://beacon.errorception.com',
+ },
+ {
+ check: true,
+ filters: ['||vrt.outbrain.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vrt.outbrain.com',
+ },
+ {
+ check: true,
+ filters: ['||vrp.outbrain.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vrp.outbrain.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['/mmcore.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://service.maxymiser.net/cdn/americanexpress/js/mmcore.js',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://food.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://food.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://food.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://food.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://food.ndtv.com',
+ },
+ {
+ filters: ['||adop.cc^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://compass.adop.cc',
+ },
+ {
+ filters: ['||adnium.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.adnium.com',
+ },
+ {
+ filters: ['||nativeroll.tv^$third-party', '||nativeroll.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn01.nativeroll.tv',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://food.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['/xiti.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st1.idealista.com/static/common/js/ext/xiti/xiti.js',
+ },
+ {
+ filters: ['||adskeeper.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsc.adskeeper.co.uk',
+ },
+ {
+ filters: ['||xiti.com^', '||xiti.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://logs3.xiti.com',
+ },
+ {
+ filters: ['||pushengage.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://clientcdn.pushengage.com',
+ },
+ {
+ filters: ['||research.de.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://s79.research.de.com',
+ },
+ {
+ filters: ['||h.imedia.cz^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://h.imedia.cz',
+ },
+ {
+ filters: ['||i.imedia.cz^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.imedia.cz',
+ },
+ {
+ filters: ['/adblock.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.egy.best/static/global/js/adblock.js',
+ },
+ {
+ filters: ['/static/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ad.impactify.io/static/ad/',
+ },
+ {
+ check: true,
+ filters: ['||3ca28642b714623b2.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://3ca28642b714623b2.com/1101038/',
+ },
+ {
+ filters: ['||m2.ai^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m2d.m2.ai',
+ },
+ {
+ filters: ['/delivery/ag.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a03.uadexchange.com/delivery/ag.php',
+ },
+ {
+ filters: ['||optmstr.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.optmstr.com',
+ },
+ {
+ filters: ['||firstimpression.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ecdn.firstimpression.io',
+ },
+ {
+ filters: ['||log.prezi.com^', '||prezi.com/log/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://log.prezi.com/log/',
+ },
+ {
+ filters: ['||adtrue.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adtrue.com',
+ },
+ {
+ filters: ['||sociomantic.com^$third-party', '/adpan/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://us-sonar.sociomantic.com/js/2010-07-01/adpan/',
+ },
+ {
+ filters: ['/baynote/*', '||baynote.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://springer-www.baynote.net/baynote/',
+ },
+ {
+ filters: ['||districtm.ca^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://prebid.districtm.ca',
+ },
+ {
+ filters: ['||komoona.com^$third-party', '||komoona.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.komoona.com',
+ },
+ {
+ filters: ['||sekindo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hb.sekindo.com',
+ },
+ {
+ filters: ['||optmnstr.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.optmnstr.com',
+ },
+ {
+ filters: ['||steelhousemedia.com^', '||steelhousemedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dx.steelhousemedia.com',
+ },
+ {
+ filters: ['||tracking.g2crowd.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.g2crowd.com',
+ },
+ {
+ filters: ['||drom.ru/dummy.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.drom.ru/dummy.gif',
+ },
+ {
+ filters: ['/spc_fi.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.firstimpression.io/delivery/spc_fi.php',
+ },
+ {
+ filters: ['||cpmstar.com/view.aspx', '||cpmstar.com^', '||cpmstar.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://server.cpmstar.com/view.aspx',
+ },
+ {
+ filters: ['||cpmstar.com/cached/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssl.cdne.cpmstar.com/cached/',
+ },
+ {
+ filters: ['/static.ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.ad.libimseti.cz',
+ },
+ {
+ filters: ['/adobe-analytics/*', '@@||mlbstatic.com/*/VisitorAPI.js$script,domain=mlb.com'],
+ sourceUrl: 'https://www.mlb.com',
+ type: 'script',
+ url: 'https://www.mlbstatic.com/mlb.com/adobe-analytics/VisitorAPI.js',
+ },
+ {
+ filters: ['@@||mlbstatic.com/*/AppMeasurement$script,domain=mlb.com'],
+ sourceUrl: 'https://www.mlb.com',
+ type: 'script',
+ url: 'https://www.mlbstatic.com/mlb.com/adobe-analytics/AppMeasurement-mlb.js',
+ },
+ {
+ filters: ['&event=view&'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.drom.ru/dummy.txt?section=drom&event=view&who=region__0',
+ },
+ {
+ filters: ['||yandex.*/count/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://yabs.yandex.kz/count/',
+ },
+ {
+ filters: [
+ '||servedby-buysellads.com^$third-party,domain=~buysellads.com',
+ '||servedby-buysellads.com^',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.servedby-buysellads.com',
+ },
+ {
+ filters: ['||buysellads.com^$third-party', '||buysellads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.buysellads.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://auto.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['||cszz.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cszz.ru',
+ },
+ {
+ filters: ['/ad_img/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pbs.twimg.com/ad_img/',
+ },
+ {
+ filters: ['/static/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://cdn.egy.best/static/ads/',
+ },
+ {
+ filters: ['||baidu.com/x.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://datax.baidu.com/x.js?',
+ },
+ {
+ check: true,
+ filters: ['||superadexchange.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.superadexchange.com',
+ },
+ {
+ filters: ['/baynoteobserver/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://springer-www.baynote.net/baynote/tags3/baynoteObserver/',
+ },
+ {
+ filters: ['/api/analytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.wish.com/api/analytics/',
+ },
+ {
+ filters: ['||c.imedia.cz^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://c.imedia.cz',
+ },
+ {
+ filters: ['||clck.yandex.ru^$~other', '||clck.yandex.ru^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://clck.yandex.ru',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://drop.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['||fimg-resp.seznam.cz^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://fimg-resp.seznam.cz',
+ },
+ {
+ filters: ['||freegeoip.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://freegeoip.net',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: [
+ '||aexp-static.com/api/axpi/omniture/s_code_myca_context.js$domain=americanexpress.com',
+ ],
+ sourceUrl: 'https://global.americanexpress.com',
+ type: 'script',
+ url: 'https://www.aexp-static.com/api/axpi/omniture/s_code_myca_context.js',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://www.ndtv.com',
+ },
+ {
+ filters: ['@@||ndtv.com^$script,first-party'],
+ sourceUrl: 'https://www.ndtv.com',
+ type: 'script',
+ url: 'https://edata.ndtv.com',
+ },
+ {
+ filters: ['.org/adv/'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'http://boards.4chan.org/adv/',
+ },
+ {
+ filters: ['||yallboen.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.yallboen.com',
+ },
+ {
+ filters: ['@@||4cdn.org/adv/$image,xmlhttprequest,domain=4chan.org'],
+ sourceUrl: 'http://boards.4chan.org',
+ type: 'image',
+ url: 'http://i.4cdn.org/adv/',
+ },
+ {
+ filters: ['/dtagent630_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.hm.com/dtmonitor/dtagent630_jp_1305.js',
+ },
+ {
+ filters: ['/analyticsmediator.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wiley.com/_ui/shared/js/analyticsmediator.js',
+ },
+ {
+ filters: ['||adzerk.net^$third-party,domain=~strava.com', '||adzerk.net^', '.net/i.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://engine.adzerk.net/i.gif?',
+ },
+ {
+ filters: ['||webengage.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.widgets.webengage.com',
+ },
+ {
+ filters: ['||o-s.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.o-s.io',
+ },
+ {
+ filters: ['/afs/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.google.com/afs/ads/',
+ },
+ {
+ filters: ['||ritogaga.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ritogaga.com',
+ },
+ {
+ filters: ['/advertisment.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://img3.auto.cz/auto/skins/m.2016/js/advertisment.js',
+ },
+ {
+ check: true,
+ filters: [
+ '|https://$third-party,xmlhttprequest,domain=4chan.org|americanewshub.com|americasfreedomfighters.com|boredomtherapy.com|breakingnews.ie|bugout.news|cheapism.com|chicksonright.com|clashdaily.com|conservativeintel.com|conservativetribune.com|creepybasement.com|dccrimestories.com|eaglerising.com|freewarefiles.com|godfatherpolitics.com|grammarist.com|healthstatus.com|honesttopaws.com|instigatornews.com|janmorganmedia.com|knowledgedish.com|lastresistance.com|legalinsurrection.com|libertyalliance.com|lifebuzz.com|madworldnews.com|makeagif.com|mentalflare.com|natureworldnews.com|newser.com|patriotnewswire.com|readysethealth.com|rightwingtribune.com|rollingout.com|rpnewswire.com|sarahpalin.com|survivalnation.com|terezowens.com|thefreethoughtproject.com|thelibertydaily.com|thepolitistick.com|therealside.com|therightscoop.com|usherald.com|vgpie.com|westernjournalism.com|xtribune.com',
+ ],
+ sourceUrl: 'http://boards.4chan.org',
+ type: 'xhr',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||pushame.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pushame.com',
+ },
+ {
+ filters: ['||counter.tldw.me^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://counter.tldw.me',
+ },
+ {
+ filters: ['||dimml.io^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.dimml.io',
+ },
+ {
+ filters: ['||performax.cz^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://delivery.performax.cz',
+ },
+ {
+ filters: ['||nxtck.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://optout.nxtck.com',
+ },
+ {
+ filters: ['/integration?pixel='],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://i.ctnsnet.com/int/integration?pixel=42412771&nid=304042&cont=s',
+ },
+ {
+ filters: ['||analytics.edgekey.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://79423.analytics.edgekey.net',
+ },
+ {
+ filters: ['||pixel.cpex.cz^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pixel.cpex.cz',
+ },
+ {
+ check: true,
+ filters: [
+ '|http://$third-party,xmlhttprequest,domain=4chan.org|alfonzorachel.com|americanewshub.com|americasfreedomfighters.com|beforeitsnews.com|boredomtherapy.com|breakingnews.ie|bugout.news|cheapism.com|chicksonright.com|clashdaily.com|conservativeintel.com|conservativetribune.com|creepybasement.com|dailywire.com|dccrimestories.com|eaglerising.com|freedomdaily.com|freewarefiles.com|funnyand.com|gamerant.com|godfatherpolitics.com|grammarist.com|headcramp.com|healthstatus.com|hngn.com|honesttopaws.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|kdramastars.com|knowledgedish.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|libertyalliance.com|libertyunyielding.com|lifebuzz.com|madworldnews.com|makeagif.com|mentalflare.com|musictimes.com|natureworldnews.com|newser.com|parentherald.com|patriotnewswire.com|patriottribune.com|pickthebrain.com|readysethealth.com|realtytoday.com|rightwingtribune.com|rollingout.com|rpnewswire.com|sarahpalin.com|supercheats.com|survivalnation.com|terezowens.com|theblacksphere.net|thefreethoughtproject.com|thehayride.com|thelibertydaily.com|themattwalshblog.com|thepolitistick.com|therealside.com|therightscoop.com|universityherald.com|urbantabloid.com|usherald.com|vgpie.com|wakingtimes.com|westernjournalism.com|xtribune.com|youthhealthmag.com',
+ '@@||a.4cdn.org/*.json$xmlhttprequest,domain=4chan.org',
+ ],
+ sourceUrl: 'http://boards.4chan.org',
+ type: 'xhr',
+ url: 'http://a.4cdn.org/int/threads.json',
+ },
+ {
+ filters: ['||strossle.it^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://proxy.strossle.it',
+ },
+ {
+ filters: ['||adtlgc.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://code3.adtlgc.com',
+ },
+ {
+ check: true,
+ filters: ['||smartlook.com^$third-party', '||smartlook.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://rec.smartlook.com',
+ },
+ {
+ filters: ['_300_250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.yimg.jp/images/im/innerad/QC_300_250.jpg',
+ },
+ {
+ filters: ['||video-cdn.net/event?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ca.video-cdn.net/event?',
+ },
+ {
+ filters: ['||carbonads.com^$third-party', '||carbonads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.carbonads.com',
+ },
+ {
+ filters: ['/netmind-$script', '@@||spiegel.de/layout/js/http/netmind-$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://m.spiegel.de/layout/js/http/netmind-V8-57-1.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||adition.com^$important,domain=spiegel.de',
+ '||adition.com^$domain=spiegel.de',
+ '@@||imagesrv.adition.com/js/adition.js$domain=spiegel.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://imagesrv.adition.com/js/adition.js',
+ },
+ {
+ check: true,
+ filters: ['||carbonads.net^$third-party', '||carbonads.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://srv.carbonads.net',
+ },
+ {
+ filters: ['/urchin.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/urchin.js',
+ },
+ {
+ filters: ['||spklw.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://widgets.spklw.com',
+ },
+ {
+ filters: ['||buysellads.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn4.buysellads.net',
+ },
+ {
+ filters: ['/js/tracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.crunchyroll.com/versioned_assets/js/tracking/',
+ },
+ {
+ filters: ['||cb-content.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://static.cb-content.com',
+ },
+ {
+ filters: [
+ '||ioam.de/tx.io?$domain=autobild.de|focus.de|kabeleins.de|metal-hammer.de|musikexpress.de|prosieben.de|prosiebenmaxx.de|quoka.de|ran.de|rollingstone.de|sat1.de|sixx.de|spiegel.de|stern.de|tellows.de|transfermarkt.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['/nm_trck.gif?', '/nm_trck.gif?$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'image',
+ url: 'http://c.spiegel.de/nm_trck.gif?',
+ },
+ {
+ filters: ['-480x120.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn4.uzone.id/assets/uploads/others/uzone/Banner-480x120.jpg',
+ },
+ {
+ filters: [
+ '.ads1-',
+ '-adnow.$domain=~zappistore.com',
+ '||ads1-adnow.com^$third-party',
+ '/adv_out.',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st-n.ads1-adnow.com/js/adv_out.js',
+ },
+ {
+ filters: ['||aimatch.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://content.aimatch.com',
+ },
+ {
+ check: true,
+ filters: ['||adition.com/banner?$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://ad13.adfarm1.adition.com/banner?',
+ },
+ {
+ filters: ['/admp-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://admp-tc-vlmedia.adtlgc.com',
+ },
+ {
+ filters: ['||pushance.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pushance.com',
+ },
+ {
+ filters: ['/scripts/ads.', '@@||flvto.biz/scripts/ads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.flvto.biz/scripts/ads.js',
+ },
+ {
+ filters: ['/pagestat?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://admp-tc-vlmedia.adtlgc.com/event/v3/pagestat?',
+ },
+ {
+ filters: ['/arstat?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://admp-tc-vlmedia.adtlgc.com/event/v3/arstat?',
+ },
+ {
+ filters: ['||cint.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://collector.cint.com',
+ },
+ {
+ filters: ['||js.users.51.la^', '||users.51.la^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.users.51.la',
+ },
+ {
+ filters: ['||users-api.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sync.users-api.com',
+ },
+ {
+ filters: ['||static.parsely.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://static.parsely.com',
+ },
+ {
+ filters: [
+ '||google-analytics.com/analytics.js$domain=kabeleins.de|metal-hammer.de|musikexpress.de|prosieben.de|prosiebenmaxx.de|quoka.de|ran.de|rollingstone.de|sat1.de|sixx.de|spiegel.de|stern.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||adalliance.io^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://optout.adalliance.io',
+ },
+ {
+ filters: ['||emsservice.de^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://static.emsservice.de',
+ },
+ {
+ filters: [
+ '||emetriq.de^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|ran.de|sat1.de|sixx.de|spiegel.de|stern.de|transfermarkt.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://dyn.emetriq.de',
+ },
+ {
+ filters: [
+ '||yieldlab.net^$domain=spiegel.de',
+ '@@||ad.yieldlab.net^$script,domain=spiegel.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://ad.yieldlab.net',
+ },
+ {
+ filters: ['||flvto.biz/scripts/banners.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.flvto.biz/scripts/banners.php?',
+ },
+ {
+ filters: ['/show_ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.trfmxt.com/js/show_ads_mxttrf.js',
+ },
+ {
+ check: true,
+ filters: ['||bidder.criteo.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'xhr',
+ url: 'http://bidder.criteo.com',
+ },
+ {
+ filters: ['||xplosion.de^$domain=spiegel.de|stern.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://ups.xplosion.de',
+ },
+ {
+ filters: ['||g.doubleclick.net^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net',
+ },
+ {
+ filters: ['/js/tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dev.evernote.com/media/js/tracking.js',
+ },
+ {
+ filters: ['.lk/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.lk/ads/',
+ },
+ {
+ filters: ['.cn/s.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://s.union.360.cn/s.gif?',
+ },
+ {
+ filters: ['||googlesyndication.com/safeframe/$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'other',
+ url: 'http://tpc.googlesyndication.com/safeframe/',
+ },
+ {
+ filters: ['||rmtag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://intljs.rmtag.com',
+ },
+ {
+ filters: ['||theadex.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'image',
+ url: 'http://xpl.theadex.com',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://pagead2.googlesyndication.com',
+ },
+ {
+ filters: ['||meetrics.net^$domain=spiegel.de|stern.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://s240.meetrics.net',
+ },
+ {
+ filters: ['||mxcdn.net^$domain=spiegel.de|stern.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://s407.mxcdn.net',
+ },
+ {
+ filters: ['/log.htm?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://image.ruliweb.com/view/log.htm?',
+ },
+ {
+ filters: ['||user-api.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.user-api.com',
+ },
+ {
+ filters: ['.ads5-', '||ads5-adnow.com^$third-party', '/adnow-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://st-n.ads5-adnow.com/i/logo/adnow-v2.png',
+ },
+ {
+ filters: ['||flashtalking.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://servedby.flashtalking.com',
+ },
+ {
+ filters: ['/247px.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1af033869koo7.cloudfront.net/psp/cap1enterprise-v1-001/247px.js',
+ },
+ {
+ filters: ['||mplxtms.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure-cdn.mplxtms.com',
+ },
+ {
+ filters: ['||contentsfeed.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://linkback.contentsfeed.com',
+ },
+ {
+ filters: ['||bfmio.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ioms.bfmio.com',
+ },
+ {
+ check: true,
+ filters: ['/ad3.$domain=~ad3.eu|~vereinslinie.de'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ad3.adfarm1.adition.com',
+ },
+ {
+ filters: [
+ '||mediaplex.com^',
+ '||mediaplex.com^$third-party',
+ '||mediaplex.com^*/universal.html',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://secure.img-cdn.mediaplex.com/0/2399/universal.html',
+ },
+ {
+ check: true,
+ filters: ['||adfarm.mediaplex.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adfarm.mediaplex.com',
+ },
+ {
+ filters: ['/assets/analytics:', '@@||sahibinden.com/assets/analytics*.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.sahibinden.com/assets/analytics:1.js',
+ },
+ {
+ filters: ['||247-inc.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tie.247-inc.net',
+ },
+ {
+ filters: ['||a.ligatus.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://a.ligatus.com',
+ },
+ {
+ filters: ['||doublepimp.com^$third-party', '||doublepimp.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.doublepimp.com',
+ },
+ {
+ filters: ['||cloudfront.net/sentinel.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d3avqv6zaxegeu.cloudfront.net/sentinel.js',
+ },
+ {
+ filters: ['||go.com/stat/', '/dolWebAnalytics.', '@@||go.com/stat/dolwebanalytics.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://global.go.com/stat/dolWebAnalytics.js',
+ },
+ {
+ filters: ['||go.com/capmon/GetDE/?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tredir.go.com/capmon/GetDE/?',
+ },
+ {
+ filters: ['||fwmrm.net^$third-party,script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mssl.fwmrm.net',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com^$script,important,domain=thefreedictionary.com',
+ '@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$domain=slideplayer.com|tampermonkey.net|thefreedictionary.com',
+ ],
+ sourceUrl: 'http://www.thefreedictionary.com',
+ type: 'script',
+ url: 'http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js',
+ },
+ {
+ filters: ['/api/tracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.grammarly.com/api/tracking/',
+ },
+ {
+ filters: ['||crunchyroll.com/tracker', '/tracker?*='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.crunchyroll.com/tracker?t=px&v=fp&k=911979&p=n',
+ },
+ {
+ filters: ['||pubwise.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.pubwise.io',
+ },
+ {
+ filters: ['/hc/tracking/*', '/tracking/events?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://yardim.sahibinden.com/hc/tracking/events?',
+ },
+ {
+ filters: ['/global/tracker.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://fb.ru/misc/js/global/tracker.js',
+ },
+ {
+ filters: ['||3gl.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://g.3gl.net',
+ },
+ {
+ filters: ['/bnrsrv.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://a.farlex.com/_/bnrsrv.ashx',
+ },
+ {
+ filters: ['/img/ads/*', '/ads/ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.idntimes.com/assets/img/ads/ad-icon.png',
+ },
+ {
+ filters: ['/ad-loading.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.idntimes.com/assets/img/ads/ad-loading.gif',
+ },
+ {
+ filters: ['||inspectlet.com^', '||inspectlet.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.inspectlet.com',
+ },
+ {
+ filters: ['||adform.net^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'image',
+ url: 'http://dmp.adform.net',
+ },
+ {
+ filters: ['/tagmanager/pptm.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.paypal.com/tagmanager/pptm.js',
+ },
+ {
+ filters: ['||academia.edu/record_hit'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.academia.edu/record_hit',
+ },
+ {
+ filters: ['||teads.tv^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://a.teads.tv',
+ },
+ {
+ filters: ['||merlin.abc.go.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://merlin.abc.go.com',
+ },
+ {
+ filters: ['||cwkuki.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.cwkuki.com',
+ },
+ {
+ filters: [
+ '@@||pagead2.googlesyndication.com/pagead/$script,domain=gsmarena.com|merriam-webster.com',
+ ],
+ sourceUrl: 'https://www.merriam-webster.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/',
+ },
+ {
+ filters: ['||qq.com/stats?', '/stats?sid='],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://tajs.qq.com/stats?sId=36778060',
+ },
+ {
+ filters: ['||go.com/disneyid/responder?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://abcnews.go.com/disneyid/responder?',
+ },
+ {
+ filters: ['||yunshipei.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.yunshipei.com',
+ },
+ {
+ filters: ['||marinsm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.marinsm.com',
+ },
+ {
+ filters: ['||tracker.marinsm.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.marinsm.com',
+ },
+ {
+ filters: ['||ga.clearbit.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ga.clearbit.com',
+ },
+ {
+ filters: ['||microsoft.com/Collector/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://browser.pipe.aria.microsoft.com/Collector/',
+ },
+ {
+ filters: ['||prfct.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel-geo.prfct.co',
+ },
+ {
+ filters: ['||nakanohito.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bs.nakanohito.jp',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=hdzog.com'],
+ sourceUrl: 'https://m.hdzog.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ check: true,
+ filters: ['||adnxs.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'image',
+ url: 'http://ib.adnxs.com',
+ },
+ {
+ filters: ['||2mdn.net^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'https://s0.2mdn.net',
+ },
+ {
+ filters: ['||smartadserver.com^$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'image',
+ url: 'https://rtb-csync.smartadserver.com',
+ },
+ {
+ filters: ['||googlesyndication.com/sodar/$domain=spiegel.de'],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://tpc.googlesyndication.com/sodar/',
+ },
+ {
+ filters: ['||prf.hn^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aos-creative.prf.hn',
+ },
+ {
+ filters: ['||affec.tv^$third-party', '||affec.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.affec.tv',
+ },
+ {
+ filters: ['/amp.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://amp.akamaized.net/amp.gif?',
+ },
+ {
+ filters: ['||brsrvr.com^$third-party', '/br-trk-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdns.brsrvr.com/v1/br-trk-5407.js',
+ },
+ {
+ filters: ['||airpr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://px.airpr.com',
+ },
+ {
+ filters: ['||c.microsoft.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.microsoft.com',
+ },
+ {
+ filters: ['||estara.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://as00.estara.com',
+ },
+ {
+ filters: ['||qtmojo.com/pixel?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.qtmojo.com/pixel?',
+ },
+ {
+ filters: ['||reachmax.cn^$third-party', '/rm.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://m.reachmax.cn/rm.gif?',
+ },
+ {
+ filters: ['||vamaker.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.vamaker.com',
+ },
+ {
+ filters: ['||fugetech.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://its.fugetech.com',
+ },
+ {
+ filters: ['/ad.slot.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.inven.co.kr/common/lib/js/ad.slot.js',
+ },
+ {
+ filters: ['||metrics.brightcove.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://metrics.brightcove.com',
+ },
+ {
+ check: true,
+ filters: ['||247realmedia.com^$third-party', '/realmedia/ads/*', '/adstream_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://oasc17.247realmedia.com/RealMedia/ads/adstream_mjx.ads',
+ },
+ {
+ filters: ['||fb.ru/stat/'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://fb.ru/stat/',
+ },
+ {
+ filters: ['/cms.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://bx01.optimix.asia/cms.gif?',
+ },
+ {
+ check: true,
+ filters: ['/ads/creatives/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.oas-c17.adnxs.com/RealMedia/ads/Creatives/',
+ },
+ {
+ filters: ['||analytics.newscred.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://analytics.newscred.com',
+ },
+ {
+ filters: ['||aio.media^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.aio.media',
+ },
+ {
+ filters: ['/metrics/metrics'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.usps.com/m/assets/scripts/metrics/metrics-all.js',
+ },
+ {
+ filters: ['/detm-container-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.att.com/scripts/adobe/virtual/detm-container-hdr.js',
+ },
+ {
+ filters: ['||resonance.pk^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://player.resonance.pk',
+ },
+ {
+ filters: ['&ad_type_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/favicon.ico?&ad_type_',
+ },
+ {
+ filters: ['/yieldmanager/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure.footprint.net/yieldmanager/',
+ },
+ {
+ filters: ['||stats.merriam-webster.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stats.merriam-webster.com',
+ },
+ {
+ filters: ['/stats/lookup?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.merriam-webster.com/lapi/v1/mwol-search/stats/lookup?',
+ },
+ {
+ filters: ['||stat-rock.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://cdn.stat-rock.com',
+ },
+ {
+ filters: ['/gtm/gtm-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://d1t2rd51fys1kv.cloudfront.net/js/gtm/gtm-8f522b0bea.json',
+ },
+ {
+ filters: ['||counter.rambler.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://counter.rambler.ru',
+ },
+ {
+ filters: ['||top100-images.rambler.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://top100-images.rambler.ru',
+ },
+ {
+ check: true,
+ filters: [
+ '||hdzog.com^$first-party,xmlhttprequest',
+ '@@||hdzog.com/player/timelines.php?$first-party,xmlhttprequest',
+ ],
+ sourceUrl: 'https://m.hdzog.com',
+ type: 'xhr',
+ url: 'https://m.hdzog.com/player/timelines.php?',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||omtrdc.net^*/mbox/json?$xmlhttprequest,domain=argos.co.uk|att.com|swisscom.ch|t-mobile.com',
+ ],
+ sourceUrl: 'https://www.att.com',
+ type: 'xhr',
+ url: 'https://attservicesinc.tt.omtrdc.net/m2/attservicesinc/mbox/json?',
+ },
+ {
+ filters: ['/getbanner.php?', '.php?zone_id='],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads.livetvcdn.net//getbanner.php?zone_id=91&rnd=618003853',
+ },
+ {
+ check: true,
+ filters: ['||top.mail.ru^$third-party', '||top.mail.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://d3.c3.b1.a1.top.mail.ru',
+ },
+ {
+ filters: ['||captifymedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://rd.captifymedia.com',
+ },
+ {
+ filters: ['/adrum-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eum.lotto24.de/adrum/adrum-ext.99c2fcc5ccc30ea4d38a1a74eeb7a6a6.js',
+ },
+ {
+ filters: ['/fp/clear.png?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fp.tongdun.net/fp/clear.png?',
+ },
+ {
+ filters: ['||tagsrvcs.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.tagsrvcs.com',
+ },
+ {
+ filters: ['||webmd.com/pixel/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://img.webmd.com/pixel/',
+ },
+ {
+ filters: ['||ls.webmd.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ls.webmd.com',
+ },
+ {
+ filters: ['||akamaihd.net/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://qsearch-a.akamaihd.net/log?',
+ },
+ {
+ filters: ['||cpx.to^', '||cpx.to^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://p.cpx.to',
+ },
+ {
+ filters: ['/trackingCode.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fast.fonts.net/t/trackingCode.js',
+ },
+ {
+ check: true,
+ filters: ['||mouseflow.com^$third-party', '||mouseflow.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.mouseflow.com',
+ },
+ {
+ filters: ['||unid.go.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.unid.go.com',
+ },
+ {
+ filters: ['||trkn.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trkn.us',
+ },
+ {
+ filters: ['/advt.$domain=~advt.ch'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://advt.manoramaonline.com',
+ },
+ {
+ filters: [
+ '||conative.de^$domain=spiegel.de',
+ '@@||conative.de/serve/domain/158/config.js$domain=spiegel.de',
+ ],
+ sourceUrl: 'http://m.spiegel.de',
+ type: 'script',
+ url: 'http://cdn.conative.de/serve/domain/158/config.js',
+ },
+ {
+ filters: ['/detm_adobe.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.att.com/scripts/adobe/prod/detm_adobe.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||hdzog.com^$first-party,xmlhttprequest',
+ '@@||hdzog.com/player/timelines.php?$first-party,xmlhttprequest',
+ ],
+ sourceUrl: 'https://m.hdzog.com',
+ type: 'xhr',
+ url: 'https://m.hdzog.com/player/timelines.php?',
+ },
+ {
+ filters: ['||lytics.io^', '||lytics.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.lytics.io',
+ },
+ {
+ filters: ['||segments.adap.tv^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://segments.adap.tv',
+ },
+ {
+ filters: ['||specificclick.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mpp.specificclick.net',
+ },
+ {
+ filters: ['||andbeyond.media^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rtbcdn.andbeyond.media',
+ },
+ {
+ check: true,
+ filters: ['/ad4.$domain=~ad4.wpengine.com|~vereinslinie.de'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ad4.adfarm1.adition.com',
+ },
+ {
+ filters: ['/track/impression?'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://imp.control.kochava.com/track/impression?',
+ },
+ {
+ filters: ['/imp?slot='],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adn.inven.co.kr/imp?slot=1653&type=if&ibt=ns1459',
+ },
+ {
+ filters: ['||sitelabweb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://colrep.sitelabweb.com',
+ },
+ {
+ filters: ['/tongji.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.guancha.cn/js/tongji.js',
+ },
+ {
+ filters: ['/tracker_pageview.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.coursehero.com/ajax/tracker_pageview.php',
+ },
+ {
+ filters: ['/adview/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.elfagr.com/adview/',
+ },
+ {
+ filters: ['/upload/ads/*$domain=~ads.ae'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.elfagr.com/upload/ads/',
+ },
+ {
+ filters: ['||dsh7ky7308k4b.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dsh7ky7308k4b.cloudfront.net',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$script,important,domain=champion.gg|gsmarena.com'],
+ sourceUrl: 'https://m.gsmarena.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: ['/utm.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://tcc.conative.de/cotracking/utm.gif?',
+ },
+ {
+ filters: ['||widerplanet.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adtg.widerplanet.com',
+ },
+ {
+ filters: ['@@||adservice.google.*/integrator.js$domain=gsmarena.com|nydailynews.com'],
+ sourceUrl: 'https://m.gsmarena.com',
+ type: 'script',
+ url: 'https://adservice.google.de/adsid/integrator.js',
+ },
+ {
+ filters: ['||adtng.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://a.adtng.com',
+ },
+ {
+ filters: ['||admatrix.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync-tapi.admatrix.jp',
+ },
+ {
+ filters: ['/adx-exchange.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adx-exchange.toast.com',
+ },
+ {
+ check: true,
+ filters: ['/ads/click_'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://ls.webmd.com/RealMedia/ads/click_lx.ads',
+ },
+ {
+ filters: ['/scripts/tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.usps.com/m/assets/scripts/tracking.js',
+ },
+ {
+ filters: ['/stats/tracker.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://about.att.com/libs/wcm/stats/tracker.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||hdzog.com^$first-party,xmlhttprequest',
+ '@@||hdzog.com/player/timelines.php?$first-party,xmlhttprequest',
+ ],
+ sourceUrl: 'https://m.hdzog.com',
+ type: 'xhr',
+ url: 'https://m.hdzog.com/player/timelines.php?',
+ },
+ {
+ filters: ['@@||mssl.fwmrm.net/p/abc_live/$script,domain=abc.go.com'],
+ sourceUrl: 'https://abc.go.com',
+ type: 'script',
+ url: 'https://mssl.fwmrm.net/p/abc_live/',
+ },
+ {
+ filters: ['@@||v.fwmrm.net/ad/g/1$script,domain=abc.go.com'],
+ sourceUrl: 'https://abc.go.com',
+ type: 'script',
+ url: 'https://2912a.v.fwmrm.net/ad/g/1',
+ },
+ {
+ filters: ['||zedo.com^$third-party', '||zedo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://3407.tm.zedo.com',
+ },
+ {
+ filters: ['||c3tag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://694-ct.c3tag.com',
+ },
+ {
+ filters: ['/adsetup.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://oasjs.kataweb.it/adsetup.js',
+ },
+ {
+ filters: ['_160x600_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/8169043/1525127277764/LBK_swoosh_160x600_1.png',
+ },
+ {
+ filters: ['/160x600_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/8169043/1525127277764/160x600_bg.jpg',
+ },
+ {
+ filters: ['||stat.eagleplatform.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://lentaru.stat.eagleplatform.com',
+ },
+ {
+ filters: ['/advertisement_'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://lentaru.media.eagleplatform.com/player/plugins/advertisement_skin',
+ },
+ {
+ filters: ['||madsone.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eu2.madsone.com',
+ },
+ {
+ filters: ['/telegraph-advertising/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.telegraph.co.uk/telegraph-advertising/',
+ },
+ {
+ filters: ['||count.spiegel.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://count.spiegel.de',
+ },
+ {
+ filters: ['/wt.js?http'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.kataweb.it/wt/wt.js?https%3A%2F%2Fwww.repubblica.it%2F',
+ },
+ {
+ filters: ['.ru/ads/', '/160x600.', '160x600.gif|'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://teasers.ru/ads/160x600.gif',
+ },
+ {
+ filters: ['||smartnews-ads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.smartnews-ads.com',
+ },
+ {
+ filters: ['/beacon.html?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://js.fout.jp/beacon.html?',
+ },
+ {
+ filters: ['||adspruce.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sdk.adspruce.com',
+ },
+ {
+ filters: ['||nativeads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb.nativeads.com',
+ },
+ {
+ filters: ['||mynativeplatform.com/pub2/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cks.mynativeplatform.com/pub2/',
+ },
+ {
+ filters: ['||pixel.s3xified.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.s3xified.com',
+ },
+ {
+ filters: ['||altitude-arena.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.altitude-arena.com',
+ },
+ {
+ filters: ['||videostat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dsp.videostat.com',
+ },
+ {
+ filters: ['||switchadhub.com^$third-party', '||switchadhub.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://delivery.h.switchadhub.com',
+ },
+ {
+ filters: ['||lfstmedia.com^$third-party', '||lfstmedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.lfstmedia.com',
+ },
+ {
+ filters: ['||grapeshot.co.uk^$third-party', '||grapeshot.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://telegraph.grapeshot.co.uk',
+ },
+ {
+ filters: ['||adtelligent.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://files-service.adtelligent.com',
+ },
+ {
+ filters: ['||adkernel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.adkernel.com',
+ },
+ {
+ filters: ['||delivery.porn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://delivery.porn.com',
+ },
+ {
+ filters: ['||wcfbc.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fbc.wcfbc.net',
+ },
+ {
+ filters: ['/display_ad'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dmm.com/js/marketing/display_ad.js',
+ },
+ {
+ filters: ['/ak-ads-', '-ads-ns.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ak-ads-ns.prisasd.com',
+ },
+ {
+ filters: ['||impressionmonster.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.impressionmonster.com',
+ },
+ {
+ filters: [
+ '/opentag-',
+ '@@||cloudfront.net/opentag-*.js$domain=mackweldon.com|telegraph.co.uk',
+ ],
+ sourceUrl: 'https://www.telegraph.co.uk',
+ type: 'script',
+ url: 'https://d3c3cq33003psk.cloudfront.net/opentag-35657-1096944.js',
+ },
+ {
+ filters: ['@@||exoclick.com/ad_track.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.exoclick.com/ad_track.js',
+ },
+ {
+ filters: ['/advanced-ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rolloid.net/wp-content/plugins/advanced-ads/',
+ },
+ {
+ filters: ['/advanced-ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rolloid.net/wp-content/plugins/advanced-ads-responsive',
+ },
+ {
+ filters: ['||jubna.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jubna.com',
+ },
+ {
+ filters: ['||ekg.riotgames.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ekg.riotgames.com',
+ },
+ {
+ filters: ['/house_ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://weblio.hs.llnwd.net/e2/css/smp/house_ad_on_load_modal.css',
+ },
+ {
+ filters: ['&ad_height='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.twitter.com/favicon.ico?&ad_height=',
+ },
+ {
+ filters: ['&ad_type='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://connect.facebook.net/favicon.ico?&ad_type=',
+ },
+ {
+ filters: ['||kitbit.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://kitbit.net',
+ },
+ {
+ filters: ['||facetz.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://front.facetz.net',
+ },
+ {
+ filters: ['/728x90.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://fb.ru/adv/728x90.jpg',
+ },
+ {
+ filters: ['||zm232.com^$third-party', '||zm232.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://zm232.com',
+ },
+ {
+ filters: ['||opentag-stats.qubit.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://opentag-stats.qubit.com',
+ },
+ {
+ filters: ['||automatad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.automatad.com',
+ },
+ {
+ filters: ['||trustpilot.com/stats/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://widget.trustpilot.com/stats/',
+ },
+ {
+ filters: ['||cccpmo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.cccpmo.com',
+ },
+ {
+ filters: ['/adverts/*', '/ad-400.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://hm732.com/adverts/ad-400.js',
+ },
+ {
+ filters: ['||stat.sputnik.ru^', '/cnt.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.sputnik.ru/cnt.js',
+ },
+ {
+ filters: ['||infinity-tracking.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ict.infinity-tracking.net',
+ },
+ {
+ filters: ['||akamaihd.net/bping.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://qsearch-a.akamaihd.net/bping.php?',
+ },
+ {
+ filters: ['/vuukle-analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vuukle-analytics.appspot.com',
+ },
+ {
+ check: true,
+ filters: ['||oriel.io^$third-party', '@@||advertising.oriel.io^$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://advertising.oriel.io',
+ },
+ {
+ filters: ['@@||query.petametrics.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://query.petametrics.com',
+ },
+ {
+ filters: ['_beacon?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://archiveofourown.org/ngx_pagespeed_beacon?',
+ },
+ {
+ filters: ['||exponential.com^$third-party', '||exponential.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.expo9.exponential.com',
+ },
+ {
+ filters: ['||neodatagroup.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://js-ssl.neodatagroup.com',
+ },
+ {
+ filters: ['||mycdn2.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://p282054.mycdn2.co',
+ },
+ {
+ filters: ['||eproof.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.eproof.com',
+ },
+ {
+ filters: ['||intermarkets.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.intermarkets.net',
+ },
+ {
+ filters: ['||pubguru.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.pubguru.com',
+ },
+ {
+ filters: ['||awin1.com^', '||awin1.com^$third-party', '||awin1.com/cshow.php$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.awin1.com/cshow.php',
+ },
+ {
+ filters: ['/affiliate/banner/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://files.bs-motoparts.eu/Affiliate/Banner/',
+ },
+ {
+ filters: ['/displayad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.tribalfusion.com/displayAd.js',
+ },
+ {
+ check: true,
+ filters: ['||quantcast.com^$third-party', '||quantcast.com^', '||widget.quantcast.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://widget.quantcast.com',
+ },
+ {
+ filters: ['||quantserve.com/pixel;'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.quantserve.com/pixel;ref=https:',
+ },
+ {
+ filters: ['.com/ga.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.google-analytics.com/ga.js?',
+ },
+ {
+ filters: ['/smetrics.*/b/ss/*', '||smetrics.att.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://smetrics.att.com/b/ss/',
+ },
+ {
+ filters: ['||d2oh4tlt9mrke9.cloudfront.net^', '/sessioncam.recorder.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2oh4tlt9mrke9.cloudfront.net/Record/js/sessioncam.recorder.js',
+ },
+ {
+ filters: ['/onetag/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://na5.thunderhead.com/one/rt/web/onetag/',
+ },
+ {
+ filters: ['||sessioncam.com^', '||sessioncam.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ws.sessioncam.com',
+ },
+ {
+ filters: ['||answerscloud.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gateway.answerscloud.com',
+ },
+ {
+ filters: ['@@||cdn.shopify.com^*/javascripts/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.shopify.com/static/javascripts/',
+ },
+ {
+ filters: ['||provenpixel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://upx.provenpixel.com',
+ },
+ {
+ filters: ['/adrum.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.intuit.com/etc/designs/phoenix/appDynamics/adrum.js',
+ },
+ {
+ filters: ['||therubiqube.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://store.therubiqube.com',
+ },
+ {
+ filters: ['||thewhizmarketing.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.thewhizmarketing.com',
+ },
+ {
+ filters: ['||ip-api.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'http://ip-api.com',
+ },
+ {
+ filters: ['&ad_box_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/1635909/1x1image.jpg?&ad_box_',
+ },
+ {
+ filters: ['||eum-appdynamics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://col.eum-appdynamics.com',
+ },
+ {
+ filters: ['||widgethost.barnebys.com^$third-party', '||barnebys.com/widgets/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://widgethost.barnebys.com/widgets/',
+ },
+ {
+ filters: ['||pptv.com/webdelivery/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://de.as.pptv.com/webdelivery/',
+ },
+ {
+ filters: ['||digidip.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.digidip.net',
+ },
+ {
+ filters: ['||demand.supply^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://live.demand.supply',
+ },
+ {
+ filters: ['/particles/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cf.eip.telegraph.co.uk/particle-CMS/particles/analytics.js',
+ },
+ {
+ filters: ['||mainadv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.mainadv.com',
+ },
+ {
+ filters: ['/__ssobj/core.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://quickbooks.intuit.com/__ssobj/core.js',
+ },
+ {
+ filters: ['||heatmap.it^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://u.heatmap.it',
+ },
+ {
+ filters: ['||omguk.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.omguk.com',
+ },
+ {
+ filters: ['||torvind.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://torvind.com',
+ },
+ {
+ filters: ['||ssl-services.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://retarget.ssl-services.com',
+ },
+ {
+ filters: ['||mrelko.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://mrelko.com',
+ },
+ {
+ filters: ['||rbnt.org^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://t01.rbnt.org',
+ },
+ {
+ filters: ['||luxup.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://luxup.ru',
+ },
+ {
+ filters: ['/__ssobj/sync?$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://search2.payroll.com/__ssobj/sync?',
+ },
+ {
+ filters: ['/adsonphoto/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://advt.manoramaonline.com/2016/adsonphoto/',
+ },
+ {
+ filters: ['||datawrkz.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adunit.datawrkz.com',
+ },
+ {
+ filters: ['||seedtag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://config.seedtag.com',
+ },
+ {
+ filters: ['||rem-track.bild.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rem-track.bild.de',
+ },
+ {
+ filters: ['/analytics/engine/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.plug.it/iplug/js/lib/iol/analytics/engine/',
+ },
+ {
+ filters: ['||plug.it^*/iol_evnt.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.plug.it/iplug/js/lib/iol/evnt/iol_evnt.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||doubleclick.net^$third-party,domain=augsburger-allgemeine.de|autobild.de|bild.de|buffed.de|bundesliga.de|cnet.de|computerbild.de|dashausanubis.de|de.msn.com|dooloop.tv|eyep.tv|filmjunkies.de|flashgames.de|focus.de|gameone.de|gamepro.de|gamesaktuell.de|gamestar.de|gameswelt.at|gameswelt.ch|gameswelt.de|gameswelt.tv|gamezone.de|gzsz.rtl.de|hatenight.com|homerj.de|icarly.de|kino.de|kochbar.de|laola1.tv|lustich.de|motorvision.de|myvideo.at|myvideo.ch|myvideo.de|n-tv.de|onlinewelten.com|pcgames.de|pcgameshardware.de|pcwelt.de|radio.de|ran.de|rtlregional.de|southpark.de|spiegel.tv|spiele-zone.de|spongebob.de|sport.de|spox.com|spreeradio.de|t-online.de|teleboerse.de|the-hills.tv|trailerseite.de|tvmovie.de|video.de|videogameszone.de|vip.de|vodafonelive.de|vox.de|welt.de|wetter.de|wetterschnecken.de|wikifit.de|www.rtl2.de|zdnet.de',
+ ],
+ sourceUrl: 'https://m.bild.de',
+ type: 'image',
+ url: 'https://cm.g.doubleclick.net',
+ },
+ {
+ filters: ['|https://$image,script,third-party,xmlhttprequest,domain=vporn.com'],
+ sourceUrl: 'https://www.vporn.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||t.wayfair.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://t.wayfair.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||evnt.iol.it^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://evnt.iol.it',
+ },
+ {
+ filters: ['/ads/adv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.plug.it/iplug/js/lib/iol/analytics/ads/adv/',
+ },
+ {
+ filters: ['/Tag.eng$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://engine.phn.doublepimp.com/Tag.engine',
+ },
+ {
+ filters: ['||azurewebsites.net^*/telemetry.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://moprd-cdnservice-uw1.azurewebsites.net/telemetryapi/1/telemetry.js',
+ },
+ {
+ filters: ['||reson8.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ds.reson8.com',
+ },
+ {
+ filters: ['||karma.mdpcdn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://karma.mdpcdn.com',
+ },
+ {
+ filters: ['/getad.$domain=~getad.pl'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adbutler-fermion.com/getad.img',
+ },
+ {
+ check: true,
+ filters: ['||servedbyadbutler.com^$third-party', '||servedbyadbutler.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://servedbyadbutler.com',
+ },
+ {
+ filters: ['||fishki.net/code?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://engine.fishki.net/code?',
+ },
+ {
+ filters: ['||adup-tech.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rtb.d.adup-tech.com',
+ },
+ {
+ filters: ['||fishki.net/counter/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.fishki.net/counter/',
+ },
+ {
+ filters: ['/advert-$domain=~advert-technology.com|~advert-technology.ru'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.yumpu.com/62164170/1/216x306/advert-catalogue-23102018.jpg',
+ },
+ {
+ filters: ['/tracking/tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.yumpu.com/release/kLnkY0kNyn/v4/js/modules/tracking/tracking.js',
+ },
+ {
+ filters: ['||selectablemedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.selectablemedia.com',
+ },
+ {
+ filters: [
+ '@@||aolcdn.com^*/adsWrapper.$domain=aol.com|engadget.com|games.com|huffingtonpost.com|mapquest.com|stylelist.ca',
+ ],
+ sourceUrl: 'https://www.engadget.com',
+ type: 'script',
+ url: 'https://o.aolcdn.com/ads/adsWrapper.min.js',
+ },
+ {
+ filters: ['||ad-score.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://data.ad-score.com',
+ },
+ {
+ filters: ['/json/tracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://account.y8.com/api/v1/json/tracking/',
+ },
+ {
+ filters: ['/adtech-'],
+ sourceUrl: 'https://foo.com',
+ type: 'font',
+ url: 'https://static.telegraph.co.uk/adtech-static',
+ },
+ {
+ filters: ['/gemius.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://iwa.iplsc.com/gemius.js',
+ },
+ {
+ filters: ['/iwa.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://iwa.iplsc.com/iwa.js',
+ },
+ {
+ filters: ['/hit.t?', '||interia.pl^*/hit.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://iwa.hit.interia.pl/3/hit.t?',
+ },
+ {
+ filters: ['||mixmarket.biz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tr.mixmarket.biz',
+ },
+ {
+ filters: ['/hit.c?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://iwa.hit.interia.pl/3/hit.c?',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=uptobox.com|uptostream.com'],
+ sourceUrl: 'https://uptobox.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||gstatic.com^$script,domain=uptobox.com|uptostream.com'],
+ sourceUrl: 'https://uptobox.com',
+ type: 'script',
+ url: 'https://www.gstatic.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||bugherd.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bugherd.com',
+ },
+ {
+ filters: ['||hub.com.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://e.hub.com.pl',
+ },
+ {
+ filters: ['/thetracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://awscdn.detik.net.id/LogAnalysisTracker/thetracker.js',
+ },
+ {
+ filters: ['/ads2/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://emisja.adsearch.pl/_/ads2/',
+ },
+ {
+ check: true,
+ filters: ['||aktrack.pubmatic.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://aktrack.pubmatic.com',
+ },
+ {
+ filters: ['||l.sharethis.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://l.sharethis.com',
+ },
+ {
+ filters: ['||nsaudience.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gdpr.api.dmp.nsaudience.pl',
+ },
+ {
+ filters: ['||facebook.com/method/links.getStats?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.facebook.com/method/links.getStats?',
+ },
+ {
+ filters: ['||zukxd6fkxqn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.zukxd6fkxqn.com',
+ },
+ {
+ filters: ['||beacon.rum.dynapis.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://beacon.rum.dynapis.com',
+ },
+ {
+ filters: ['/adchoices.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static-assets.bleacherreport.com/img/molecules/footer/adChoices.png',
+ },
+ {
+ filters: ['||monetate.net^', '||monetate.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://se.monetate.net',
+ },
+ {
+ filters: ['||beacon.livefyre.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://beacon.livefyre.com',
+ },
+ {
+ filters: ['&adserv='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.iplsc.com/inpl.adb/1.0.20/empt.js?t=1&adserv=1',
+ },
+ {
+ filters: ['/rt_tag.', '_tag.ofs.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.emol.cl/emol50/js/rt_tag.ofs.js',
+ },
+ {
+ filters: ['||mparticle.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jssdkcdns.mparticle.com',
+ },
+ {
+ filters: ['||kinoprogramm.bild.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kinoprogramm.bild.de',
+ },
+ {
+ filters: ['||stats.mos.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.mos.ru',
+ },
+ {
+ filters: ['||adxion.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pn2.adxion.com',
+ },
+ {
+ filters: ['||admedia.com^$third-party', '||admedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.admedia.com',
+ },
+ {
+ filters: ['/rtracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rtracker.emol.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/google_ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gampad/google_ads.js',
+ },
+ {
+ filters: ['||adswizz.com^', '||adswizz.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://synchroscript.deliveryengine.adswizz.com',
+ },
+ {
+ filters: ['||commander1.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://klm.commander1.com',
+ },
+ {
+ filters: ['/advert_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://rutube.ru/player/advert_support.js',
+ },
+ {
+ filters: ['||sundaysky.com/vop/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1-res.sundaysky.com/vop/',
+ },
+ {
+ check: true,
+ filters: ['||youboranqs01.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://nqs-nl12-c2.youboranqs01.com',
+ },
+ {
+ filters: ['://promo.$third-party', '||awempire.com^$third-party', '||awempire.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://promo.awempire.com',
+ },
+ {
+ filters: ['/performance_timing/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.wayfair.com/a/performance_timing/log?',
+ },
+ {
+ filters: ['/tracking/referrer?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.wayfair.com/a/account/tracking/referrer?',
+ },
+ {
+ filters: ['||spotx.tv^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.spotx.tv',
+ },
+ {
+ check: true,
+ filters: [
+ '/ads/directory/*',
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['||classistatic.com^*/sponsors/', '/sponsors/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ca.classistatic.com/static/V/7249.2/js/sponsors/ads/',
+ },
+ {
+ filters: ['||pulsar.ebay.$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pulsar.ebay.com',
+ },
+ {
+ check: true,
+ filters: ['||vra.outbrain.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vra.outbrain.com',
+ },
+ {
+ filters: ['||spotxcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.spotxcdn.com',
+ },
+ {
+ filters: ['||addroplet.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.addroplet.com',
+ },
+ {
+ filters: ['||plista.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-uk.plista.com',
+ },
+ {
+ filters: ['/ads/bottom/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.cam4.com/ads/bottom/',
+ },
+ {
+ filters: ['||tgdaudience.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://traffic.tgdaudience.com',
+ },
+ {
+ check: true,
+ filters: ['||hltv.org/*php|'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geo2.hltv.org/rekl13.php',
+ },
+ {
+ filters: ['||cloudfront.net/?a='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d2q1qtsl33ql2r.cloudfront.net/?a=5b3033e2f4d14cbeb159bce2147902d5',
+ },
+ {
+ filters: ['||mmtro.com^', '||mmtro.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mmtro.com',
+ },
+ {
+ filters: ['||static.hltv.org/*images/retina2/*$image,first-party'],
+ sourceUrl: 'https://www.hltv.org',
+ type: 'image',
+ url: 'https://static.hltv.org//images/retina2/',
+ },
+ {
+ filters: ['||c8.net.ua^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://match.c8.net.ua',
+ },
+ {
+ filters: ['||collector.snplow.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://com-rypl-main.collector.snplow.net',
+ },
+ {
+ filters: ['/336x280_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://client.bannerspace.net/016375/336x280_ret_JS7_2586.jpg',
+ },
+ {
+ filters: ['||4dsply.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://engine.4dsply.com',
+ },
+ {
+ filters: ['||pushnative.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.pushnative.com',
+ },
+ {
+ filters: ['/globalAdTag.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.interactivemedia.net/live/t-o-home/live/globalAdTag.min.js',
+ },
+ {
+ filters: ['||trbo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-v2.trbo.com',
+ },
+ {
+ filters: ['||yieldlove.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-a.yieldlove.com',
+ },
+ {
+ filters: ['||getclicky.com^', '||getclicky.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.getclicky.com',
+ },
+ {
+ filters: ['||ptengine.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cjs.ptengine.com',
+ },
+ {
+ filters: ['||gaug.es^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.gaug.es',
+ },
+ {
+ filters: ['/in.getclicky.com/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://in.getclicky.com/',
+ },
+ {
+ check: true,
+ filters: ['||ad4mat.de^$third-party', '||ad4mat.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.ad4mat.de',
+ },
+ {
+ filters: ['||giraff.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://code.giraff.io',
+ },
+ {
+ filters: ['||advertserve.com^$third-party', '||advertserve.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://betnetmed.advertserve.com',
+ },
+ {
+ filters: ['||c.t-online.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.t-online.de',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['||revrtb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://xml.revrtb.com',
+ },
+ {
+ filters: ['/ads/profile/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.cam4.com/ads/profile/',
+ },
+ {
+ filters: ['/servlet/view/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://betnetmed.advertserve.com/servlet/view/',
+ },
+ {
+ filters: ['/ecap.min.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://sum.cntvwb.cn/ecap.min.js',
+ },
+ {
+ filters: ['||wrating.com^$third-party', '.com/a.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cntv.wrating.com/a.gif?',
+ },
+ {
+ filters: ['||ad4mat.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static-de.ad4mat.net',
+ },
+ {
+ filters: ['||news.cn/webdig.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://webd.home.news.cn/webdig.js',
+ },
+ {
+ filters: ['/aff/ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://creative.mlsat02.de/telekom/aff/ads_media.php',
+ },
+ {
+ filters: ['/collect/kf?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sum.cntvwb.cn/dc/collect/kf?',
+ },
+ {
+ filters: ['/counter/views/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.fishki.net/counter/views/',
+ },
+ {
+ check: true,
+ filters: ['/ads/banner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.ad4mat.de/ads/banner_data.php',
+ },
+ {
+ filters: ['||t.nativendo.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.nativendo.de',
+ },
+ {
+ filters: ['||advolution.de^$third-party', '/tPx.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://asn.advolution.de/000168786F0013710/tpx.gif?',
+ },
+ {
+ filters: ['.cn/1.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://webd.home.news.cn/1.gif?',
+ },
+ {
+ filters: [
+ '||iesnare.com^',
+ '||iesnare.com^$third-party',
+ '@@||mpsnare.iesnare.com/snare.js$domain=citi.com|citibank.com|enmasse.com|login.skype.com',
+ ],
+ sourceUrl: 'https://online.citi.com',
+ type: 'script',
+ url: 'https://mpsnare.iesnare.com/snare.js',
+ },
+ {
+ filters: ['||webspectator.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wfpscripts.webspectator.com',
+ },
+ {
+ filters: ['||ivitrack.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://matching.ivitrack.com',
+ },
+ {
+ filters: ['||angsrvr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sy.eu.angsrvr.com',
+ },
+ {
+ filters: ['||pippio.com^', '/pippio.', '||pippio.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pippio.com',
+ },
+ {
+ filters: ['||springserve.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vid.springserve.com',
+ },
+ {
+ filters: ['.com/js/ga.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://attach2.mobile01.com/js/ga.js',
+ },
+ {
+ check: true,
+ filters: ['||mqs.ioam.de^', '||ioam.de/?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mqs.ioam.de/?',
+ },
+ {
+ filters: ['||ns1p.net^', '||ns1p.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://1eucsnx-m.ns1p.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||tumblr.com/impixu?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://px.srvcs.tumblr.com/impixu?',
+ },
+ {
+ filters: ['/analytics.html?'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://assets.tumblr.com/analytics.html?',
+ },
+ {
+ filters: ['/fp/tags.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content22.online.citi.com/fp/tags.js?',
+ },
+ {
+ filters: ['||hubspot.com/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.hubspot.com/analytics/',
+ },
+ {
+ filters: [
+ '@@||google-analytics.com^$domain=avianca.com|jackbox.tv|newegg.com|bikstok.sonymusicshop.dk',
+ ],
+ sourceUrl: 'https://m.newegg.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com',
+ },
+ {
+ filters: ['@@||monetate.net^*/entry.js$domain=newegg.com'],
+ sourceUrl: 'https://m.newegg.com',
+ type: 'script',
+ url: 'https://se.monetate.net/js/2/a-f0e60b81/p/m.newegg.com/entry.js',
+ },
+ {
+ filters: ['||yandex.ru/cycounter?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.yandex.ru/cycounter?',
+ },
+ {
+ filters: ['||pf.newegg.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pf.newegg.com',
+ },
+ {
+ filters: ['/comscore_engine.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl-i.plug.it/iplug/js/lib/iol/tr/engine/comscore_engine.min.js',
+ },
+ {
+ filters: ['||spot.im/yad/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://publisher-assets.spot.im/yad/',
+ },
+ {
+ filters: ['||spot.im/api/tracker/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.spot.im/api/tracker/',
+ },
+ {
+ filters: ['||aixifan.com/acsdk/log.min.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.aixifan.com/acsdk/log.min.js?',
+ },
+ {
+ filters: ['/sensorsdata.', '@@||aixifan.com^*/sensorsdata.min.js?$domain=acfun.cn'],
+ sourceUrl: 'http://m.acfun.cn',
+ type: 'script',
+ url: 'http://cdn.aixifan.com/acfun-H5/public/script/sensorsdata.min.js?',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['/dctk.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.travel-assets.com/datacapture/2/js/dctk.js',
+ },
+ {
+ filters: ['||mdotlabs.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stag.mdotlabs.com',
+ },
+ {
+ filters: ['/entry_stats?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.theverge.com/services/entry_stats?',
+ },
+ {
+ filters: ['@@||monetate.net/trk/$script,domain=newegg.com'],
+ sourceUrl: 'https://m.newegg.com',
+ type: 'script',
+ url: 'https://f.monetate.net/trk/',
+ },
+ {
+ filters: ['@@||monetate.net/img/$script,domain=newegg.com'],
+ sourceUrl: 'https://m.newegg.com',
+ type: 'script',
+ url: 'https://sb.monetate.net/img/',
+ },
+ {
+ filters: ['||sail-horizon.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ak.sail-horizon.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||met.vgwort.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssl-t-online.met.vgwort.de',
+ },
+ {
+ filters: ['||uciservice.com^$third-party', '/adinfo?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.uciservice.com/adinfo?',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||collector.prod.expedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://collector.prod.expedia.com',
+ },
+ {
+ filters: ['/datacapture/track'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.expedia.com/api/datacapture/track',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||liqwid.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.liqwid.net',
+ },
+ {
+ filters: ['||intellitxt.com^$third-party', '||intellitxt.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://k.intellitxt.com',
+ },
+ {
+ filters: ['||u5c93.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://c2.u5c93.com',
+ },
+ {
+ filters: ['@@||hdliveextra-a.akamaihd.net^$domain=nbcsports.com'],
+ sourceUrl: 'https://www.nbcsports.com',
+ type: 'script',
+ url: 'https://hdliveextra-a.akamaihd.net',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['/ad.gif|', '@@||static.hltv.org/images/*/AD.gif$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.hltv.org/images/bigflags/30x20/AD.gif',
+ },
+ {
+ filters: ['||contentinsights.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ingestion.contentinsights.com',
+ },
+ {
+ filters: ['||statistics.crowdynews.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://statistics.crowdynews.com',
+ },
+ {
+ filters: ['/piwik/*$domain=~github.com|~matomo.org|~piwik.org'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://collector-282.tvsquared.com/piwik/',
+ },
+ {
+ filters: ['||mtrcs.samba.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.mtrcs.samba.tv',
+ },
+ {
+ filters: ['||content.livesportmedia.eu^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content.livesportmedia.eu',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.vanguardngr.com',
+ type: 'script',
+ url: 'https://www.vanguardngr.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['@@||scorecardresearch.com/c2/plugins/streamsense_plugin_theplatform.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sb.scorecardresearch.com/c2/plugins/streamsense_plugin_theplatform.js',
+ },
+ {
+ filters: ['/ados?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://e-9435.adzerk.net/ados?',
+ },
+ {
+ filters: ['-160x600_'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ampatcape.com/-160x600_',
+ },
+ {
+ check: true,
+ filters: ['||c.mgid.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://c.mgid.com',
+ },
+ {
+ filters: ['.uk/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.independent.co.uk/ads.txt',
+ },
+ {
+ filters: ['||perr.h-cdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://perr.h-cdn.com',
+ },
+ {
+ filters: ['||newegg.com/tracking', '.com/tracking?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pf.newegg.com/tracking?',
+ },
+ {
+ filters: ['||appspot.com/api/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://triggeredmail.appspot.com/api/track/',
+ },
+ {
+ filters: ['/qtracker-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dtxtngytz5im1.cloudfront.net/qtracker-5.0.0.min.js',
+ },
+ {
+ filters: ['||dd6zx4ibq538k.cloudfront.net^', '||cloudfront.net/smartserve-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dd6zx4ibq538k.cloudfront.net/smartserve-2034.js',
+ },
+ {
+ filters: ['||bet365affiliates.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imstore.bet365affiliates.com',
+ },
+ {
+ filters: ['||cdnondemand.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.cdnondemand.org',
+ },
+ {
+ filters: ['@@||rbk.ru^*/ads/ads.js?|$script,domain=autonews.ru|rbc.ru|rbcplus.ru|sportrbc.ru'],
+ sourceUrl: 'https://www.rbc.ru',
+ type: 'script',
+ url: 'https://s.rbk.ru/v8_top_static/common/common-8.5.151/scripts/repo/ads/ads.js?',
+ },
+ {
+ filters: ['@@||yjcontentdelivery.com^$script,domain=youjizz.com'],
+ sourceUrl: 'https://www.youjizz.com',
+ type: 'script',
+ url: 'https://cdne-static.yjcontentdelivery.com',
+ },
+ {
+ filters: [],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdne-pics.youjizz.com',
+ },
+ {
+ filters: ['||prebid.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://currency.prebid.org',
+ },
+ {
+ filters: ['||beacon.riskified.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://beacon.riskified.com',
+ },
+ {
+ filters: ['/Certona/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-static.farfetch.com/certona/',
+ },
+ {
+ filters: ['||speedcurve.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.speedcurve.com',
+ },
+ {
+ filters: ['.skimlinks.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.skimresources.com/js/68756X1554900.skimlinks.js',
+ },
+ {
+ filters: ['||youjizz.com^$script', '/owa.tracker-combined-min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://esearch.youjizz.com/modules/base/js/owa.tracker-combined-min.js',
+ },
+ {
+ filters: ['||qubitproducts.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://stash.qubitproducts.com',
+ },
+ {
+ filters: ['@@||a.bf-ad.net/makabo/ads_fol_init.js$script,domain=chip.de'],
+ sourceUrl: 'https://www.chip.de',
+ type: 'script',
+ url: 'https://a.bf-ad.net/makabo/ads_fol_init.js',
+ },
+ {
+ filters: [
+ '$script,domain=pornhd.com',
+ '@@||cdn-static.pornhd.com/pornhd/$script,domain=pornhd.com',
+ ],
+ sourceUrl: 'https://www.pornhd.com',
+ type: 'script',
+ url: 'https://cdn-static.pornhd.com/pornhd/',
+ },
+ {
+ filters: ['/at.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.pornhd.com/at.gif?',
+ },
+ {
+ filters: ['||res-x.com^$third-party', '@@||res-x.com^*/Resonance.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.res-x.com/ws/r2/Resonance.aspx?',
+ },
+ {
+ filters: ['/foresee/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://scache.vzw.com/foresee/',
+ },
+ {
+ filters: ['/adriver.$~object-subrequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1.img.sputniknews.com/min/js/libs/adriver.core.2.js',
+ },
+ {
+ filters: ['||tracking.pornhd.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.pornhd.com',
+ },
+ {
+ filters: ['/myImage.track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.cdiscount.com/tracking/myImage.track?',
+ },
+ {
+ filters: ['/siteAnalytics-', '@@||expedia.com/minify/siteAnalytics-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.expedia.com/minify/siteAnalytics-min-3060034759.js',
+ },
+ {
+ filters: ['@@||securepubads.g.doubleclick.net/gpt/pubads_impl_$script,domain=rbc.ru'],
+ sourceUrl: 'https://www.rbc.ru',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['||emerse.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.emerse.com',
+ },
+ {
+ filters: ['||adthrive.com^$third-party', '||adthrive.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.adthrive.com',
+ },
+ {
+ filters: ['/tealium-udo.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.easports.com/tealium-udo.js',
+ },
+ {
+ filters: ['||ntv.io^$third-party', '||ntv.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.ntv.io',
+ },
+ {
+ filters: ['||medialand.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://engine.rbc.medialand.ru',
+ },
+ {
+ filters: ['||pageinfo.motorsport.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pageinfo.motorsport.com',
+ },
+ {
+ filters: ['||blueconic.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.blueconic.net',
+ },
+ {
+ filters: ['||ccgateway.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.ccgateway.net',
+ },
+ {
+ filters: ['||cdn-net.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cdn-net.com',
+ },
+ {
+ filters: ['||chip.de/collect'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rt.chip.de/collect',
+ },
+ {
+ filters: ['@@||linkshrink.net/content/js/jquery-*.min.js$script'],
+ sourceUrl: 'https://linkshrink.net',
+ type: 'script',
+ url: 'https://linkshrink.net/content/js/jquery-2.1.4.min.js',
+ },
+ {
+ filters: ['||wsj.net/pb/pb.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sts3.wsj.net/pb/pb.js',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: [
+ '|https://$image,script,subdocument,third-party,xmlhttprequest,domain=linkshrink.net',
+ ],
+ sourceUrl: 'https://linkshrink.net',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||tags.newscgp.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://us.tags.newscgp.com',
+ },
+ {
+ filters: ['/cxense-candy.js', '@@||wsj.net/*/cxense-candy.js$script,domain=wsj.com'],
+ sourceUrl: 'https://www.wsj.com',
+ type: 'script',
+ url: 'https://sts3.wsj.net/iweb/static_html_files/cxense-candy.js',
+ },
+ {
+ filters: ['||nanigans.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.nanigans.com',
+ },
+ {
+ filters: ['@@||scdn.cxense.com/cx.$script,domain=wsj.com'],
+ sourceUrl: 'https://www.wsj.com',
+ type: 'script',
+ url: 'https://scdn.cxense.com/cx.js',
+ },
+ {
+ filters: ['/getad?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aax-us-east.amazon-adsystem.com/x/getad?',
+ },
+ {
+ filters: ['/NetworkTracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://support.avast.com/jslibrary/1539646802000/sfdc/NetworkTracking.js',
+ },
+ {
+ filters: ['@@||api.cxense.com/public/widget/data?$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.cxense.com/public/widget/data?',
+ },
+ {
+ filters: ['/top_ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.online.sh.cn/shol/09indexjs/images/top_ad.js',
+ },
+ {
+ filters: [
+ '@@||ajax.googleapis.com^$script,domain=gaytube.com|pornhub.com|redtube.com|redtube.it|tube8.com|tube8.es|tube8.fr|xtube.com|youjizz.com|youporn.com|youporngay.com',
+ ],
+ sourceUrl: 'https://www.xtube.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['||filestorage.chip.de/videoplayer^$first-party'],
+ sourceUrl: 'https://www.chip.de',
+ type: 'script',
+ url: 'https://filestorage.chip.de/videoplayer',
+ },
+ {
+ filters: ['||ncaudienceexchange.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.ncaudienceexchange.com',
+ },
+ {
+ filters: ['||adledge.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rs.adledge.com',
+ },
+ {
+ filters: ['||acexedge.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.acexedge.com',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['||analytics.ecosia.org^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.ecosia.org',
+ },
+ {
+ filters: ['||ps.ecosia.org^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ps.ecosia.org',
+ },
+ {
+ filters: ['/scripts/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hello.zeddit.com/Scripts/analytics.js',
+ },
+ {
+ filters: ['/tracking.*/view?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.pornhd.com/view?',
+ },
+ {
+ filters: ['/tracking.*/viewRes?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.pornhd.com/viewRes?',
+ },
+ {
+ filters: ['-ads-manager/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.freejobalert.com/wp-content/plugins/simple-ads-manager/',
+ },
+ {
+ filters: ['||disqus.com/api/ping?$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://links.services.disqus.com/api/ping?',
+ },
+ {
+ filters: ['||pubmine.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.pubmine.com',
+ },
+ {
+ filters: [
+ '||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=chip.de|cinema.de|cdnapi.kaltura.com',
+ ],
+ sourceUrl: 'https://www.chip.de',
+ type: 'script',
+ url: 'https://hgc-cf-cache-1.svonm.com/hd-main.js',
+ },
+ {
+ filters: ['/xbanner.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://creative.speednetwork19.com/speednetwork14/tags/xbanner/xbanner.js',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com/api$xmlhttprequest,redirect=nooptext,domain=kinozal.tv'],
+ sourceUrl: 'http://kinozal.tv',
+ type: 'xhr',
+ url: 'https://piguiqproxy.com/api',
+ },
+ {
+ filters: ['||mtrcss.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mtrcss.com',
+ },
+ {
+ filters: [
+ '@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=chip.de|event.mivitec.net|radio.de|welect.de',
+ ],
+ sourceUrl: 'https://www.chip.de',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['||audience.newscgp.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://us.audience.newscgp.com',
+ },
+ {
+ filters: ['||mxpopad.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mxpopad.com',
+ },
+ {
+ filters: ['||loadercdn.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://loadercdn.com',
+ },
+ {
+ filters: ['/tracking.*/impression?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.pornhd.com/impression?',
+ },
+ {
+ filters: ['||adk2x.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://speednetwork14.adk2x.com',
+ },
+ {
+ filters: ['||mxtads.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mxtads.com',
+ },
+ {
+ check: true,
+ filters: ['||livestatisc.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://livestatisc.com',
+ },
+ {
+ filters: ['/set-cookie.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.mgnewplg.com/set-cookie.gif?',
+ },
+ {
+ filters: ['||rec.udn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rec.udn.com',
+ },
+ {
+ filters: ['||adsk2.co^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ee8f928b71ed0dc6033231fa0943d9f5.adsk2.co',
+ },
+ {
+ filters: ['||d2nq0f8d9ofdwv.cloudfront.net/track.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d2nq0f8d9ofdwv.cloudfront.net/track.js',
+ },
+ {
+ filters: ['||pv.udn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pv.udn.com',
+ },
+ {
+ filters: ['||rbc.ru/count/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.rbc.ru/count/',
+ },
+ {
+ filters: ['||zqtk.net^', '||zqtk.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://segment-data.zqtk.net',
+ },
+ {
+ filters: ['||reundcwkqvctq.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.reundcwkqvctq.com',
+ },
+ {
+ filters: ['_werbebanner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.1.damoh.chip.de/hic_qos?adv_partner&_werbebanner_',
+ },
+ {
+ filters: ['||clarium.global.ssl.fastly.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://clarium.global.ssl.fastly.net',
+ },
+ {
+ filters: ['||analytics.meituan.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://analytics.meituan.net',
+ },
+ {
+ filters: ['||vidora.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.vidora.com',
+ },
+ {
+ filters: ['/omgpixel.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://collector.prod.expedia.com/omgpixel.json',
+ },
+ {
+ filters: ['||ixiaa.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kr.ixiaa.com',
+ },
+ {
+ check: true,
+ filters: ['||ads.rediff.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.rediff.com',
+ },
+ {
+ filters: ['||sina.com.cn/view?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sax.sina.com.cn/view?',
+ },
+ {
+ filters: ['/fingerprint.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rapidgator.net/assets/52a3c5b1/fingerprint.js',
+ },
+ {
+ filters: ['.net/e.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.el-mundo.net/e.gif?',
+ },
+ {
+ filters: ['/gomez/*$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scache.vzw.com/scripts/gomez/',
+ },
+ {
+ filters: ['/dynamic-ad/*', '-ad/embed.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://display.vitrines.in/dynamic-ad/embed.js',
+ },
+ {
+ filters: ['||amazonaws.com/new.cetrk.com/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/new.cetrk.com/',
+ },
+ {
+ filters: ['_Analytics.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.viva.co.id/appasset-2018/desktop-2018/js/viva_analytics.js?',
+ },
+ {
+ filters: ['||imads.rediff.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imads.rediff.com',
+ },
+ {
+ filters: ['||usmetric.rediff.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://usmetric.rediff.com',
+ },
+ {
+ filters: ['||rediff.com^*/?rkey='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://usmetric.rediff.com/ushome.rediff.com/?rkey=1375143581&device=mob',
+ },
+ {
+ filters: ['||verizonwireless.com/mpel.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://es.verizonwireless.com/mpel.js?',
+ },
+ {
+ filters: ['||track1.viewdeos.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track1.viewdeos.com',
+ },
+ {
+ filters: ['||box.com/gen204?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://app.box.com/gen204?',
+ },
+ {
+ filters: ['.com/js/ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.scupio.com/js/ad.js',
+ },
+ {
+ filters: ['||track.viewdeos.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.viewdeos.com',
+ },
+ {
+ filters: ['||voicefive.com^', '||voicefive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sb.voicefive.com',
+ },
+ {
+ filters: ['||networld.hk^$third-party', '/ad2/res/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.l.networld.hk/ad2/res/',
+ },
+ {
+ filters: ['/audience-extraction.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.discuss.com.hk/include/js/audience-extraction.js',
+ },
+ {
+ filters: ['||hot-mob.com^$third-party', '/hotmobtag_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://code.hot-mob.com/api/javascript/sdk4/hotmobtag_min.js',
+ },
+ {
+ filters: ['/advertisements/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bffmobilesite.cdiscount.com/advertisements/',
+ },
+ {
+ filters: ['_120x600.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/5524229/1539862361860/booknow_120x600.jpg',
+ },
+ {
+ filters: ['/lib/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://code.hot-mob.com/api/javascript/sdk4/lib/ads.min.js',
+ },
+ {
+ filters: ['/getThirdPartyTracking?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://webapi.hot-mob.com/api/cookie/getThirdPartyTracking?',
+ },
+ {
+ filters: ['||eroterest.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.eroterest.net',
+ },
+ {
+ filters: ['||counter.ukr.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://counter.ukr.net',
+ },
+ {
+ filters: ['||c.bigmir.net^', '||bigmir.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.bigmir.net',
+ },
+ {
+ filters: ['-ad1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://im.rediff.com/500-500/getahead/2018/sep/07condom-ad1.jpg',
+ },
+ {
+ filters: ['||target.ukr.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://target.ukr.net',
+ },
+ {
+ filters: ['@@||phncdn.com/timings-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/timings-1.0.1.js',
+ },
+ {
+ filters: ['@@||phncdn.com/tubes-$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1d-static-shared.phncdn.com/tubes-1.0.0.js',
+ },
+ {
+ filters: ['||vidazoo.com/event/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bis-ssl.vidazoo.com/event/',
+ },
+ {
+ filters: ['||itc.cn/pv/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a1.itc.cn/pv/',
+ },
+ {
+ filters: ['-text-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.icicibank.com/chatbot-text-ads.html',
+ },
+ {
+ filters: ['/adv/adriver'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.vesti.ru/i/external/adv/adriver.core.2.js',
+ },
+ {
+ filters: ['/adv.png'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.vesti.ru/i/adv.png',
+ },
+ {
+ filters: ['||adsfactor.net^$third-party', '/adj.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://servedby.adsfactor.net/adj.php?',
+ },
+ {
+ filters: ['||adblockmetrics.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://adblockmetrics.ru',
+ },
+ {
+ filters: ['/ad/banner/*', '_adsense_', '_adserver/', '_adview_', '.ad.json?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://adblockmetrics.ru/ad/banner/_adsense_/_adserver/_adview_.ad.json?',
+ },
+ {
+ filters: ['/mobile_ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://adpic.pchome.com.tw/css/mobile_ad.css',
+ },
+ {
+ filters: ['://adcl.$domain=~adcl.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adcl.pchome.com.tw',
+ },
+ {
+ filters: ['||tag.aticdn.net^', '/smarttag.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.aticdn.net/589884/smarttag.js',
+ },
+ {
+ filters: ['/xpcadshow.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://kdpic.pchome.com.tw/img/js/xpcadshow.js',
+ },
+ {
+ filters: ['/right_ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.pchome.com.tw/img/right_ad_banner34045.gif',
+ },
+ {
+ check: true,
+ filters: ['@@||ad.crwdcntrl.net^$script,domain=cityam.com|investopedia.com'],
+ sourceUrl: 'https://www.investopedia.com',
+ type: 'script',
+ url: 'https://ad.crwdcntrl.net',
+ },
+ {
+ filters: ['/horizon.*/track?', '/horizon/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://horizon.sailthru.com/horizon/track?',
+ },
+ {
+ check: true,
+ filters: ['||i.skimresources.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.skimresources.com',
+ },
+ {
+ filters: ['||collector.schibsted.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://collector.schibsted.io',
+ },
+ {
+ filters: ['/show.cgi?adp'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.smi.ru/show.cgi?adp=29&div=DIV_SMI_29',
+ },
+ {
+ filters: ['||directadvert.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.directadvert.net',
+ },
+ {
+ filters: ['||contentpass.net/stats?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.contentpass.net/stats?',
+ },
+ {
+ filters: ['/mpf-mediator.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://mediator.imgsmail.ru/2/mpf-mediator.min.js',
+ },
+ {
+ filters: ['||metric*.rediff.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://metric.rediff.com',
+ },
+ {
+ filters: ['||eporner.com/dot/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.eporner.com/dot/',
+ },
+ {
+ filters: ['||medyanetads.com^$third-party', '||medyanetads.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://app.medyanetads.com',
+ },
+ {
+ filters: ['/dfp.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://app.medyanetads.com/dfp.js',
+ },
+ {
+ filters: ['||clicks.hurriyet.com.tr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://clicks.hurriyet.com.tr',
+ },
+ {
+ filters: ['/boomLogger.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lg.naukri.com/nLogger/boomLogger.php',
+ },
+ {
+ filters: ['||retargetly.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.retargetly.com',
+ },
+ {
+ filters: ['||dataxpand.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tc.dataxpand.com',
+ },
+ {
+ filters: ['||crsspxl.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.crsspxl.com',
+ },
+ {
+ filters: ['/ad-stub-', '/adctrl/*', '-ad-plugin-', '/cdn-ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ad-stub-vgtrk.cdnvideo.ru/adctrl/plugin/html5/v1/cdn-ad-plugin-html5.js',
+ },
+ {
+ filters: ['.advert.$domain=~advert.ae|~advert.io|~advert.ly'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://player.vgtrk.com/js/ads.adfox.weborama.advert.banner.js',
+ },
+ {
+ filters: ['@@||player.vgtrk.com/js/stat.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://player.vgtrk.com/js/stat.js?',
+ },
+ {
+ filters: ['||d2focgxak1cn74.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2focgxak1cn74.cloudfront.net',
+ },
+ {
+ filters: ['||trafficforce.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.trafficforce.com',
+ },
+ {
+ filters: [],
+ sourceUrl: 'https://www.4shared.com',
+ type: 'stylesheet',
+ url: 'https://',
+ },
+ {
+ filters: ['|ws://$domain=4shared.com'],
+ sourceUrl: 'https://www.4shared.com',
+ type: 'websocket',
+ url: 'https://',
+ },
+ {
+ filters: ['|ws://$domain=4shared.com'],
+ sourceUrl: 'https://www.4shared.com',
+ type: 'stylesheet',
+ url: 'wss://',
+ },
+ {
+ filters: ['|ws://$domain=4shared.com'],
+ sourceUrl: 'https://www.4shared.com',
+ type: 'stylesheet',
+ url: 'ws://',
+ },
+ {
+ check: true,
+ filters: ['@@||4shared.com^$image,script,xmlhttprequest', '@@||4shared.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.4shared.com',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=4shared.com'],
+ sourceUrl: 'https://www.4shared.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ check: true,
+ filters: ['@@||4shared.com^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.4shared.com',
+ },
+ {
+ filters: ['/sovrn_beacon_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ap.lijit.com/www/sovrn_beacon_standalone',
+ },
+ {
+ filters: [
+ '|https://$script,domain=motherless.com',
+ '@@||ajax.googleapis.com^$script,domain=motherless.com',
+ ],
+ sourceUrl: 'https://motherless.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/site.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/site.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/bots.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/bots.min.js',
+ },
+ {
+ filters: ['/site_ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/site_ads.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/jquery.*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/jquery.backgroundSize.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/home_page.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/home_page.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/perfect-scrollbar.jquery.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/perfect-scrollbar.jquery.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/responsive.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/responsive.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/mobile/index.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/mobile/index.js',
+ },
+ {
+ filters: ['/banner_ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://x4i6u4n6.ssl.hwcdn.net/Banner_ads/',
+ },
+ {
+ filters: ['-criteo.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.kp.ru/js/frames/header-bidding-criteo.js',
+ },
+ {
+ filters: ['||track.dictionary.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.dictionary.com',
+ },
+ {
+ check: true,
+ filters: ['||jscount.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.jscount.com',
+ },
+ {
+ filters: ['||ato.mx^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://s.ato.mx',
+ },
+ {
+ filters: ['||adomik.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://news-127845-hdb.adomik.com',
+ },
+ {
+ filters: ['/js_tracker.', '_tracker.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://click.dangdang.com/js_tracker.js?',
+ },
+ {
+ filters: ['/metrika/watch_'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://mc.yandex.ru/metrika/watch_match.html',
+ },
+ {
+ filters: ['||facebook.com*/impression.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/impression.php',
+ },
+ {
+ filters: ['/advertisement-$domain=~berlin-airport.de'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pt-static4.jsmstat.com/_common/script/adblock/advertisement-v518938.js',
+ },
+ {
+ filters: ['/adshow2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://kdcl.pchome.com.tw/adshow2.html',
+ },
+ {
+ filters: ['_ad.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://apis.pchome.com.tw/PFB_AD.php?',
+ },
+ {
+ filters: ['/rumstat.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://rumstat.cdnvideo.ru',
+ },
+ {
+ filters: ['_wreport.fcgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://kpruanalytics.solution.weborama.fr/fcgi-bin/comptage_wreport.fcgi?',
+ },
+ {
+ filters: ['||faggrim.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://faggrim.com',
+ },
+ {
+ filters: ['||sellpoints.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.sellpoints.com',
+ },
+ {
+ filters: ['||crm4d.com^$third-party', '/weborama.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://p.crm4d.com/sync/weborama.js',
+ },
+ {
+ filters: ['/pixelappcollector.', '.uk/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixelappcollector.thesun.co.uk/track?',
+ },
+ {
+ filters: ['||click.jasmin.com^', '/awe/ccs.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://click.jasmin.com/awe/ccs.php',
+ },
+ {
+ filters: ['||click.livejasmin.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://click.livejasmin.com',
+ },
+ {
+ filters: ['||keywee.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.keywee.co',
+ },
+ {
+ filters: ['.com/r.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.dmp.otm-r.com/r.gif?',
+ },
+ {
+ filters: ['||cloudfront.net/vis_opt.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d5phz18u4wuww.cloudfront.net/vis_opt.js',
+ },
+ {
+ filters: ['||acrabakasaka.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.acrabakasaka.com',
+ },
+ {
+ filters: ['||io.narrative.io/?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://io.narrative.io/?',
+ },
+ {
+ filters: ['/bundles/metrics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wunderground.com/bundles/metrics.6c3accb7419a5ccca533.js',
+ },
+ {
+ filters: ['||servedbyopenx.com^$third-party', '||servedbyopenx.com^', '://ox-*/jstag^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ox-d.ask.servedbyopenx.com/w/1.0/jstag',
+ },
+ {
+ filters: ['/ads4.$domain=~ads4.city'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ads4.admatic.com.tr',
+ },
+ {
+ filters: ['||adincube.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tag.adincube.com',
+ },
+ {
+ filters: ['||bnserving.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bnserving.com',
+ },
+ {
+ filters: ['/tracker/track.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.reimageplus.com/tracker/track.php?',
+ },
+ {
+ filters: ['||t.kck.st^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://t.kck.st',
+ },
+ {
+ filters: ['||duowan.com/duowan.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.duowan.com/duowan.js',
+ },
+ {
+ filters: ['/yastat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pub.dwstatic.com/common/js/yastat.js',
+ },
+ {
+ filters: ['||newstarads.com^$third-party', '||newstarads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.newstarads.com',
+ },
+ {
+ filters: ['/ads5.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ads5.admatic.com.tr',
+ },
+ {
+ filters: ['/RecordHit?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.squarespace.com/api/census/RecordHit?',
+ },
+ {
+ filters: ['||wxug.com^*/sourcepoint/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://icons.wxug.com/scripts/sourcepoint/',
+ },
+ {
+ filters: ['||analytics-static.ugc.bazaarvoice.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics-static.ugc.bazaarvoice.com',
+ },
+ {
+ filters: ['||luxup2.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://luxup2.ru',
+ },
+ {
+ filters: ['/showad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ads5.admatic.com.tr/showad/',
+ },
+ {
+ filters: ['||bazaarvoice.com/sid.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://network.bazaarvoice.com/sid.gif',
+ },
+ {
+ filters: ['||velocitycdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.velocitycdn.com',
+ },
+ {
+ filters: ['||eclick.vn^$third-party', '||eclick.vn^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scdn.eclick.vn',
+ },
+ {
+ filters: ['/visitorCookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.yenisafak.com/yenisafak/assetsNew/js/VisitorCookie.js',
+ },
+ {
+ filters: ['||82o9v830.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://82o9v830.com',
+ },
+ {
+ filters: ['/adtags.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cs3.wettercomassets.com/wcomv5/css/advertising/adtags.css',
+ },
+ {
+ filters: ['||polyad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://core.polyad.net',
+ },
+ {
+ filters: ['||inskinad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.inskinad.com',
+ },
+ {
+ filters: ['||ev.kck.st^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ev.kck.st',
+ },
+ {
+ filters: ['/tracking.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://emea-v3.tracking.justpremium.com/tracking.gif?',
+ },
+ {
+ filters: ['||ntvcld-a.akamaihd.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ntvcld-a.akamaihd.net',
+ },
+ {
+ filters: ['/chartbeat.js$domain=wetter.com'],
+ sourceUrl: 'https://www.wetter.com',
+ type: 'script',
+ url: 'https://static.chartbeat.com/js/chartbeat.js',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=wetter.com'],
+ sourceUrl: 'https://www.wetter.com',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['||theadex.com^$domain=wetter.com'],
+ sourceUrl: 'https://www.wetter.com',
+ type: 'script',
+ url: 'https://dmp.theadex.com',
+ },
+ {
+ filters: ['||evgnet.com/beacon/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.evgnet.com/beacon/',
+ },
+ {
+ filters: ['||mobtrks.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.mobtrks.com',
+ },
+ {
+ filters: ['||vihub.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dmp.vihub.ru',
+ },
+ {
+ filters: ['/ads.aspx'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.inskinad.com/ISAPAdServer/AdS.aspx',
+ },
+ {
+ filters: ['||e-planning.net^$third-party', '||e-planning.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.e-planning.net',
+ },
+ {
+ filters: ['||evergage.com^', '||evergage.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://lenovo.evergage.com',
+ },
+ {
+ filters: ['/inv/ads/*', '@@||investopedia.com/inv/ads/$image,domain=investopedia.com'],
+ sourceUrl: 'https://www.investopedia.com',
+ type: 'image',
+ url: 'https://i.investopedia.com/inv/ads/',
+ },
+ {
+ filters: ['||goutee.top^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://goutee.top',
+ },
+ {
+ filters: ['||tradelab.fr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.tradelab.fr',
+ },
+ {
+ filters: ['||estat.com^', '||estat.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://w.estat.com',
+ },
+ {
+ filters: ['/adtrack.$domain=~adtrack.ca'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://adtrack.adleadevent.com',
+ },
+ {
+ filters: ['||webtrendslive.com^', '||webtrendslive.com^$third-party', '/wtid.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://statse.webtrendslive.com/dcs2227ulli4xxp3oi2yv4qus_5g8l/wtid.js',
+ },
+ {
+ filters: ['/logduration/*', '/wadsAdsLoaded/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://goutee.top/logduration/wadsAdsLoaded/',
+ },
+ {
+ check: true,
+ filters: ['||undertone.com^$third-party', '||ads.undertone.com^', '||undertone.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.undertone.com',
+ },
+ {
+ filters: ['||intentmedia.net^$third-party', '||intentmedia.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adapters.cdn.intentmedia.net',
+ },
+ {
+ filters: ['||proofpositivemedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.proofpositivemedia.com',
+ },
+ {
+ filters: ['/Api/Ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api-34-219-167-236.b2c.com/api/ad.gif',
+ },
+ {
+ filters: ['@@||reuters.com/ads.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.reuters.com/ads.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/auth.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/auth.min.js',
+ },
+ {
+ filters: ['@@||motherless.com/scripts/jwplayer.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://motherless.com/scripts/jwplayer.js',
+ },
+ {
+ filters: ['/boomerang.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.groupon.com/coupons/static/js/boomerang.js',
+ },
+ {
+ filters: ['||groupon.com/analytic/', '/view.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.groupon.com/analytic/view.gif?',
+ },
+ {
+ filters: ['||admantx.com^', '/admantx/*', '||admantx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://async01.admantx.com/admantx/',
+ },
+ {
+ filters: ['@@||media.net/bidexchange.js$domain=reuters.com'],
+ sourceUrl: 'https://www.reuters.com',
+ type: 'script',
+ url: 'https://contextual.media.net/bidexchange.js',
+ },
+ {
+ filters: ['/pb.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.wp.com/wp-content/themes/vip/nypost-2016/static/js/pb.min.js',
+ },
+ {
+ filters: ['/bundles/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wunderground.com/bundles/ads-action-refresh.e2225ca5a297cdd19c9b.js',
+ },
+ {
+ filters: ['/vip-analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s0.wp.com/wp-content/mu-plugins/2-vip/js/vip-analytics.js',
+ },
+ {
+ filters: ['||cloudfront.net/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2dq2ahtl5zl1z.cloudfront.net/analytics.js',
+ },
+ {
+ filters: ['||accn.allocine.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://accn.allocine.net',
+ },
+ {
+ filters: ['@@||ps.w.org^*/assets/$image,domain=wordpress.org'],
+ sourceUrl: 'https://wordpress.org',
+ type: 'image',
+ url: 'https://ps.w.org/dark-mode/assets/',
+ },
+ {
+ filters: ['||carambo.la^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://route.carambo.la',
+ },
+ {
+ filters: ['||pixel.watch^', '||pixel.watch^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.watch',
+ },
+ {
+ filters: ['||pxc.otto.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://pxc.otto.de',
+ },
+ {
+ filters: ['/iframe.php?spotID='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://hd100546b.com/iframe.php?spotID=182&w=300&h=250',
+ },
+ {
+ filters: ['/mediametrie.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.allocine.fr/js_v7/src/jwplayer/plugin/mediametrie.js',
+ },
+ {
+ check: true,
+ filters: ['.com/js/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.4shared.com/js/ads/',
+ },
+ {
+ check: true,
+ filters: ['||logging.carambo.la^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://logging.carambo.la',
+ },
+ {
+ check: true,
+ filters: ['||analytics.carambo.la^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://analytics.carambo.la',
+ },
+ {
+ filters: ['/getads|'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://xtr.carambo.la/GetAds',
+ },
+ {
+ filters: ['||urdupoint.com^*/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://m.urdupoint.com/includes/banners/',
+ },
+ {
+ filters: ['/publicidad/*', '@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['/adv_teasers.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-cache.ua.prom.ua/js/adv_teasers.js',
+ },
+ {
+ filters: ['||mbww.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tt.mbww.com',
+ },
+ {
+ filters: ['||cadreon.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://unity.cadreon.com',
+ },
+ {
+ filters: ['||googletagservices.com/tag/js/gpt.js$script,redirect=noopjs,domain=playground.ru'],
+ sourceUrl: 'http://www.playground.ru',
+ type: 'script',
+ url: 'https://www.googletagservices.com/tag/js/gpt.js',
+ },
+ {
+ filters: ['||licensing.bitmovin.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://licensing.bitmovin.com',
+ },
+ {
+ filters: ['||customer.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.customer.io',
+ },
+ {
+ filters: ['728x90.png|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d2yoo3qu6vrk5d.cloudfront.net/comercial/FormatosPauta/728x90.png',
+ },
+ {
+ filters: ['_300x600.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d2yoo3qu6vrk5d.cloudfront.net/comercial/FormatosPauta/left_300x600.gif',
+ },
+ {
+ filters: ['/meta-tracker/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://193.36.45.180/meta-tracker/',
+ },
+ {
+ filters: ['||audience.acpm.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.audience.acpm.fr',
+ },
+ {
+ filters: ['||partner.worldoftanks.com^', '/js/tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://partner.worldoftanks.com/static/js/tracker.js',
+ },
+ {
+ filters: ['/tracker/tracker-$domain=~bugs.chromium.org', '/tracker-config.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://partner.worldoftanks.com/media/tracker/tracker-config.js',
+ },
+ {
+ filters: ['||geoip.nekudo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://geoip.nekudo.com',
+ },
+ {
+ filters: ['||eloqua.com^$third-party,script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s334284386.t.eloqua.com',
+ },
+ {
+ filters: ['/imageads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.okezone.com/www/2015/imageads/',
+ },
+ {
+ filters: ['||researchintel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://onsite2.researchintel.com',
+ },
+ {
+ filters: ['/ad_title_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tblg.k-img.com/images/smartphone/icon/ad_title_bg.gif',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['||actiflex.org^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://actiflex.org',
+ },
+ {
+ filters: ['/standalone/ads-', '/ads-cch-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.lequipe.fr/elements/js/standalone/ads-cch-20181023100659.js',
+ },
+ {
+ filters: ['||valuecommerce.com^$third-party', '||valuecommerce.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trj.valuecommerce.com',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['@@||bancodevenezuela.com/imagenes/publicidad/$first-party'],
+ sourceUrl: 'http://www.bancodevenezuela.com',
+ type: 'image',
+ url: 'http://www.bancodevenezuela.com/imagenes/publicidad/',
+ },
+ {
+ filters: ['||netcore.co.in^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tw.netcore.co.in',
+ },
+ {
+ check: true,
+ filters: ['/728x90_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://pastebin.com/adserver/728x90_custom_safe.php',
+ },
+ {
+ filters: ['/admanager/*$~object-subrequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.newdreamglobal.com/admanager/',
+ },
+ {
+ filters: ['||begun.ru^$third-party', '||begun.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://autocontext.begun.ru',
+ },
+ {
+ filters: ['||netcoresmartech.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://twa.netcoresmartech.com',
+ },
+ {
+ filters: ['/js/dart.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s4.reutersmedia.net/resources/js/dart.js',
+ },
+ {
+ filters: ['/adfrequencycapping.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.reutersmedia.net/resources/js/adFrequencyCapping.js',
+ },
+ {
+ filters: ['||revsci.net^$third-party', '||revsci.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.revsci.net',
+ },
+ {
+ filters: ['||d16fk4ms6rqz1v.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d16fk4ms6rqz1v.cloudfront.net',
+ },
+ {
+ filters: ['||fogl1onf.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fogl1onf.com',
+ },
+ {
+ filters: ['||adxcore.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mtag.adxcore.com',
+ },
+ {
+ filters: ['/adjs_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.adxcore.com/adjs_r.php',
+ },
+ {
+ filters: ['||onfocus.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://iq.onfocus.io',
+ },
+ {
+ filters: ['.adsense.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.onfocus.io/ad/onfocus.adsense.js',
+ },
+ {
+ filters: ['/visits/pixel?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://events.mediarithmics.com/v1/visits/pixel?',
+ },
+ {
+ filters: ['||i2ad.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://i2ad.jp',
+ },
+ {
+ filters: ['/spcjs.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.echoban.ru/delivery/spcjs.php',
+ },
+ {
+ filters: ['/smarttag-prod.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.lequipe.fr/v6/js/smarttag-prod.js',
+ },
+ {
+ filters: ['/core-tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.reutersmedia.net/resources_v2/js/core-tracking.js',
+ },
+ {
+ filters: ['/adbanner.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adbanner.adxcore.com',
+ },
+ {
+ filters: ['||ayads.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.ayads.co',
+ },
+ {
+ filters: ['||dtprofit.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.dtprofit.com',
+ },
+ {
+ filters: ['||adv.drtuber.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adv.drtuber.com',
+ },
+ {
+ filters: ['||extreme-dm.com^', '||extreme-dm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t1.extreme-dm.com',
+ },
+ {
+ filters: ['||bs.yandex.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bs.yandex.ru',
+ },
+ {
+ filters: ['||video.oms.eu^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.video.oms.eu',
+ },
+ {
+ filters: ['||hotlog.ru^', '||hotlog.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.hotlog.ru',
+ },
+ {
+ filters: ['||creative.stripchat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://creative.stripchat.com',
+ },
+ {
+ filters: ['/adcenter.$script,domain=~adcenter.capgemini.com|~adcenter.nu|~m-m-g.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adcenter.gmarket.co.kr',
+ },
+ {
+ filters: ['||ozon.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.ozon.ru',
+ },
+ {
+ filters: ['.com/log/?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://l.adxcore.com/log/?',
+ },
+ {
+ filters: ['/adasync.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.twiago.com/adasync.min.js',
+ },
+ {
+ filters: ['||adscience.nl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb7.adscience.nl',
+ },
+ {
+ filters: ['/figanalytics.', '/figanalytics/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://a.f1g.fr/assets-sl/figanalytics/figanalytics.js',
+ },
+ {
+ filters: ['/onfocus-tag.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://a.f1g.fr/build/onfocus-tag.js',
+ },
+ {
+ filters: ['||survicate.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.survicate.com',
+ },
+ {
+ filters: ['||try.abtasty.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://try.abtasty.com',
+ },
+ {
+ filters: ['||exponea.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ozon-api.exponea.com',
+ },
+ {
+ filters: ['||logmatic.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.logmatic.io',
+ },
+ {
+ filters: ['/adunits.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adunits.datawrkz.com',
+ },
+ {
+ filters: [
+ '/advertise.$domain=~advertise.apartments.com|~advertise.directoryofillustration.com|~advertise.isleofskye.com|~advertise.market|~advertise.medillsb.com|~advertise.movem.co.uk|~advertise.sobihamilton.ca|~advertise.sphamovingads.com|~advertise.welovebuzz.com|~bingads.microsoft.com|~engineering.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st.championat.com/shared/advertise.js',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party', '@@||imagetwist.com/xupload.js'],
+ sourceUrl: 'https://www.imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com/xupload.js',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party', '@@||imagetwist.com/jquery-*.js'],
+ sourceUrl: 'https://www.imagetwist.com',
+ type: 'script',
+ url: 'https://www.imagetwist.com/jquery-1.12.4.min.js',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party', '@@||imagetwist.com/jquery.*.js'],
+ sourceUrl: 'https://www.imagetwist.com',
+ type: 'script',
+ url: 'https://www.imagetwist.com/jquery.easing.1.3.js',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://www.imagetwist.com',
+ type: 'script',
+ url: 'https://www.imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://www.imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['/u/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://hw-static.worldstarhiphop.com/u/ads/',
+ },
+ {
+ filters: ['/banner.cgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www2.nhk.or.jp/toppage/api/banner.cgi?',
+ },
+ {
+ filters: ['/logger/p.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.mathrubhumi.com/logger/p.gif?',
+ },
+ {
+ filters: ['||iasds01.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ci.iasds01.com',
+ },
+ {
+ filters: ['||truoptik.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dmp.truoptik.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||distiltag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dptr.distiltag.com',
+ },
+ {
+ filters: ['||analytics.shareaholic.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.shareaholic.com',
+ },
+ {
+ filters: ['||salesmanago.pl^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://app2.salesmanago.pl',
+ },
+ {
+ filters: ['||shareaholic.com/partners.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://partner.shareaholic.com/partners.js',
+ },
+ {
+ filters: ['||zebestof.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://dpm.zebestof.com',
+ },
+ {
+ filters: ['||movad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad2.movad.net',
+ },
+ {
+ filters: ['@@||cnbc.com^*/showads.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cnbc.com/staticContent/showads.js',
+ },
+ {
+ filters: ['||aso1.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.aso1.net',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['/postview.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://portal.o2online.de/nws/img/postview.gif?',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||data.queryly.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://data.queryly.com',
+ },
+ {
+ filters: ['||imagetwist.com/?op='],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://imagetwist.com/?op=registration',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||pushnest.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pushnest.com',
+ },
+ {
+ filters: ['/ads-pd.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads-pd.nbcuni.com',
+ },
+ {
+ filters: ['||vrtzads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cookie.vrtzads.com',
+ },
+ {
+ filters: ['||ad.gt^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://idm.ad.gt',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com^$script,first-party'],
+ sourceUrl: 'https://imagetwist.com',
+ type: 'script',
+ url: 'https://imagetwist.com',
+ },
+ {
+ filters: ['||imagetwist.com/banner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imagetwist.com/banner/',
+ },
+ {
+ filters: ['-468x60.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imagetwist.com/banner/ImageTwist-468x60.png',
+ },
+ {
+ filters: ['-728x90_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imagetwist.com/banner/ImageTwist-728x90_2.gif',
+ },
+ {
+ filters: ['-728x90.', '728x90.gif|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imagetwist.com/banner/ImageTwist-728x90.gif',
+ },
+ {
+ filters: ['||onclickmega.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://onclickmega.com',
+ },
+ {
+ filters: ['@@||gemius.pl/gstream.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gatr.hit.gemius.pl/gstream.js',
+ },
+ {
+ filters: ['||onclicksuper.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://onclicksuper.com',
+ },
+ {
+ check: true,
+ filters: ['/analytics/analytics.$third-party', '/analytics/analytics.$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.hepsiburada.net/assets/analytics/analytics.min.js',
+ },
+ {
+ filters: ['/ads.css'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cdn2.admatic.com.tr/content/ads.css',
+ },
+ {
+ filters: ['||pixxur.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://pixxur.com',
+ },
+ {
+ filters: ['||adobetag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.adobetag.com',
+ },
+ {
+ filters: ['/pageview.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.audiencedata.net/js/v1/pageview.js',
+ },
+ {
+ filters: ['||fitanalytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://integrations.fitanalytics.com',
+ },
+ {
+ filters: ['||skysports.com/commercial/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.skysports.com/commercial/',
+ },
+ {
+ filters: ['/cedexis/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://productimages.hepsiburada.net/cedexis/',
+ },
+ {
+ filters: ['_adunit.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://m.sporx.com/_banner/fill_adunit.php',
+ },
+ {
+ filters: ['||akamai.net/chartbeat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a248.e.akamai.net/chartbeat.download.akamai.com',
+ },
+ {
+ filters: ['||pp8.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pb.sys.pp8.com',
+ },
+ {
+ filters: ['||ecustomeropinions.com^$third-party', '||ecustomeropinions.com^*/i.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ecustomeropinions.com/survey/i.php?',
+ },
+ {
+ filters: ['/monetization/pixel-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.playbuzz.com/content/monetization/pixel-sdk',
+ },
+ {
+ filters: ['||ftjcfx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ftjcfx.com',
+ },
+ {
+ filters: ['||webvisor.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://report-2.appmetrica.webvisor.com',
+ },
+ {
+ filters: ['||ns-cdn.com^*/ns_vmtag.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ps.ns-cdn.com/dsatserving2/scripts/ns_vmtag.js',
+ },
+ {
+ filters: ['|https://$script,xmlhttprequest,domain=imagefap.com'],
+ sourceUrl: 'https://www.imagefap.com',
+ type: 'script',
+ url: 'https://',
+ },
+ {
+ filters: ['||flix360.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.flix360.com',
+ },
+ {
+ filters: ['||toplist.cz^', '||toplist.cz^$third-party', '/dot.asp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://toplist.cz/dot.asp?',
+ },
+ {
+ filters: ['||instreamvideo.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://instreamvideo.ru',
+ },
+ {
+ filters: ['||las4srv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://traffic.las4srv.com',
+ },
+ {
+ filters: ['||idntfy.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://idntfy.ru',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['@@||imagefap.com/combine.php?$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.imagefap.com/combine.php?',
+ },
+ {
+ filters: ['/ad_loader.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.imagefap.com/jscripts/ad_loader.js',
+ },
+ {
+ filters: ['@@||ads.exoclick.com^$script,domain=8muses.com|imagefap.com'],
+ sourceUrl: 'https://www.imagefap.com',
+ type: 'script',
+ url: 'https://ads.exoclick.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['@@||imagefap.com/img/logo.gif$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.imagefap.com/img/logo.gif',
+ },
+ {
+ filters: ['||analytics.ooyala.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.ooyala.com',
+ },
+ {
+ filters: ['/pixel.cgi?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.fqtag.com/pixel.cgi?',
+ },
+ {
+ filters: ['@@||yui.yahooapis.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://yui.yahooapis.com',
+ },
+ {
+ filters: ['||l.ooyala.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://l.ooyala.com',
+ },
+ {
+ filters: ['||ooyala.com/sas/analytics?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://player.ooyala.com/sas/analytics?',
+ },
+ {
+ filters: ['@@||imagefap.com/jscripts/gallery.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.imagefap.com/jscripts/gallery.js',
+ },
+ {
+ filters: ['||r-ad.ne.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://bk.r-ad.ne.jp',
+ },
+ {
+ filters: ['||stats.pandora.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://stats.pandora.com',
+ },
+ {
+ filters: ['||collective-media.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.collective-media.net',
+ },
+ {
+ filters: ['||speakol.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://crawler.speakol.com',
+ },
+ {
+ filters: [
+ '||ads.servebom.com^',
+ '@@||servebom.com/tmn*.js$script,domain=tomsguide.com|tomshardware.co.uk|tomshardware.com|wonderhowto.com',
+ ],
+ sourceUrl: 'https://www.tomshardware.com',
+ type: 'script',
+ url: 'https://ads.servebom.com/tmnhead.js',
+ },
+ {
+ filters: ['/misc/ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.yifysubtitles.com/images/misc/ad-orbitron.jpg',
+ },
+ {
+ filters: ['||24smi.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://counter.24smi.info',
+ },
+ {
+ filters: ['||rat.rakuten.co.jp^$~xmlhttprequest', '||rat.rakuten.co.jp^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rat.rakuten.co.jp',
+ },
+ {
+ filters: ['/clickstream.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.purch.com/loe/latest/clickstream.js',
+ },
+ {
+ filters: ['||chango.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cc.chango.com',
+ },
+ {
+ filters: ['||pro-market.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fei.pro-market.net',
+ },
+ {
+ filters: ['||perfdrive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.perfdrive.com',
+ },
+ {
+ filters: ['/track/event/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.sail-track.com/v1/track/event/',
+ },
+ {
+ filters: ['||ramp.purch.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ramp.purch.com',
+ },
+ {
+ filters: ['||viralcpm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.viralcpm.com',
+ },
+ {
+ filters: ['||turbobit.net/platform/js/lib/pus/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.turbobit.net/platform/js/lib/pus/',
+ },
+ {
+ filters: ['/common/ads/*', '/ads/www/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.memurlar.net/common/ads/www/',
+ },
+ {
+ filters: ['||sessions.exchange^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://get.sessions.exchange',
+ },
+ {
+ filters: ['||nhk.or.jp^*/bc.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www3.nhk.or.jp/news/parts16/js/bc.js',
+ },
+ {
+ filters: ['||deqwas.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://kimgcs.deqwas.net',
+ },
+ {
+ filters: ['||analytics-egain.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.analytics-egain.com',
+ },
+ {
+ filters: ['/app/tracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.jimdo.com/app/tracking/',
+ },
+ {
+ filters: ['||bunchbox.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.bunchbox.co',
+ },
+ {
+ filters: ['||bitmedianetwork.com^'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'http://www.bitmedianetwork.com',
+ },
+ {
+ filters: ['||flirt4free.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.flirt4free.com',
+ },
+ {
+ filters: ['||redtram.com^$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js-ru.redtram.com',
+ },
+ {
+ filters: ['||vs4.com/impr.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.vs4.com/impr.php?',
+ },
+ {
+ filters: ['||neobux.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.neobux.com',
+ },
+ {
+ filters: ['||dw.com/tracking/', '/tracking/xtcore.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://commons.dw.com/tracking/xtcore.js',
+ },
+ {
+ filters: ['@@||analytics.edgekey.net/html5/akamaihtml5-min.js$domain=nhk.or.jp'],
+ sourceUrl: 'https://www3.nhk.or.jp',
+ type: 'script',
+ url: 'https://79423.analytics.edgekey.net/html5/akamaihtml5-min.js',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.cengage.co.uk',
+ type: 'script',
+ url: 'https://www.cengage.co.uk/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||banners.videosecrets.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://banners.videosecrets.com',
+ },
+ {
+ filters: ['/advelvet-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://advelvet-liftablemedia.global.ssl.fastly.net',
+ },
+ {
+ filters: ['||trbna.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://trbna.com',
+ },
+ {
+ filters: ['/om.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lgr.visilabs.net/n11com/om.gif?',
+ },
+ {
+ filters: ['/counter.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.news.zing.vn/Counter.aspx?',
+ },
+ {
+ check: true,
+ filters: ['728x90.htm|'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.cnbeta.com/assets/adx728x90.htm',
+ },
+ {
+ filters: ['/uutils.fcg?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s89.ucoz.net/cgi/uutils.fcg?',
+ },
+ {
+ check: true,
+ filters: ['/adlogger_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://static.googles.com/adserver/adlogger_tracker.php',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://www.dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||ancestrycdn.com/tao/at/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ancestrycdn.com/tao/at/',
+ },
+ {
+ filters: ['||click.aliexpress.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://s.click.aliexpress.com',
+ },
+ {
+ filters: ['||cdn.auth0.com/*/analytics.min.js$script,redirect=noopjs,domain=tomsguide.com'],
+ sourceUrl: 'https://www.tomsguide.com',
+ type: 'script',
+ url: 'https://cdn.auth0.com/js/analytics/1.2.1/analytics.min.js',
+ },
+ {
+ filters: ['||stack-sonar.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.stack-sonar.com',
+ },
+ {
+ filters: ['&action=js_stats&'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.porntrex.com/?mode=async&action=js_stats&rand=1540303174735',
+ },
+ {
+ filters: ['||teefpagayhb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.teefpagayhb.com',
+ },
+ {
+ filters: [
+ '@@||google-analytics.com/analytics.js$domain=afternic.com|allmusic.com|amctv.com|bebo.com|bennysva.com|blastingnews.com|ch10.co.il|cliphunter.com|daemon-tools.cc|desigual.com|easyjet.com|firehousesubs.com|gamepix.com|greentoe.com|housing.wisc.edu|infogr.am|jackbox.tv|jobs.net|keygames.com|manowthaimordialloc.com.au|maxiclimber.com|orbitum.com|pluto.tv|pure.com|rebtel.com|sbnation.com|sci2.tv|seatgeek.com|stitcher.com|support.amd.com|tagheuer.com.au|tv10play.se|tv3play.se|tv6play.se|tv8play.se|video.pbs.org|vox.com|vpnster.com|weather.gov|westernunion.at|westernunion.be|westernunion.ca|westernunion.ch|westernunion.cl|westernunion.co.jp|westernunion.co.nz|westernunion.co.uk|westernunion.co.za|westernunion.com|westernunion.com.au|westernunion.com.co|westernunion.com.hk|westernunion.com.my|westernunion.com.pe|westernunion.de|westernunion.fr|westernunion.ie|westernunion.it|westernunion.nl|westernunion.ph|westernunion.pl|westernunion.se|westernunion.sg|www.google.com',
+ ],
+ sourceUrl: 'https://us.blastingnews.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||rapidvideo.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/jquery.validate.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/jquery.validate.min.js',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/jquery-ui.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/jquery-ui.min.js',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/jquery.limit-1.2.source.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/jquery.limit-1.2.source.js',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/jquery.tipsy.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/jquery.tipsy.js',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/new.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/new.js',
+ },
+ {
+ filters: ['/adman.$domain=~adman.ee|~adman.studio', '||adman.gr^$third-party', '||adman.gr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.adman.gr/adman.js',
+ },
+ {
+ filters: ['||onscroll.com^$third-party', '||onscroll.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dfp-gateway.us.onscroll.com',
+ },
+ {
+ filters: ['.adpartner.$domain=~adpartner.cz'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a4p.adpartner.pro',
+ },
+ {
+ filters: ['-content-ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a4p.adpartner.pro/vunit/media/adpartner-content-ad.min.js',
+ },
+ {
+ filters: ['@@||s.reembed.com^$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.reembed.com',
+ },
+ {
+ filters: ['/cross-domain-cookie?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.ancestry.com/lp/cross-domain-cookie?',
+ },
+ {
+ filters: ['/library/svy/*/broker.js', '||microsoft.com/library/svy/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.microsoft.com/library/svy/xbox/broker.js',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||intelliad.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t23.intelliad.de',
+ },
+ {
+ filters: ['/ad-plugin/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://player.ooyala.com/static/v4/stable/4.24.11/ad-plugin/',
+ },
+ {
+ filters: ['/analytics-plugin/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://player.ooyala.com/static/v4/stable/4.24.11/analytics-plugin/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/assets/ad/*', '@@||xbox.com/assets/ad/$image,first-party'],
+ sourceUrl: 'https://www.xbox.com',
+ type: 'image',
+ url: 'https://compass-ssl.xbox.com/assets/ad/',
+ },
+ {
+ filters: ['@@||xbox.com/assets/ad/$image,first-party'],
+ sourceUrl: 'https://www.xbox.com',
+ type: 'image',
+ url: 'https://compass-ssl.xbox.com/assets/ad/',
+ },
+ {
+ filters: ['@@||xbox.com/assets/ad/$image,first-party'],
+ sourceUrl: 'https://www.xbox.com',
+ type: 'image',
+ url: 'https://compass-ssl.xbox.com/assets/ad/',
+ },
+ {
+ filters: ['||affiliates.rozetka.com.ua^'],
+ sourceUrl: 'https://m.rozetka.com.ua',
+ type: 'script',
+ url: 'https://affiliates.rozetka.com.ua',
+ },
+ {
+ filters: ['||log.snapdeal.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://log.snapdeal.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||eboundservices.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://publisher.eboundservices.com',
+ },
+ {
+ filters: ['||caltat.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://cdn3.caltat.com',
+ },
+ {
+ filters: ['/pixel/img/*', '||pixel.sojern.com^', '||sojern.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.sojern.com/pixel/img/',
+ },
+ {
+ filters: ['/ad/view/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ie-g2.gumgum.com/ad/view/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||jivox.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pxl.jivox.com',
+ },
+ {
+ filters: ['/gatag.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ca.gov/js/gatag.js',
+ },
+ {
+ filters: ['||appspot.com/collect'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://core-analytics-dot-liftable-bq-streamer.appspot.com/collect',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'http://dailypost.ng',
+ type: 'script',
+ url: 'http://cdn1.dailypost.ng/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/heatmap.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.timeanddate.com/common/heatmap.js',
+ },
+ {
+ filters: ['.ads3-', '||ads3-adnow.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st-n.ads3-adnow.com',
+ },
+ {
+ filters: ['||hurra.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.hurra.com',
+ },
+ {
+ filters: ['||connatix.com^', '||connatix.com/min/connatix.renderer.infeed.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.connatix.com/min/connatix.renderer.infeed.min.js',
+ },
+ {
+ filters: [
+ '/advertiser.$domain=~advertiser.adverbid.com|~advertiser.autorepairconnect.com|~advertiser.growmobile.com|~linkpizza.com|~panel.rightflow.com|~trialpay.com|~unity3d.com',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://content.hybrid.ai/astraone/advertiser.png',
+ },
+ {
+ filters: ['/advertisments/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.ca.gov/-/media/Global-Files/Advertisments/',
+ },
+ {
+ filters: ['/hads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://scontent.xx.fbcdn.net/hads-ak-prn2',
+ },
+ {
+ filters: ['||sddan.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://js.sddan.com',
+ },
+ {
+ filters: ['/revboostprocdnadsprod.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://revboostprocdnadsprod.azureedge.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ check: true,
+ filters: ['/aff_ad?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trk.topfxpro.com/aff_ad?',
+ },
+ {
+ filters: ['||go2speed.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.go2speed.org',
+ },
+ {
+ filters: ['||tmgr.ccmbg.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tmgr.ccmbg.com',
+ },
+ {
+ filters: ['/clicklognew.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://secure.dhgate.com/track/clicklognew.jsp',
+ },
+ {
+ filters: ['||tharbadir.com^', '||tharbadir.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tharbadir.com',
+ },
+ {
+ filters: ['||google.com^*/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://play.google.com/play/log?',
+ },
+ {
+ filters: ['/afr?auid='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://uk-ads.openx.net/w/1.0/afr?auid=392783&cb=INSERT_RANDOM_NUMBER_HERE',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||verifier.live^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://verifier.live',
+ },
+ {
+ filters: [
+ '|http*://$image,third-party,xmlhttprequest,domain=123movies-proxy.ru|123movies.cz|123movies.gs|123movies.is|123movies.live|123movies.net|123movies.net.ru|123movies.ru|123movies.vc|123moviesfree.com|123movieshd.net|123movieshd.tv|9cartoon.me|animehaven.to|auroravid.to|ay8ou8ohth.com|bitvid.sx|btdb.in|btdb.to|clipconverter.cc|cloudtime.to|cmovieshd.com|divxme.com|downloadming.tv|dropapk.com|flyordie.com|full-pcsoftware.com|halacima.net|hdmusic99.in|hdtv-rls.com|kannadamovies.biz|kissanime.ru|kissmanga.com|livetvcafe.net|movdivx.com|mp3clan.one|nowvideo.li|nowvideo.sx|nowvideo.to|ocean0fgames.com|oogh8ot0el.com|otakustream.tv|otorrents.com|putlocker.co|rgmechanicsgames.com|solarmovie.sc|speedvid.net|stream2watch.org|suprafiles.co|thepiratebay.cd|vidto.me|vidtudu.com|wholecloud.net',
+ ],
+ sourceUrl: 'https://www.clipconverter.cc',
+ type: 'image',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||static.criteo.net/flash^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.criteo.net/flash',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://transmitter.ieee.org',
+ type: 'script',
+ url: 'https://transmitter.ieee.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||fraudmetrix.cn^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.fraudmetrix.cn',
+ },
+ {
+ filters: ['/federated-analytics.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.homelandsecurity.noaa.gov/main/federated-analytics.js',
+ },
+ {
+ filters: ['||tags.news.com.au^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.news.com.au',
+ },
+ {
+ filters: ['/pixel.*/track/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i1.wp.com/pixel.tcog.cp1.news.com.au/track/',
+ },
+ {
+ filters: ['/track/component/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i1.wp.com/pixel.tcog.cp1.news.com.au/track/component/',
+ },
+ {
+ filters: ['.adnigma.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/www.adnigma.com',
+ },
+ {
+ filters: ['/WebAnalytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://webanalytics.library.cornell.edu',
+ },
+ {
+ filters: ['/utrack.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/utrack/utrack.js?',
+ },
+ {
+ filters: ['/nielsen.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/nielsen/nielsen.js',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ filters: ['||t.purch.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.purch.com',
+ },
+ {
+ check: true,
+ filters: ['/googleanalytics.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.po.st/static/v4/js/plugins/googleAnalytics.js',
+ },
+ {
+ filters: ['||adskom.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssp.adskom.com',
+ },
+ {
+ filters: ['/ard.png?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.bhphotovideo.com/__ssobj/ard.png?',
+ },
+ {
+ filters: ['||a8.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://statics.a8.net',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ check: true,
+ filters: ['||analytics.foresee.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.foresee.com',
+ },
+ {
+ filters: ['/advertorials/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://idora.milliyet.com.tr/Mobil/Advertorials/',
+ },
+ {
+ filters: ['/gifbanner?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.jp.ap.valuecommerce.com/servlet/gifbanner?',
+ },
+ {
+ filters: ['||imonomy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://srv.imonomy.com',
+ },
+ {
+ filters: ['||rockyou.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tas-sync.rockyou.net',
+ },
+ {
+ filters: ['||admanmedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mona.admanmedia.com',
+ },
+ {
+ filters: ['||analitits.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.analitits.com',
+ },
+ {
+ filters: ['/trackingVtm.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.abc.es/nibara/2.0.15/trackingVtm.js',
+ },
+ {
+ filters: ['||static.vocento.com/dab/*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.vocento.com/dab/latest/strategy.js',
+ },
+ {
+ filters: ['/openx_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stadvtools.akamaized.net/openx/gazzetta/openx_async.js',
+ },
+ {
+ filters: ['/TrackingService.js', '/trackingService/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stadvtools.akamaized.net/trackingservice/gazzetta/TrackingService.js',
+ },
+ {
+ filters: ['/event/v3?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analitits.com/t/event/v3?',
+ },
+ {
+ filters: ['/adsence.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cdn.yjc.ir/media/css/adsence.css',
+ },
+ {
+ filters: ['||aps.hearstnp.com^', '/loadads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aps.hearstnp.com/Scripts/loadAds.js',
+ },
+ {
+ filters: ['||abc.es/pixel/'],
+ sourceUrl: 'https://www.abc.es',
+ type: 'script',
+ url: 'https://rrss.abc.es/pixel/',
+ },
+ {
+ filters: ['||porn300.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.porn300.com',
+ },
+ {
+ filters: ['||trfpump.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.trfpump.com',
+ },
+ {
+ filters: ['/spixel.', '/pixel/js/*$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://spixel.socy.es/pixel/js/',
+ },
+ {
+ filters: ['/pixel.json?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rrss.abc.es/pixel.json?',
+ },
+ {
+ filters: ['||kiosked.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.kiosked.com',
+ },
+ {
+ filters: ['/runtimejs/intercept/*', '/intercept.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2bnxibecyz4h5.cloudfront.net/runtimejs/intercept/intercept.js',
+ },
+ {
+ filters: ['||mm-syringe.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bucket1.mm-syringe.com',
+ },
+ {
+ filters: ['/beaconconfigs/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://surveygizmobeacon.s3.amazonaws.com/beaconconfigs/',
+ },
+ {
+ filters: ['/adview.$domain=~adview.mu|~adview.online'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.escinteractive.com/adview.php',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/iframe-tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rs.maxiporn.com/js/iframe-tracker.js',
+ },
+ {
+ filters: ['||pixel.yabidos.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.yabidos.com',
+ },
+ {
+ filters: ['||ad-delivery.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad-delivery.net',
+ },
+ {
+ filters: ['||metrics-api.librato.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://metrics-api.librato.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||elr.sfr.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://elr.sfr.fr',
+ },
+ {
+ filters: ['||ew3.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ew3.io',
+ },
+ {
+ filters: ['||track.tcppu.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://track.tcppu.com',
+ },
+ {
+ filters: ['||in.com/common/script_catch.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.in.com/common/script_catch.js',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ filters: ['||fortpush.com^', '||fortpush.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fortpush.com',
+ },
+ {
+ filters: ['||botman.ninja^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.assets.botman.ninja',
+ },
+ {
+ filters: ['||posst.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://inapi.posst.co',
+ },
+ {
+ filters: ['/PageTracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.verizon.com/resources/verizonglobalhome/scripts/pagetracker.js',
+ },
+ {
+ filters: ['/vzTracker/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.verizon.com/vzTracker/',
+ },
+ {
+ filters: ['||cpaevent.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cl.cpaevent.ru',
+ },
+ {
+ filters: ['||fotostrana.ru/start/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.fotostrana.ru/start/',
+ },
+ {
+ filters: ['||bbelements.com^$third-party', '||bbelements.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bbcdn.go.idnes.bbelements.com',
+ },
+ {
+ filters: ['/trackad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trackad.cz',
+ },
+ {
+ filters: ['||keyword.daumdn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cts.keyword.daumdn.com',
+ },
+ {
+ filters: ['||conductrics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-v3.conductrics.com',
+ },
+ {
+ filters: ['||tracking.olx-st.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.olx-st.com',
+ },
+ {
+ filters: ['||ebz.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://as.ebz.io',
+ },
+ {
+ filters: ['/acecounter/*', '/acecounter_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dimg.donga.com/acecounter/acecounter_V70.20130719.js',
+ },
+ {
+ filters: ['@@||last.fm^$script,first-party'],
+ sourceUrl: 'https://www.last.fm',
+ type: 'script',
+ url: 'https://www.last.fm',
+ },
+ {
+ filters: ['||sofascore.com/geoip.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.sofascore.com/geoip.js',
+ },
+ {
+ filters: ['||adocean.pl^$third-party', '||adocean.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://trgde.adocean.pl',
+ },
+ {
+ filters: ['||siteimproveanalytics.com^', '||siteimproveanalytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://siteimproveanalytics.com',
+ },
+ {
+ filters: [
+ '@@||imrworldwide.com/v60.js$domain=last.fm|musicfeeds.com.au|nzherald.co.nz|realestateview.com.au|sf.se|threenow.co.nz|weatherchannel.com.au',
+ ],
+ sourceUrl: 'https://www.last.fm',
+ type: 'script',
+ url: 'https://secure-us.imrworldwide.com/v60.js',
+ },
+ {
+ filters: ['/adtags/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.searchlinks.com/adtags/',
+ },
+ {
+ filters: ['/frontend_loader.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.analdin.com/nb/frontend_loader.js',
+ },
+ {
+ filters: ['||dreamsearch.or.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.dreamsearch.or.kr',
+ },
+ {
+ filters: ['/adnetwork/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.innity.net/adnetwork/',
+ },
+ {
+ filters: ['||cad.donga.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://cad.donga.com',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ filters: ['||o333o.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://a.o333o.com',
+ },
+ {
+ filters: ['||imagebam.com^$script', '@@||imagebam.com/JS/imagebam.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.imagebam.com/JS/imagebam.js',
+ },
+ {
+ filters: ['@@||imagebam.com/JS/jquery.1.5.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.imagebam.com/JS/jquery.1.5.js',
+ },
+ {
+ filters: [
+ '@@||imagebam.com^*ad$first-party,script',
+ '@@||imagebam.com/JS/plupload.full.min.new.js$script',
+ ],
+ sourceUrl: 'http://www.imagebam.com',
+ type: 'script',
+ url: 'http://www.imagebam.com/JS/plupload.full.min.new.js',
+ },
+ {
+ filters: ['@@||imagebam.com/JS/pupload_anon.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.imagebam.com/JS/pupload_anon.js',
+ },
+ {
+ filters: ['||www.imagebam.com^$image', '@@||imagebam.com/img/icons/star.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/icons/star.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/ib_badge.gif$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/ib_badge.gif',
+ },
+ {
+ filters: ['@@||imagebam.com/img/icons/page_white_get.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/icons/page_white_get.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/help.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/help.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/tux.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/tux.png',
+ },
+ {
+ filters: ['||bnr.alza.cz^', '/extBnr.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bnr.alza.cz/extBnr.gif?',
+ },
+ {
+ filters: ['@@||imagebam.com/img/input_bg.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/input_bg.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/clicktostart.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/clicktostart.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/icons/lightbulb.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/icons/lightbulb.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/tab-line.gif$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/tab-line.gif',
+ },
+ {
+ filters: ['@@||imagebam.com/img/tab-back.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/tab-back.png',
+ },
+ {
+ filters: ['@@||imagebam.com/img/imagebam.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.imagebam.com/img/imagebam.png',
+ },
+ {
+ filters: ['_ads.html'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://1gr.cz/prilohy/reklama/idn-wsq_ads.html',
+ },
+ {
+ filters: ['@@||imagebam.com/JS/pt.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.imagebam.com/JS/pt.js',
+ },
+ {
+ filters: ['/assets/tracking-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://assets0.desk.com/assets/tracking-1b7234dfdb53a1f5d1f8c427e6b594f3.js',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ filters: ['/openx.$domain=~openx.tv'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://openx.elmogaz.com',
+ },
+ {
+ filters: ['||dynatrace.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js-cdn.dynatrace.com',
+ },
+ {
+ filters: ['||p.ctpost.com/article?i='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.ctpost.com/article?i=13327444&s=chron&ts=1540303243252',
+ },
+ {
+ filters: ['/ads7.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads7.hsoub.com',
+ },
+ {
+ filters: ['/adsjs/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theatlantic.com/packages/adsjs/',
+ },
+ {
+ filters: ['||adspsp.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://prod.adspsp.com',
+ },
+ {
+ filters: ['||ibm.com/common/stats/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ibm.com/common/stats/',
+ },
+ {
+ filters: ['/assets/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.epochtimes.com/assets/ads/',
+ },
+ {
+ filters: [
+ '||coremetrics.com^',
+ '||coremetrics.com^$third-party',
+ '@@||coremetrics.com*/eluminate.js',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://libs.coremetrics.com/eluminate.js',
+ },
+ {
+ filters: ['/ads.compat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theatlantic.com/packages/adsjs/ads.compat.min.js',
+ },
+ {
+ filters: ['@@||facdn.net/art/$image,domain=furaffinity.net'],
+ sourceUrl: 'http://www.furaffinity.net',
+ type: 'image',
+ url: 'http://d.facdn.net/art/',
+ },
+ {
+ check: true,
+ filters: ['||survey.g.doubleclick.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://survey.g.doubleclick.net',
+ },
+ {
+ filters: ['-auto-ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://amp.cloudflare.com/rtv/011530043289240/v0/amp-auto-ads-0.1.js',
+ },
+ {
+ filters: ['-adv.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cda.pl/rek1-adv.js',
+ },
+ {
+ filters: ['/ads3.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads3.hsoub.com',
+ },
+ {
+ filters: ['/analytics/video_$domain=~twitch.tv'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.vilynx.com/api2.0/analytics/video_hit',
+ },
+ {
+ filters: ['||zoyxbjmmlsrc.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.zoyxbjmmlsrc.com',
+ },
+ {
+ filters: ['||clickonometrics.pl^', '||clickonometrics.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.clickonometrics.pl',
+ },
+ {
+ filters: ['/ads/banner-', '/banner-ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1ht.traffichaus.com/ads/banner-ad.js',
+ },
+ {
+ filters: ['_top_ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cad.donga.com/M/view_top_ad.js',
+ },
+ {
+ filters: ['||adinc.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.adinc.kr',
+ },
+ {
+ filters: ['_ad1.$~stylesheet'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cad.donga.com/M/view_ad1.js',
+ },
+ {
+ filters: ['_ad6.$domain=~facebook.com|~messenger.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cad.donga.com/M/view_ad6.js',
+ },
+ {
+ filters: ['_ad9.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cad.donga.com/M/view_ad9.js',
+ },
+ {
+ filters: ['||soska.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://soska.us',
+ },
+ {
+ filters: [
+ '|https://$script,xmlhttprequest,domain=eztv.ag|eztv.tf|eztv.yt',
+ '@@||ajax.googleapis.com^$script,domain=eztv.ag|eztv.tf|eztv.yt',
+ ],
+ sourceUrl: 'https://eztv.ag',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['@@||cdnjs.cloudflare.com^$script,domain=eztv.ag|eztv.tf|eztv.yt'],
+ sourceUrl: 'https://eztv.ag',
+ type: 'script',
+ url: 'https://cdnjs.cloudflare.com',
+ },
+ {
+ filters: ['@@||eztv.ag/js/search_shows*.js$script,domain=eztv.ag|eztv.tf|eztv.yt'],
+ sourceUrl: 'https://eztv.ag',
+ type: 'script',
+ url: 'https://eztv.ag/js/search_shows1.js',
+ },
+ {
+ filters: ['@@||tags.news.com.au/prod/metrics/metrics.js$script,first-party'],
+ sourceUrl: 'https://www.news.com.au',
+ type: 'script',
+ url: 'https://tags.news.com.au/prod/metrics/metrics.js',
+ },
+ {
+ filters: ['/ads/article.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.epochtimes.com/assets/themes/m-djy/js/ads/article.min.js',
+ },
+ {
+ filters: [
+ '||bf-ad.net^$domain=focus.de',
+ '@@||bf-ad.net/pubjs/focus/adengine.js$domain=focus.de',
+ ],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://a.bf-ad.net/pubjs/focus/adengine.js',
+ },
+ {
+ filters: ['||lp4.io^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://pp.lp4.io',
+ },
+ {
+ filters: ['||googletagmanager.com^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://www.googletagmanager.com',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['||googlesyndication.com^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com',
+ },
+ {
+ filters: ['||medrx.telstra.com.au^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://medrx.telstra.com.au',
+ },
+ {
+ filters: ['||go2affise.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.go2affise.com',
+ },
+ {
+ filters: ['||ednplus.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adex.ednplus.com',
+ },
+ {
+ filters: ['||ad4989.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adgrp1.ad4989.co.kr',
+ },
+ {
+ filters: ['/xtclicks.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.meteofrance.com/mf3-base-theme/js/xiti/xtclicks.js',
+ },
+ {
+ filters: ['||conative.de^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://cdn.conative.de',
+ },
+ {
+ filters: ['||xplosion.de^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://ups.xplosion.de',
+ },
+ {
+ check: true,
+ filters: ['||bidder.criteo.com^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'xhr',
+ url: 'https://bidder.criteo.com',
+ },
+ {
+ filters: ['||nativendo.de^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'xhr',
+ url: 'https://d.nativendo.de',
+ },
+ {
+ filters: ['||3lift.com^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'xhr',
+ url: 'https://tlx.3lift.com',
+ },
+ {
+ filters: ['||yieldlab.net^$domain=autobild.de|focus.de|transfermarkt.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'xhr',
+ url: 'https://ad.yieldlab.net',
+ },
+ {
+ check: true,
+ filters: ['||adnxs.com^$domain=autobild.de|focus.de|transfermarkt.de|widgets.outbrain.com'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'xhr',
+ url: 'https://ib.adnxs.com',
+ },
+ {
+ check: true,
+ filters: ['||g.doubleclick.net^$domain=focus.de|imasdk.googleapis.com|transfermarkt.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'image',
+ url: 'https://stats.g.doubleclick.net',
+ },
+ {
+ filters: ['||ad.about.co.kr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ad.about.co.kr',
+ },
+ {
+ filters: ['||png2imag.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.png2imag.club',
+ },
+ {
+ filters: ['@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['||emetriq.de^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://cdn.emetriq.de',
+ },
+ {
+ filters: ['||adition.com^$domain=focus.de|g.doubleclick.net|transfermarkt.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'image',
+ url: 'https://dsp.adfarm1.adition.com',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com^$domain=autobild.de|focus.de|transfermarkt.de',
+ '@@||pagead2.googlesyndication.com/pagead/osd.js$domain=focus.de',
+ ],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/osd.js',
+ },
+ {
+ filters: ['||adpnut.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://media.adpnut.com',
+ },
+ {
+ filters: ['/static/adv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.gismeteo.ua/static/adv/',
+ },
+ {
+ filters: ['||luxupadva.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.luxupadva.com',
+ },
+ {
+ filters: ['||amazon-adsystem.com^$domain=autobild.de|focus.de|transfermarkt.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://c.amazon-adsystem.com',
+ },
+ {
+ filters: ['||cmcore.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://data.cmcore.com',
+ },
+ {
+ filters: ['||netinsight.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.xc.netinsight.co.kr',
+ },
+ {
+ filters: ['||adform.net^$domain=autobild.de|focus.de|googlesyndication.com'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'image',
+ url: 'https://dmp.adform.net',
+ },
+ {
+ filters: ['/ruxitagentjs_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.delta.com/ruxitagentjs_2SVfhjqr_10119170522100716.js',
+ },
+ {
+ filters: ['/sitecatalyst/tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.delta.com/etc/clientlibs/sitecatalyst/tracking.min.js',
+ },
+ {
+ filters: ['.sitecatalyst.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.delta.com/content/www/_jcr_content/analytics.sitecatalyst.js',
+ },
+ {
+ filters: ['/analytics.config.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.delta.com/content/www/_jcr_content/analytics.config.js',
+ },
+ {
+ filters: ['/jquery.dfp.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.joq.al/assets/js/jquery.dfp.min.js',
+ },
+ {
+ filters: ['/fuckadblock.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.gismeteo.ua/static/js/fuckadblock.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://tabloalmas2.blogfa.com',
+ type: 'script',
+ url: 'http://www.blogfa.com/ad/',
+ },
+ {
+ filters: ['/adx/js/*', '/cdn/adx/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn-exchange.toastoven.net/cdn/adx/js/',
+ },
+ {
+ filters: ['/sbtracking/pageview2?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://news.sportbox.ru/sbtracking/pageview2?',
+ },
+ {
+ filters: ['/adfile/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.book118.com/adfile/',
+ },
+ {
+ filters: ['||clevernt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://clevernt.com',
+ },
+ {
+ filters: ['||realclick.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ssp.realclick.co.kr',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://asheghane61.blogfa.com',
+ type: 'script',
+ url: 'http://www.blogfa.com/ad/',
+ },
+ {
+ filters: ['||play-asia.com^$image,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.play-asia.com',
+ },
+ {
+ filters: ['=googleanalytics_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://horriblesubs.info/?ga_action=googleanalytics_get_script',
+ },
+ {
+ filters: ['/ads/banners/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.blogfa.com/ads/banners/',
+ },
+ {
+ filters: ['||tkpi.delta.com^', '/datacollectcode?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tkpi.delta.com/datacollectcode?',
+ },
+ {
+ filters: ['||krxd.net^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'image',
+ url: 'https://beacon.krxd.net',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://tabloalmas.blogfa.com',
+ type: 'script',
+ url: 'http://www.blogfa.com/ad/',
+ },
+ {
+ filters: ['||bidgear.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform.bidgear.com',
+ },
+ {
+ filters: ['?affiliate=$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.bet365.com/dl/~offer?affiliate=365_773866',
+ },
+ {
+ filters: ['||tru.webelapp.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tru.webelapp.com',
+ },
+ {
+ filters: ['/libc/ads/*', '/ads/abrad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.abril.com.br/libc/ads/abrad.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://tabloalmas.blogfa.com',
+ type: 'script',
+ url: 'http://www.blogfa.com/ad/',
+ },
+ {
+ filters: ['||glean.pop6.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://glean.pop6.com',
+ },
+ {
+ filters: ['||clickfuse.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://srv.clickfuse.com',
+ },
+ {
+ filters: ['/imp.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://srv.clickfuse.com/showads/track/imp.php?',
+ },
+ {
+ filters: ['||mlstat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.mlstat.com',
+ },
+ {
+ filters: ['@@||connect.facebook.net^$script,domain=eztv.ag|eztv.tf|eztv.yt'],
+ sourceUrl: 'https://eztv.ag',
+ type: 'script',
+ url: 'https://connect.facebook.net',
+ },
+ {
+ filters: ['||tr.webantenna.info^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tr.webantenna.info',
+ },
+ {
+ check: true,
+ filters: ['||adultfriendfinder.com/go/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://adultfriendfinder.com/go/',
+ },
+ {
+ filters: ['||smartredirect.de^$domain=focus.de'],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://js.smartredirect.de',
+ },
+ {
+ filters: ['||genieedmp.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://genieedmp.com',
+ },
+ {
+ filters: ['/apw.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.corriere.it/apw.js',
+ },
+ {
+ filters: ['/adv.asp'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://spdmg-backend2.i-mobile.co.jp/adv.aspx',
+ },
+ {
+ filters: ['_adnetwork.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gamma.cachefly.net/js/m_adnetwork.js',
+ },
+ {
+ check: true,
+ filters: ['/ads6.$domain=~ads6.adesignstudio.eu', '/ads6.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads6.hsoub.com',
+ },
+ {
+ filters: ['||testin.cn^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://abapi.testin.cn',
+ },
+ {
+ filters: ['/banner.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.1tv.ru/player/special/banner.gif?',
+ },
+ {
+ filters: ['||justicejudo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://justicejudo.com',
+ },
+ {
+ filters: [
+ '@@||newrelic.com/nr-*.min.js$domain=play.spotify.com|surveymonkey.co.uk|surveymonkey.com|surveymonkey.de|surveymonkey.ru',
+ ],
+ sourceUrl: 'https://de.surveymonkey.com',
+ type: 'script',
+ url: 'https://js-agent.newrelic.com/nr-1099.min.js',
+ },
+ {
+ filters: ['/adops/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js2.corriereobjects.it/adops/',
+ },
+ {
+ filters: ['/uploaded/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://newsmedia.tasnimnews.com/Tasnim//Uploaded/Ads/',
+ },
+ {
+ filters: ['||facebook.com/common/scribe_endpoint.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/common/scribe_endpoint.php',
+ },
+ {
+ filters: [
+ '||moatads.com^$domain=autobild.de|focus.de',
+ '@@||moatads.com^*/moatad.js$domain=focus.de|transfermarkt.de',
+ ],
+ sourceUrl: 'https://m.focus.de',
+ type: 'script',
+ url: 'https://z.moatads.com/groupmdelorealdcmdisplay860035276432/moatad.js',
+ },
+ {
+ filters: ['/xtcore_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.avito.ma/js/xtcore_m.js',
+ },
+ {
+ filters: ['||prpops.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.prpops.com',
+ },
+ {
+ filters: ['||defpush.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://defpush.com',
+ },
+ {
+ filters: ['||9anime.*/sw.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www1.9anime.to/sw.js',
+ },
+ {
+ filters: [
+ '||d3pkae9owd2lcf.cloudfront.net/*.gz.js$important,script,redirect=d3pkae9owd2lcf.cloudfront.net/mb105.js,domain=hotslogs.com|poe.trade|wowhead.com',
+ '||d3pkae9owd2lcf.cloudfront.net^',
+ ],
+ sourceUrl: 'http://poe.trade',
+ type: 'script',
+ url: 'http://d3pkae9owd2lcf.cloudfront.net/mb105.gz.js',
+ },
+ {
+ filters: ['/ads/show.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.imyanmarads.com/ads/show.js',
+ },
+ {
+ filters: ['_ad2.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pics.auction.co.kr/renewal/lp/icon_ad2.gif',
+ },
+ {
+ filters: ['||shallowsmile.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://shallowsmile.com',
+ },
+ {
+ filters: ['/px/*/blank.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.howtogeek.com/wp-content/uploads/px/370466/blank.gif?',
+ },
+ {
+ filters: ['/css/ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://www.itmedia.co.jp/css/ad.css',
+ },
+ {
+ filters: ['/1px.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://resfu.thumbr.io/media/img/1px.gif?',
+ },
+ {
+ filters: ['||wt-safetag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://responder.wt-safetag.com',
+ },
+ {
+ filters: ['||d1r27qvpjiaqj3.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1r27qvpjiaqj3.cloudfront.net',
+ },
+ {
+ filters: ['||aprtn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aprtn.com',
+ },
+ {
+ filters: ['/mtracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://invttjs.com.br/mtracking.gif',
+ },
+ {
+ filters: ['||biallo2.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tanz.biallo2.de',
+ },
+ {
+ filters: ['||mateti.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.mateti.net',
+ },
+ {
+ filters: ['||vdna-assets.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a1.vdna-assets.com',
+ },
+ {
+ filters: ['||callousbrake.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://callousbrake.com',
+ },
+ {
+ filters: ['||mpnrs.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www1.mpnrs.com',
+ },
+ {
+ filters: ['||wt-eu02.net^', '||wt-eu02.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rai-italia01.wt-eu02.net',
+ },
+ {
+ filters: ['/pagead.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pagead.chinatimes.com',
+ },
+ {
+ filters: ['/ads/indexmarket.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.chinatimes.com/ads/indexmarket.js',
+ },
+ {
+ filters: ['/waterad2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cache.chinatimes.com/scripts/waterad2.js',
+ },
+ {
+ filters: ['/idleAd.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cache.chinatimes.com/Scripts/idleAd.min.js',
+ },
+ {
+ filters: ['/zanox.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.zanox.com/scripts/zanox.js',
+ },
+ {
+ filters: ['-main/ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cache.chinatimes.com/css-main/ad.css',
+ },
+ {
+ filters: ['/slot/dfp/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://pagead.chinatimes.com/slot/dfp/',
+ },
+ {
+ filters: ['/js-tag-manager/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.skyscnr.com/sttc/oc-registry/components/js-tag-manager/',
+ },
+ {
+ filters: ['||skyscnr.com/sttc/strevda-runtime/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.skyscnr.com/sttc/strevda-runtime/',
+ },
+ {
+ filters: ['/videoad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://pagead.chinatimes.com/Media/VideoAD1/css/videoad.css',
+ },
+ {
+ filters: ['/entry.count?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://b.hatena.ne.jp/entry.count?',
+ },
+ {
+ filters: ['||skyscanner.*/slipstream/'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://www.skyscanner.net/slipstream/',
+ },
+ {
+ filters: ['||slipstream.skyscanner.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://slipstream.skyscanner.net',
+ },
+ {
+ filters: ['/campaign_tracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.chartbeat.com/js/campaign_tracker.js',
+ },
+ {
+ filters: ['/adcheck.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adcheck.about.co.kr',
+ },
+ {
+ filters: ['||vizury.com^$third-party', '||vizury.com/analyze/', '/pixel.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.vizury.com/analyze/pixel.php?',
+ },
+ {
+ check: true,
+ filters: ['||woopra.com^$third-party', '||woopra.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.woopra.com',
+ },
+ {
+ filters: ['/ads/forums/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.chinatimes.com/ads/forums/',
+ },
+ {
+ filters: ['/shared/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.247sports.com/Scripts/SkyNet/Shared/ads.js',
+ },
+ {
+ filters: ['/chartbeat.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mobile.abc.net.au/homepage/mobile/scripts/chartbeat.min.js',
+ },
+ {
+ filters: ['||abc.net.au^*/stats/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://res.abc.net.au/libraries/stats/',
+ },
+ {
+ filters: ['||ibmcloud.com/collector/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://uscollector.tealeaf.ibmcloud.com/collector/',
+ },
+ {
+ filters: ['||platform.twitter.com/impressions.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform.twitter.com/impressions.js',
+ },
+ {
+ filters: ['||atdmt.com/action/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://switch.atdmt.com/action/',
+ },
+ {
+ filters: ['||metaffiliation.com^', '/trk.php?', '||metaffiliation.com^*^taff='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://action.metaffiliation.com/trk.php?taff=P4FACD513DF9111',
+ },
+ {
+ filters: ['/linktracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://res.abc.net.au/libraries/stats/webtrends-bundle/linkTracking.js',
+ },
+ {
+ filters: ['/adsi-j.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.ads-sys.com/adsi-j.php',
+ },
+ {
+ filters: ['/werbebanner_', '_728x90_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.mediards.de/1yibc/Werbebanner_728x90_tippyt_t_2018.gif',
+ },
+ {
+ filters: ['||readserver.net^$third-party', '||readserver.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tag.readserver.net',
+ },
+ {
+ filters: ['.org/ad.', '/ad.php?', '&adstype='],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://share.dmhy.org/ad.php?id=dmhy&adsType=950x80',
+ },
+ {
+ filters: ['||yldbt.com^$third-party', '||yldbt.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://i.yldbt.com',
+ },
+ {
+ filters: ['||17173.com/ping.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.17173.com/ping.js',
+ },
+ {
+ filters: ['||salecycle.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://s.salecycle.com',
+ },
+ {
+ filters: ['||webtrends.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.webtrends.com',
+ },
+ {
+ filters: ['/adcall.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bw.scupio.com/adpinline/adcall.aspx',
+ },
+ {
+ filters: ['/openads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.dcdn.es/openads/',
+ },
+ {
+ check: true,
+ filters: ['||adworx.at^$third-party', '||adworx.at^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.adworx.at',
+ },
+ {
+ filters: ['||iocnt.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script-at.iocnt.net',
+ },
+ {
+ filters: ['/mpel/mpel.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://es.t-mobile.com/mpel/mpel.js',
+ },
+ {
+ check: true,
+ filters: ['/oasdefault/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.adworx.at/RealMedia/ads/Creatives/OasDefault/',
+ },
+ {
+ filters: ['||wywy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analyze.wywy.com',
+ },
+ {
+ filters: ['||smartclip.net^$third-party,script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.sxp.smartclip.net',
+ },
+ {
+ filters: ['&admid=$~subdocument'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://sync.navdmp.com/sync?prtid=22&admid=8e40dfbf-fead-44ba-b4f6-129602a49157',
+ },
+ {
+ filters: ['||log1.17173.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://log1.17173.com',
+ },
+ {
+ filters: ['|https://$script,subdocument,third-party,xmlhttprequest,domain=opensubtitles.org'],
+ sourceUrl: 'https://www.opensubtitles.org',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: [
+ '||opensubtitles.org^*.js|$script,domain=opensubtitles.org',
+ '@@||static.opensubtitles.org/libs/js/$script,domain=opensubtitles.org',
+ ],
+ sourceUrl: 'https://www.opensubtitles.org',
+ type: 'script',
+ url: 'https://static.opensubtitles.org/libs/js/jquery/jquery.min.js',
+ },
+ {
+ filters: ['||dialogtech.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st1.dialogtech.com',
+ },
+ {
+ filters: ['/content/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.tamin.ir/content/ads/',
+ },
+ {
+ filters: ['&bannerid='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ad.bsmartad.net/adframe.php?zoneid=10957&bannerid=123&ref=OWFuaW1lLnRv',
+ },
+ {
+ filters: ['||adcell.de^$third-party', '||adcell.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.adcell.de',
+ },
+ {
+ filters: ['/adcell/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://storage.googleapis.com/adcell/',
+ },
+ {
+ filters: ['||1l-hit.mail.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://1l-hit.mail.ru',
+ },
+ {
+ filters: ['||cbsimg.net/js/cbsi/dw.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dws.cbsimg.net/js/cbsi/dw.js',
+ },
+ {
+ filters: ['||truex.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://get.truex.com',
+ },
+ {
+ filters: ['/containertag?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ap.lijit.com/containertag?',
+ },
+ {
+ filters: ['/addelivery/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://vap2ams1.lijit.com/addelivery/',
+ },
+ {
+ filters: ['||logentries.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://js.logentries.com',
+ },
+ {
+ filters: ['/minpagead/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://delivery-m.adtplatform.com/247/minpagead/',
+ },
+ {
+ filters: ['||ojrq.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ojrq.net',
+ },
+ {
+ filters: ['/ads-config.', '@@||adsales.snidigital.com/*/ads-config.min.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://code.adsales.snidigital.com/conf/ads-config.min.js',
+ },
+ {
+ filters: ['||px.marchex.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://px.marchex.io',
+ },
+ {
+ filters: ['/piwik-$domain=~github.com|~matomo.org|~piwik.org'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn2.online-convert.com/js/piwik-9d035513.js',
+ },
+ {
+ filters: ['||runtnc.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.runtnc.net',
+ },
+ {
+ filters: ['@@||sascdn.com/video/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://r.sascdn.com/video/',
+ },
+ {
+ filters: ['@@||sascdn.com/diff/video/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ced-ns.sascdn.com/diff/video/',
+ },
+ {
+ filters: ['/keen-tracker.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://d26b395fwzu5fz.cloudfront.net/3.2.6/keen-tracker.min.js',
+ },
+ {
+ filters: ['/cgi-bin/ivw/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cnt.wetteronline.de/cgi-bin/ivw/',
+ },
+ {
+ filters: ['||pixel.1und1.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.1und1.de',
+ },
+ {
+ filters: ['||analytics.convertlanguage.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.convertlanguage.com',
+ },
+ {
+ filters: ['.admicro.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lg1.logging.admicro.vn',
+ },
+ {
+ filters: ['/120x600.', '120x600.gif|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://click.sabavision.com/public/public/images/loadings/120x600.gif',
+ },
+ {
+ filters: ['||macromill.com^$third-party', '||macromill.com/imp/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://img.macromill.com/imp/',
+ },
+ {
+ filters: ['/hitcount/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dyn.ithome.com/api/hitcount/',
+ },
+ {
+ filters: ['/comscore?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pson.logging.admicro.vn/comscore?',
+ },
+ {
+ filters: ['/ads_codes/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media1.admicro.vn/ads_codes/',
+ },
+ {
+ filters: ['||broaddoor.com^', '||broaddoor.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://broaddoor.com',
+ },
+ {
+ filters: ['||tagbucket.cc^', '||tagbucket.cc^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tagbucket.cc',
+ },
+ {
+ filters: ['||adsrv4k.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adsrv4k.com',
+ },
+ {
+ filters: ['||nspmotion.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s-akfs.nspmotion.com',
+ },
+ {
+ filters: ['||logs.51cto.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://logs.51cto.com',
+ },
+ {
+ filters: ['||wzrkt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wzrkt.com',
+ },
+ {
+ filters: ['.net/ads?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://des.smartclip.net/ads?',
+ },
+ {
+ filters: ['.com/advs-', '/advs-instream.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.mtburn.com/advs-instream.js',
+ },
+ {
+ filters: [
+ '@@||google.com/adsense/search/ads.js$domain=armstrongmywire.com|atlanticbb.net|bestbuy.com|bresnan.net|broadstripe.net|buckeyecablesystem.net|cableone.net|centurylink.net|charter.net|cincinnatibell.net|dish.net|forbbbs.org|gumtree.com.au|hargray.net|hawaiiantel.net|hickorytech.net|homeaway.co.uk|knology.net|livestrong.com|mediacomtoday.com|midco.net|mybendbroadband.com|mybrctv.com|mycenturylink.com|myconsolidated.net|myepb.net|mygrande.net|mygvtc.com|myhughesnet.com|myritter.com|northstate.net|nwcable.net|query.nytimes.com|rentals.com|search.rr.com|searchresults.verizon.com|suddenlink.net|surewest.com|synacor.net|tds.net|toshiba.com|trustedreviews.com|truvista.net|windstream.net|windstreambusiness.net|wowway.net|www.google.com|zoover.co.uk|zoover.com',
+ ],
+ sourceUrl: 'https://www.gumtree.com.au',
+ type: 'other',
+ url: 'https://www.google.com/adsense/search/ads.js',
+ },
+ {
+ filters: ['||1to1.bbva.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://1to1.bbva.com',
+ },
+ {
+ filters: ['||adpushup.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adpushup.com',
+ },
+ {
+ filters: ['||sohu.com^*/cookie?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://changyan.sohu.com/debug/cookie?',
+ },
+ {
+ filters: ['/pvmax.js', '||pvmax.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.pvmax.net/v1.0/pvmax.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.asahi.com',
+ type: 'script',
+ url: 'https://www.asahi.com/ad/',
+ },
+ {
+ filters: ['/advert2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://openload.co/advert2.js',
+ },
+ {
+ filters: ['||aaxads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.aaxads.com',
+ },
+ {
+ filters: ['/iMAWebCookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sc.pages07.net/lp/static/js/iMAWebCookie.js',
+ },
+ {
+ filters: ['/impressions/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pp.d2-apps.net/v1/impressions/log?',
+ },
+ {
+ filters: ['||analytics.brandcrumb.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dharma.analytics.brandcrumb.com',
+ },
+ {
+ filters: ['||aaxdetect.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://aaxdetect.com',
+ },
+ {
+ filters: ['||belboon.de^$third-party', '/adtracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www1.belboon.de/adtracking/',
+ },
+ {
+ filters: ['||sohu.com/stat/', '/stat/event?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://changyan.sohu.com/stat/event?',
+ },
+ {
+ filters: ['/stat/uvstat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://changyan.sohu.com/stat/uvstat?',
+ },
+ {
+ filters: ['||da3uf5ucdz00u.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://da3uf5ucdz00u.cloudfront.net',
+ },
+ {
+ filters: ['||radchesruno.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://radchesruno.club',
+ },
+ {
+ filters: ['||zeusclicks.com^', '/view/banner/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads2.zeusclicks.com/servlet/view/banner/',
+ },
+ {
+ filters: ['||sancdn.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.sancdn.net',
+ },
+ {
+ filters: ['||sexad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://as.sexad.net',
+ },
+ {
+ filters: ['||zampda.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.zampda.net',
+ },
+ {
+ filters: ['/imp?imgid='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ww1510.smartadserver.com/imp?imgid=22187664&tmstp=1540303355921',
+ },
+ {
+ filters: ['||t.a3cloud.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.a3cloud.net',
+ },
+ {
+ filters: ['||anrdoezrs.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.anrdoezrs.net',
+ },
+ {
+ filters: ['||sl.pt/wa.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://wa.sl.pt/wa.gif?',
+ },
+ {
+ filters: ['||cloudfront.net/sso.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1v9u0bgi1uimx.cloudfront.net/sso.js',
+ },
+ {
+ filters: ['||djz9es32qen64.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://djz9es32qen64.cloudfront.net',
+ },
+ {
+ filters: ['||ebayclassifiedsgroup.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://treebay.ebayclassifiedsgroup.com',
+ },
+ {
+ filters: ['/adriver/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://an.yandex.ru/setud/adriver/',
+ },
+ {
+ filters: ['||celeritascdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.celeritascdn.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.makeuseof.com',
+ type: 'script',
+ url: 'https://static.makeuseof.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/SAPOWebAnalytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.sapo.pt/SAPOWebAnalytics/',
+ },
+ {
+ filters: ['||adglare.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bullionmedia.engine.adglare.net',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.asahi.com',
+ type: 'script',
+ url: 'https://www.asahi.com/ad/',
+ },
+ {
+ filters: ['||realytics.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.realytics.io',
+ },
+ {
+ filters: ['/realytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dcniko1cv0rz.cloudfront.net/realytics-1.2.min.js',
+ },
+ {
+ filters: ['||adsession.com^$third-party', '-adserver-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rev.adsession.com/revive-adserver-2015',
+ },
+ {
+ filters: ['/adsrv.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adsrv.me',
+ },
+ {
+ filters: ['||audiencemanager.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.audiencemanager.de',
+ },
+ {
+ filters: ['/event/track?', '/track?cb='],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.realytics.io/event/track?cb=1540303366326',
+ },
+ {
+ filters: ['/roitrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.msg.dotomi.com/w/roitrack.cgi',
+ },
+ {
+ filters: ['||logger.snackly.co^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://logger.snackly.co',
+ },
+ {
+ filters: ['.adserver01.', '||adserver01.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.adserver01.de',
+ },
+ {
+ filters: ['||adc-srv.net/retargeting.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://r.adc-srv.net/retargeting.php',
+ },
+ {
+ filters: ['||ad-srv.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ad.ad-srv.net',
+ },
+ {
+ filters: ['||tagcommander.com^$third-party', '@@||tagcommander.com^*/tc_$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.tagcommander.com/2623/tc_LaBanquePostale_4.js',
+ },
+ {
+ filters: ['||hibids10.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.hibids10.com',
+ },
+ {
+ filters: ['||iadvize.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://halc.iadvize.com',
+ },
+ {
+ filters: ['||advombat.ru^$third-party', '.ru/0.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://advombat.ru/0.gif?',
+ },
+ {
+ filters: ['||am15.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb.am15.net',
+ },
+ {
+ filters: ['||rareru.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracker.rareru.ru',
+ },
+ {
+ filters: ['||denakop.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://v2.denakop.com',
+ },
+ {
+ filters: ['||heavy-r.com/a/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.heavy-r.com/a/',
+ },
+ {
+ filters: ['||atdmt.com/iaction/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://view.atdmt.com/iaction/',
+ },
+ {
+ filters: ['||flocktory.com^*/tracks/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.flocktory.com/underworld/tracks/',
+ },
+ {
+ filters: ['||firstpost.com/promo/', '-popunder.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://images.firstpost.com/promo/js/mcfp-popunder.js',
+ },
+ {
+ filters: ['_ads.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://click.sabavision.com/get_native_ads.php?',
+ },
+ {
+ filters: ['@@||nbcudigitaladops.com/hosted/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.nbcudigitaladops.com/hosted/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.asahi.com',
+ type: 'script',
+ url: 'http://www.asahi.com/ad/',
+ },
+ {
+ filters: ['||nbcudigitaladops.com/hosted/housepix.gif'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.nbcudigitaladops.com/hosted/housepix.gif',
+ },
+ {
+ filters: ['||stats.sa-as.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stats.sa-as.com',
+ },
+ {
+ filters: ['||waplog.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://c.waplog.net',
+ },
+ {
+ filters: ['||mobtop.ru^$third-party', '||mobtop.ru/c/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mobtop.ru/c/',
+ },
+ {
+ filters: ['||combotag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve.combotag.com',
+ },
+ {
+ filters: ['||cloud-iq.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://platform2.cloud-iq.com',
+ },
+ {
+ filters: ['||r.mail.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.mail.ru',
+ },
+ {
+ filters: ['_adtech_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.finn.no/ec/REK/MFINN_bcounter/_adtech_adbutler_advertise_adform_',
+ },
+ {
+ filters: ['/showadv2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.easy-ads.com/showadv2.php',
+ },
+ {
+ filters: ['@@||greasyfork.org/system/screenshots/screenshots/$domain=greasyfork.org'],
+ sourceUrl: 'https://greasyfork.org',
+ type: 'image',
+ url: 'https://greasyfork.org/system/screenshots/screenshots/',
+ },
+ {
+ filters: ['-ads/assets/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fivethirtyeight.com/wp-content/plugins/abc-ads/assets/',
+ },
+ {
+ filters: ['||supercounters.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://widget.supercounters.com',
+ },
+ {
+ filters: ['||econda-monitor.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.econda-monitor.de',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.asahi.com',
+ type: 'script',
+ url: 'http://www.asahi.com/ad/',
+ },
+ {
+ filters: ['||schibsted.com/autoTracker'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jssdk.pulse.schibsted.com/autoTrackerFinn.min.js',
+ },
+ {
+ filters: ['||dcmn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://idealo-de.dcmn.com',
+ },
+ {
+ filters: ['||tns-cs.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssl-finn.tns-cs.net',
+ },
+ {
+ filters: ['||da.netease.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wr.da.netease.com',
+ },
+ {
+ filters: ['||everestjs.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.everestjs.net',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/vendor/jquery-*.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/vendor/jquery-1.11.1.min.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/vendor/jquery.*.js'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/vendor/jquery.cookie.js',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/main.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/main.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/helpers.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/helpers.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/lang.js.php?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/lang.js.php?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/vendor/clipboard.min.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/vendor/clipboard.min.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/clipboard-helpers.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/clipboard-helpers.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/vendor/jquery-*.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/vendor/jquery-ui/jquery-ui.min.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/plupload/plupload.*.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/plupload/plupload.full.min.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/plupload/jquery.*.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/plupload/jquery.ui.plupload/jquery.ui.plupload.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/plupload/i18n/en.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/plupload/i18n/en.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/new-upload.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/new-upload.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/vendor/rangeslider.min.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/vendor/rangeslider.min.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/upload_functions.js?'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/upload_functions.js?',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party', '@@||pixhost.to/js/vendor/nprogress.js|'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to/js/vendor/nprogress.js',
+ },
+ {
+ check: true,
+ filters: ['||bridgetrack.com^$third-party', '||bridgetrack.com^', '||bridgetrack.com/track/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://rbc.bridgetrack.com/track/',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||navaxudoru.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://navaxudoru.com',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['@@||fwcdn.pl^$script,domain=filmweb.pl'],
+ sourceUrl: 'https://www.filmweb.pl',
+ type: 'script',
+ url: 'https://2.fwcdn.pl',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['/adbetween/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gfx.filmweb.pl/adbetween/',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['||pixhost.to^$script,first-party'],
+ sourceUrl: 'https://pixhost.to',
+ type: 'script',
+ url: 'https://pixhost.to',
+ },
+ {
+ filters: ['-300x600.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://3.fwcdn.pl/adv/martyna/jwfk/Jurassic-Upadle-banner-300x600.jpg',
+ },
+ {
+ filters: ['||fixpass.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cdn.fixpass.net',
+ },
+ {
+ filters: ['||bitrix.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bitrix.info',
+ },
+ {
+ filters: ['||viglink.com/api/insert^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.viglink.com/api/insert',
+ },
+ {
+ filters: ['/keen-tracking-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d26b395fwzu5fz.cloudfront.net/keen-tracking-1.0.3.min.js',
+ },
+ {
+ filters: ['||postaffiliatepro.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bml.postaffiliatepro.com',
+ },
+ {
+ filters: ['/drawad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s2.dwnews.net/v5/js/ad/drawAd.js',
+ },
+ {
+ filters: ['||keen.io^$third-party,domain=~keen.github.io|~keen.io'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.keen.io',
+ },
+ {
+ filters: ['/sitestat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.tagesschau.de/resources/framework/js/sitestat.js',
+ },
+ {
+ filters: ['||sitestat.com^', '||sitestat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://de.sitestat.com',
+ },
+ {
+ filters: ['||exelator.com^$domain=disqus.com'],
+ sourceUrl: 'https://blog.disqus.com',
+ type: 'image',
+ url: 'https://loadus.exelator.com',
+ },
+ {
+ filters: ['||crwdcntrl.net^$domain=disqus.com'],
+ sourceUrl: 'https://blog.disqus.com',
+ type: 'image',
+ url: 'https://bcp.crwdcntrl.net',
+ },
+ {
+ filters: ['/mms/get_loaders?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://source.programme-tv.net/mms/get_loaders?',
+ },
+ {
+ filters: ['.com/js.ng/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://qde.qunar.com/js.ng/',
+ },
+ {
+ filters: ['||ssl-images-amazon.com^*/dacx/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://images-na.ssl-images-amazon.com/images/G/01/dacx/',
+ },
+ {
+ filters: ['/kissmetrics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xvp.akamaized.net/assets/kissmetrics/',
+ },
+ {
+ filters: ['||chameleon.ad^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://chameleon.ad',
+ },
+ {
+ filters: ['||pulpix.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.pulpix.com',
+ },
+ {
+ filters: ['||m-pathy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.m-pathy.com',
+ },
+ {
+ filters: ['||freeskreen.com^$third-party', '||freeskreen.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.freeskreen.com',
+ },
+ {
+ filters: ['||rtmark.net^', '||rtmark.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://my.rtmark.net',
+ },
+ {
+ filters: ['||51yes.com^', '||51yes.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://count15.51yes.com',
+ },
+ {
+ filters: ['/ADNet/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.gunosy.com/adnet/',
+ },
+ {
+ filters: ['||popmyads.com^$third-party', '||popmyads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.popmyads.com',
+ },
+ {
+ filters: ['||analytics.global.sky.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.global.sky.com',
+ },
+ {
+ filters: ['/elqcfg.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adp.com/-/media/adp/Redesign2018/js/elqCfg.js',
+ },
+ {
+ filters: ['/trackconversion?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.adsymptotic.com/api/s/trackconversion?',
+ },
+ {
+ check: true,
+ filters: ['/oascentral.$~object-subrequest'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://oascentral.dwnews.com',
+ },
+ {
+ check: true,
+ filters: ['||adserver.pressboard.ca^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver.pressboard.ca',
+ },
+ {
+ filters: ['/c.wrating.com/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://c.wrating.com/',
+ },
+ {
+ filters: ['||makemyvids.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://makemyvids.com',
+ },
+ {
+ filters: ['||modulepush.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.modulepush.com',
+ },
+ {
+ filters: ['-ad-home.', '@@||hentaihaven.org/*-ad-home.js$script,first-party'],
+ sourceUrl: 'http://www.hentaihaven.org',
+ type: 'script',
+ url: 'http://www.hentaihaven.org/popexit-a3s-ad-home.js',
+ },
+ {
+ filters: ['/adssp.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://spad.i-mobile.co.jp/script/adssp.js',
+ },
+ {
+ filters: ['/160x600-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/6785415/160x600-FK-herbst.gif',
+ },
+ {
+ filters: ['||pixel.anyclip.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.anyclip.com',
+ },
+ {
+ filters: ['||uptimecdn.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://uptimecdn.com',
+ },
+ {
+ filters: ['||analyse.weather.com.cn^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://analyse.weather.com.cn',
+ },
+ {
+ check: true,
+ filters: ['||tw.cx^$third-party', '@@||tw.cx/c?a=$xmlhttprequest,domain=justwatch.com'],
+ sourceUrl: 'https://www.justwatch.com',
+ type: 'xhr',
+ url: 'https://i.tw.cx/c?a=3&i=',
+ },
+ {
+ filters: ['||dtscout.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.dtscout.com',
+ },
+ {
+ filters: ['||onclkds.com^$third-party', '||onclkds.com/apu.php$script,redirect=noopjs'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://onclkds.com/apu.php',
+ },
+ {
+ filters: ['@@||disqus.com/next/config.js$script,domain=hentaihaven.org'],
+ sourceUrl: 'http://hentaihaven.org',
+ type: 'script',
+ url: 'https://disqus.com/next/config.js',
+ },
+ {
+ filters: ['||go.pub2srv.com/apu.php$script,redirect=noopjs'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://go.pub2srv.com/apu.php',
+ },
+ {
+ filters: ['||track.cooster.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://track.cooster.ru',
+ },
+ {
+ filters: ['/adwise/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://exchange.buzzoola.com/cookiesync/ssp/adwise/',
+ },
+ {
+ check: true,
+ filters: ['||e6916adeb7e46a883.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://e6916adeb7e46a883.com',
+ },
+ {
+ filters: ['||oconner.biz^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://oconner.biz',
+ },
+ {
+ filters: ['/whos.amung.us.classic.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://stream.moe/whos.amung.us.classic.js',
+ },
+ {
+ filters: ['||skroutz.gr/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.skroutz.gr/analytics/',
+ },
+ {
+ filters: ['/bc/clk?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://qcommons.qunar.com/bc/clk?',
+ },
+ {
+ filters: ['/www/ad_', '/ad_screen.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://s.c.yinyuetai.com/201806131348/css/app/www/ad_screen.css',
+ },
+ {
+ filters: ['/collect/tracking.', '/tracking.png?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://dzby9conl7tl.cloudfront.net/collect/tracking.png?',
+ },
+ {
+ filters: ['||doubleclick.net^$important,script,domain=wired.com'],
+ sourceUrl: 'https://www.wired.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net',
+ },
+ {
+ filters: ['||maropost.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content.maropost.com',
+ },
+ {
+ filters: ['||hellobar.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://my.hellobar.com',
+ },
+ {
+ filters: ['||pixel.condenastdigital.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.condenastdigital.com',
+ },
+ {
+ filters: ['||infinityid.condenastdigital.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://infinityid.condenastdigital.com',
+ },
+ {
+ filters: ['||condenastdigital.com/content?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://4d.condenastdigital.com/content?',
+ },
+ {
+ filters: ['||dw.cbsi.com^*/e.gif$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dw.cbsi.com/levt/undefined/e.gif',
+ },
+ {
+ filters: ['||capture.condenastdigital.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://capture.condenastdigital.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.shadbase.com',
+ type: 'script',
+ url: 'http://www.shadbase.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||collect.yinyuetai.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://t.collect.yinyuetai.com',
+ },
+ {
+ filters: ['||eco-tag.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cf.eco-tag.jp',
+ },
+ {
+ filters: ['||d3qxef4rp70elm.cloudfront.net/m.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3qxef4rp70elm.cloudfront.net/m.js',
+ },
+ {
+ filters: ['||cbc.ca/g/stats/', '@@||cbc.ca/*/cbc-stats-$script,first-party'],
+ sourceUrl: 'https://www.cbc.ca',
+ type: 'script',
+ url: 'https://www.cbc.ca/g/stats/js/cbc-stats-top.js',
+ },
+ {
+ filters: ['||filecrypt.cc/js/$script', '@@||filecrypt.cc/js/prototype.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/prototype.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/scriptaculous/scriptaculous.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/scriptaculous/scriptaculous.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/indexV2.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/indexV2.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/indexV2_Plugin.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/indexV2_Plugin.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/fcwindow.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/fcwindow.js',
+ },
+ {
+ filters: ['||webtradehub.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ssp-nj.webtradehub.com',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/scriptaculous/effects.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/scriptaculous/effects.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/scriptaculous/builder.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/scriptaculous/builder.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/scriptaculous/dragdrop.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/scriptaculous/dragdrop.js',
+ },
+ {
+ filters: ['@@||filecrypt.cc/js/scriptaculous/controls.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.filecrypt.cc/js/scriptaculous/controls.js',
+ },
+ {
+ filters: ['||ads-trk.vidible.tv^', '.tv/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads-trk.vidible.tv/ads/',
+ },
+ {
+ filters: ['||advertur.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ddnk.advertur.ru',
+ },
+ {
+ filters: ['/showad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cache.betweendigital.com/code/showad_full_sync.js',
+ },
+ {
+ filters: ['||gsspat.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rt.gsspat.jp',
+ },
+ {
+ filters: ['/textad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.cpmstar.com/cached/js/textad_async_v100.pack.js',
+ },
+ {
+ filters: ['/beacon/metrics'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://www.semanticscholar.org/beacon/metrics',
+ },
+ {
+ filters: ['_adtags.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.sify.com/analytics/fullstory_adtags.js',
+ },
+ {
+ filters: ['_chartbeat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.sify.com/analytics/news_chartbeat.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.shadbase.com',
+ type: 'script',
+ url: 'http://www.shadbase.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||adxxx.me^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st.adxxx.me',
+ },
+ {
+ filters: ['||utrack.hexun.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://utrack.hexun.com',
+ },
+ {
+ filters: ['/GARecord^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.tripadvisor.co.uk/GARecord',
+ },
+ {
+ filters: ['||arsdev.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.accelerator.arsdev.net',
+ },
+ {
+ filters: ['||nuvidp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.nuvidp.com',
+ },
+ {
+ filters: ['||cnt.nuvid.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cnt.nuvid.com',
+ },
+ {
+ filters: [
+ '||cloudfront.net^$image,script,subdocument,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.co|300mbfilms.org|321jav.com|353online.com|4archive.org|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|786zx.com|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adbull.me|addic7ed.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai2.net|animeflv.net|animehaven.to|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|auroravid.to|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|bdupload.info|beautiesbondage.com|becekin.net|beelink.in|beforeitsnews.com|behchala.com|beinsport-streaming.com|bestsongspk.com|big4umovies.net|bilasport.pw|biology-online.org|bittorrent.am|bitvid.sx|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bmovies.to|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.cc|cartoonth12.com|catosports.ml|centraldeanimes.biz|cholotubex.com|chronos.to|cinemamkv.xyz|cinetux.net|cliphayho.com|cloudtime.to|cloudyfiles.co|coastalhut.com|columbia-xxx.com|comicporno.org|cookiesnetfl1x.com|cooltamil.com|coreimg.net|coroas40.com|couchtuner.fr|couchtuner.nu|crackingpatching.com|cricbox.net|croco.site|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dblatino.com|dbzsuper.tv|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|digitalmusicnews.com|discografiascompletas.net|djmazamp3.info|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|downloadming.io|downloadming.tv|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|extremetech.com|eztv.ag|fagken.com|fastdrama.co|felipephtutoriais.com.br|file-upload.com|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmi7.com|filminvazio.com|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flyordie.com|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|frendz4m.com|fulldowngames.biz|fullmaza.net|fullpinoymovies.net|fullstuff.co|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goodvideohost.com|gottateens.com|grantorrent.net|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdvid.life|hdvid.tv|hdvid.xyz|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imgsmile.com|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|izporn.net|jav-for.me|javeu.com|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jazztv.co|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|kannadamovies.biz|katcr.host|kimcartoon.me|kingstheme.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|letwatch.to|link2download.net|linksprotection.com|linx.cloud|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|mactorrents.org|macupload.net|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3goo.com|mp3haat.com|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|multiup.org|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mystream.la|mzansifun.com|mzansiporntube.com|mzansixxx.com|nachostime.net|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nitroflare.com|nontononlinedrama.com|noslocker.com|nosteam.com.ro|nowvideo.li|nowvideo.sx|nowvideo.to|nudeyoung.xyz|nulledcenter.com|nungg.com|nuttit.com|nxtcomicsclub.com|ocean0fgames.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|omghype.com|ondeeubaixo.com|one-series.cc|onhax.me|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|onvid.club|onvid.xyz|openload.co|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|ouo.io|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|pirateiro.com|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pure-anime.tv|pussybook.xyz|putlockertv.se|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|reevown.com|rgmechanicsgames.com|ripvod.com|rosextube.com|runvideo.net|sadeempc.com|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|scambiofile.info|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|serietvsubita.net|sexisfree.net|sexix.net|sexiz.net|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.com|shofonline.org|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrowcrack.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|sparknotes.com|speedplay.pro|sports4u.net|stadium-live.biz|stream2watch.org|streamingok.com|streamlord.com|streamplay.to|suki48.web.id|superteenz.com|suprafiles.co|suprafiles.org|sweext.com|tamilmv.vc|tamilrasigan.net|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|temp-mail.org|textsfromlastnight.com|theapricity.com|thebarchive.com|thebestofcafucus.com|thecoolersoftwares.net|thepiratebay.cd|thepiratebay.org|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevideobee.to|thiruttuvcd.me|tinypaste.me|tlenovelas.net|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torlock.com|torrentcounter.cc|torrentfilmesbr.com|torrentfunk.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentproject.se|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tsumino.com|tubeoffline.com|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvlivenow.com|tvrex.net|twitchstats.net|ufreetv.com|unblocked.cam|unduhfilmrama.biz|upcomics.org|upload.so|uporniahd.com|usabit.com|usersfiles.com|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidlox.tv|vidshare.us|vidtome.co|vidz7.com|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|vshare.eu|watchaha.com|watcharcheronline.com|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|wetblog.org|wholecloud.net|wibudesu.com|wolverdon-filmes.com|world4ufree.be|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|yahmaib3ai.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourbittorrent.com|yourvideohost.com|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zone-telechargement.ws|zoocine.co|zw-net.com',
+ ],
+ sourceUrl: 'http://www.file-upload.com',
+ type: 'script',
+ url: 'https://d31qbv1cthcecs.cloudfront.net',
+ },
+ {
+ check: true,
+ filters: [
+ '||amazonaws.com^$third-party,xmlhttprequest,domain=300mbdownload.net|300mbfilms.co|bdupload.info|bigfile.to|bittorrent.am|ddlvalley.cool|file-upload.com|frendz4m.com|fullstuff.co|hdvid.life|hdvid.tv|hdvid.xyz|katcr.host|macupload.net|nachostime.net|ocean0fgames.com|onhax.me|onvid.club|onvid.xyz|rgmechanicsgames.com|sadeempc.com|serietvsubita.net|suprafiles.org|thevideobee.to|tinypaste.me|tsumino.com|tvlivenow.com|vidlox.tv|vidshare.us|vshare.eu|watchers.to|wizhdsports.is|yourvideohost.com',
+ ],
+ sourceUrl: 'http://www.file-upload.com',
+ type: 'xhr',
+ url: 'http://s3-us-west-2.amazonaws.com',
+ },
+ {
+ filters: ['||ywxi.net/meter/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cdn.ywxi.net/meter/',
+ },
+ {
+ filters: ['||fsdvydpldxrbu.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.fsdvydpldxrbu.com',
+ },
+ {
+ filters: ['/log.collect.', '/view-log?', '-log?referUrl='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://log.collect.yinyuetai.com/view-log?referUrl=&1540303448427',
+ },
+ {
+ filters: ['/uo-stat?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://log.collect.yinyuetai.com/uo-stat?',
+ },
+ {
+ filters: ['||stats.yinyuetai.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://v.stats.yinyuetai.com',
+ },
+ {
+ filters: ['||vatrack.hinet.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://vatrack.hinet.net',
+ },
+ {
+ filters: ['&adbannerid='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/1635909/1x1image.jpg?&adbannerid=',
+ },
+ {
+ filters: ['/chartbeat/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://www.cbc.ca/chartbeat/',
+ },
+ {
+ filters: ['||pclick.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pclick.yahoo.com',
+ },
+ {
+ filters: ['||secureserver.net^*/event?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.secureserver.net/t/1/tl/event?',
+ },
+ {
+ filters: ['||eultech.fnac.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eultech.fnac.com',
+ },
+ {
+ filters: ['@@||tags.bkrtx.com/js/bk-coretag.js$domain=tmz.com|zillow.com'],
+ sourceUrl: 'http://m.tmz.com',
+ type: 'script',
+ url: 'http://tags.bkrtx.com/js/bk-coretag.js',
+ },
+ {
+ filters: ['/na.ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://na.ads.yahoo.com',
+ },
+ {
+ filters: ['||qbox.me/vds.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dn-growing.qbox.me/vds.js',
+ },
+ {
+ filters: ['||euleriancdn.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://eu.euleriancdn.net',
+ },
+ {
+ filters: ['||tr.cloud-media.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tr.cloud-media.fr',
+ },
+ {
+ filters: ['.jp/pv?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://collect.ptengine.jp/pv?',
+ },
+ {
+ filters: ['||pubnation.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://report-ads-to.pubnation.com',
+ },
+ {
+ filters: ['||amazonaws.com/js/reach.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://simple-cdn.s3.amazonaws.com/js/reach.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||vpon.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.vpon.com',
+ },
+ {
+ filters: ['/footer_ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.nuvid.com/footer_ads_tiz.php',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||mail.ru/grstat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://my.mail.ru/grstat?',
+ },
+ {
+ filters: ['/weizenbock/dist/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.clarin.com/weizenbock/dist/',
+ },
+ {
+ filters: ['||readthedocs.org*/sustainability/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://readthedocs.org/api/v2/sustainability/',
+ },
+ {
+ check: true,
+ filters: ['||api.taboola.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.taboola.com',
+ },
+ {
+ filters: ['||ui-portal.com/1and1/mailcom/s?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://us.wa.ui-portal.com/1and1/mailcom/s?',
+ },
+ {
+ filters: ['/pixel.fingerprint.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.clarin.com/weizenbock/pixel.fingerprint.gif',
+ },
+ {
+ filters: ['@@||cbc.ca/g/stats/videoheartbeat/*/cbc-videoheartbeat.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cbc.ca/g/stats/videoheartbeat/v1/cbc-videoheartbeat.js',
+ },
+ {
+ filters: ['||sankei.co.jp/js/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smp.sankei.co.jp/js/analytics/',
+ },
+ {
+ filters: ['||mmi.bemobile.ua^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://source.mmi.bemobile.ua',
+ },
+ {
+ filters: ['||trmit.com^$third-party', '||trmit.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.trmit.com',
+ },
+ {
+ filters: ['.br/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://estudio.folha.uol.com.br/ads/',
+ },
+ {
+ check: true,
+ filters: ['||leadplace.fr^', '||tag.leadplace.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.leadplace.fr',
+ },
+ {
+ check: true,
+ filters: [
+ '||web.adblade.com^$third-party',
+ '||adblade.com^',
+ '||adblade.com^$third-party',
+ '/ads/async/*',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://web.adblade.com/js/ads/async/',
+ },
+ {
+ filters: ['.net/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.smartclick.net/ads-async.js',
+ },
+ {
+ filters: ['/adclix.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://orbitfour47.com/adclix.png',
+ },
+ {
+ filters: ['/services/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://clinic.niniban.com/Services/Ads/',
+ },
+ {
+ filters: ['||smrk.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://b.smrk.io',
+ },
+ {
+ filters: ['||optad360.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://get.optad360.io',
+ },
+ {
+ filters: ['/impression.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.ilbe.com/xea/impression.js?',
+ },
+ {
+ filters: ['/myads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.ilbe.com/myads/',
+ },
+ {
+ filters: ['||tapfiliate.com^', '||tapfiliate.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.tapfiliate.com',
+ },
+ {
+ filters: ['||fbcdn2.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.fbcdn2.com',
+ },
+ {
+ filters: ['||sajari.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.sajari.com',
+ },
+ {
+ filters: ['@@||sankakucomplex.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sankakucomplex.com',
+ },
+ {
+ filters: ['||otaserve.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.otaserve.net',
+ },
+ {
+ filters: ['||trafficsan.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://eki.trafficsan.com',
+ },
+ {
+ filters: ['||segmentify.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.segmentify.com',
+ },
+ {
+ filters: [
+ '||onclasrv.com^$third-party',
+ '||onclasrv.com^',
+ '||go.onclasrv.com/apu.php$script,redirect=noopjs',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.onclasrv.com/apu.php',
+ },
+ {
+ filters: ['|http://$script,domain=perfectgirls.es|perfectgirls.net|perfektdamen.co'],
+ sourceUrl: 'http://m.perfectgirls.net',
+ type: 'script',
+ url: 'http://',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.sankakucomplex.com',
+ type: 'script',
+ url: 'https://www.sankakucomplex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||pvclouds.com^', '||pvclouds.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pl2674.pvclouds.com',
+ },
+ {
+ filters: ['||log.flight.qunar.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.flight.qunar.com',
+ },
+ {
+ filters: ['||t.cfjump.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.cfjump.com',
+ },
+ {
+ filters: ['/popunder2.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.exosrv.com/popunder2.js',
+ },
+ {
+ filters: ['||analights.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://backend2.analights.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.sankakucomplex.com',
+ type: 'script',
+ url: 'https://www.sankakucomplex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||squid.gazeta.pl/bdtrck/'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://squid.gazeta.pl/bdtrck/',
+ },
+ {
+ filters: ['||log.olark.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.olark.com',
+ },
+ {
+ filters: ['/ntpagetag.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cisco-tags.cisco.com/tag/ntpagetag.gif',
+ },
+ {
+ filters: ['_advertising.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c1hit.tut.by/stat/684/51448/img/154030349/6177_advertising.gif',
+ },
+ {
+ filters: ['||tm-awx.com/felix.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://felix.data.tm-awx.com/felix.min.js',
+ },
+ {
+ filters: ['||d3alqb8vzo7fun.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3alqb8vzo7fun.cloudfront.net',
+ },
+ {
+ filters: ['||web.tmearn.com^'],
+ sourceUrl: 'https://tmearn.com',
+ type: 'image',
+ url: 'https://web.tmearn.com',
+ },
+ {
+ filters: ['/rtoaster.js', '||rtoaster.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.rtoaster.jp/Rtoaster.js',
+ },
+ {
+ filters: ['/ad/index.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.onlinedown.net/Public/js/newjs/ad/index.js',
+ },
+ {
+ filters: ['||watchmygf.to^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.watchmygf.to',
+ },
+ {
+ filters: ['||dotmetrics.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://script.dotmetrics.net',
+ },
+ {
+ filters: ['/adunit/*$domain=~propelmedia.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://hb.adtelligent.com/adunit/',
+ },
+ {
+ filters: ['/friendbuy.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://djnf6e5yyirys.cloudfront.net/js/friendbuy.min.js',
+ },
+ {
+ filters: ['@@||folha.uol.com.br/paywall/js/1/publicidade.ads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.folha.uol.com.br/paywall/js/1/publicidade.ads.js',
+ },
+ {
+ filters: ['||friendbuy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cdn1.friendbuy.com',
+ },
+ {
+ filters: [
+ '/worldwide_analytics/*',
+ '@@||akamaihd.net/worldwide_analytics/$script,domain=ubi.com|ubisoft.com',
+ ],
+ sourceUrl: 'https://www.ubisoft.com',
+ type: 'script',
+ url: 'https://ubistatic2-a.akamaihd.net/worldwide_analytics/',
+ },
+ {
+ filters: ['||zappos.com/karakoram/js/main.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.zappos.com/karakoram/js/main.f3394d9.js',
+ },
+ {
+ filters: ['||zedo.com^$script,important,domain=indiatoday.in|intoday.in'],
+ sourceUrl: 'https://www.indiatoday.in',
+ type: 'script',
+ url: 'https://saxp.zedo.com',
+ },
+ {
+ filters: ['/referrer_tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://livestream.com/assets/plugins/referrer_tracking.js',
+ },
+ {
+ filters: ['/smetrics.*/id?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smetrics.mcafee.com/id?',
+ },
+ {
+ filters: ['||uol.com.br/stats?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats1.folha.uol.com.br/stats?',
+ },
+ {
+ filters: ['||analytics.ziftsolutions.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.ziftsolutions.com',
+ },
+ {
+ filters: ['||filez.cutpaid.com/336v'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://filez.cutpaid.com/336v1.png',
+ },
+ {
+ filters: ['||go.toutapp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.toutapp.com',
+ },
+ {
+ filters: ['/homepage/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.airtel.in/app/libs/edited/homepage/analytics.js',
+ },
+ {
+ filters: ['||zappos.com/*.cgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.zappos.com/event.cgi?',
+ },
+ {
+ filters: ['/track.cgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.zappos.com/track.cgi?',
+ },
+ {
+ filters: ['/prehead/ads_', '/ads_detect.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theweathernetwork.com/js/en_ca/1377/prehead/ads_detect.js',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$script,important,domain=indiatoday.in|intoday.in'],
+ sourceUrl: 'https://www.indiatoday.in',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: ['||d169bbxks24g2u.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://d169bbxks24g2u.cloudfront.net',
+ },
+ {
+ filters: ['/martypixel?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://m.zappos.com/martypixel?',
+ },
+ {
+ filters: ['/dfpad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theweathernetwork.com/js/en_ca/r1377/mobile/modules/dfpad/',
+ },
+ {
+ filters: ['/analytic/count.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.aksam.com.tr/analytic/count.asp',
+ },
+ {
+ filters: ['||userreplay.net^', '||userreplay.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.userreplay.net',
+ },
+ {
+ filters: ['||veinteractive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://config1.veinteractive.com',
+ },
+ {
+ filters: ['.com/_.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://b.meituan.com/_.gif?',
+ },
+ {
+ filters: ['://affiliates.$third-party', '/ret_pixels/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://affiliates.rozetka.com.ua/ret_pixels/',
+ },
+ {
+ filters: ['||afterview.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://afterview.ru',
+ },
+ {
+ filters: ['||analytics.livestream.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.livestream.com',
+ },
+ {
+ filters: ['||a.mobify.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.mobify.com',
+ },
+ {
+ filters: ['/ads.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://zarpop.com/template/site/images/ads/ads.gif',
+ },
+ {
+ filters: ['||getblueshift.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.getblueshift.com',
+ },
+ {
+ filters: ['/videojs.ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://static.vodgc.net/player/v2/videojs.ads-5.1.5.min.css',
+ },
+ {
+ filters: ['@@||scorecardresearch.com/c2/plugins/streamsense_plugin_html5.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sb.scorecardresearch.com/c2/plugins/streamsense_plugin_html5.js',
+ },
+ {
+ filters: ['-event-tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.vodgc.net/libs/player/v2/genoa-event-tracking.min.js',
+ },
+ {
+ filters: ['||ad.mangareader.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.mangareader.net',
+ },
+ {
+ filters: ['.bid^$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://srv.aftv-serving.bid',
+ },
+ {
+ filters: ['||rkdms.com/sid.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mct.rkdms.com/sid.gif?',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=baskino.me'],
+ sourceUrl: 'http://baskino.me',
+ type: 'xhr',
+ url: 'http://piguiqproxy.com',
+ },
+ {
+ filters: ['||gmads.net^$third-party', '||gmads.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gmads.net',
+ },
+ {
+ filters: ['_popunder_'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ampatcape.com/_popunder_',
+ },
+ {
+ filters: ['||123rf.com/tk/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bdt.123rf.com/tk/',
+ },
+ {
+ filters: ['||eoredi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.eoredi.com',
+ },
+ {
+ filters: ['||convrse.media^$third-party', '||convrse.media^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://get.convrse.media',
+ },
+ {
+ filters: ['||shinystat.com^', '||shinystat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://codicebusiness.shinystat.com',
+ },
+ {
+ filters: ['/webtracking/*$~subdocument'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rns.matelso.de/webtracking/',
+ },
+ {
+ filters: ['/openxtargeting.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.panet.co.il/js/panet/openxTargeting.js',
+ },
+ {
+ filters: ['/cube_ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://pms.panet.co.il/online/images/cube_ads/',
+ },
+ {
+ filters: ['||technoratimedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smartwrapper.technoratimedia.com',
+ },
+ {
+ filters: ['||adgebra.co.in^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adgebra.co.in',
+ },
+ {
+ filters: ['/adserving/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adgebra.co.in/AdServing/',
+ },
+ {
+ filters: ['||youramigo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jslog.youramigo.com',
+ },
+ {
+ filters: ['/fortvision-fb-web.', '||fortvision.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://resources.fortvision.com/staticfiles/fb-web/js/fortvision-fb-web.js',
+ },
+ {
+ filters: ['||hubvisor.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.hubvisor.io',
+ },
+ {
+ filters: ['||securite.01net.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://securite.01net.com',
+ },
+ {
+ filters: ['||cdnquality.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdnquality.com',
+ },
+ {
+ filters: ['||torrentdownloads.me/*.gif$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.torrentdownloads.me/templates/new/images/one3.gif',
+ },
+ {
+ filters: ['||shermore.info^', '||shermore.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://shermore.info',
+ },
+ {
+ filters: ['||geni.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://geni.us',
+ },
+ {
+ filters: ['/bluekai/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b1sync.zemanta.com/usersync/bluekai/',
+ },
+ {
+ filters: ['||viralize.tv/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.viralize.tv/track/',
+ },
+ {
+ filters: ['||quantum-advertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wrappercdn.quantum-advertising.com',
+ },
+ {
+ filters: ['||ownpage.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.ownpage.fr',
+ },
+ {
+ filters: ['||madadsmedia.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads-by.madadsmedia.com',
+ },
+ {
+ filters: ['/stats.php?type='],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://stats2.panet.co.il/stats.php?type=story&sID=2360110',
+ },
+ {
+ filters: ['@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=mashable.com'],
+ sourceUrl: 'https://mashable.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['@@||amazon-adsystem.com/*/apstag.js$script,domain=mashable.com'],
+ sourceUrl: 'https://mashable.com',
+ type: 'script',
+ url: 'https://c.amazon-adsystem.com/aax2/apstag.js',
+ },
+ {
+ filters: ['||pages03.net/WTS/event.jpeg?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.pages03.net/WTS/event.jpeg?',
+ },
+ {
+ filters: ['@@||productads.hlserve.com^$script,domain=argos.co.uk'],
+ sourceUrl: 'https://www.argos.co.uk',
+ type: 'script',
+ url: 'https://retail-eu.productads.hlserve.com',
+ },
+ {
+ filters: ['||zvsuhljiha-a.akamaihd.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://zvsuhljiha-a.akamaihd.net',
+ },
+ {
+ filters: ['/viewad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/viewad/',
+ },
+ {
+ filters: ['||vox-cdn.com/campaigns_images/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.vox-cdn.com/campaigns_images/',
+ },
+ {
+ filters: ['_adsetup.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pad.mymovies.it/v12/include/adv/manzoni/ver1/mnz_adsetup.js',
+ },
+ {
+ filters: ['/player/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pad.mymovies.it/v12/script/player/ads.js',
+ },
+ {
+ filters: ['||assoc-amazon.com^$third-party', '||assoc-amazon.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wms.assoc-amazon.com',
+ },
+ {
+ filters: ['||rumble.com/l/$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rumble.com/l/',
+ },
+ {
+ filters: ['||trafforsrv.com^', '||trafforsrv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://trafforsrv.com',
+ },
+ {
+ filters: ['||mixadvert.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://m.mixadvert.com',
+ },
+ {
+ filters: ['||adv.wp.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adv.wp.pl',
+ },
+ {
+ filters: ['||audrte.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.audrte.com',
+ },
+ {
+ filters: ['||videoplaza.tv^$third-party,image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssp.videoplaza.tv',
+ },
+ {
+ filters: ['||dot.wp.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dot.wp.pl',
+ },
+ {
+ filters: [
+ '/hyper-assets/*$script,domain=aftonbladet.se',
+ '@@/hyper-assets/preload*$script,domain=aftonbladet.se',
+ ],
+ sourceUrl: 'https://www.aftonbladet.se',
+ type: 'script',
+ url: 'https://www.aftonbladet.se/hyper-assets/preload.f36b616f8f3bea0dc728.js',
+ },
+ {
+ filters: ['@@/hyper-assets/app*$script,domain=aftonbladet.se'],
+ sourceUrl: 'https://www.aftonbladet.se',
+ type: 'script',
+ url: 'https://www.aftonbladet.se/hyper-assets/app.f36b616f8f3bea0dc728.js',
+ },
+ {
+ filters: ['||session.timecommerce.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://session.timecommerce.net',
+ },
+ {
+ filters: ['||bizrate.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://chirp.bizrate.com',
+ },
+ {
+ filters: ['||javfor.me/*/banner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://javfor.me/static/banner/',
+ },
+ {
+ filters: ['||brandmetrics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.brandmetrics.com',
+ },
+ {
+ filters: ['||analytics.codigo.se^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.codigo.se',
+ },
+ {
+ filters: ['||pixel.glimr.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.glimr.io',
+ },
+ {
+ filters: ['||research-int.se^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trafficgateway.research-int.se',
+ },
+ {
+ filters: ['/aff_land?referrer'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bluehost.com/hosting/aff_land?referrer=&rand=1540303560945',
+ },
+ {
+ filters: ['||rtb123.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rtb123.com',
+ },
+ {
+ filters: ['||01net.com/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://securite.01net.com/track/',
+ },
+ {
+ filters: ['||cnetcontent.com/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ws.cnetcontent.com/log?',
+ },
+ {
+ filters: ['||amp.services^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.amp.services',
+ },
+ {
+ filters: ['||beacon.statful.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://beacon.statful.com',
+ },
+ {
+ filters: ['||cnzz.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tui.cnzz.net',
+ },
+ {
+ filters: ['-native-ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rss.oneindia.com/common/render-native-ad.js',
+ },
+ {
+ filters: ['-advertorial.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rss.oneindia.com/common/en-advertorial.json',
+ },
+ {
+ filters: ['||cquotient.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.cquotient.com',
+ },
+ {
+ filters: ['||tracking.unrealengine.com^', '@@||tracking.unrealengine.com/tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.unrealengine.com/tracking.js',
+ },
+ {
+ filters: ['||analytics.aasaam.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.aasaam.com',
+ },
+ {
+ filters: ['||os-data.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t1.os-data.com',
+ },
+ {
+ filters: ['/adlink/*$domain=~adlinktech.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.liontravel.com/Scripts/ADLink/',
+ },
+ {
+ filters: ['@@||thesimsresource.com^$script,domain=thesimsresource.com'],
+ sourceUrl: 'https://www.thesimsresource.com',
+ type: 'script',
+ url: 'https://www.thesimsresource.com',
+ },
+ {
+ filters: ['/tsrHitCounter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.thesimsresource.com/tsrHitCounter.php',
+ },
+ {
+ filters: ['|https://$script,stylesheet,third-party,xmlhttprequest,domain=fastpic.ru'],
+ sourceUrl: 'http://fastpic.ru',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['|http://$script,stylesheet,third-party,xmlhttprequest,domain=fastpic.ru'],
+ sourceUrl: 'http://fastpic.ru',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ check: true,
+ filters: [
+ '|ws://$third-party,domain=fastpic.ru',
+ '|ws://$websocket,third-party,domain=fastpic.ru',
+ ],
+ sourceUrl: 'http://fastpic.ru',
+ type: 'websocket',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||amazonaws.com^$script,domain=cinemablend.com|thesimsresource.com'],
+ sourceUrl: 'https://www.thesimsresource.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com',
+ },
+ {
+ filters: ['||traffic-media.co^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://jsc.traffic-media.co',
+ },
+ {
+ filters: ['/img/adv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dict.leo.org/img/adv/',
+ },
+ {
+ filters: ['||turbotraff.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://turbotraff.com',
+ },
+ {
+ filters: ['||musicatorrents.com^*/script.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.musicatorrents.com/wp-content/themes/Alexis/js/script.js',
+ },
+ {
+ filters: ['||musicatorrents.com^*/license.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.musicatorrents.com/wp-content/themes/Alexis/js/license.js',
+ },
+ {
+ filters: ['||17track.net^*/google.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://res.17track.net/about/js/google.min.js',
+ },
+ {
+ filters: ['/adspace.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.tver.jp/css/adspace.css',
+ },
+ {
+ check: true,
+ filters: ['||mopub.com^$third-party', '||mopub.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.mopub.com',
+ },
+ {
+ filters: ['||mb-srv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://af.widget.mb-srv.com',
+ },
+ {
+ filters: ['||remarketingpixel.com^', '||remarketingpixel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.remarketingpixel.com',
+ },
+ {
+ filters: ['||pv.xcar.com.cn^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pv.xcar.com.cn',
+ },
+ {
+ filters: ['||marfeel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://titania.marfeel.com',
+ },
+ {
+ filters: ['||clickfunnels.com/userevents/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://app.clickfunnels.com/userevents/',
+ },
+ {
+ filters: ['||track.addevent.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.addevent.com',
+ },
+ {
+ filters: ['/pixel/visit?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://af.widget.mb-srv.com/pixel/visit?',
+ },
+ {
+ filters: ['/tags?session_id='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://fpt.microsoft.com/tags?session_id=618fef82-b5a9-40b4-b297-b63d07fadd22',
+ },
+ {
+ filters: ['_social_tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.wnyc.org/static/js/ga_social_tracking.js',
+ },
+ {
+ filters: ['/trackjs.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://answers.unrealengine.com/static/trackJs.json',
+ },
+ {
+ filters: ['/no-impression.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://serving.ad.org.vn/no-impression.gif?',
+ },
+ {
+ filters: ['/ad-exchange.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gamma.cachefly.net/js/ad-exchange.js',
+ },
+ {
+ filters: ['.adnetwork.$domain=~adnetwork.ie|~adnetwork.sk'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.adnetwork.vn',
+ },
+ {
+ filters: ['||srcsmrtgs.com^', '||srcsmrtgs.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.srcsmrtgs.com',
+ },
+ {
+ filters: ['/advertise-$domain=~advertise-solution.nl|~bingads.microsoft.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.termometropolitico.it/wp-content/plugins/advertise-me',
+ },
+ {
+ filters: ['||adbooth.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://engine.adbooth.com',
+ },
+ {
+ filters: ['||pipedream.wistia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pipedream.wistia.com',
+ },
+ {
+ filters: ['||pdn-1.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://xml.pdn-1.com',
+ },
+ {
+ filters: ['||popmonetizer.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://xml.popmonetizer.com',
+ },
+ {
+ filters: ['||mppapi.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://emeter-nam.mppapi.io',
+ },
+ {
+ filters: ['||adrunnr.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://adrunnr.com',
+ },
+ {
+ filters: ['/adcalloverride.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.abcnews.com/assets/js/adCallOverride.js',
+ },
+ {
+ filters: ['||analytics.kaltura.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.kaltura.com',
+ },
+ {
+ filters: ['/adsiframe.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s4.eestatic.com/assets_js/dyn/adsiframe.js',
+ },
+ {
+ filters: ['||thefappeningblog.com/icloud9.html'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://thefappeningblog.com/icloud9.html',
+ },
+ {
+ filters: ['/pageviews/*$domain=~stats.wikimedia.org|~tools.wmflabs.org'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://elcomercio.pe/track/pageviews/',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$stylesheet'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: ['||linicom.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://linicom.co.uk',
+ },
+ {
+ filters: ['||adap.tv^$third-party,script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://redir.adap.tv',
+ },
+ {
+ filters: ['||performance.typekit.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://performance.typekit.net',
+ },
+ {
+ filters: [
+ '@@||ensighten.com/hearst/news/Bootstrap.js$script,domain=ctpost.com|houstonchronicle.com|mysanantonio.com|newstimes.com|seattlepi.com|sfchronicle.com|sfgate.com|timesunion.com',
+ ],
+ sourceUrl: 'https://m.sfgate.com',
+ type: 'script',
+ url: 'https://nexus.ensighten.com/hearst/news/Bootstrap.js',
+ },
+ {
+ filters: ['||oclaserver.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://go.oclaserver.com',
+ },
+ {
+ filters: ['/InsightTrk/*', '/tracker.do?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://insight.danawa.com/InsightTrk/tracker.do?',
+ },
+ {
+ filters: ['||pymx5.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pymx5.com',
+ },
+ {
+ filters: ['||easylist.club^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://easylist.club',
+ },
+ {
+ filters: ['/popunder1.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://easylist.club/popunder1.js',
+ },
+ {
+ filters: ['||tracking.adweb.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://tracking.adweb.co.kr',
+ },
+ {
+ filters: ['/analytics-js/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.htmedia.in/analytics-js/',
+ },
+ {
+ filters: ['||actuallysnake.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://actuallysnake.com',
+ },
+ {
+ filters: ['728x90.html|'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://mangarock.com/iframe/adtrue_728x90.html',
+ },
+ {
+ filters: ['||adsrv.eacdn.com^$third-party', '||adsrv.eacdn.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://wlstoiximan.adsrv.eacdn.com',
+ },
+ {
+ filters: ['/468_60.', '468_60.gif|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.khabaronline.ir/system/menus/19/468_60.gif',
+ },
+ {
+ filters: ['||adf.ly^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['|http://$third-party,domain=adf.ly|s1-adfly.com'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['.weborama.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s1.lprs1.fr/assets/js/lib/squid/squid.weborama.js',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['/ads.png', '@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/ads.png',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['|https://$third-party,domain=adf.ly|s1-adfly.com'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'xhr',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['/fbpixel.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s1.lprs1.fr/assets/js/app/squid/fbpixel.js',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['||analytics.grupogodo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.grupogodo.com',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['||investingchannel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://abd.investingchannel.com',
+ },
+ {
+ filters: ['||log.sv.pandora.tv^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://log.sv.pandora.tv',
+ },
+ {
+ filters: ['||hyphenatedion.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.hyphenatedion.com',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'xhr',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/js.cookie.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/js.cookie.js',
+ },
+ {
+ filters: ['@@||rapidvideo.com/js/videojs.hotkeys.min.js$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.rapidvideo.com/js/videojs.hotkeys.min.js',
+ },
+ {
+ filters: ['/v1/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://linicom.co.uk/opp/api/v1/ads/',
+ },
+ {
+ filters: ['/stats/event.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.lacentrale.fr/js/stats/event.js?',
+ },
+ {
+ filters: [
+ '@@||player.ooyala.com^*/analytics-plugin/$script,domain=nintendo.com',
+ '||player.ooyala.com/*/analytics-plugin/$script,redirect=noopjs,domain=nintendo.com',
+ ],
+ sourceUrl: 'https://careers.nintendo.com',
+ type: 'script',
+ url: 'https://player.ooyala.com/static/v4/production/analytics-plugin/',
+ },
+ {
+ filters: ['/tracking_partenaire.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://www.lacentrale.fr/tracking_partenaire.php',
+ },
+ {
+ filters: ['||kxcdn.com/prj/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://bp-1c51.kxcdn.com/prj/',
+ },
+ {
+ filters: ['/ViewCounter/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://people.onliner.by/viewcounter/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['/CBM.Tracking.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.lacentrale.fr/js/class/CBM.Tracking.js?',
+ },
+ {
+ filters: ['||conde.io/beacon'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://rum.conde.io/beacon',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'xhr',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'script',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'stylesheet',
+ url: 'https://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'https://adf.ly',
+ type: 'image',
+ url: 'https://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['.me/ads/', '/ads/300.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://castlive.me/ads/300.html',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'stylesheet',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'script',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party', '@@||adf.ly/static/image/$image,first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'image',
+ url: 'http://cdn.adf.ly/static/image/',
+ },
+ {
+ filters: ['@@||adf.ly^$first-party'],
+ sourceUrl: 'http://www.adf.ly',
+ type: 'xhr',
+ url: 'http://www.adf.ly',
+ },
+ {
+ filters: ['/ads/load.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://castlive.me/ads/load.html',
+ },
+ {
+ filters: ['/adsdk/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://gp.vrixon.com/adsdk/',
+ },
+ {
+ filters: ['||waust.at^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://waust.at',
+ },
+ {
+ filters: ['/feedads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://livesport4u.com/feedads.html',
+ },
+ {
+ filters: ['/adright.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://vipcast.pw/adright.php',
+ },
+ {
+ filters: ['_show_ads_', '@@||naver.net/adpost/adpost_show_ads_min.js$domain=danawa.com'],
+ sourceUrl: 'http://m.danawa.com',
+ type: 'script',
+ url: 'http://adimg3.search.naver.net/adpost/adpost_show_ads_min.js',
+ },
+ {
+ filters: ['||witalfieldt.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://witalfieldt.com',
+ },
+ {
+ filters: ['/AdServlet?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://grupogodo.worldgravity.com/grrec-grupogodo-war/AdServlet?',
+ },
+ {
+ filters: ['||adright.co^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://xml.adright.co',
+ },
+ {
+ filters: ['||becanium.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://becanium.com',
+ },
+ {
+ filters: ['||traktrafficflow.com^$third-party', '||traktrafficflow.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.traktrafficflow.com',
+ },
+ {
+ filters: ['/adpai.', '/adflag.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://adpai.thepaper.cn/static/images/adflag.png',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.makeleio.gr',
+ type: 'script',
+ url: 'http://www.makeleio.gr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||alimama.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.alimama.com',
+ },
+ {
+ filters: ['||interworksmedia.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.interworksmedia.co.kr',
+ },
+ {
+ filters: ['/adTagRequest.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cm.interworksmedia.co.kr/adTagRequest.htm',
+ },
+ {
+ filters: ['/lib/analytics.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://s1.xmcdn.com/wap/js/lib/analytics.js',
+ },
+ {
+ filters: ['||maxmind.com/app/$third-party', '||maxmind.com^*/geoip.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://j.maxmind.com/app/geoip.js',
+ },
+ {
+ filters: ['||soujoobafoo.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://soujoobafoo.com',
+ },
+ {
+ filters: ['||rta2.metro.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://rta2.metro.co.uk',
+ },
+ {
+ filters: ['||adcdnx.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn1.adcdnx.com',
+ },
+ {
+ filters: ['/adbayimg/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.iacstatic.co.kr/adbayimg/',
+ },
+ {
+ filters: ['/audience.min.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.interworksmedia.co.kr/js/audience.min.js',
+ },
+ {
+ filters: ['||basilic.io^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://foglio.basilic.io',
+ },
+ {
+ filters: ['||dj.renren.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://dj.renren.com',
+ },
+ {
+ filters: ['/ads1.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.soccerjumbotv1.me/ads1.htm',
+ },
+ {
+ filters: ['||holder.com.ua^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://h.holder.com.ua',
+ },
+ {
+ filters: ['|http://r.i.ua^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://r.i.ua',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.makeleio.gr',
+ type: 'script',
+ url: 'http://www.makeleio.gr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/googlead.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://streamango.com/googlead.js',
+ },
+ {
+ filters: ['||pub.network^$third-party', '/pubfig.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.pub.network/pixlr-com/pubfig.min.js',
+ },
+ {
+ filters: ['||streamango.com/log'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://t1.streamango.com/log',
+ },
+ {
+ filters: ['||ekoatchooze.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ekoatchooze.com',
+ },
+ {
+ filters: ['/pubmatic_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.isanook.com/sh/0/js/pubmatic_mobile.1.0.0.js',
+ },
+ {
+ filters: ['||truehits.in.th^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lvs2.truehits.in.th',
+ },
+ {
+ filters: ['||sal.isanook.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sal.isanook.com',
+ },
+ {
+ filters: ['||mellowads.com^$third-party', '||mellowads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.mellowads.com',
+ },
+ {
+ filters: ['||clickfunnels.com/cf.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://app.clickfunnels.com/cf.js',
+ },
+ {
+ filters: ['/mellowads.'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://mellowads.com',
+ },
+ {
+ filters: ['||clickfunnels.com^*/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://app.clickfunnels.com/v1/track?',
+ },
+ {
+ check: true,
+ filters: ['/ads.htm'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://notify.medicalnewstoday.com/ads.html',
+ },
+ {
+ filters: ['|https://r.i.ua^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.i.ua',
+ },
+ {
+ filters: ['/adbanner/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://addons.books.com.tw/G/ADbanner/',
+ },
+ {
+ filters: ['/uploads/ads/*', '/ads/dfp/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img-as.fsanook.com/files/uploads/ads/dfp/',
+ },
+ {
+ filters: ['/tracking/pixel.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://wisteria-js.excite.co.jp/tracking/pixel.gif',
+ },
+ {
+ filters: ['.com/counter?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://glogger.stuff.com/counter?',
+ },
+ {
+ filters: [
+ '$script,subdocument,third-party,domain=efukt.com',
+ '@@||ajax.googleapis.com/ajax/$script,domain=efukt.com',
+ ],
+ sourceUrl: 'https://www.efukt.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com/ajax/',
+ },
+ {
+ filters: ['@@||twitter.com^$script,subdocument,domain=efukt.com'],
+ sourceUrl: 'https://www.efukt.com',
+ type: 'script',
+ url: 'https://platform.twitter.com',
+ },
+ {
+ filters: ['||jsrdn.com/i/1.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://i.jsrdn.com/i/1.gif?',
+ },
+ {
+ filters: ['||spox.com/pub/js/track.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.spox.com/pub/js/track.js',
+ },
+ {
+ filters: ['-tracking.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.spox.com/pub/js/facebook-tracking.js?',
+ },
+ {
+ filters: ['/banners/468'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mellowads.com/img/banners/468x60.gif',
+ },
+ {
+ filters: ['@@||cloudflare.com/ajax/libs/*$script,domain=androidcentral.com'],
+ sourceUrl: 'https://m.androidcentral.com',
+ type: 'script',
+ url: 'https://cdnjs.cloudflare.com/ajax/libs/',
+ },
+ {
+ filters: [
+ '||doubleclick.net^$script,redirect=noopjs,domain=androidcentral.com|crackberry.com|imore.com|windowscentral.com',
+ ],
+ sourceUrl: 'https://m.androidcentral.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net',
+ },
+ {
+ filters: ['@@||zencdn.net^$script,domain=efukt.com'],
+ sourceUrl: 'https://efukt.com',
+ type: 'script',
+ url: 'https://vjs.zencdn.net',
+ },
+ {
+ filters: ['||tremorhub.com/pubsync?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://qds0l.publishers.tremorhub.com/pubsync?',
+ },
+ {
+ filters: ['||alooma.com/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://inputs.alooma.com/track/',
+ },
+ {
+ filters: ['||stats.pusher.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stats.pusher.com',
+ },
+ {
+ filters: ['/optimizely/*$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wetter.de/components/optimizely/',
+ },
+ {
+ filters: ['/gujAd.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://adalliance-a.akamaihd.net/live/wetter.de/gujAd.css',
+ },
+ {
+ filters: ['||technical-service.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://technical-service.net',
+ },
+ {
+ filters: ['||akamaized.net/?u='],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://bg-a.akamaized.net/?u=https://www.wetter.de/&ac=tak&as=wehome',
+ },
+ {
+ filters: ['||showheroes.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.showheroes.com',
+ },
+ {
+ filters: ['||trck.spoteffects.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trck.spoteffects.net',
+ },
+ {
+ filters: ['||track.uc.cn^', '||uc.cn/collect?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://track.uc.cn/collect?',
+ },
+ {
+ filters: ['/adsearch.$domain=~adsearch.fr'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adsearch.adkontekst.pl',
+ },
+ {
+ filters: ['/images/adv.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://im1.kommersant.ru/ContentFlex/images/adv.gif',
+ },
+ {
+ filters: ['/pubtag.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.showheroes.com/pubtag.js?',
+ },
+ {
+ filters: ['||vidible.tv/placement/vast/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://delivery.vidible.tv/placement/vast/',
+ },
+ {
+ filters: ['||d3ezl4ajpp2zy8.cloudfront.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d3ezl4ajpp2zy8.cloudfront.net',
+ },
+ {
+ filters: ['@@||providesupport.com^$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://image.providesupport.com',
+ },
+ {
+ filters: ['/readcounter.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.kommersant.ru/readcounter.aspx?',
+ },
+ {
+ filters: ['||apester.com/event^', '||events.apester.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.apester.com/event',
+ },
+ {
+ filters: ['||image.providesupport.com/cmd/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://image.providesupport.com/cmd/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['-120x60.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fmnetwork.nl/banners/footyshoes-ronaldo7-120x60.png',
+ },
+ {
+ filters: ['||nsstatic.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.nsstatic.net',
+ },
+ {
+ filters: ['/geocc.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://g.pcmag.com/geocc.js',
+ },
+ {
+ filters: ['||adziff.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.adziff.com',
+ },
+ {
+ filters: ['||sa.sky.it^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sa.sky.it',
+ },
+ {
+ filters: ['||netshelter.net^$third-party', '||netshelter.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://track.netshelter.net',
+ },
+ {
+ filters: ['||exsigma.eu/mercurio/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.exsigma.eu/mercurio/',
+ },
+ {
+ filters: ['/nav-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s3.foolcdn.com/misc-assets/nav-ad-sa.png',
+ },
+ {
+ filters: ['-nav-ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://g.foolcdn.com/misc-assets/ryr-nav-ad.png',
+ },
+ {
+ filters: [
+ '|https://$script,domain=rule34.xxx',
+ '@@||rule34.xxx/script/awesomplete.min.js$script,first-party',
+ ],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ filters: ['||ziffdavis.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ziffdavis.com',
+ },
+ {
+ filters: ['@@||rule34.xxx/css/sinni.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/css/sinni.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/awesomplete.min.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ filters: ['/aspenanalytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cvp1.cdn.turner.com/xslo/cvp/config/nba/aspenanalytics.json',
+ },
+ {
+ check: true,
+ filters: ['@@||track.adform.net/serving/scripts/trackpoint$script,domain=sky.it|ubibanca.com'],
+ sourceUrl: 'http://www.sky.it',
+ type: 'script',
+ url: 'https://track.adform.net/serving/scripts/trackpoint',
+ },
+ {
+ filters: ['||ninja.onap.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ninja.onap.io',
+ },
+ {
+ filters: ['@@||rule34.xxx/css/sinni.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/css/sinni.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/awesomplete.min.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ filters: ['-ads-widget/'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://www.unamglobal.unam.mx/wp-content/plugins/meks-easy-ads-widget/',
+ },
+ {
+ filters: [
+ '||turner.com^*/ads/',
+ '/ads/freewheel/*',
+ '@@||turner.com^*/ads/freewheel/*/AdManager.js',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cvp1.cdn.turner.com/xslo/cvp/ads/freewheel/js/0/AdManager.js',
+ },
+ {
+ filters: ['/Logs/discovery?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://inrecsys.popin.cc/PopinService/Logs/discovery?',
+ },
+ {
+ filters: ['||analytics.myfinance.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.myfinance.com',
+ },
+ {
+ filters: ['/ad_units?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.myfinance.com/api/ad_units?',
+ },
+ {
+ filters: ['/coAnalytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://funds.gofundme.com/js/5.0/app/signup/coAnalytics.js',
+ },
+ {
+ filters: ['-160x600.'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://static.javhd.com/h5/files/video/2069-670846-160x600.mpg',
+ },
+ {
+ filters: ['/advertmedia/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ais.wetter.de/masters/769x478/Jf6GZCFH/advertmedia/',
+ },
+ {
+ filters: ['@@||rule34.xxx/css/sinni.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/css/sinni.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/awesomplete.min.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||tracking.rtl.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.rtl.de',
+ },
+ {
+ filters: ['.net/ad-', '-728-90.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ronaldo7.net/ad-here-728-90.jpg',
+ },
+ {
+ filters: ['-advertise.$domain=~i-advertise.net|~mb-advertise.gr'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ronaldo7.net/ronaldo7-advertise.jpg',
+ },
+ {
+ filters: ['-300-250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ronaldo7.net/ad-here-300-250.jpg',
+ },
+ {
+ filters: ['||fool.com/pitcher/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://infotron.fool.com/pitcher/',
+ },
+ {
+ filters: ['@@||rule34.xxx/css/sinni.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/css/sinni.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/awesomplete.min.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ check: true,
+ filters: ['/popunder_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/www.celebjihad.com/popunder_stc3.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['@@||rule34.xxx/css/sinni.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/css/sinni.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/application.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/application.js',
+ },
+ {
+ filters: ['@@||rule34.xxx/script/awesomplete.min.js$script,first-party'],
+ sourceUrl: 'https://rule34.xxx',
+ type: 'script',
+ url: 'https://rule34.xxx/script/awesomplete.min.js',
+ },
+ {
+ filters: ['||vivocha.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.vivocha.com',
+ },
+ {
+ filters: ['/ajax/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://olx.com.eg/i2/ajax/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ads12.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/video-js/ads12.js',
+ },
+ {
+ filters: ['||n2s.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://deliverys.n2s.co.kr',
+ },
+ {
+ filters: ['||click.vgnett.no^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://click.vgnett.no',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||p-advg.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://c.p-advg.com',
+ },
+ {
+ filters: ['||stat.api.2gis.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://stat.api.2gis.ru',
+ },
+ {
+ filters: ['/cgi-bin/count.cgi?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.posgrado.unam.mx/cgi-bin/Count.cgi?',
+ },
+ {
+ filters: ['/analytics/track-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://maps.api.2gis.ru/analytics/track-user.png',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/resxclsa.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.forever21.com/eu/shop/_common/2018101202/js/resxclsa.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.celebjihad.com',
+ type: 'script',
+ url: 'https://www.celebjihad.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/core/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://redllama.ru/core/ad/',
+ },
+ {
+ filters: ['/ga.php?$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://m.azet.sk/sluzby/miesacka/ga.php?',
+ },
+ {
+ filters: ['/gemius/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.aimg.sk/vendor/gemius/',
+ },
+ {
+ filters: ['/aztracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.aimg.sk/livemonitor/js/aztracker.js',
+ },
+ {
+ filters: ['||tracker.azet.sk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracker.azet.sk',
+ },
+ {
+ filters: ['/iframetracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tracker.azet.sk/livemonitor/iframeTracker.html',
+ },
+ {
+ filters: ['||esearchvision.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.esearchvision.com',
+ },
+ {
+ filters: ['||dtmpub.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.dtmpub.com',
+ },
+ {
+ filters: ['/clicktrack-*.gif?', '/activity.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://go.techtarget.com/clicktrack-r/activity/activity.gif?',
+ },
+ {
+ check: true,
+ filters: ['||mediaplex.com^*?mpt='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adfarm.mediaplex.com/ad/tr/550-229078-1801-0?mpt=',
+ },
+ {
+ filters: ['||dpmsrv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.dpmsrv.com',
+ },
+ {
+ filters: ['/makecrmpcookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.joins.com/common/makecrmpcookie.js',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: ['/rum.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rum.perfops.net/rum.min.js',
+ },
+ {
+ filters: ['||google-analytics.com/batch^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.google-analytics.com/batch',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: ['/hmapxy.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ghmpl.hit.gemius.pl/hmapxy.js',
+ },
+ {
+ filters: ['||hudb.pl^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://alt.hudb.pl',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: ['/iqadcontroller.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.zeit.de/iqd/cdn_zeit_mob/live/iqadcontroller.js',
+ },
+ {
+ filters: ['||iqcontentplatform.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.iqcontentplatform.de',
+ },
+ {
+ filters: ['||algovid.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://v.algovid.com',
+ },
+ {
+ filters: ['||dianomi.com^$third-party', '||dianomi.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dianomi.com',
+ },
+ {
+ check: true,
+ filters: ['||userscloud.com/sw.js$script', '||userscloud.com/sw.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://userscloud.com/sw.js',
+ },
+ {
+ filters: [
+ '|https://$image,script,subdocument,third-party,xmlhttprequest,domain=userscloud.com',
+ ],
+ sourceUrl: 'http://userscloud.com',
+ type: 'image',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||userscloud.com/js/vendor/core/bootstrap.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://userscloud.com/js/vendor/core/bootstrap.js',
+ },
+ {
+ filters: [
+ '|http://$image,script,subdocument,third-party,xmlhttprequest,domain=userscloud.com',
+ ],
+ sourceUrl: 'http://userscloud.com',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['||rosemand.pro^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rosemand.pro',
+ },
+ {
+ filters: ['||djtflbt20bdde.cloudfront.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://djtflbt20bdde.cloudfront.net',
+ },
+ {
+ filters: ['||uptolike.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://w.uptolike.com',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: ['||cc.zeit.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cc.zeit.de',
+ },
+ {
+ filters: ['/__utm.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cmu.edu/__utm.js',
+ },
+ {
+ filters: ['||captora.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cdn.captora.com',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: [
+ '@@||dianomi.com/partner/marketwatch/js/dianomi-marketwatch.js?$domain=marketwatch.com',
+ ],
+ sourceUrl: 'https://www.marketwatch.com',
+ type: 'script',
+ url: 'https://www.dianomi.com/partner/marketwatch/js/dianomi-marketwatch.js?',
+ },
+ {
+ filters: ['/adpic/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.scupio.com/ad//adpic/',
+ },
+ {
+ filters: ['?adtype='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.startpage.com/js/abp.js?adType=1&advertiser=1&advertising=1',
+ },
+ {
+ filters: ['||startpage.*/pelp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.startpage.com/pelp?',
+ },
+ {
+ filters: ['@@||8muses.com^$script,first-party'],
+ sourceUrl: 'https://www.8muses.com',
+ type: 'script',
+ url: 'https://www.8muses.com',
+ },
+ {
+ filters: ['||uptolike.com/widgets/*/imp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://w.uptolike.com/widgets/v1/imp?',
+ },
+ {
+ filters: ['||increaserev.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://increaserev.com',
+ },
+ {
+ filters: ['/clientdatacollector/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.walgreens.com/instartlogic/clientdatacollector/',
+ },
+ {
+ filters: ['/ads/video/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vpaid.pubmatic.com/ads/video/',
+ },
+ {
+ filters: ['/adscbg/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.haberturk.com/adscbg/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||luxupcdna.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.luxupcdna.com',
+ },
+ {
+ filters: ['||luxupcdnc.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.luxupcdnc.com',
+ },
+ {
+ filters: ['||asqbwneriyvur.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.asqbwneriyvur.com',
+ },
+ {
+ filters: ['||2hanwriten.com^'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'http://www.2hanwriten.com',
+ },
+ {
+ filters: ['/adsfile.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://adsfile.bssdlbig.kugou.com',
+ },
+ {
+ filters: ['/adsframe.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://m.haberturk.com/adscbg/adsFrame.html',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/advertpro/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adsp.haberturk.com/advertpro/',
+ },
+ {
+ filters: ['/adchoicesicon.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://contextual.media.net/__media__/pics/800010042/AdChoicesIcon.png',
+ },
+ {
+ filters: ['||informer.yandex.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://informer.yandex.ru',
+ },
+ {
+ filters: ['||hilariouszinc.com^', '||hilariouszinc.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://hilariouszinc.com',
+ },
+ {
+ filters: ['||logs.spilgames.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://logs.spilgames.com',
+ },
+ {
+ filters: ['||gez.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://o.gez.io',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://celebrityinsider.org',
+ type: 'script',
+ url: 'http://celebrityinsider.org/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||4tube.com/assets/abExperiments-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1-ht-ui.4tube.com/assets/abExperiments-fba113e07a.js',
+ },
+ {
+ filters: ['/newrelicKpis-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1-ht-ui.4tube.com/assets/newrelicKpis-018b5db755.js',
+ },
+ {
+ filters: ['/newrelicKpisFooter-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn1-ht-ui.4tube.com/assets/newrelicKpisFooter-a4a3d6ff76.js',
+ },
+ {
+ filters: ['||4tube.com/sw4tube.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.4tube.com/sw4tube.js',
+ },
+ {
+ filters: ['.html?ad='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://m.4tube.com/ad_detail.html?ad=mobile-videolist-top',
+ },
+ {
+ filters: ['||baconaces.pro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://baconaces.pro',
+ },
+ {
+ filters: ['||t.brand-server.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.brand-server.com',
+ },
+ {
+ filters: ['||4tube.com/*banner$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn1-sites.4tube.com/tb/image/default-200x80-banner.jpg',
+ },
+ {
+ filters: ['||smartadtags.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.smartadtags.com',
+ },
+ {
+ filters: ['||clubic.com/editorial/publier_count.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.clubic.com/editorial/publier_count.php?',
+ },
+ {
+ filters: ['@@||playbuzz.com/widget/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.playbuzz.com/widget/',
+ },
+ {
+ filters: ['/banner_ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://gwk.adlibr.com/script/web/smart/banner_ad.js',
+ },
+ {
+ filters: ['||zarget.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.zarget.com',
+ },
+ {
+ filters: ['||clickcease.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.clickcease.com',
+ },
+ {
+ filters: ['/popad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://specials.indiatoday.com/specials/popup/popad.css',
+ },
+ {
+ filters: ['/smartpixel.$domain=~smartpixel.tv'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smartpixel.auditorius.ru',
+ },
+ {
+ filters: ['||sniperlog.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pix.sniperlog.ru',
+ },
+ {
+ filters: ['||mediatoday.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mediatoday.ru',
+ },
+ {
+ filters: ['/track/view/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.life.ru/track/view/',
+ },
+ {
+ filters: ['||tracking.i-vengo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tracking.i-vengo.com',
+ },
+ {
+ filters: ['||beacon.sojern.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://beacon.sojern.com',
+ },
+ {
+ filters: ['||instana.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eum.instana.io',
+ },
+ {
+ filters: ['||forter.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://4dc2aa82bc5e.cdn4.forter.com',
+ },
+ {
+ filters: ['-ad-manager/$~stylesheet'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.onlinekhabar.com/wp-content/plugins/ok-ad-manager/',
+ },
+ {
+ filters: ['||reople.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ad.reople.co.kr',
+ },
+ {
+ filters: ['||2beon.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://plugin.2beon.co.kr',
+ },
+ {
+ filters: ['||usemaxserver.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.usemaxserver.de',
+ },
+ {
+ filters: ['||greystripe.com^$third-party', '||greystripe.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://c.greystripe.com',
+ },
+ {
+ filters: ['@@||veedi.com^*/ADS.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.veedi.com/player_mobile/js/ads/ADS.js',
+ },
+ {
+ filters: ['||usemax.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.usemax.de',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://celebrityinsider.org',
+ type: 'script',
+ url: 'http://celebrityinsider.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['-publicidad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://est.sport.es/img/bg-publicidad.png',
+ },
+ {
+ filters: ['||ndg.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fallsm.ndg.io',
+ },
+ {
+ filters: ['_pix.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.noddus.com/_pix.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://worldfree4u.club',
+ type: 'script',
+ url: 'https://worldfree4u.club/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||luckypushh.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://luckypushh.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://worldfree4u.club',
+ type: 'script',
+ url: 'https://worldfree4u.club/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||watchcartoononline.io/tema/images/jwplayer.jpg$image,first-party'],
+ sourceUrl: 'https://m.watchcartoononline.io',
+ type: 'image',
+ url: 'https://m.watchcartoononline.io/tema/images/jwplayer.jpg',
+ },
+ {
+ filters: ['@@||watchcartoononline.io/tema/images/jwplayer.jpg$image,first-party'],
+ sourceUrl: 'https://m.watchcartoononline.io',
+ type: 'image',
+ url: 'https://m.watchcartoononline.io/tema/images/jwplayer.jpg',
+ },
+ {
+ filters: ['/api.ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://api.ad.ad-stir.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ filters: ['||index.ru^$third-party', '/tnc.js?h='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.index.ru/tnc.js?h=m.vz.ru',
+ },
+ {
+ filters: ['||rd.rakuten.co.jp^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rd.rakuten.co.jp',
+ },
+ {
+ filters: ['||keyade.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://k.keyade.com',
+ },
+ {
+ filters: ['/tr.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tk.ilius.net/tr.gif?',
+ },
+ {
+ filters: ['/houseads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'media',
+ url: 'https://i.kapook.com/adskapook/2017/houseads/',
+ },
+ {
+ filters: ['/greenoaks.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.snopes.com/detroitchicago/greenoaks.gif?',
+ },
+ {
+ filters: ['@@||watchcartoononline.io/tema/images/jwplayer.jpg$image,first-party'],
+ sourceUrl: 'https://m.watchcartoononline.io',
+ type: 'image',
+ url: 'https://m.watchcartoononline.io/tema/images/jwplayer.jpg',
+ },
+ {
+ filters: ['://piwik.$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://piwik.1u1s.de',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://celebrityinsider.org',
+ type: 'script',
+ url: 'http://celebrityinsider.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||hitweb2.chosun.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://hitweb2.chosun.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://worldfree4u.club',
+ type: 'script',
+ url: 'https://worldfree4u.club/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||paypalobjects.com^*/pixel.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.paypalobjects.com/en_US/i/scr/pixel.gif',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ filters: ['-sync2ad-', '/sync2ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://vw-sync2ad-delivery.s3.amazonaws.com/SDK-JS/1.0/release/1.0.3/sync2ad.js',
+ },
+ {
+ filters: ['@@||watchcartoononline.io/tema/images/jwplayer.jpg$image,first-party'],
+ sourceUrl: 'https://m.watchcartoononline.io',
+ type: 'image',
+ url: 'https://m.watchcartoononline.io/tema/images/jwplayer.jpg',
+ },
+ {
+ filters: ['||pxf.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://fanduel.pxf.io',
+ },
+ {
+ filters: ['||ministedik.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ministedik.info',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ filters: ['/adview_'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://ads1.issuepoll.co.kr/adview_old.php',
+ },
+ {
+ filters: ['/images/adv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.vz.ru/images/adv/',
+ },
+ {
+ filters: ['.adserver.', '||adserver.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://global.adserver.yahoo.com',
+ },
+ {
+ filters: ['/baynote_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.jcrew.com/media/wro/js/baynote_v2_m56577569840418915.js',
+ },
+ {
+ filters: ['/dcs_tag.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ets.org/Media/Global/script/dcs_tag.js',
+ },
+ {
+ filters: ['/baynote.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mobile.yoox.com/_js_/0/1/yoox/baynote/ObserverFiles/de/baynote.js',
+ },
+ {
+ filters: ['||moevideo.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://moevideo.net',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ filters: ['||amgdgt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lrcm.amgdgt.com',
+ },
+ {
+ filters: ['||youtube.com/api/stats/qoe?'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://www.youtube.com/api/stats/qoe?',
+ },
+ {
+ filters: ['/stats.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.search.usa.gov/stats.gif?',
+ },
+ {
+ filters: ['||bnhtml.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bnhtml.com',
+ },
+ {
+ filters: ['||foreseeresults.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://events.foreseeresults.com',
+ },
+ {
+ filters: ['||smarterhq.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tr2.smarterhq.io',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ filters: ['||urldelivery.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.urldelivery.com',
+ },
+ {
+ filters: ['@@||collect.igodigital.com/collect.js$script,domain=cars.com'],
+ sourceUrl: 'https://www.cars.com',
+ type: 'script',
+ url: 'https://carscomconsumer.collect.igodigital.com/collect.js',
+ },
+ {
+ filters: ['/stats/impression'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://m.jogos360.com.br/stats/impressions',
+ },
+ {
+ filters: ['.com/ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://wall.alphacoders.com/ads_after_adsense_top_center.html',
+ },
+ {
+ filters: ['?advertiser_id=$domain=~panel.rightflow.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://px.ladsp.com/pixel?advertiser_id=00004458&referer=',
+ },
+ {
+ filters: ['||media01.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lidl.media01.eu',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.snopes.com',
+ type: 'script',
+ url: 'https://www.snopes.com/ezoic/',
+ },
+ {
+ check: true,
+ filters: ['/trackpxl?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://traffic.outbrain.com/network/trackpxl?',
+ },
+ {
+ filters: ['||profitshare.ro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://profitshare.ro',
+ },
+ {
+ filters: ['||yoochoose.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://event.yoochoose.net',
+ },
+ {
+ filters: ['_ads/js/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.newsweek.com/sites/all/modules/modules-custom/fusion/fusion_ads/js/',
+ },
+ {
+ check: true,
+ filters: ['||traffic-media.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsc.traffic-media.co.uk',
+ },
+ {
+ filters: ['/advertisment/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cdn.hamgardi.com/Uploads/Advertisment/',
+ },
+ {
+ filters: ['/sensorsdata-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.bibidev.com/3rd/sensorsdata-sdk',
+ },
+ {
+ filters: ['||xxlargepop.com/apu.php$script,redirect=noopjs'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xxlargepop.com/apu.php',
+ },
+ {
+ filters: ['.to/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://advert.uloz.to/ads/',
+ },
+ {
+ filters: ['||bcloudhost.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bcloudhost.com',
+ },
+ {
+ filters: ['/VideoAd/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://adx.adform.net/videoad/',
+ },
+ {
+ filters: ['/werbe-banner/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.chefkoch-cdn.de/js/default/userinfo/werbe-banner/',
+ },
+ {
+ filters: ['/aux/collect?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tg.socdm.com/aux/collect?',
+ },
+ {
+ filters: ['||rfity.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rfity.com',
+ },
+ {
+ filters: ['/wt_capi.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.lloydsbank.com/assets/js/webtrends/wt_capi.js',
+ },
+ {
+ filters: ['||puserving.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pl14420782.puserving.com',
+ },
+ {
+ check: true,
+ filters: ['/ad-emea.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad-emea.doubleclick.net',
+ },
+ {
+ filters: ['||online-metrix.net^', '||online-metrix.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://h.online-metrix.net',
+ },
+ {
+ filters: ['||d2xgf76oeu9pbh.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2xgf76oeu9pbh.cloudfront.net',
+ },
+ {
+ filters: ['||d303e3cdddb4ded4b6ff495a7b496ed5.s3.amazonaws.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d303e3cdddb4ded4b6ff495a7b496ed5.s3.amazonaws.com',
+ },
+ {
+ filters: ['||ntvk1.ru^$third-party', '||ntvk1.ru^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://p1.ntvk1.ru',
+ },
+ {
+ filters: ['||events.whisk.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.whisk.com',
+ },
+ {
+ filters: ['||r7ls.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tl.r7ls.net',
+ },
+ {
+ filters: ['||dircont3.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://p1.dircont3.com',
+ },
+ {
+ filters: ['||7eer.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mygiftcardsplus.7eer.net',
+ },
+ {
+ filters: ['/players/ads.', '/ads.jplayer.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://poovee.net/lib/players/ads.jplayer.css',
+ },
+ {
+ filters: ['||tracking.s24.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracking.s24.com',
+ },
+ {
+ filters: ['||consultant.ru/js/counter.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.consultant.ru/js/counter.js',
+ },
+ {
+ filters: ['/adds/counter.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.consultant.ru/adds/counter.js',
+ },
+ {
+ filters: ['/counter/collect?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cnt0.www.uz/counter/collect?',
+ },
+ {
+ filters: ['/TeaLeaf.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sprint.com/content/dam/sprint/util/tealeaf/tealeaf.js',
+ },
+ {
+ filters: ['/adperf_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cstatic.weborama.fr/js/adperf_publisher_api',
+ },
+ {
+ filters: ['||trck.bdi-services.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trck.bdi-services.de',
+ },
+ {
+ filters: ['/banners/ffadult/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.acdn12354732.com/banners/ffadult/',
+ },
+ {
+ filters: ['||ptawe.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://pto.ptawe.com',
+ },
+ {
+ filters: ['||ulogin.ru/stats.html'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://ulogin.ru/stats.html',
+ },
+ {
+ filters: ['/adsbycurse.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.wowprogress.com/i/adsbycurse.png',
+ },
+ {
+ filters: ['/abdetect.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wowprogress.com/js2/abdetect.js',
+ },
+ {
+ filters: [
+ '@@||eurogamer.net^$script,domain=eurogamer.net|nintendolife.com|rockpapershotgun.com|usgamer.net|vg247.com',
+ ],
+ sourceUrl: 'https://www.eurogamer.net',
+ type: 'script',
+ url: 'https://www.eurogamer.net',
+ },
+ {
+ filters: ['||gamer-network.net/plugins/dfp/', '/dfp/async.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.gamer-network.net/plugins/dfp/async.dfp.1.1.21.js',
+ },
+ {
+ filters: ['/SidebarAds.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.eurogamer.net/scripts/SidebarAds.js',
+ },
+ {
+ filters: ['/mormont.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.gamer-network.net/2018/scripts/mormont/v2.20.0/mormont.js',
+ },
+ {
+ filters: ['/iplookup.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://int.dpool.sina.com.cn/iplookup/iplookup.php',
+ },
+ {
+ filters: ['/css/adv.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://adv.zarabotki.ru/css/adv.css',
+ },
+ {
+ filters: ['||mormont.gamer-network.net^', '/register_pageview?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://mormont.gamer-network.net/api/measurement/v2/register_pageview?',
+ },
+ {
+ filters: ['/acbeacon2.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://cdn.tanx.com/t/acookie/acbeacon2.html',
+ },
+ {
+ filters: ['||qsoetgedlgyhyz.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.qsoetgedlgyhyz.com',
+ },
+ {
+ filters: ['||moneymakercdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.moneymakercdn.com',
+ },
+ {
+ filters: ['||apartments.com^*/al.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.apartments.com/clientvisit/al.gif?',
+ },
+ {
+ filters: ['/log?type=', '@@||csfd.cz/log?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.csfd.cz/log?type=ads&id=5795&action=view&_=1540303835993',
+ },
+ {
+ filters: ['||shareasale.com^', '||shareasale.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.shareasale.com',
+ },
+ {
+ filters: ['||tracking.pacharge.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://tracking.pacharge.com',
+ },
+ {
+ filters: ['||sensic.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mbb2.sensic.net',
+ },
+ {
+ filters: ['||eazyleads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://cdn.eazyleads.com',
+ },
+ {
+ check: true,
+ filters: [';1x1inv='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.adform.net/adfserve/?bn=25499905;1x1inv=1;srctype=3;ord=33250',
+ },
+ {
+ filters: ['||smartclip.net^$third-party,media'],
+ sourceUrl: 'https://foo.com',
+ type: 'media',
+ url: 'https://cdn.smartclip.net',
+ },
+ {
+ filters: ['/footer_ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://fans.91p20.space/fans/footer_ad.html',
+ },
+ {
+ filters: ['||collector.sspinc.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://collector.sspinc.io',
+ },
+ {
+ filters: ['||medleyads.com^$third-party', '||medleyads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://medleyads.com',
+ },
+ {
+ filters: ['||trackla.stackla.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://trackla.stackla.com',
+ },
+ {
+ filters: ['||srvtrck.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.srvtrck.com',
+ },
+ {
+ filters: ['||adacado.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.adacado.com',
+ },
+ {
+ filters: ['||extole.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://origin.extole.io',
+ },
+ {
+ filters: ['/pixel/conv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bm.adentifi.com/pixel/conv/',
+ },
+ {
+ filters: ['||vupulse.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vupulse.com',
+ },
+ {
+ filters: ['||wumii.com/images/pixel.png'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://static.wumii.com/images/pixel.png',
+ },
+ {
+ filters: ['||vesti.ru/counter/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pics.vesti.ru/counter/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.informer.com',
+ type: 'script',
+ url: 'https://www.informer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||analytics.bhaskar.com^', '/wisdom_tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.bhaskar.com/wisdom_tracking.js',
+ },
+ {
+ filters: ['.org/ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://subscriptions.sciencemag.org/ad-passback',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.informer.com',
+ type: 'script',
+ url: 'https://www.informer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||hits.informer.com^', '/log.php?id'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://hits.informer.com/log.php?id=368&r=40083',
+ },
+ {
+ filters: ['||adtech.de^$third-party', '||adtech.de^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://aka-cdn-ns.adtech.de',
+ },
+ {
+ filters: ['||jsonip.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsonip.com',
+ },
+ {
+ filters: ['||ultimedia.com^*/visibilityStat.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ultimedia.com/js/common/visibilityStat.js',
+ },
+ {
+ filters: [';manifest-analytics.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://referentiel.nouvelobs.com/js/nobs;manifest-analytics.js',
+ },
+ {
+ filters: ['||plug.it^*/track_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.plug.it/iplug/js/lib/iol/track_content',
+ },
+ {
+ filters: ['_BannerAd_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.medscapestatic.com/pi/mktg/Mobile_BannerAd_NEWS.jpg',
+ },
+ {
+ filters: ['/scripts/xiti/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://referentiel.nouvelobs.com/scripts/xiti/',
+ },
+ {
+ filters: ['||log.webnovel.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://log.webnovel.com',
+ },
+ {
+ filters: ['_ad_label.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.medscapestatic.com/pi/mobile/mobile_ad_label.png',
+ },
+ {
+ filters: ['/vptrack_'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.medscape.com/public/vptrack_iframe.html',
+ },
+ {
+ check: true,
+ filters: ['_advertising/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://advertising.sciencemag.org/wp-content/themes/aaas_advertising/',
+ },
+ {
+ filters: ['||generaltracking.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.generaltracking.de',
+ },
+ {
+ filters: ['||analytics.cocolog-nifty.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://analytics.cocolog-nifty.com',
+ },
+ {
+ filters: ['/scripts/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.medscapestatic.com/pi/scripts/ads/',
+ },
+ {
+ filters: ['/adverts.$domain=~adverts.ie|~adverts.org.ua'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dist.timeout.com/dist/js/adverts.2a127685.js',
+ },
+ {
+ filters: ['||hit-counts.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.hit-counts.com',
+ },
+ {
+ filters: ['_advertisement_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.medscapestatic.com/pi/global/text/text_advertisement_top.gif',
+ },
+ {
+ filters: ['/img/ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.torrentmap.com/img/ad.png',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.usc.edu',
+ type: 'script',
+ url: 'https://www.usc.edu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||d81mfvml8p5ml.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d81mfvml8p5ml.cloudfront.net',
+ },
+ {
+ filters: ['||projectagora.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://projectagora.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://change.usc.edu',
+ type: 'script',
+ url: 'https://change.usc.edu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||mejortorrent.*/bannner'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.mejortorrent.org/bannner_header.php',
+ },
+ {
+ filters: ['||tracker.tiu.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.tiu.ru',
+ },
+ {
+ filters: ['/adweb.$domain=~adweb.clarkson.edu|~adweb.com.au|~adweb.cz'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adweb.nuggad.net',
+ },
+ {
+ filters: ['@@||static.reembed.com^$third-party,script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.reembed.com',
+ },
+ {
+ filters: ['||mzbcdn.net^', '||mzbcdn.net/mngr/mtm.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn01.mzbcdn.net/mngr/mtm.js',
+ },
+ {
+ filters: ['||instinctiveads.com^$third-party', '||instinctiveads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://load.instinctiveads.com',
+ },
+ {
+ filters: ['/LocalAd_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.sears.com/images/LocalAd_Image_Small.png',
+ },
+ {
+ filters: ['||mezzobit.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.mezzobit.com',
+ },
+ {
+ filters: ['@@||agar.io^*ad$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://agar.io/bundle_end.9b88ad5628c11aae3854.js',
+ },
+ {
+ filters: ['/ad-label-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.medscapestatic.com/pi/scripts/ads/dfp/ad-label-switch.js',
+ },
+ {
+ filters: ['||localytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web.localytics.com',
+ },
+ {
+ filters: ['/ad-renderer.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.serviporno.com/assets/js/ad-renderer.3213fd841bf702b8.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||baidu.com/js/m.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cbjs.baidu.com/js/m.js',
+ },
+ {
+ filters: ['||preferredain.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.preferredain.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||pornglee.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://i.pornglee.com',
+ },
+ {
+ filters: ['-prebid-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://vatsana-prebid-d.openx.net',
+ },
+ {
+ filters: ['||agilecrm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pdjobs.agilecrm.com',
+ },
+ {
+ filters: [
+ '@@||facebook.net^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'http://www.anime-sugoi.com',
+ type: 'script',
+ url: 'https://connect.facebook.net',
+ },
+ {
+ filters: ['||kinoprofi.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.kinoprofi.org',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.usc.edu',
+ type: 'script',
+ url: 'https://www.usc.edu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||lmcdn.ru^*/statistics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.lmcdn.ru/st/m/ru/18.10.23.m.1/js/statistics.js',
+ },
+ {
+ filters: ['||pxi.pub^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://client.a.pxi.pub',
+ },
+ {
+ filters: ['||erate.co.il^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://rep.erate.co.il',
+ },
+ {
+ filters: ['||metrigo.com^$third-party,domain=~metrigo.de'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb.metrigo.com',
+ },
+ {
+ filters: ['||lamoda.ru/z?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.lamoda.ru/z?',
+ },
+ {
+ filters: ['||adverticum.net^$third-party', '||adverticum.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.adverticum.net',
+ },
+ {
+ filters: ['||trackcmp.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trackcmp.net',
+ },
+ {
+ filters: ['/webAnalytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.net-a-porter.com/webanalytics/',
+ },
+ {
+ filters: ['/googleanalytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.eluniverso.com/sites/default/files/googleanalytics/',
+ },
+ {
+ filters: ['/accip_script.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.ap-south-1.amazonaws.com/accio-lib-ind/accip_script.js',
+ },
+ {
+ filters: ['/domanalytics.', '||accio.ai^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://domanalytics.accio.ai',
+ },
+ {
+ filters: ['||xtgreat.com^$third-party', '_ad_serving.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://js.xtgreat.com/mz_ad_serving.js',
+ },
+ {
+ filters: ['||monu.delivery^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://monu.delivery',
+ },
+ {
+ filters: ['/app-measurement?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s1.kbb.com/static/js/global/app-measurement?',
+ },
+ {
+ filters: ['/global/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.pchome.net/global/ad/',
+ },
+ {
+ filters: ['||esm1.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pixall.esm1.net',
+ },
+ {
+ filters: ['||pages-stats.rbl.ms^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pages-stats.rbl.ms',
+ },
+ {
+ filters: ['||xozilla.com/js/pu.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.xozilla.com/js/pu.js',
+ },
+ {
+ filters: ['||xozilla.com/js/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.xozilla.com/js/analytics.js',
+ },
+ {
+ filters: ['/eventtracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hackerrank.com/wp-content/themes/hackerrank/js/eventtracking.js',
+ },
+ {
+ filters: ['||xozilla.com/agent.php?spot='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.xozilla.com/agent.php?spot=25880',
+ },
+ {
+ filters: ['|http://$image,script,third-party,domain=streamcloud.eu'],
+ sourceUrl: 'http://streamcloud.eu',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['|https://$image,script,third-party,domain=streamcloud.eu'],
+ sourceUrl: 'http://streamcloud.eu',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['.com^$image,third-party,domain=streamcloud.eu'],
+ sourceUrl: 'http://streamcloud.eu',
+ type: 'image',
+ url: 'http://www.google-analytics.com',
+ },
+ {
+ filters: ['/dot.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.kbb.com/dot.gif?',
+ },
+ {
+ filters: ['||xozilla.com/62ca745f.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.xozilla.com/62ca745f.js',
+ },
+ {
+ filters: ['||navyfederal.org/js/s_code.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.navyfederal.org/js/s_code.js',
+ },
+ {
+ filters: ['/advscript.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.shahrekhabar.com/advscript.jsp',
+ },
+ {
+ filters: ['||4wnet.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://feed.4wnet.com',
+ },
+ {
+ filters: ['/impression.ashx'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://feed.4wnet.com/impression.ashx',
+ },
+ {
+ filters: ['/nativead.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.clickyab.com/js/nativead.js',
+ },
+ {
+ filters: ['=300x250/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sasinator.realestate.com.au/rea/hserver/FCID=466330/size=300x250/',
+ },
+ {
+ filters: ['||fresh8.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fresh8.co',
+ },
+ {
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=skidrowreloaded.com'],
+ sourceUrl: 'https://www.skidrowreloaded.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||c1.popads.net/pop.js$domain=skidrowreloaded.com'],
+ sourceUrl: 'https://www.skidrowreloaded.com',
+ type: 'script',
+ url: 'https://c1.popads.net/pop.js',
+ },
+ {
+ filters: ['/advertising_'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://www.higherperspectives.com/st/Advertising_Commitment',
+ },
+ {
+ filters: ['||tracking.skyword.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.skyword.com',
+ },
+ {
+ filters: ['||bongacams.com/promo.php', '||tools.bongacams.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tools.bongacams.com/promo.php',
+ },
+ {
+ filters: ['/ips-invite.iperceptions.com/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ips-invite.iperceptions.com/',
+ },
+ {
+ filters: ['/tracker.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.skyword.com/tracker.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.skidrowreloaded.com',
+ type: 'script',
+ url: 'https://www.skidrowreloaded.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||korrelate.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a01.korrelate.net',
+ },
+ {
+ filters: ['||dotandad.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tiscali.js.ad.dotandad.com',
+ },
+ {
+ filters: ['-ad-300x600-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn1.tmbi.com/CM/images/TOH/TOH-INT-1809-LeCreuset-AD-300x600-v2.jpg',
+ },
+ {
+ filters: ['/nuggad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://optimized-by.4wnetwork.com/js/nuggad.js',
+ },
+ {
+ filters: ['/publicidades/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.gecpublicidad.com/publicidades/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.skidrowreloaded.com',
+ type: 'script',
+ url: 'https://www.skidrowreloaded.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/files/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://lastsecond.ir/uploads/files/ads/',
+ },
+ {
+ filters: ['/analytics/events'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.indiegogo.com/analytics/events',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.skidrowreloaded.com',
+ type: 'script',
+ url: 'https://www.skidrowreloaded.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||trafficjunky.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.trafficjunky.com',
+ },
+ {
+ filters: ['/metrics/stat.', '/stat.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.hugedomains.com/Metrics/stat.aspx?',
+ },
+ {
+ filters: ['/jsads-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://feed.4wnet.com/resources/scripts/jsAds-1.4.min.js',
+ },
+ {
+ filters: ['||api.wipmania.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://api.wipmania.com',
+ },
+ {
+ filters: ['||3movs.com/*.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.3movs.com/ai/s/s/supc.php',
+ },
+ {
+ filters: ['/tagman/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://edgecastcdn.net/0004FA/tagman/',
+ },
+ {
+ filters: ['||mathads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://creative.mathads.com',
+ },
+ {
+ filters: ['/300-250.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://arga-mag.com/file/img/2017/11/300-250.gif',
+ },
+ {
+ filters: ['-160-600.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://arga-mag.com/file/img/2018/10/zima-160-600.gif',
+ },
+ {
+ filters: ['||dtxngr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tags.dtxngr.com',
+ },
+ {
+ filters: ['||analytics.greensender.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.greensender.pl',
+ },
+ {
+ filters: ['||clickmatic.pl^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.clickmatic.pl',
+ },
+ {
+ filters: ['||pmm.people.com.cn^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pmm.people.com.cn',
+ },
+ {
+ filters: ['/webdig_test.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tools.people.com.cn/css/2010tianrun/webdig_test.js',
+ },
+ {
+ filters: ['/PromosAds/*', '/ads-intros.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://listindiario.com/Themes/Default/Scripts/PromosAds/ads-intros.js',
+ },
+ {
+ filters: ['/exads-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.myvidster.com/api/exads-adblock-2.8',
+ },
+ {
+ filters: ['||audiens.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://developer.audiens.com',
+ },
+ {
+ filters: ['/cdn-cgi/ping?$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://amp.cloudflare.com/cdn-cgi/ping?',
+ },
+ {
+ filters: ['/ad.aspx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://media.lsbetmedia.com/ad.aspx?',
+ },
+ {
+ filters: ['||green-red.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://content.green-red.com',
+ },
+ {
+ filters: ['||sumome.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://load.sumome.com',
+ },
+ {
+ filters: ['/imgcount.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.bangbrosonline.com/ct/imgcount.php?',
+ },
+ {
+ filters: ['/c.gif?id='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://counter.people.cn:8000/c.gif?id=30358050',
+ },
+ {
+ filters: ['||linuxmint.com/img/sponsor/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.linuxmint.com/img/sponsor/',
+ },
+ {
+ filters: ['||priceline.com^*/impression/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.priceline.com/svcs/eng/gblsvcs/seti/batch/impression/',
+ },
+ {
+ filters: ['||monstercrawler.com/__kl.gif', '.com/__kl.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.monstercrawler.com/__kl.gif?',
+ },
+ {
+ filters: ['||adligature.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adligature.com',
+ },
+ {
+ filters: ['||jiayuan.com^*/pv.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://images.jiayuan.com/w4/global/j/pv.js',
+ },
+ {
+ filters: ['||gowatchit.com/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-assets.gowatchit.com/analytics.js',
+ },
+ {
+ filters: ['/house_ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://studiosol-a.akamaihd.net/gcs/studiosol-marketing/2018/house_ads/',
+ },
+ {
+ filters: ['||priceline.com/svcs/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.priceline.com/svcs/',
+ },
+ {
+ filters: ['||gowatchit.com^*/tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gowatchit.com/api/v3/tracking/',
+ },
+ {
+ filters: ['||tagcommander.com/*/tc_$script,important,domain=n-tv.de'],
+ sourceUrl: 'https://mobil.n-tv.de',
+ type: 'script',
+ url: 'https://cdn.tagcommander.com/3957/tc_NTV_24.js',
+ },
+ {
+ filters: ['/any/*.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://59.151.18.13/any/u.gif?',
+ },
+ {
+ filters: [
+ '@@||nuggad.net/rc?nuggn=$script,domain=areagames.de|dshini.net|frustfrei-lernen.de|juice.de|n-tv.de|schwaebische.de|sky.de|studis-online.de|vox.de',
+ ],
+ sourceUrl: 'https://mobil.n-tv.de',
+ type: 'script',
+ url: 'https://ip-s.nuggad.net/rc?nuggn=2059506885&nuggsid=1083198990',
+ },
+ {
+ filters: ['||montmti.top^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.montmti.top',
+ },
+ {
+ filters: ['||dumedia.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.dumedia.ru',
+ },
+ {
+ filters: ['||fc.vodafone.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fc.vodafone.de',
+ },
+ {
+ filters: ['||waframedia20.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://waframedia20.com',
+ },
+ {
+ filters: ['||mdn2015x3.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://t.mdn2015x3.com',
+ },
+ {
+ filters: ['/adsrv/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.ltassrv.com/Adsrv/',
+ },
+ {
+ filters: ['||bluetoad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://bluetoad.com',
+ },
+ {
+ filters: ['||aprtx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aprtx.com',
+ },
+ {
+ filters: ['||rarbgmirror.xyz^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.xyz',
+ type: 'script',
+ url: 'http://www.rarbgmirror.xyz',
+ },
+ {
+ filters: ['||rarbgmirror.xyz^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.xyz',
+ type: 'script',
+ url: 'http://www.rarbgmirror.xyz',
+ },
+ {
+ filters: ['||rarbgmirror.xyz^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.xyz',
+ type: 'script',
+ url: 'http://www.rarbgmirror.xyz',
+ },
+ {
+ check: true,
+ filters: ['/impressions?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://a.intentmedia.net/adServer/impressions?',
+ },
+ {
+ check: true,
+ filters: ['/data/collect/*$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.priceline.com/svcs/mktgsvcs/data/collect/',
+ },
+ {
+ filters: ['||priceline.com^*/beaconHandler?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.priceline.com/svcs/glc/beaconHandler?',
+ },
+ {
+ filters: ['||adswizz.com/adswizz/js/SynchroClient*.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery-cdn-cf.adswizz.com/adswizz/js/SynchroClient2.js',
+ },
+ {
+ filters: ['||206ads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.206ads.com',
+ },
+ {
+ filters: ['||d10lpsik1i8c69.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d10lpsik1i8c69.cloudfront.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://blog.linuxmint.com',
+ type: 'script',
+ url: 'https://blog.linuxmint.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||static.plista.com^*/resized/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.plista.com/image/resized/',
+ },
+ {
+ filters: ['/eroadvertising.', '||eroadvertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://eroadvertising.com',
+ },
+ {
+ filters: ['||developermedia.com^$third-party', '||developermedia.com/a.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cdn2.developermedia.com/a.min.js',
+ },
+ {
+ filters: ['||bzclk.baidu.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://bzclk.baidu.com',
+ },
+ {
+ filters: ['||trackedlink.net^', '||trackedlink.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://r1-t.trackedlink.net',
+ },
+ {
+ filters: ['||getdrip.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.getdrip.com',
+ },
+ {
+ filters: ['||aklamio.com/ovlbtntrk?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.aklamio.com/ovlbtntrk?',
+ },
+ {
+ filters: ['||viralize.tv/vast/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads.viralize.tv/vast/',
+ },
+ {
+ filters: ['||awseukpi.whisbi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://awseukpi.whisbi.com',
+ },
+ {
+ filters: ['||metricfast.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://metricfast.com',
+ },
+ {
+ filters: ['||vertismedia.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.vertismedia.co.uk',
+ },
+ {
+ filters: ['/adserver01.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver01.vertismedia.co.uk',
+ },
+ {
+ filters: ['||amadagasca.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://amadagasca.com',
+ },
+ {
+ filters: ['||tdmd.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn2.tdmd.us',
+ },
+ {
+ filters: ['||zwaar.org^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://code.zwaar.org',
+ },
+ {
+ filters: ['||events.jotform.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://events.jotform.com',
+ },
+ {
+ filters: ['||adnet.lt^$third-party', '/adnetmedia.$domain=~adnetmedia.hu'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://keytarget.adnet.lt/js/transmitter/public/stable/static/adnetmedia.js',
+ },
+ {
+ filters: ['/ad_script.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.tudogostoso.com.br/api/ad_script.js',
+ },
+ {
+ filters: ['||lockerdomecdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn1.lockerdomecdn.com',
+ },
+ {
+ filters: ['/cnads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://cdn.cdn000.club/cnads.js',
+ },
+ {
+ filters: ['||linguee.fr/white_pixel.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.linguee.fr/white_pixel.gif',
+ },
+ {
+ filters: ['/namediaad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.linguee.fr/deutsch-englisch/javascript/naMediaAd.js',
+ },
+ {
+ filters: ['/yad_sortab_cetlog.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.jalan.net/js/yad_sortab_cetlog.js',
+ },
+ {
+ filters: ['||ad.theepochtimes.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.theepochtimes.com',
+ },
+ {
+ filters: ['||tgknt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.tgknt.com',
+ },
+ {
+ filters: ['||ibeat.indiatimes.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ibeat.indiatimes.com',
+ },
+ {
+ filters: ['/ads.cms'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.gadgetsnow.com/ads.cms',
+ },
+ {
+ filters: ['||iogous.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tk.iogous.com',
+ },
+ {
+ filters: ['@@||reembed.com/player/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.reembed.com/player/',
+ },
+ {
+ filters: ['/reklam/*$domain=~reklam.com.tr'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://foto.haberler.com/reklam/',
+ },
+ {
+ filters: ['||notifyvisitors.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.notifyvisitors.com',
+ },
+ {
+ filters: ['/flowplayer.ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://player.ynet.co.il/fp727/flowplayer.ads.114.ynet.js',
+ },
+ {
+ filters: ['/web-analytics.', '||engagio.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web-analytics.engagio.com',
+ },
+ {
+ filters: ['||azalead.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://b2btagmgr.azalead.com',
+ },
+ {
+ filters: ['/logging-code.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://investments.hsbc.co.uk/js/logging-code.js',
+ },
+ {
+ filters: ['/get_ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adributor.tv/nativevideo/get_ads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://faradars.org',
+ type: 'script',
+ url: 'https://faradars.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/delivery/fc.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads2.adributor.tv/www/delivery/fc.php',
+ },
+ {
+ filters: ['@@||thekitchn.com/assets/comscore.streaming.min.js$script,first-party'],
+ sourceUrl: 'https://www.thekitchn.com',
+ type: 'script',
+ url: 'https://www.thekitchn.com/assets/comscore.streaming.min.js',
+ },
+ {
+ filters: ['/admob.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.somplo.com/prod/admob.js',
+ },
+ {
+ filters: ['||udmserve.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://udmserve.net',
+ },
+ {
+ filters: ['/api/stat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web-analytics.engagio.com/api/stat?',
+ },
+ {
+ filters: ['/ga-track.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://shop.gadgetsnow.com/mobile/js/ga-track.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://faradars.org',
+ type: 'script',
+ url: 'https://faradars.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.laleggepertutti.it',
+ type: 'script',
+ url: 'https://www.laleggepertutti.it/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||avmws.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.avmws.com',
+ },
+ {
+ filters: ['@@||cdn.shopify.com^*/files/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.shopify.com/s/files/',
+ },
+ {
+ filters: ['||adrizer.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://run.adrizer.com',
+ },
+ {
+ filters: ['||wolfram.com/common/javascript/wal/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.wolfram.com/common/javascript/wal/',
+ },
+ {
+ filters: ['||mysocialpixel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fbm.mysocialpixel.com',
+ },
+ {
+ filters: ['||alipromo.com^$third-party', '||alipromo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://alipromo.com',
+ },
+ {
+ filters: ['||cracked.com/tracking/', '/tracking/beacon/?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.cracked.com/tracking/beacon/?',
+ },
+ {
+ filters: ['/tracking/pixel/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.cracked.com/tracking/pixel/',
+ },
+ {
+ filters: ['||zulily.com/action/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://l.zulily.com/action/track?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://faradars.org',
+ type: 'script',
+ url: 'https://faradars.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||jumptap.com^$third-party', '||jumptap.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.jumptap.com',
+ },
+ {
+ filters: ['||p.yotpo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.yotpo.com',
+ },
+ {
+ filters: ['||refersion.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.refersion.com',
+ },
+ {
+ filters: ['/adsense-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.adda247.com/adsense-new.html',
+ },
+ {
+ filters: ['||hitcpm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.hitcpm.com',
+ },
+ {
+ filters: ['/page-view.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://jtp.expressen.se/notify/page-view.gif?',
+ },
+ {
+ filters: ['/img/ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.micstatic.com/mt/img/ad-slider@2x.png',
+ },
+ {
+ filters: ['||wal.wolfram.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wal.wolfram.com',
+ },
+ {
+ filters: ['||richmetrics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sync.richmetrics.com',
+ },
+ {
+ filters: ['||rampanel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://inviso.rampanel.com',
+ },
+ {
+ filters: ['/ads/src/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.allkpop.com/ads/src/',
+ },
+ {
+ filters: ['||mmaaxx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.mmaaxx.com',
+ },
+ {
+ filters: ['||spylog.com^', '||spylog.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://u1136.39.spylog.com',
+ },
+ {
+ filters: ['||dtiserv2.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://ad2widget.dtiserv2.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://faradars.org',
+ type: 'script',
+ url: 'https://faradars.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||rtb-media.me^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.rtb-media.me',
+ },
+ {
+ check: true,
+ filters: ['@@||demandbase.com^*/ip.json?$xmlhttprequest,domain=vmware.com'],
+ sourceUrl: 'https://www.vmware.com',
+ type: 'xhr',
+ url: 'https://api.demandbase.com/api/v2/ip.json?',
+ },
+ {
+ filters: ['/kissmetrics.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.wolfram.com/common/javascript/kissmetrics.js',
+ },
+ {
+ filters: ['/ads/ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://fish.kulichki.net/wp-content/themes/fishscraze/images/ads/ad.jpg',
+ },
+ {
+ filters: ['||goodadvert.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://files.goodadvert.ru',
+ },
+ {
+ filters: ['||rotabanner.kulichki.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://rotabanner.kulichki.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://faradars.org',
+ type: 'script',
+ url: 'https://faradars.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adriver_$~object-subrequest'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.adriver.ru/wp-content/themes/adriver_2018-04-24_18-33_35',
+ },
+ {
+ filters: ['||tracking2.channeladvisor.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking2.channeladvisor.com',
+ },
+ {
+ filters: ['||bam-x.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://api.bam-x.com',
+ },
+ {
+ filters: ['||anyporn.com^$image,script,subdocument,xmlhttprequest', '||anyporn.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://anyporn.com',
+ },
+ {
+ filters: [
+ '@@||anyporn.com*/images/$image,first-party,domain=anyporn.com',
+ '||anyporn.com^$image',
+ ],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com/v4_js/main.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://anyporn.com/v4_js/main.min.js',
+ },
+ {
+ filters: ['@@||anyporn.com/js/videopreview.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://anyporn.com/js/videopreview.js',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['||top.list.ru^', '||list.ru/counter?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://top.list.ru/counter?',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['/main_ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://inres.uspech.sk/js/main_ad_04c_sme.js',
+ },
+ {
+ filters: ['@@||googletagmanager.com/gtm.js$script,domain=cpap.com|mediamarkt.de|saturn.de'],
+ sourceUrl: 'https://www.mediamarkt.de',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: [
+ '@@||google-analytics.com/analytics.js$script,domain=cpap.com|mediamarkt.de|saturn.de',
+ ],
+ sourceUrl: 'https://www.mediamarkt.de',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['||d-markets.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d-markets.net',
+ },
+ {
+ filters: ['/sr.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sc.sc-analytics.jp/sr.gif?',
+ },
+ {
+ filters: ['@@||anyporn.com/player/fluidplayer/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://anyporn.com/player/fluidplayer/',
+ },
+ {
+ filters: ['@@||anyporn.com/captcha/comments/?$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://anyporn.com/captcha/comments/?',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['/googleanalyticsevents?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://astatic.ccmbg.com/fc/js/googleanalyticsevents?',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com/videos_screenshots/$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.anyporn.com/videos_screenshots/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/player/fluidplayer/images/',
+ },
+ {
+ filters: ['/adbanner2/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.cityheaven.net/img/adbanner2/',
+ },
+ {
+ filters: ['||etargetnet.com^$third-party', '||etargetnet.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sk.search.etargetnet.com',
+ },
+ {
+ filters: ['||cetlog.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://prd-beacon.cetlog.jp',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/player/fluidplayer/images/',
+ },
+ {
+ filters: ['||advg.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ds.advg.jp',
+ },
+ {
+ filters: [
+ '/google-adwords',
+ '-adwords.$domain=~consultant-adwords.com|~consultant-adwords.fr|~freelance-adwords.com|~freelance-adwords.fr',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.virginmedia.com/etc/designs/onecms/clientlibs/google-adwords.js',
+ },
+ {
+ filters: ['/clientlibs/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.virginmedia.com/etc/designs/onecms/clientlibs/analytics.js',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/images/',
+ },
+ {
+ filters: ['||facebook.com/offsite_event.php$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/offsite_event.php',
+ },
+ {
+ filters: ['@@||anyporn.com*/images/$image,first-party,domain=anyporn.com'],
+ sourceUrl: 'https://anyporn.com',
+ type: 'image',
+ url: 'https://anyporn.com/player/fluidplayer/images/',
+ },
+ {
+ filters: ['||alicdn.com/js/aplus_*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://u.alicdn.com/js/aplus_v2.js',
+ },
+ {
+ filters: ['||toplist.sk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://toplist.sk',
+ },
+ {
+ filters: ['||gynax.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://gynax.com',
+ },
+ {
+ filters: ['||rotaban.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s1.rotaban.ru',
+ },
+ {
+ filters: ['||ampush.io^$third-party', '@@||ampush.io/js/tracker.js$domain=tunein.com'],
+ sourceUrl: 'https://tunein.com',
+ type: 'script',
+ url: 'https://files.ampush.io/js/tracker.js',
+ },
+ {
+ filters: ['||coletor.terra.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://coletor.terra.com',
+ },
+ {
+ filters: ['/libs/tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.karte.io/libs/tracker.js',
+ },
+ {
+ filters: ['||radiotime.com/reports/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://reports.radiotime.com/reports/',
+ },
+ {
+ filters: ['||tunein.com^*/log/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tunein.com/api/v1/log/',
+ },
+ {
+ filters: ['||radiotime.com/Report.ashx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://opml.radiotime.com/Report.ashx?',
+ },
+ {
+ filters: ['/cdn.ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ad.maist.jp',
+ },
+ {
+ filters: ['/images/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://teja8.kuikr.com/images/ads.png',
+ },
+ {
+ filters: ['/adv.css?'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://csskor.ill.in.ua/css/adv.css?',
+ },
+ {
+ filters: ['||static.criteo.net/design^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.criteo.net/design',
+ },
+ {
+ filters: ['-stat/collect/', '_artcl_log/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://service.sme.sk/corporate-stat/collect/artemis_artcl_log/',
+ },
+ {
+ filters: ['||adikteev.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api-adserver.adikteev.com',
+ },
+ {
+ filters: ['||email-reflex.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://email-reflex.com',
+ },
+ {
+ filters: ['||calotag.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://calotag.com',
+ },
+ {
+ filters: ['/post-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://teja10.kuikr.com/public/images/dist/post-ad-btn.jpg',
+ },
+ {
+ filters: ['||site24x7rum.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.site24x7rum.com',
+ },
+ {
+ filters: ['/adframe728homebh.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://biblemenus.com/adframe728homebh.htm',
+ },
+ {
+ filters: ['/modules/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rxs.answcdn.com/modules/ad/',
+ },
+ {
+ filters: ['||supplyframe.com^$third-party', '||ads.supplyframe.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.supplyframe.com',
+ },
+ {
+ filters: ['||hits.puls.lv^', '||puls.lv^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hits.puls.lv',
+ },
+ {
+ check: true,
+ filters: ['||2o7.net^$third-party', '||2o7.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://survey.112.2o7.net',
+ },
+ {
+ filters: ['/images.ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.ads.supplyframe.com',
+ },
+ {
+ filters: ['||rezync.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://live.rezync.com',
+ },
+ {
+ filters: [
+ '@@||googletagmanager.com/gtm.js$script,domain=livescience.com|space.com|topspeed.com',
+ ],
+ sourceUrl: 'https://www.space.com',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js',
+ },
+ {
+ filters: ['/common/ad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://thzu.net/static/image/common/ad_close.gif',
+ },
+ {
+ filters: ['||aff.eteachergroup.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://aff.eteachergroup.com',
+ },
+ {
+ filters: ['||boomtrain.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.boomtrain.com',
+ },
+ {
+ filters: ['/adcodes/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.cdn.fastclick.net/js/adcodes/',
+ },
+ {
+ filters: ['||gogoanimes.*/scripts/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www03.gogoanimes.tv/cdn-cgi/scripts/',
+ },
+ {
+ filters: ['@@||seekingalpha.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static3.seekingalpha.com',
+ },
+ {
+ filters: ['||mobfox.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://my.mobfox.com',
+ },
+ {
+ filters: ['||intergi.com^$third-party', '||intergi.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.intergi.com',
+ },
+ {
+ filters: ['||coherentpath.com/tracker/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.coherentpath.com/tracker/',
+ },
+ {
+ filters: ['||brcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.brcdn.com',
+ },
+ {
+ filters: ['||justuno.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.justuno.com',
+ },
+ {
+ filters: ['/tempads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.iplaysoft.com/tempads/',
+ },
+ {
+ check: true,
+ filters: [
+ '||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=kinos.to|kinox.am|kinox.io|kinox.me|kinox.nu|kinox.sg|kinox.si|kinox.sx|kinox.to|kinox.tv',
+ ],
+ sourceUrl: 'http://www.kinox.io',
+ type: 'xhr',
+ url: 'http://piguiqproxy.com',
+ },
+ {
+ filters: ['||inside-graph.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://usnm-tracker.inside-graph.com',
+ },
+ {
+ filters: ['@@||oauth.vk.com/authorize?'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://oauth.vk.com/authorize?',
+ },
+ {
+ filters: ['||bouncepilot.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.bouncepilot.com',
+ },
+ {
+ filters: ['||trigr.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.trigr.co',
+ },
+ {
+ filters: ['||tagcade.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.tagcade.com',
+ },
+ {
+ filters: ['|http://$script,third-party,domain=photobucket.com'],
+ sourceUrl: 'http://www.photobucket.com',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['|https://$script,third-party,domain=photobucket.com'],
+ sourceUrl: 'http://www.photobucket.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['_minder_tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://detwzgl8cvciv.cloudfront.net/cm_minder_tracking/',
+ },
+ {
+ filters: ['||realssp.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://nw.realssp.co.kr',
+ },
+ {
+ filters: ['||consumerreports.org^*/js/conversion.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.consumerreports.org/etc/designs/cro/resources/js/conversion.js',
+ },
+ {
+ filters: ['||freeones.com/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jscss.freeones.com/banners/',
+ },
+ {
+ filters: ['/sp/delivery/*', '/delivery/*?advplaces='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.freeones.com/sp/delivery/js.php?advplaces=4',
+ },
+ {
+ filters: ['/728-90-'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://streamcomplet.me/cadre/728-90-b.html',
+ },
+ {
+ filters: ['/160-600.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://streamcomplet.me/cadre/160-600.html',
+ },
+ {
+ filters: ['||2ch.hk^*/tracker.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://2ch.hk/makaba/templates/js/tracker.js?',
+ },
+ {
+ filters: ['@@/advertisement.js$domain=dramacafe.in|mackolik.com|sahadan.com'],
+ sourceUrl: 'http://www.mackolik.com',
+ type: 'script',
+ url: 'http://b.cdn.md/admost/advertisement.js',
+ },
+ {
+ filters: ['@@||pbsrc.com^$script,domain=photobucket.com'],
+ sourceUrl: 'http://photobucket.com',
+ type: 'script',
+ url: 'http://static2.pbsrc.com',
+ },
+ {
+ filters: ['||wisepops.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://loader.wisepops.com',
+ },
+ {
+ filters: ['@@||admost.com/adx/js/admost.js$domain=mackolik.com|sahadan.com'],
+ sourceUrl: 'http://www.mackolik.com',
+ type: 'script',
+ url: 'http://go.admost.com/adx/js/admost.js',
+ },
+ {
+ filters: ['-google-tag-manager/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s5304.pcdn.co/guides/wp-content/plugins/duracelltomi-google-tag-manager/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://photobucket.com',
+ type: 'xhr',
+ url: 'http://photobucket.com/Ad/',
+ },
+ {
+ filters: ['@@||mackolik.com^$script,domain=mackolik.com'],
+ sourceUrl: 'http://m.mackolik.com',
+ type: 'script',
+ url: 'http://m.mackolik.com',
+ },
+ {
+ filters: ['@@||pbsrc.com/navbar/$image,domain=photobucket.com'],
+ sourceUrl: 'http://photobucket.com',
+ type: 'image',
+ url: 'http://pic2.pbsrc.com/navbar/',
+ },
+ {
+ filters: ['/transparent1x1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://jobs.ucsd.edu/images/transparent1x1.png',
+ },
+ {
+ filters: ['@@||admost.com/adx/get.ashx?$script,domain=mackolik.com|sahadan.com'],
+ sourceUrl: 'http://m.mackolik.com',
+ type: 'script',
+ url: 'http://go.admost.com/adx/get.ashx?',
+ },
+ {
+ filters: ['.au/ads/'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://m.coolrom.com.au/ads/',
+ },
+ {
+ filters: ['/ad01.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad01.tmgrup.com.tr',
+ },
+ {
+ filters: ['||gamescarousel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://gamescarousel.com',
+ },
+ {
+ filters: ['||camads.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ifa.camads.net',
+ },
+ {
+ filters: ['||beringmedia.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static-segments.beringmedia.com',
+ },
+ {
+ filters: ['||gamesrevenue.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://px.gamesrevenue.com',
+ },
+ {
+ filters: ['.com/adv_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.traffichunt.com/adv_ret',
+ },
+ {
+ filters: ['||umekana.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://umekana.ru',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://print.photobucket.com',
+ type: 'xhr',
+ url: 'https://print.photobucket.com/Ad/',
+ },
+ {
+ filters: ['/publicidad.$~object-subrequest,~stylesheet'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.publinews.gt/assets/js/publicidad.js',
+ },
+ {
+ filters: ['/new/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://assets.game8.jp/assets/new/ad/',
+ },
+ {
+ filters: ['||analytics.aweber.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.aweber.com',
+ },
+ {
+ filters: ['||tmgrup.com.tr/Statistic/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://st.tmgrup.com.tr/Statistic/',
+ },
+ {
+ filters: ['||stylight.net/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats-bq.stylight.net/track/',
+ },
+ {
+ filters: ['||idealmedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsc.idealmedia.com',
+ },
+ {
+ filters: ['||adformdsp.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://server.adformdsp.net',
+ },
+ {
+ filters: ['||google-analytics.com/analytics.js$script,important,domain=allmusic.com'],
+ sourceUrl: 'https://www.allmusic.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||scorecardresearch.com/beacon.js$script,important,domain=allmusic.com'],
+ sourceUrl: 'https://www.allmusic.com',
+ type: 'script',
+ url: 'https://sb.scorecardresearch.com/beacon.js',
+ },
+ {
+ filters: [
+ '||asset.pagefair.net/ads.min.js$script,important,redirect=noopjs,domain=allmusic.com',
+ '@@||pagefair.net/ads.min.js$script,domain=allmusic.com',
+ ],
+ sourceUrl: 'https://www.allmusic.com',
+ type: 'script',
+ url: 'https://asset.pagefair.net/ads.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||asset.pagefair.com/adimages/adsense.js$script,redirect=noopjs,domain=allmusic.com',
+ ],
+ sourceUrl: 'https://www.allmusic.com',
+ type: 'script',
+ url: 'https://asset.pagefair.com/adimages/adsense.js',
+ },
+ {
+ filters: ['||camvideos.tv/tpd.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.camvideos.tv/tpd.png',
+ },
+ {
+ filters: ['.com/adv/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.inoreader.com/adv/',
+ },
+ {
+ filters: ['||doug1izaerwt3.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://doug1izaerwt3.cloudfront.net',
+ },
+ {
+ filters: ['||admeira.ch^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://da.admeira.ch',
+ },
+ {
+ filters: ['/common/ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.kundelik.kz/assets/scripts//modules/common/ad.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blog.inoreader.com',
+ type: 'script',
+ url: 'https://blog.inoreader.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ad-engine.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.iax.optimix.asia//js/core/ad-engine.js',
+ },
+ {
+ filters: ['||zero.kz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.zero.kz',
+ },
+ {
+ filters: [
+ '@@||googlesyndication.com/pagead/osd.js$domain=allmusic.com|hulkusc.com|sc2casts.com',
+ ],
+ sourceUrl: 'https://www.allmusic.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/osd.js',
+ },
+ {
+ filters: ['/persadpub/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.swisscom.ch/persadpub/',
+ },
+ {
+ filters: ['||wemfbox.ch^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://blue-ssl.wemfbox.ch',
+ },
+ {
+ filters: ['||rnengage.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rnengage.com',
+ },
+ {
+ filters: ['||propellerclick.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://native.propellerclick.com',
+ },
+ {
+ filters: ['/ad_slots.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.realclearpolitics.com/feed/ad_slots.jsonp',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://colorlib.com',
+ type: 'script',
+ url: 'https://cdn.colorlib.com/wp/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/doubleclick.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.realclearpolitics.com/asset/section/doubleclick.js',
+ },
+ {
+ filters: ['||smallseotools.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.smallseotools.com',
+ },
+ {
+ filters: ['/tracking.ashx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tracking.vietnamnetad.vn/Dout/tracking.ashx?',
+ },
+ {
+ filters: ['||smallseotools.com/js/bioep.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smallseotools.com/js/bioep.js',
+ },
+ {
+ filters: ['/imgs/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://smallseotools.com/imgs/ads/',
+ },
+ {
+ filters: ['||smallseotools.com/images/$image,domain=smallseotools.com'],
+ sourceUrl: 'https://smallseotools.com',
+ type: 'image',
+ url: 'https://smallseotools.com/images/',
+ },
+ {
+ filters: ['||berush.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.berush.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://colorlib.com',
+ type: 'script',
+ url: 'https://cdn.colorlib.com/wp/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||brand.ad^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.brand.ad',
+ },
+ {
+ filters: ['/CookieManager-bdl?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.trademe.co.nz/Javascript/CookieManager-bdl?',
+ },
+ {
+ filters: ['||adalyser.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c5.adalyser.com',
+ },
+ {
+ filters: ['/adhandlers-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.trademe.co.nz/JavaScript/AdHandlers-bdl',
+ },
+ {
+ filters: ['||netdna-ssl.com/images/banner-$domain=colorlib.com'],
+ sourceUrl: 'https://colorlib.com',
+ type: 'image',
+ url: 'https://kaliumthemecom-laborator.netdna-ssl.com/images/banner-colorlib.png',
+ },
+ {
+ filters: ['||beacon.aimtell.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://beacon.aimtell.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://colorlib.com',
+ type: 'script',
+ url: 'https://cdn.colorlib.com/wp/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/google_tag.', '/google_tag/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.irs.gov/pub/google_tag/google_tag.script.js',
+ },
+ {
+ filters: ['/AutoTracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.irs.gov/static_assets/js/reporting/autotracker.js',
+ },
+ {
+ filters: ['||livelib.ru/service/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.livelib.ru/service/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://colorlib.com',
+ type: 'script',
+ url: 'https://cdn.colorlib.com/wp/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||sf14g.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.sf14g.com',
+ },
+ {
+ filters: ['||marsflag.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://c.marsflag.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/clickcount.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.1111.com.tw/includesU/clickCount.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||montblanc.rambler.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://montblanc.rambler.ru',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||rcgi.video.qq.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://rcgi.video.qq.com',
+ },
+ {
+ filters: ['_adbanner.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.1111.com.tw/includes_xml/asp/mobile_index_adbanner.asp',
+ },
+ {
+ filters: ['_adbanner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.1111.com.tw/includes_xml/asp/mobile_index_adbanner_b.asp',
+ },
+ {
+ filters: ['/ads/smi24-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://regnum.ru/assets/js/ads/smi24-info.js',
+ },
+ {
+ filters: ['||amazonaws.com/analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/analytics.oneplus.net',
+ },
+ {
+ filters: ['/img/ad_$domain=~rakuten.co.jp'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://en.freedownloadmanager.org/img/ad_strip_noline.png',
+ },
+ {
+ filters: ['||btrace.video.qq.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://btrace.video.qq.com',
+ },
+ {
+ filters: ['||dps-reach.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://p.t.dps-reach.com',
+ },
+ {
+ filters: ['||dwin2.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dwin2.com',
+ },
+ {
+ filters: ['||avantlink.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.avantlink.com',
+ },
+ {
+ filters: ['/bdash_log.', '||bdash-cloud.com^$third-party', '/tracking-script/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.activity.bdash-cloud.com/tracking-script/bdash_log.js',
+ },
+ {
+ filters: ['||adrta.com^', '||adrta.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://q.adrta.com',
+ },
+ {
+ filters: ['||rmbn.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://v.rmbn.net',
+ },
+ {
+ filters: ['||photorank.me^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://data.photorank.me',
+ },
+ {
+ filters: ['||tweowhvrim.review^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.tweowhvrim.review',
+ },
+ {
+ filters: ['||coinhive.com^$third-party', '/coinhive.min.js', '||coinhive.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://coinhive.com/lib/coinhive.min.js',
+ },
+ {
+ filters: ['-advertisement.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://file12.bizrate-images.com/blip/ads-advertisement.js',
+ },
+ {
+ filters: ['||kavanga.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.kavanga.ru',
+ },
+ {
+ filters: ['||adnico.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.adnico.jp',
+ },
+ {
+ filters: ['||stats.wordpress.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://stats.wordpress.com',
+ },
+ {
+ filters: ['||ziyu.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://rranking5.ziyu.net',
+ },
+ {
+ filters: ['||fc2.com/counter.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://counter1.fc2.com/counter.php?',
+ },
+ {
+ filters: ['||d9lq0o81skkdj.cloudfront.net^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d9lq0o81skkdj.cloudfront.net',
+ },
+ {
+ check: true,
+ filters: ['||s.cxt.ms^$third-party', '||cxt.ms^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.cxt.ms',
+ },
+ {
+ check: true,
+ filters: ['||blip.bizrate.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://blip.bizrate.com',
+ },
+ {
+ filters: ['/record.do?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://stlog.d.dmkt-sp.jp/logrecord/record.do?',
+ },
+ {
+ filters: ['_adBottom_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.1111.com.tw/adbanner/zone/mobile_adbottom_597.jpg',
+ },
+ {
+ filters: ['||ec-concier.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.ec-concier.com',
+ },
+ {
+ filters: ['||brucelead.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.brucelead.com',
+ },
+ {
+ filters: ['||particizedese.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://particizedese.club',
+ },
+ {
+ filters: ['||counter.scribblelive.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://counter.scribblelive.com',
+ },
+ {
+ filters: ['/count.fcgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://recycle.zoznam.sk/count.fcgi?',
+ },
+ {
+ filters: ['||mediad2.jp^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://mediad2.jp',
+ },
+ {
+ filters: ['@@||amazonaws.com^*/ad*.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/ki.js/49207/aDT.js',
+ },
+ {
+ filters: ['/ad-api-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad-api-v01.uliza.jp',
+ },
+ {
+ filters: ['/ad/material/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://n2.hk/ad/material/',
+ },
+ {
+ filters: ['/logcounter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.vov.vn/utilities/logcounter.ashx',
+ },
+ {
+ filters: ['-banner-768.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.chewy.com/assets/img/home/halloween-dog-home-2-banner-768.jpg',
+ },
+ {
+ filters: ['.com/adx_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.nanigans.com/adx_sync.php',
+ },
+ {
+ filters: ['/scripts/log.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.price.com.hk/scripts/log.js.php',
+ },
+ {
+ filters: ['@@||ads.servebom.com/tmnhead.js$domain=livescience.com'],
+ sourceUrl: 'https://www.livescience.com',
+ type: 'script',
+ url: 'https://ads.servebom.com/tmnhead.js',
+ },
+ {
+ filters: ['@@||ads.servebom.com/tmntag.js$script,domain=livescience.com'],
+ sourceUrl: 'https://www.livescience.com',
+ type: 'script',
+ url: 'https://ads.servebom.com/tmntag.js',
+ },
+ {
+ filters: ['||analytics.mailmunch.co^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.mailmunch.co',
+ },
+ {
+ filters: ['@@||hwcdn.net/*.js?$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://f9t5n3y6.map2.ssl.hwcdn.net/require.js?',
+ },
+ {
+ filters: ['||myaudience.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mafo1.myaudience.de',
+ },
+ {
+ filters: ['/byside_webcare.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.movistarplus.es/assets/scripts/seguimiento/byside_webcare.js',
+ },
+ {
+ filters: ['||wtp101.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.wtp101.com',
+ },
+ {
+ filters: ['||webcare.byside.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://webcare.byside.com',
+ },
+ {
+ filters: ['@@||server.cpmstar.com/view.aspx?poolid=$domain=newgrounds.com|xfire.com'],
+ sourceUrl: 'https://www.newgrounds.com',
+ type: 'script',
+ url: 'https://server.cpmstar.com/view.aspx?poolid=53&json=c_mp&mv=1&callback=uvdg1w',
+ },
+ {
+ filters: ['/pixel.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://server.cpmstar.com/pixel.aspx?',
+ },
+ {
+ filters: ['||cdn7.rocks^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn7.rocks',
+ },
+ {
+ filters: ['@@||ajax.cloudflare.com/cdn-cgi/nexp/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ajax.cloudflare.com/cdn-cgi/nexp/',
+ },
+ {
+ filters: ['||n161adserv.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://n161adserv.com',
+ },
+ {
+ filters: ['||hgbn.rocks^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://hgbn.rocks',
+ },
+ {
+ filters: ['||hghit.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://hghit.com',
+ },
+ {
+ filters: ['||stathat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.stathat.com',
+ },
+ {
+ filters: ['/300_250_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://bn.maist.jp/img/admin/gnta_sp_20180831/300_250_20180831_1.gif',
+ },
+ {
+ filters: ['||xing.com/logjam/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.xing.com/logjam/',
+ },
+ {
+ filters: ['||mp-https.info^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mp-https.info',
+ },
+ {
+ filters: ['||admo.tv^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.admo.tv',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/adnext.$domain=~adnext.pl', '||adnext.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adnext.fr',
+ },
+ {
+ filters: ['||ads.adverline.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.adverline.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/ad_banner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.russianfood.com/rt1/ad_banner_240x400.js',
+ },
+ {
+ filters: ['/informb_stat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.russianfood.com/js/informb_stat.core.js',
+ },
+ {
+ filters: ['@@||photobucket.com/albums/ad$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://i932.photobucket.com/albums/ad163',
+ },
+ {
+ filters: ['@@||api.solvemedia.com^$script,subdocument', '@@||api.solvemedia.com^$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://api.solvemedia.com',
+ },
+ {
+ filters: ['||stat.russianfood.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.russianfood.com',
+ },
+ {
+ filters: ['||marktplaats.nl/metrics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://www.marktplaats.nl/metrics/',
+ },
+ {
+ filters: ['@@||segment.io/analytics.js/*/analytics.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.segment.io/analytics.js/v1/tnh8fhmjpo/analytics.min.js',
+ },
+ {
+ filters: ['||leadzutw.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.leadzutw.com',
+ },
+ {
+ filters: ['||perfectaudience.com^', '||perfectaudience.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.perfectaudience.com',
+ },
+ {
+ filters: ['-ads.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.piliapp.com/test-ads.gif',
+ },
+ {
+ filters: ['/navbar-analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.blockchain.com/Resources/js/navbar-analytics.js',
+ },
+ {
+ filters: ['/media/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.mangafox.me/media/ad/',
+ },
+ {
+ filters: ['/iwstat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.islamweb.net/Javascript/iwstat.js',
+ },
+ {
+ filters: ['||voyages-sncf.com^*/vsca.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.analytics.voyages-sncf.com/prod/2.0/europe-bonsplans/vsca.js',
+ },
+ {
+ filters: ['/log/p.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tt1.zedo.com/log/p.gif?',
+ },
+ {
+ filters: ['||iwstats.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.iwstats.com',
+ },
+ {
+ filters: [
+ '|http*://$script,third-party,domain=mp3clan.one|stream2watch.org',
+ '|http*://$image,script,stylesheet,subdocument,third-party,xmlhttprequest,domain=stream2watch.mx|stream2watch.org',
+ ],
+ sourceUrl: 'https://www.stream2watch.org',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||stream2watch.org/sw.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.stream2watch.org/sw.js',
+ },
+ {
+ filters: [
+ '|http*://$image,other,third-party,domain=daclips.in|dropapk.com|gorillavid.in|movpod.in|mp3clan.one|powvideo.net|speedvid.net|stream2watch.org|streamplay.to|vidto.me|vidtudu.com|vodlock.co',
+ ],
+ sourceUrl: 'https://www.stream2watch.org',
+ type: 'image',
+ url: 'https://foo.com',
+ },
+ {
+ check: true,
+ filters: ['/adjs.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.dek-d.com/adserver/adjs.php',
+ },
+ {
+ check: true,
+ filters: ['/adlog.php?', '/adlog.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.dek-d.com/adserver/adlog.php?',
+ },
+ {
+ filters: ['/dfpads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://emp.bbci.co.uk/plugins/dfpAdsHTML/3.24.4/js/dfpAds.js',
+ },
+ {
+ filters: [
+ '/ad-inserter/*',
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gaadiwaadi.com',
+ type: 'script',
+ url: 'https://gaadiwaadi.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['||h-cdn.com/loader.js$script,domain=camwhores.tv'],
+ sourceUrl: 'http://www.camwhores.tv',
+ type: 'script',
+ url: 'http://player.h-cdn.com/loader.js',
+ },
+ {
+ check: true,
+ filters: [
+ '|http:$third-party,xmlhttprequest,domain=camwhores.tv',
+ '@@||chatbro.com^$xmlhttprequest,domain=camwhores.tv',
+ ],
+ sourceUrl: 'http://www.camwhores.tv',
+ type: 'xhr',
+ url: 'http://www.chatbro.com',
+ },
+ {
+ filters: ['||pcash.imlive.com^$third-party', '||pcash.imlive.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://pcash.imlive.com',
+ },
+ {
+ filters: ['@@||chatango.com^$domain=stream2watch.mx|stream2watch.org'],
+ sourceUrl: 'https://www.stream2watch.org',
+ type: 'script',
+ url: 'https://st.chatango.com',
+ },
+ {
+ filters: ['.tv/ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.camwhores.tv/ads.txt',
+ },
+ {
+ check: true,
+ filters: ['||clickability.com^', '||s.clickability.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.clickability.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.webassign.net',
+ type: 'script',
+ url: 'http://www.webassign.net/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['@@*$media,domain=camwhores.tv'],
+ sourceUrl: 'http://www.camwhores.tv',
+ type: 'media',
+ url: 'https://',
+ },
+ {
+ filters: [
+ '@@||mxpnl.com/libs/mixpanel-*.min.js$domain=change.org|frigidaire.com|greentoe.com|intuit.com|nbc.com|thefrisky.com',
+ ],
+ sourceUrl: 'https://www.nbc.com',
+ type: 'script',
+ url: 'https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js',
+ },
+ {
+ filters: ['||leanplum.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.leanplum.com',
+ },
+ {
+ check: true,
+ filters: ['@@||doubleclick.net^$image,domain=nbc.com'],
+ sourceUrl: 'https://www.nbc.com',
+ type: 'image',
+ url: 'https://cm.g.doubleclick.net',
+ },
+ {
+ filters: ['@@||googlesyndication.com^$image,domain=nbc.com'],
+ sourceUrl: 'https://www.nbc.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com',
+ },
+ {
+ filters: ['||pix.nbcuni.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pix.nbcuni.com',
+ },
+ {
+ filters: ['/v2/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://on.cc/img/v2/ads.png',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.receitasdabela.com',
+ type: 'script',
+ url: 'http://www.receitasdabela.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||on.cc^*/checkrev.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://home.on.cc/adv/web/corp/img/checkrev.gif?',
+ },
+ {
+ filters: ['||events.launchdarkly.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.launchdarkly.com',
+ },
+ {
+ filters: ['/ads_assets/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-pro.elsalvador.com/ads_assets/',
+ },
+ {
+ filters: ['||mousestats.com^', '||mousestats.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ssl.mousestats.com',
+ },
+ {
+ filters: ['||stats.heyoya.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://stats.heyoya.com',
+ },
+ {
+ filters: ['/ad7.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad7.on.cc',
+ },
+ {
+ filters: ['/ads/scripts/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.pro-market.net/ads/scripts/',
+ },
+ {
+ filters: ['||instraffic.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://instraffic.com',
+ },
+ {
+ filters: ['/swptrk.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.similarweb.com/swptrk.js',
+ },
+ {
+ filters: ['||gdeslon.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.gdeslon.ru',
+ },
+ {
+ filters: ['_600x160.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sp.jal.co.jp/sp_bannerY15/other/jalapp_170228_600x160.png',
+ },
+ {
+ filters: ['/ad6.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad6.on.cc',
+ },
+ {
+ filters: ['/housead/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad6.on.cc/web/html/housead/',
+ },
+ {
+ filters: ['||realvu.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ac.realvu.net',
+ },
+ {
+ filters: ['/hitCount.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hk.on.cc/mobile/js/lib/hitCount.js',
+ },
+ {
+ filters: ['/propagate_cookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ua.tutu.travel/ajax/propagate_cookie.php',
+ },
+ {
+ filters: ['/set_cookie.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.tutu.ru/ajax/set_cookie.php?',
+ },
+ {
+ filters: ['/api/ping/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'fetch',
+ url: 'https://offers.hooligapps.com/api/ping/',
+ },
+ {
+ filters: ['||ymetrica1.com^', '||ymetrica1.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ymetrica1.com',
+ },
+ {
+ filters: ['||impdesk.com/smartpix/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cp.impdesk.com/smartpix/',
+ },
+ {
+ filters: ['||du4rq1xqh3i1k.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://du4rq1xqh3i1k.cloudfront.net',
+ },
+ {
+ filters: ['||contentexchange.me/static/tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ringier_m.contentexchange.me/static/tracker.js',
+ },
+ {
+ filters: ['/pch_ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.pcstore.com.tw/pch_ad/',
+ },
+ {
+ filters: ['_pchadtree.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.pcstore.com.tw/css/real_fcache/index_pchadtree.js',
+ },
+ {
+ filters: ['_mar_ad/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.pcstore.com.tw/pch_ad/pch_mar_ad/',
+ },
+ {
+ filters: ['_nine_ad/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.pcstore.com.tw/pch_ad/pch_nine_ad/',
+ },
+ {
+ filters: ['||tdf.ringier.ch^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://7.p.tdf.ringier.ch',
+ },
+ {
+ filters: ['/ads-api.'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://ads-api.ft.com',
+ },
+ {
+ check: true,
+ filters: ['/multiad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver.adtech.de/multiad/',
+ },
+ {
+ filters: ['||clickaine.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://api.clickaine.com',
+ },
+ {
+ filters: ['/javascripts/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.adsttc.com/javascripts/ads.js',
+ },
+ {
+ filters: ['/ad/img/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://img3.126.net/iad/ad/img/',
+ },
+ {
+ filters: ['||xad.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://bidagent.xad.com',
+ },
+ {
+ filters: ['/adocean.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adocean.delfi.lv',
+ },
+ {
+ filters: ['||delphi.lv/t/t.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://g4.delphi.lv/t/t.js',
+ },
+ {
+ filters: ['_ad_banner.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.huxiucdn.com/m/image/moment_ad_banner.png',
+ },
+ {
+ filters: ['@@||on.cc/js/urchin.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://p18.on.cc/js/urchin.js',
+ },
+ {
+ filters: ['/__dam.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rev.da.netease.com/__dam.gif?',
+ },
+ {
+ filters: ['/i/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://g1.delphi.lv/reklama/i/ads/',
+ },
+ {
+ filters: ['||t.delfi.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://t.delfi.lv',
+ },
+ {
+ filters: ['||spoor-api.ft.com/px.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://spoor-api.ft.com/px.gif',
+ },
+ {
+ filters: ['/adlib.$domain=~adlib.info|~adlib.mu'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d1fk4qaqyjcn03.cloudfront.net/tags/adlib.min.js',
+ },
+ {
+ filters: ['/dfp-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bolalob.com/js/helper/dfp-ads.js',
+ },
+ {
+ filters: ['||dgmatix.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.dgmatix.com',
+ },
+ {
+ filters: ['/misc/ads/*', '/ads/marketing/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://m.delfi.lv/misc/ads/marketing/',
+ },
+ {
+ filters: ['/ad_banner.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.huxiucdn.com/m/image/ad_banner.png',
+ },
+ {
+ filters: ['/imads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.programiz.com/imads.js',
+ },
+ {
+ filters: ['||tracer.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www31.tracer.jp',
+ },
+ {
+ filters: ['/statspider?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://stat.ntv.ru/services/statspider?',
+ },
+ {
+ filters: ['||tracking.eurosport.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.eurosport.com',
+ },
+ {
+ filters: ['/tracking-links.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://layout.eurosport.com/j/v8_5/merged/modules/tracking-links.js',
+ },
+ {
+ filters: ['||track.mailerlite.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.mailerlite.com',
+ },
+ {
+ filters: ['||newsmaxfeednetwork.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://s.newsmaxfeednetwork.com',
+ },
+ {
+ filters: [
+ '||serving-sys.com/BurstingRes/$domain=focus.de|imasdk.googleapis.com|serving-sys.com',
+ ],
+ sourceUrl: 'http://www.serving-sys.com',
+ type: 'image',
+ url: 'http://ds.serving-sys.com/BurstingRes/',
+ },
+ {
+ filters: ['||separatesilver.com^', '||separatesilver.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://separatesilver.com',
+ },
+ {
+ filters: ['/1/ads/*$~image'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.movieweb.com/assets/1/ads/',
+ },
+ {
+ filters: ['/hitcount_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://hk.on.cc/js/hitCount/js/hitCount_all_UTF8.js',
+ },
+ {
+ filters: ['/img/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hk.on.cc/img/ad/',
+ },
+ {
+ filters: ['/adclient.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn2.crispadvertising.com/afw/3.0/framework/client/adclient.js',
+ },
+ {
+ filters: ['/adrequest.$domain=~adrequest.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.crispadvertising.com/adRequest.v2',
+ },
+ {
+ filters: ['/nielsen.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.stuff.co.nz/etc/designs/ffx/nz/stuff/static/nielsen.min.v60.js',
+ },
+ {
+ filters: ['||matheranalytics.com^', '||matheranalytics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.matheranalytics.com',
+ },
+ {
+ filters: ['/fairfax_tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.neighbourly.co.nz/js/fairfax_tracking.js',
+ },
+ {
+ filters: ['||vi-serve.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.vi-serve.com',
+ },
+ {
+ filters: ['||whysoserius.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.whysoserius.club',
+ },
+ {
+ filters: ['||mydirtyhobby.com^$third-party,domain=~my-dirty-hobby.com|~mydirtyhobby.de'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.mydirtyhobby.com',
+ },
+ {
+ filters: ['/adfeeds.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://adfeeds.stuff.co.nz',
+ },
+ {
+ filters: ['/adtech/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.stuff.co.nz/adtech/',
+ },
+ {
+ filters: ['||trackedweb.net^', '||trackedweb.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://trackedweb.net',
+ },
+ {
+ filters: ['/elqnow/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.dhl.com/js/elqNow/',
+ },
+ {
+ filters: ['/adcontrol/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.stuff.co.nz/adcontrol/',
+ },
+ {
+ filters: ['||meduza.io/stat/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://meduza.io/stat/',
+ },
+ {
+ filters: ['||track.securedvisit.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.securedvisit.com',
+ },
+ {
+ filters: ['||simplehitcounter.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://simplehitcounter.com',
+ },
+ {
+ filters: ['||aoredi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://aoredi.com',
+ },
+ {
+ filters: ['||pusherism.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pusherism.com',
+ },
+ {
+ filters: ['||flipboard.com/usage?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ue.flipboard.com/usage?',
+ },
+ {
+ filters: ['||sas.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://execution-euw.ci360.sas.com',
+ },
+ {
+ filters: ['/tracking-pixel/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.stuff.co.nz/etc/designs/ffx/nz/stuff/images/tracking-pixel/',
+ },
+ {
+ filters: ['||somniture.stuff.co.nz^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://somniture.stuff.co.nz',
+ },
+ {
+ filters: ['||d2.ligatus.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2.ligatus.com',
+ },
+ {
+ filters: ['/adchoice.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.cc.com/sitewide/images/logos/AdChoice.png',
+ },
+ {
+ filters: ['||sli-spark.com/b.png$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.sli-spark.com/b.png',
+ },
+ {
+ filters: ['||pi-stats.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://events.pi-stats.com',
+ },
+ {
+ filters: ['||js.static.m1905.cn/pingd.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.static.m1905.cn/pingd.js',
+ },
+ {
+ filters: ['||pornleech.is/pornleech_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pornleech.is/pornleech_frontend_loader.js',
+ },
+ {
+ filters: ['||toptracker.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://toptracker.ru',
+ },
+ {
+ filters: ['||stuff.co.nz/track/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.stuff.co.nz/track/',
+ },
+ {
+ filters: ['||tda.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://w.tda.io',
+ },
+ {
+ filters: ['/AnalTrack.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.20min.ch/2010/JS/AnalTrack.js',
+ },
+ {
+ filters: ['||apxtarget.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://s.apxtarget.com',
+ },
+ {
+ filters: ['-ad5.'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://adcdn-ad5.kuponacdn.de',
+ },
+ {
+ check: true,
+ filters: ['||aamsitecertifier.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://aamcftag.aamsitecertifier.com',
+ },
+ {
+ filters: ['||ascend.ai^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.ascend.ai',
+ },
+ {
+ filters: ['/partner.ads.', '||placeiq.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://partner.ads.placeiq.com',
+ },
+ {
+ filters: ['/banners/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://w.tda.io/banners/ads.js',
+ },
+ {
+ filters: ['||edw.edmunds.com^', '||edmunds.com^*/edw1x1.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://edw.edmunds.com/edw/edw1x1.gif',
+ },
+ {
+ filters: ['||stats01.20min.ch^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats01.20min.ch',
+ },
+ {
+ filters: ['||rose.ixbt.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rose.ixbt.com',
+ },
+ {
+ filters: ['||gnavi.co.jp/analysis/', '/analysis/gtm_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://site.gnavi.co.jp/analysis/gtm_nt.js',
+ },
+ {
+ filters: ['||gocp.stroeermediabrands.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gocp.stroeermediabrands.de',
+ },
+ {
+ filters: ['/analysis/ga_', '/ga_measure.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://site.gnavi.co.jp/analysis/ga_measure.js',
+ },
+ {
+ filters: ['@@||tvp.pl/files/tvplayer/$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.tvp.pl/files/tvplayer/',
+ },
+ {
+ filters: ['||giga-abs.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.giga-abs.de',
+ },
+ {
+ filters: ['.de/o.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://go.giga-abs.de/o.gif?',
+ },
+ {
+ filters: [
+ '||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=4players.de|brigitte.de|buffed.de|erdbeerlounge.de|gamesaktuell.de|gamezone.de|gamona.de|giga.de|golem.de|kicker.de|kino.de|myspass.de|pcgames.de|pcgameshardware.de|spiegel.de|spiegel.tv|spielaffe.de|spieletipps.de|t-online.de|tele5.de|thrashermagazine.com|welt.de|videogameszone.de',
+ ],
+ sourceUrl: 'https://www.giga.de',
+ type: 'script',
+ url: 'https://hgc-cf-cache-1.svonm.com/hd-main.js',
+ },
+ {
+ filters: ['||admission.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dt.admission.net',
+ },
+ {
+ filters: ['||traffic.prod.cobaltgroup.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://traffic.prod.cobaltgroup.com',
+ },
+ {
+ filters: ['@@||damoh.giga.de^$script,domain=giga.de'],
+ sourceUrl: 'https://www.giga.de',
+ type: 'script',
+ url: 'https://ssl.1.damoh.giga.de',
+ },
+ {
+ filters: ['||coordinatedcub.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://coordinatedcub.com',
+ },
+ {
+ filters: ['/728x90-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/6785415/728x90-FK-herbst.gif',
+ },
+ {
+ filters: ['.adsync.', '/SpecialAdCampaigns/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adsync.tech/SpecialAdCampaigns/',
+ },
+ {
+ filters: ['||geoip.boredpanda.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://geoip.boredpanda.com',
+ },
+ {
+ filters: ['_adsetup_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.lastampa.it/modulo/pubblicita2/manzoni/js/mnz_adsetup_v2.js',
+ },
+ {
+ filters: ['/delfi-ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://g1.dcdn.lt/glt/c/delfi-ads/',
+ },
+ {
+ filters: ['||creatives.pichunter.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://creatives.pichunter.com',
+ },
+ {
+ filters: ['/v53.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://secure-it.imrworldwide.com/v53.js',
+ },
+ {
+ filters: ['/impress.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.pichunter.com/ssi/impress.php?',
+ },
+ {
+ filters: ['|https://$image,script,subdocument,third-party,domain=vidoza.net'],
+ sourceUrl: 'https://vidoza.net',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||rekovers.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://rekovers.ru',
+ },
+ {
+ filters: ['||reddit.com^*.gif?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://alb.reddit.com/snoo.gif?',
+ },
+ {
+ filters: ['||hsadspixel.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.hsadspixel.net',
+ },
+ {
+ filters: ['||futbol24.com/f24/rek/$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.futbol24.com/f24/rek/',
+ },
+ {
+ filters: ['||mms.cbslocal.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mms.cbslocal.com',
+ },
+ {
+ filters: ['/cntlog/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://touch.navitime.co.jp/touchstorage/img/cntlog/',
+ },
+ {
+ filters: ['@@||lastampa.it/modulo/tracciatori/js/nielsen.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.lastampa.it/modulo/tracciatori/js/nielsen.js',
+ },
+ {
+ filters: ['||upapi.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://upapi.net',
+ },
+ {
+ filters: ['||baifendian.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static2.baifendian.com',
+ },
+ {
+ filters: ['/affiliates/banner'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.privateinternetaccess.com/affiliates/banners',
+ },
+ {
+ filters: ['||ca-mpr.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ot.ca-mpr.jp',
+ },
+ {
+ filters: ['||ad.spreaker.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ad.spreaker.com',
+ },
+ {
+ filters: ['||liveadexchanger.com^$third-party', '||liveadexchanger.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.liveadexchanger.com',
+ },
+ {
+ filters: ['.net/s.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.ekbl.net/s.gif?',
+ },
+ {
+ filters: ['||efatik.me^$third-party', '.me/l.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://efatik.me/l.gif?',
+ },
+ {
+ filters: ['||webtrekk.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tiscaliadv01.webtrekk.net',
+ },
+ {
+ filters: ['||apxlv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://powerpush.apxlv.com',
+ },
+ {
+ filters: ['||browsealoud.com/plus/scripts/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.browsealoud.com/plus/scripts/',
+ },
+ {
+ filters: ['/ads/gpt_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.com/www/js/ads/gpt_includes.js',
+ },
+ {
+ filters: ['/analytics/mouse_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.com/www/js/analytics/mouse_down.js',
+ },
+ {
+ filters: ['/analytics/idg_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.com/www/js/analytics/idg_bk_coreapi.js',
+ },
+ {
+ filters: ['||spiffymachine.com^', '||spiffymachine.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://spiffymachine.com',
+ },
+ {
+ filters: [
+ '|http://$script,third-party,xmlhttprequest,domain=ancensored.com',
+ '@@||cdn1-ancensored.network/script.js$script,domain=ancensored.com',
+ ],
+ sourceUrl: 'http://ancensored.com',
+ type: 'script',
+ url: 'http://cdn1-ancensored.network/script.js',
+ },
+ {
+ filters: [
+ '@@||code.jquery.com^$domain=ancensored.com',
+ '@@||jquery.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youav.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'http://ancensored.com',
+ type: 'script',
+ url: 'http://code.jquery.com',
+ },
+ {
+ filters: ['||ie8eamus.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ie8eamus.com',
+ },
+ {
+ filters: ['/ads/tso'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.pcworld.com/ads/tso',
+ },
+ {
+ filters: ['||automate-prod.s3.amazonaws.com^$~script'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://automate-prod.s3.amazonaws.com',
+ },
+ {
+ filters: [
+ '/advertisers.$image,script,subdocument,domain=~advertisers.adversense.com|~advertisers.careerone.com.au|~advertisers.dk|~advertisers.easyweddings.com.au|~advertisers.io|~advertisers.leadia.ru|~advertisers.ypfboost.ph|~panel.rightflow.com',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://fingahvf.top/advertisers.js',
+ },
+ {
+ filters: ['/Analytics/Tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.com/www/js/analytics/tracking.js',
+ },
+ {
+ check: true,
+ filters: ['/adbox_', '_ad_banner_', '_ad300x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mkt.forebase.com/tagx/adserve/adbox_ad_banner_Ad300x250.jpg',
+ },
+ {
+ filters: [
+ '@@||cloudflare.com/ajax/libs/$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animepahe.com|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|bdsmstreak.com|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freemoviestream.xyz|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|realcam.me|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'http://ancensored.com',
+ type: 'script',
+ url: 'http://cdnjs.cloudflare.com/ajax/libs/',
+ },
+ {
+ filters: [
+ '/siteAnalytics.',
+ '@@||expedia.com/static/default/default/scripts/siteAnalytics.js',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.expedia.com/static/default/default/scripts/siteAnalytics.js',
+ },
+ {
+ filters: ['_160x600.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://mkt.forebase.com/tagx/data/sourcesets/tiscali_dispad_160x600.json',
+ },
+ {
+ filters: [
+ '@@||gstatic.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freemoviestream.xyz|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.aznude.com',
+ type: 'script',
+ url: 'https://www.gstatic.com',
+ },
+ {
+ filters: ['_ad.gif|'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.yonhapnews.co.kr/basic/svc/14_images/tit_ad.gif',
+ },
+ {
+ filters: ['/ads/jquery.', '.lazyload-ad.', '@@||pcworld.com/www/js/ads/jquery.lazyload-ad.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.com/www/js/ads/jquery.lazyload-ad.js',
+ },
+ {
+ filters: [
+ '@@||cdnjs.cloudflare.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomforce.com|freedomoutpost.com|funnyand.com|gamerant.com|girlsjustwannahaveguns.com|glitch.news|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ '@@||cloudflare.com/ajax/$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|jobsnhire.com|joeforamerica.com|juicerhead.com|kdramastars.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|twisted.news|usherald.com|valuewalk.comvcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|winningdemocrats.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://cdnjs.cloudflare.com/ajax/',
+ },
+ {
+ filters: [
+ '@@||use.typekit.net^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bighealthreport.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|xtribune.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://use.typekit.net',
+ },
+ {
+ filters: ['||nsmartad.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://scr.nsmartad.com',
+ },
+ {
+ filters: ['||doubleclick.net^$important,domain=qz.com'],
+ sourceUrl: 'https://qz.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net',
+ },
+ {
+ check: true,
+ filters: ['/ads?zone_id='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads.trafficjunky.net/ads?zone_id=1758771&site_id=117481&format=HTML',
+ },
+ {
+ filters: ['||staticworld.net/pixel.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.staticworld.net/pixel.gif',
+ },
+ {
+ check: true,
+ filters: ['||www.infowars.com/*.png$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.infowars.com/wp-content/themes/infowars-sitegoals/images/play.png',
+ },
+ {
+ filters: [
+ '@@||disqus.com^$script,third-party,domain=activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|freewarefiles.com|gamerant.com|gamersheroes.com|girlsjustwannahaveguns.com|godfatherpolitics.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|usherald.com|valuewalk.com|vcpost.com|vgpie.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://nfocom.disqus.com',
+ },
+ {
+ filters: ['/admixer_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://scr.nsmartad.com/admixer/admixer_dispatch_2.0.min.js',
+ },
+ {
+ filters: ['/AbvProductAds/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.abv.bg/AbvProductAds/',
+ },
+ {
+ filters: ['||linguee.com*/white_pixel.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.linguee.com/white_pixel.gif?',
+ },
+ {
+ filters: ['||luxupcdnb.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.luxupcdnb.com',
+ },
+ {
+ filters: ['||bidvertiser.com^$third-party', '||bidvertiser.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://bdv.bidvertiser.com',
+ },
+ {
+ check: true,
+ filters: ['/google_ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://partner.googleadservices.com/gampad/google_ads_gpt.js',
+ },
+ {
+ filters: [
+ '@@||twitter.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|gosocial.co|grammarist.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|o4anews.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicalcowboy.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://platform.twitter.com',
+ },
+ {
+ filters: ['||travel-assets.com/ads/', '/ads/2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.travel-assets.com/ads/2.0',
+ },
+ {
+ filters: [
+ '@@||googletagservices.com/tag/js/gpt.js$script,third-party,domain=activistpost.com|alfonzorachel.com|askmefast.com|breathecast.com|bulletsfirst.net|clashdaily.com|classicalite.com|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|crossmap.com|dailyheadlines.net|dailysurge.com|dccrimestories.com|digitaljournal.com|enstarz.com|girlsjustwannahaveguns.com|greatamericanrepublic.com|hngn.com|infowars.com|instigatornews.com|joeforamerica.com|kdramastars.com|kpopstarz.com|latinpost.com|legalinsurrection.com|libertyunyielding.com|minutemennews.com|musictimes.com|naturalblaze.com|naturalnews.com|natureworldnews.com|newser.com|oddee.com|parentherald.com|patriotoutdoornews.com|rantlifestyle.com|realfarmacy.com|realtytoday.com|redmaryland.com|rightwingnews.com|shark-tank.com|spectator.org|stevedeace.com|techtimes.com|theblacksphere.net|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|universityherald.com|valuewalk.comvcpost.com|victoriajackson.com|viralnova.com|viralthread.com|wakingtimes.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://www.googletagservices.com/tag/js/gpt.js',
+ },
+ {
+ filters: ['/analyticsjs.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ghafla.com/wp-content/plugins/reduce-bounce-rate/js/analyticsjs.js',
+ },
+ {
+ filters: ['/mobileanalytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.autozone.com/resources/js/mobileAnalytics.js',
+ },
+ {
+ filters: [
+ '@@||syndication.twimg.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|gosocial.co|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://cdn.syndication.twimg.com',
+ },
+ {
+ filters: ['/bsa-pro-'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.serumpi.com/wp-content/plugins/bsa-pro-scripteo1',
+ },
+ {
+ filters: ['||youtube.com/get_video?'],
+ sourceUrl: 'https://foo.com',
+ type: 'media',
+ url: 'https://www.youtube.com/get_video?',
+ },
+ {
+ filters: ['||recobell.io/rest/logs?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://rblogger-receiver-apne1.recobell.io/rest/logs?',
+ },
+ {
+ filters: [
+ '@@||twimg.com^$image,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|gosocial.co|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|o4anews.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicalcowboy.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'image',
+ url: 'https://pbs.twimg.com',
+ },
+ {
+ filters: ['/tncms/tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theadvocate.com/shared-content/art/tncms/tracking.js',
+ },
+ {
+ filters: ['/art/stats/*', '/common/tracker.js', '/stats/common/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theadvocate.com/shared-content/art/stats/common/tracker.js',
+ },
+ {
+ filters: ['||circularhub.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.circularhub.com',
+ },
+ {
+ filters: [
+ '@@||googleapis.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|americasfreedomfighters.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breakingnews.ie|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|faithit.com|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|funnyand.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|lifebuzz.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.infowars.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['/_ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.eviesays.com/js/_ads/',
+ },
+ {
+ filters: ['/adunits/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.hivemind.id/adunits/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.ghafla.com',
+ type: 'script',
+ url: 'http://www.ghafla.com/ke/wp-content/cache/min/4/ke/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/728x90b.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://miamidiario.com/wp-content/uploads/2018/05/728x90B.gif',
+ },
+ {
+ filters: ['@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=webnovel.com'],
+ sourceUrl: 'https://www.webnovel.com',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['||adready.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.adready.com',
+ },
+ {
+ filters: ['||inbox.lv^*/ga.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fun.inbox.lv/assets/com/js/ga.js',
+ },
+ {
+ filters: ['/stats/?rt='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.adbox.lv/stats/?rt=6664569cf10ea17d2',
+ },
+ {
+ filters: ['||d-1.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d-1.co',
+ },
+ {
+ filters: ['||smilewanted.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.smilewanted.com',
+ },
+ {
+ filters: ['/common/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.vgtime.com/common/ad/',
+ },
+ {
+ filters: ['/clickheat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.sdg-china.com/yxzm/js/clickheat.js',
+ },
+ {
+ filters: ['@@||tredir.go.com/capmon/$script,domain=disney.com'],
+ sourceUrl: 'https://www.disney.com',
+ type: 'script',
+ url: 'https://tredir.go.com/capmon/',
+ },
+ {
+ filters: ['||va.tawk.to/log'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://va.tawk.to/log-performance',
+ },
+ {
+ filters: [
+ '/dfp.min.js',
+ '@@||statics.estadao.com.br/*/utils/publicidade/dfp.min.js$script,domain=estadao.com.br',
+ ],
+ sourceUrl: 'https://www.estadao.com.br',
+ type: 'script',
+ url: 'https://statics.estadao.com.br/s2016/utils/publicidade/dfp.min.js',
+ },
+ {
+ filters: ['||hivps.xyz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.hivps.xyz',
+ },
+ {
+ filters: ['/adcache.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adcache.nymag.com',
+ },
+ {
+ filters: ['/adconfig.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://acache.nymag.com/js/homepage/adConfig.js',
+ },
+ {
+ filters: ['/visualsciences.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.britishairways.com/assets/scripts/global/tracking/visualsciences.js',
+ },
+ {
+ filters: ['||ivcbrasil.org.br^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ivccftag.ivcbrasil.org.br',
+ },
+ {
+ check: true,
+ filters: ['||itsup.com^$third-party', '||itsup.com/creatives/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.itsup.com/creatives/',
+ },
+ {
+ filters: ['||logger.nerdwallet.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://logger.nerdwallet.com',
+ },
+ {
+ filters: ['||analytics.fairfax.com.au^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.fairfax.com.au',
+ },
+ {
+ filters: ['||pixel.roymorgan.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pixel.roymorgan.com',
+ },
+ {
+ filters: ['/sideads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tip.soku.com/searches/soku/kubox/v4/sideads.json',
+ },
+ {
+ filters: ['/newrelic.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.vcdn.biz/static/50112581/newrelic.js',
+ },
+ {
+ filters: ['/basic/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.yonhapnews.co.kr/basic/AD/',
+ },
+ {
+ filters: ['||rarbgmirror.com^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.com',
+ type: 'script',
+ url: 'http://www.rarbgmirror.com',
+ },
+ {
+ filters: ['||rarbgmirror.com^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.com',
+ type: 'script',
+ url: 'http://www.rarbgmirror.com',
+ },
+ {
+ filters: ['||rarbgmirror.com^$script,first-party'],
+ sourceUrl: 'http://www.rarbgmirror.com',
+ type: 'script',
+ url: 'http://www.rarbgmirror.com',
+ },
+ {
+ filters: ['@@||googletagmanager.com/gtm.js?$domain=sportmaster.ru'],
+ sourceUrl: 'https://m.sportmaster.ru',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['||httpool.com^$third-party', '||httpool.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://relay-rs.ads.httpool.com',
+ },
+ {
+ filters: ['/javascripts/tracking_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdnsi.e-i.com//WEBO/sd/wat/1.0.1//javascripts/tracking_event.js',
+ },
+ {
+ filters: ['||toboads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tas-rs.toboads.com',
+ },
+ {
+ filters: ['||clicktripz.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.clicktripz.com',
+ },
+ {
+ filters: ['@@||google-analytics.com/analytics.js$domain=news.gamme.com.tw'],
+ sourceUrl: 'https://news.gamme.com.tw',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['_300.htm'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.sheypoor.com/static/ra/nofollow200_300.html',
+ },
+ {
+ filters: ['||tentaculos.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://u.tentaculos.net',
+ },
+ {
+ filters: ['/api/lt/ref?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://livetracker.voa.pangea-cms.com/api/lt/ref?',
+ },
+ {
+ filters: ['/counter.lt?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://livetracker.voa.pangea-cms.com/counter.lt?',
+ },
+ {
+ filters: ['||pdbu.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cs.pdbu.net',
+ },
+ {
+ filters: ['/pvnoju.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.chinanews.com/pv/js/pvnoju.js',
+ },
+ {
+ filters: ['||ads.fairfax.com.au^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads.fairfax.com.au',
+ },
+ {
+ filters: ['_728x90-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.037hd.com/wp-content/uploads/2018/08/TH-LCH_MediaBuy_728x90-1.gif',
+ },
+ {
+ filters: ['/track_proxy?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sm.gome.com.cn/collect/track_proxy?',
+ },
+ {
+ filters: ['||geoplugin.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.geoplugin.net',
+ },
+ {
+ filters: ['/newads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.alaraby.co.uk/Content/images/newAds.gif',
+ },
+ {
+ filters: ['/admedia/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://srv.imonomy.com/UserMatching/admedia/',
+ },
+ {
+ check: true,
+ filters: ['/mixpanel.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.mixpanel.com/site_media/js/api/mixpanel.js',
+ },
+ {
+ filters: ['-ad/dist/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.adriamedia.tv/vjs/videojs-ima-ad/dist/',
+ },
+ {
+ filters: ['||smopy.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://d.smopy.com',
+ },
+ {
+ filters: ['||ctrmanager.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://show.ctrmanager.com',
+ },
+ {
+ filters: ['?ad_number='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.google.com/favicon.ico?ad_number=100',
+ },
+ {
+ filters: ['/image/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.sanjesh.org/data/image/ads/',
+ },
+ {
+ filters: ['/adb_detector.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.porntube.com/adb_detector.js',
+ },
+ {
+ filters: ['||rutube.ru/dbg/player_stat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.rutube.ru/dbg/player_stat?',
+ },
+ {
+ filters: ['/SSOCore/update?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://acw.scopus.com/SSOCore/update?',
+ },
+ {
+ filters: ['||chartbeat.com^$domain=stern.de'],
+ sourceUrl: 'https://www.stern.de',
+ type: 'script',
+ url: 'https://static.chartbeat.com',
+ },
+ {
+ filters: ['||google-analytics.com/collect$domain=stern.de'],
+ sourceUrl: 'https://www.stern.de',
+ type: 'image',
+ url: 'https://www.google-analytics.com/collect',
+ },
+ {
+ filters: ['||adm.shinobi.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adm.shinobi.jp',
+ },
+ {
+ filters: ['||mas.nth.ch^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mas.nth.ch',
+ },
+ {
+ check: true,
+ filters: ['||ad.httpool.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://ad.httpool.com',
+ },
+ {
+ filters: ['/ads-beacon.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://unwire.hk/ads-beacon.js',
+ },
+ {
+ filters: ['||trackalyzer.com^', '||trackalyzer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trackalyzer.com',
+ },
+ {
+ filters: ['/ad-choices.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s2.wp.com/wp-content/themes/vip/shaw-globalnews/_img/ad-choices.png',
+ },
+ {
+ filters: ['/flyertown_module.js', '||flyertown.ca^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.flyertown.ca/16263/0b853834345e8f40/flyertown_module.js',
+ },
+ {
+ filters: ['||synerise.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://proxy.synerise.com',
+ },
+ {
+ filters: ['||trumba.com/et.aspx?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.trumba.com/et.aspx?',
+ },
+ {
+ filters: ['||iheart.com/tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pylon.iheart.com/tracking/',
+ },
+ {
+ filters: ['/exoclick.$domain=~exoclick.bamboohr.co.uk|~exoclick.com|~exoclick.kayako.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://htvassets.satella.tv/exoclick.ads.js',
+ },
+ {
+ filters: ['_footer_ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://biz.toyokeizai.net/files/user/images/logo_footer_ad_sp.png',
+ },
+ {
+ filters: ['||deloton.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://deloton.com',
+ },
+ {
+ filters: ['/rum-track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.linkedin.com/lite/rum-track?',
+ },
+ {
+ filters: ['||mhcdn.net/store/banner/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://c.mhcdn.net/store/banner/',
+ },
+ {
+ filters: ['||solocpm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://clk.solocpm.com',
+ },
+ {
+ filters: ['||mediaweaver.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mediaweaver.jp',
+ },
+ {
+ filters: ['-ad-300x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.animesonlinebr.com.br/ads/animesdigital/dez/BL-AD-300X250.gif',
+ },
+ {
+ filters: ['||atomex.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.atomex.net',
+ },
+ {
+ filters: ['||d3q33rbmdkxzj.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d3q33rbmdkxzj.cloudfront.net',
+ },
+ {
+ filters: ['||c1exchange.com^', '||c1exchange.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://retail.c1exchange.com',
+ },
+ {
+ filters: ['@@||static.mytf1.tf1.fr/assets/js/build/lib/ads_scripts/adscript.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.mytf1.tf1.fr/assets/js/build/lib/ads_scripts/adscript.js',
+ },
+ {
+ filters: ['@@||tf1.fr/assets/js/build/lib/xiti.js$domain=tf1.fr'],
+ sourceUrl: 'https://www.tf1.fr',
+ type: 'script',
+ url: 'https://static.mytf1.tf1.fr/assets/js/build/lib/xiti.js',
+ },
+ {
+ filters: ['||leadintel.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://leadintel.io',
+ },
+ {
+ filters: ['||facebook.com/fr/u.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/fr/u.php?',
+ },
+ {
+ filters: ['/v52.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://secure-it.imrworldwide.com/v52.js',
+ },
+ {
+ filters: ['@@||tf1.fr/assets/js/build/lib/smarttag.js$domain=tf1.fr'],
+ sourceUrl: 'https://www.tf1.fr',
+ type: 'script',
+ url: 'https://static.mytf1.tf1.fr/assets/js/build/lib/smarttag.js',
+ },
+ {
+ filters: ['|https://$script,third-party,domain=clipwatching.com'],
+ sourceUrl: 'http://www.clipwatching.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||baidu.com/js/o.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cbjs.baidu.com/js/o.js',
+ },
+ {
+ filters: ['||leadin.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.leadin.com',
+ },
+ {
+ filters: ['/fro_lo.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cumlouder.com/nb/fro_lo.js',
+ },
+ {
+ filters: ['/images/ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.cumlouder.com/images/ad-pattern.png',
+ },
+ {
+ filters: ['||clicktalecdn.sslcs.cdngc.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://clicktalecdn.sslcs.cdngc.net',
+ },
+ {
+ filters: ['||webgozar.ir^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.webgozar.ir',
+ },
+ {
+ filters: ['/xstat.aspx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://engine.webgozar.ir/counter/xstat.aspx?',
+ },
+ {
+ filters: ['||webgozar.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.webgozar.com',
+ },
+ {
+ filters: [
+ '|https://$image,script,stylesheet,subdocument,third-party,xmlhttprequest,domain=bay.maik.rocks|bypassed.st|cruzing.xyz|depiratenbaai.nl|piratebay.website|piratebayblocked.com|pirateproxy.ist|pirateproxy.mx|pirateproxy.wf|piratetoday.click|proxydl.cf|proxyme.site|proxyme.win|proxypirate.in|proxypirate.website|proxyship.click|thehiddenbay.cc|thehiddenbay.ws|themagnetbay.info|thepbay.ga|thepiratebay.freeproxy.fun|thepiratebay.org|thepiratebay.red|thepiratebay.rocks|thepirateproxy.host|thepirateproxy.pro|thepirateproxy.win|thepirateproxy.ws|tpb.crushus.com|tpb.tw|tpbduck.com|tpbmonk.com|tpbonion.win|tpbpirate.info|tpbpirate.pw|tpbpirate.site|tpbproxy.win|tpbrun.win|tpproxy.website|ukpirate.click',
+ ],
+ sourceUrl: 'https://m.thepiratebay.rocks',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||ad.smartmediarep.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.smartmediarep.com',
+ },
+ {
+ filters: ['/delivery/al.php'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pub.le360.ma/ads360/www/delivery/al.php',
+ },
+ {
+ filters: ['||visto1.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.visto1.net',
+ },
+ {
+ filters: ['||yumenetworks.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pc1.yumenetworks.com',
+ },
+ {
+ check: true,
+ filters: ['||veruta.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pulsepoint-cm.p.veruta.com',
+ },
+ {
+ filters: ['||betfair.com/1x1.gif'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://wat.betfair.com/1x1.gif',
+ },
+ {
+ filters: ['||adpaths.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hv-contents.adpaths.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.lookae.com',
+ type: 'script',
+ url: 'http://www.lookae.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||adwstats.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adwstats.com',
+ },
+ {
+ filters: ['@@||hentai-foundry.com^*/ads.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'other',
+ url: 'http://img.hentai-foundry.com/themes/default/js/ads.js',
+ },
+ {
+ filters: ['||reporo.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.reporo.net',
+ },
+ {
+ filters: ['||cbs.wondershare.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cbs.wondershare.com',
+ },
+ {
+ filters: ['/adserv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://at.atwola.com/adserv/',
+ },
+ {
+ filters: ['/analytics/visit/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://helper-stats.wondershare.com/analytics/visit/',
+ },
+ {
+ filters: ['||aolcdn.com/os/moat/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://o.aolcdn.com/os/moat/',
+ },
+ {
+ filters: ['||acecounter.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gmb.acecounter.com',
+ },
+ {
+ filters: ['||bizspring.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fs.bizspring.net',
+ },
+ {
+ filters: ['||iwanttodeliver.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.iwanttodeliver.com',
+ },
+ {
+ filters: ['||aolcdn.com^*/beacon.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.aolcdn.com/os/aol/beacon.min.js',
+ },
+ {
+ filters: [
+ '@@||google.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.kooora2day.com',
+ type: 'script',
+ url: 'https://apis.google.com',
+ },
+ {
+ filters: [
+ '@@||twitter.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.kooora2day.com',
+ type: 'script',
+ url: 'https://platform.twitter.com',
+ },
+ {
+ filters: ['||content-ad.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.content-ad.net',
+ },
+ {
+ filters: ['||d3dytsf4vrjn5x.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d3dytsf4vrjn5x.cloudfront.net',
+ },
+ {
+ filters: ['_ad_logo.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d32oduq093hvot.cloudfront.net/icons/c_ad_logo.png',
+ },
+ {
+ filters: ['||vectorstock.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.vectorstock.com',
+ },
+ {
+ check: true,
+ filters: ['||clickbank.com^$third-party', '||clickbank.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.clickbank.com',
+ },
+ {
+ filters: ['/adv/adv_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ww2.icdrama.se/adv/adv_js.php',
+ },
+ {
+ filters: ['||stormiq.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://t1.stormiq.com',
+ },
+ {
+ filters: ['||luxadv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.luxadv.com',
+ },
+ {
+ filters: ['/acv?utm_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adc.xxxlshop.de/acv/A2973000/acv?utm_id=nmzd5pu6.vqkhACh.opid2.opid',
+ },
+ {
+ filters: ['||ktxtr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.ktxtr.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.seriesfilmestorrent.com',
+ type: 'script',
+ url: 'https://www.seriesfilmestorrent.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/analytics/v1/*$domain=~my.leadpages.net'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ace.api.yuppcdn.net/analytics/v1/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.lookae.com',
+ type: 'script',
+ url: 'http://www.lookae.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.seriesfilmestorrent.com',
+ type: 'script',
+ url: 'https://www.seriesfilmestorrent.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||gsecondscreen.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-jp.gsecondscreen.com',
+ },
+ {
+ filters: ['||semtracker.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://live.semtracker.de',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.seriesfilmestorrent.com',
+ type: 'script',
+ url: 'https://www.seriesfilmestorrent.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||supuv2.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.supuv2.com',
+ },
+ {
+ filters: ['||aminopay.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'https://pay.aminopay.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.seriesfilmestorrent.com',
+ type: 'script',
+ url: 'https://www.seriesfilmestorrent.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||mklik.gazeta.pl^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mklik.gazeta.pl',
+ },
+ {
+ filters: ['||dw.cbsimg.net^$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dw.cbsimg.net',
+ },
+ {
+ filters: ['||freenet.de/www/export/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cds2.freenet.de/www/export/',
+ },
+ {
+ filters: ['/webtracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://grupoplaneta.emsecure.net/optiext/webtracker.dll',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.seriesfilmestorrent.com',
+ type: 'script',
+ url: 'https://www.seriesfilmestorrent.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||styleszelife.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://styleszelife.com',
+ },
+ {
+ filters: ['||barilliance.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.barilliance.net',
+ },
+ {
+ filters: ['/extadv/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://static.zarabotki.ru/extadv/',
+ },
+ {
+ filters: ['/AdblockMessage.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sitepoint.com/dist/js/AdblockMessage.df8d6d14e3abb5eb3f18.js',
+ },
+ {
+ filters: ['||navigator.io^', '||navigator.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.navigator.io',
+ },
+ {
+ filters: ['||c-sharpcorner.com^*/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.c-sharpcorner.com/UploadFile/Banners/',
+ },
+ {
+ filters: ['||insitez.blob.core.windows.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://insitez.blob.core.windows.net',
+ },
+ {
+ filters: ['/ads/3.', '/24adscript.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.24.co.za/libs/24com/Ads/3.4/24AdScript.min.js',
+ },
+ {
+ filters: ['||crowdtwist.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.crowdtwist.com',
+ },
+ {
+ filters: ['||theconversation.com/javascripts/lib/content_tracker_hook.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://theconversation.com/javascripts/lib/content_tracker_hook.js',
+ },
+ {
+ filters: ['||etcodes.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://etcodes.com',
+ },
+ {
+ filters: ['||stattds.club^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ts.stattds.club',
+ },
+ {
+ filters: ['||tonefuse.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://srv.tonefuse.com',
+ },
+ {
+ filters: ['/CofinaHits.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.record.pt/hits/scripts/cofinahits.js',
+ },
+ {
+ filters: ['_pushads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.japantimes.co.jp/googletag_pushads.php',
+ },
+ {
+ filters: ['@@||solvettube.com^$script,first-party'],
+ sourceUrl: 'http://solvettube.com',
+ type: 'script',
+ url: 'http://solvettube.com',
+ },
+ {
+ filters: ['||bongacash.com/dynamic_banner/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://i.bongacash.com/dynamic_banner/',
+ },
+ {
+ filters: ['_fixed_ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.sitemaji.com/native/apktw_fixed_ad.js',
+ },
+ {
+ filters: ['/pbasitetracker.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st.pba.xl.pt/pbasitetracker/pbasitetracker.min.js',
+ },
+ {
+ filters: ['||ipapi.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ipapi.co',
+ },
+ {
+ filters: ['||zapcdn.space/zapret.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://zapcdn.space/zapret.js',
+ },
+ {
+ filters: ['/skipad.png$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://capodeportes.net/data/scripts/skipad.png',
+ },
+ {
+ filters: ['||advmaker.su^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://yt.advmaker.su',
+ },
+ {
+ filters: ['||surgeprice.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://surgeprice.com',
+ },
+ {
+ filters: ['468x80.gif|', '_468x80.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sarzamindownload.com/images/banners/customers/cameradic_468x80.gif',
+ },
+ {
+ filters: [
+ '@@||disqus.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'http://www.portalroms.com',
+ type: 'script',
+ url: 'http://disqus.com',
+ },
+ {
+ filters: ['160x600.jpg|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.hinet.net/resources/img/0315-160x600.jpg',
+ },
+ {
+ filters: ['/google_analytics.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.diary.ru/js/counters/google_analytics.js',
+ },
+ {
+ filters: ['/ga_event_tracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdnassets.com/ui/supersite/en/js/ga_event_tracking.js',
+ },
+ {
+ filters: ['@@||googletagservices.com/tag/js/gpt.js$script,domain=pitchfork.com'],
+ sourceUrl: 'https://pitchfork.com',
+ type: 'script',
+ url: 'https://www.googletagservices.com/tag/js/gpt.js',
+ },
+ {
+ filters: ['@@||securepubads.g.doubleclick.net/gpt/pubads_impl$script,domain=pitchfork.com'],
+ sourceUrl: 'https://pitchfork.com',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: ['||addoor.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pubtags.addoor.net',
+ },
+ {
+ filters: ['||loggly.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cloudfront.loggly.com',
+ },
+ {
+ filters: ['||chameleon.ad/banner/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.chameleon.ad/banner/',
+ },
+ {
+ filters: ['||gsn.chameleon.ad^$~script', '||gsn.chameleon.ad^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gsn.chameleon.ad',
+ },
+ {
+ filters: ['||acs86.com^$third-party', '||acs86.com/t.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.acs86.com/t.js',
+ },
+ {
+ filters: ['@@||adtech.de/dt/common/DAC.js$domain=ekstrabladet.dk'],
+ sourceUrl: 'https://ekstrabladet.dk',
+ type: 'script',
+ url: 'https://aka-cdn-ns.adtech.de/dt/common/DAC.js',
+ },
+ {
+ filters: ['/tns_gallup/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ekstrabladet.dk/assets/scripts3rdparty/tns_gallup/',
+ },
+ {
+ filters: ['||tns-gallup.dk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl-ebiam.tns-gallup.dk',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['||tunnl.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://ana.tunnl.com',
+ },
+ {
+ filters: ['/awstats_misc_tracker'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.scr.indianrailways.gov.in/js/awstats_misc_tracker.js',
+ },
+ {
+ filters: ['||addkt.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://plus.addkt.com',
+ },
+ {
+ filters: ['/certona.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://corp.narvar.com/wp-content/uploads/2016/10/certona.png',
+ },
+ {
+ filters: ['||tracking.adalyser.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracking.adalyser.com',
+ },
+ {
+ filters: ['||ist-track.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ist-track.com',
+ },
+ {
+ filters: ['/analysis-logger/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://eae-logger.ekstrabladet.dk/analysis-logger/',
+ },
+ {
+ filters: ['||tag.brandcdn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tag.brandcdn.com',
+ },
+ {
+ filters: ['/adservices.', '||brandcdn.com/pixel/', '/cv_pixel.', '/pixel/cv_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adservices.brandcdn.com/pixel/cv_pixel.js',
+ },
+ {
+ check: true,
+ filters: ['/adstream.$domain=~adstream.com|~adstream.com.ro', '/adstream.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://twc.timewarnercable.com/RealMedia/ads/adstream.track',
+ },
+ {
+ filters: ['/pixel/cv?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://adservices.brandcdn.com/pixel/cv?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['||clickmon.co.kr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://tab2.clickmon.co.kr',
+ },
+ {
+ filters: ['/ystat.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tw.js.webmaster.yahoo.com/349610/ystat.js',
+ },
+ {
+ filters: ['||whistleout.com/Widgets/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.whistleout.com/Widgets/',
+ },
+ {
+ filters: ['*/ads.js$script,important,redirect=noopjs,domain=tune.pk'],
+ sourceUrl: 'https://tune.pk',
+ type: 'script',
+ url: 'https://tune.pk/js/ads.js',
+ },
+ {
+ filters: ['/cb_ads_manager/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tune.pk/plugins/cb_ads_manager/',
+ },
+ {
+ filters: ['/api/ad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ad.ilikesponsorad.com/api/ad/',
+ },
+ {
+ filters: ['.pk/ads/', '/ads/assets/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static2.tune.pk/ads/assets/',
+ },
+ {
+ filters: ['/html.ng/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://p8u.hinet.net/html.ng/',
+ },
+ {
+ filters: ['||vmmpxl.com^', '||vmmpxl.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secfld.vmmpxl.com',
+ },
+ {
+ filters: ['||baidu.com/tb/pms/img/st.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://static.tieba.baidu.com/tb/pms/img/st.gif?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['/visitor.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://store.adaware.com/clickgate/btn/visitor.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ '/ad_left_',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/ad_left_200_google_clickmon.html',
+ },
+ {
+ filters: ['/gigyaGAIntegration.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdns.gigya.com/js/gigyaGAIntegration.js',
+ },
+ {
+ filters: ['||coinpot.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.coinpot.co',
+ },
+ {
+ filters: ['||evantative.top^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://evantative.top',
+ },
+ {
+ filters: ['@@||spaste.com^$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.spaste.com',
+ },
+ {
+ filters: ['||meta.ua/c.asp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://meta.ua/c.asp?',
+ },
+ {
+ filters: ['/728-90.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://imgs.seemorgh.com/contenet1397/ads/07/1/728-90.gif',
+ },
+ {
+ filters: ['/sticky-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pressroomvip.online/wp-content/plugins/sticky-ad-bar',
+ },
+ {
+ filters: ['||service4refresh.info^', '||service4refresh.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://service4refresh.info',
+ },
+ {
+ filters: ['||awltovhc.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.awltovhc.com',
+ },
+ {
+ filters: ['||lduhtrp.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.lduhtrp.net',
+ },
+ {
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=pcgames-download.com'],
+ sourceUrl: 'https://www.pcgames-download.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://pcgames-download.com',
+ type: 'script',
+ url: 'https://pcgames-download.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=1movies.se|1movies.is'],
+ sourceUrl: 'https://www1.1movies.is',
+ type: 'xhr',
+ url: 'https://kz6c.piguiqproxy.com',
+ },
+ {
+ check: true,
+ filters: ['||amgload.net^$xmlhttprequest,redirect=nooptext,domain=1movies.se|1movies.is'],
+ sourceUrl: 'https://www1.1movies.is',
+ type: 'xhr',
+ url: 'https://xk6o.amgload.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://pcgames-download.com',
+ type: 'script',
+ url: 'https://pcgames-download.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||hit.meta.ua^'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://hit.meta.ua',
+ },
+ {
+ check: true,
+ filters: ['||youradexchange.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.youradexchange.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://admob.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/tracking_pixel'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.jetpackdigital.com/tracking_pixel.gif',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['||d3al52d8cojds7.cloudfront.net^', '||cloudfront.net/?tid='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3al52d8cojds7.cloudfront.net/?tid=630845',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://pcgames-download.com',
+ type: 'script',
+ url: 'https://pcgames-download.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||streamplay.to^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.streamplay.to',
+ },
+ {
+ filters: ['/popundercode18.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hdeuropix.io/js/popundercode18.js',
+ },
+ {
+ filters: ['/ad_file/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.mitbbs.com/ad_file/',
+ },
+ {
+ filters: ['/recommendtrack?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://horizon.sailthru.com/horizon/recommendtrack?',
+ },
+ {
+ filters: ['/ad/script/*', '@@||fastly.net/ad/$image,script,xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://0914.global.ssl.fastly.net/ad/script/',
+ },
+ {
+ filters: ['||reargooduches.pro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://reargooduches.pro',
+ },
+ {
+ filters: ['||linkconnector.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.linkconnector.com',
+ },
+ {
+ filters: ['||omarsys.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://eventtracking.omarsys.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.w3.org',
+ type: 'script',
+ url: 'https://www.w3.org/blog/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||decenthat.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.decenthat.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['/imgad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.jansatta.com/2015/08/imgad.jpg',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.gasengi.com',
+ type: 'document',
+ url: 'http://www.gasengi.com/ad/',
+ },
+ {
+ filters: ['/nativead/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://adtima-static.zadn.vn/resource/css/nativead/',
+ },
+ {
+ filters: ['/gomez.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://m.liquidation.com/shared/js/gomez.js',
+ },
+ {
+ filters: ['||geo.gorillanation.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://geo.gorillanation.com',
+ },
+ {
+ filters: ['@@|https://api-secure.solvemedia.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api-secure.solvemedia.com',
+ },
+ {
+ filters: ['||a-ads.com^$third-party', '||a-ads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ad.a-ads.com',
+ },
+ {
+ filters: ['||lastpass.com^*/analyticsjs'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lastpass.com/m.php/analyticsjs',
+ },
+ {
+ filters: ['||zergnet.com/zerg-inf-multi$third-party,script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.zergnet.com/zerg-inf-multi.js',
+ },
+ {
+ filters: ['||userdive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://harpoon3.userdive.com',
+ },
+ {
+ filters: ['||bubblesmedia.ru^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www2.bubblesmedia.ru',
+ },
+ {
+ filters: ['/keen.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d26b395fwzu5fz.cloudfront.net/3.2.7/keen.min.js',
+ },
+ {
+ filters: ['@@||cdn.amplitude.com/libs/amplitude-*.gz.js$script,domain=letgo.com'],
+ sourceUrl: 'https://de.letgo.com',
+ type: 'script',
+ url: 'https://cdn.amplitude.com/libs/amplitude-4.1.1-min.gz.js',
+ },
+ {
+ filters: ['||reactful.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://visitor.reactful.com',
+ },
+ {
+ filters: ['.org/ads/', '/336x280.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://adclubonline.org/ads/336x280.asp',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['120x600.html|'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://passback.free.fr/pub/dl_120x600.html',
+ },
+ {
+ filters: ['||nharaeklya.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.nharaeklya.com',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ filters: ['||trendmd.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.trendmd.com',
+ },
+ {
+ filters: ['/frtrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.frys.com/js/frtrack.js',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ filters: ['/caixinlog.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://files.caixin.com/webjs/common/caixinlog.js',
+ },
+ {
+ filters: ['||adrelayer.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://loader.adrelayer.com',
+ },
+ {
+ filters: ['||laim.tv^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://www.laim.tv',
+ },
+ {
+ filters: ['/ga-lite.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.jsdelivr.net/ga-lite/latest/ga-lite.min.js',
+ },
+ {
+ filters: ['||paddle.com^*/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.paddle.com/paddle/analytics.js',
+ },
+ {
+ filters: ['||analytics.paddle.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.paddle.com',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['||mspcdn.net^*/partners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://assets.mspcdn.net/logos/partners/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ filters: ['||nitropay.com/nads/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.nitropay.com/nads/',
+ },
+ {
+ filters: ['/adstatic/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s3.pstatp.com/adstatic/',
+ },
+ {
+ filters: ['||xroonucyaoqljf.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.xroonucyaoqljf.com',
+ },
+ {
+ filters: ['||advarkads.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://public.advarkads.com',
+ },
+ {
+ filters: ['||cloudfront.net/khp.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2lv4zbk7v5f93.cloudfront.net/khp.js',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['/count.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://apollo.caixin.com/count.gif?',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ filters: ['/plus/ad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.aihami.com/plus/ad_js.php',
+ },
+ {
+ filters: ['||ftimg.net/js/log.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://static.ftimg.net/js/log.js?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://hot-sex-tube.com',
+ type: 'image',
+ url: 'http://tn.hot-sex-tube.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://hot-sex-tube.com',
+ type: 'image',
+ url: 'http://tn.hot-sex-tube.com/ad/',
+ },
+ {
+ filters: ['/pu-placer.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://mediaoaktree.com/pu-placer.js',
+ },
+ {
+ filters: ['/tools/analytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bmo.com/resources/scripts/tools/analytics/',
+ },
+ {
+ filters: ['||supert.ag^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.supert.ag',
+ },
+ {
+ filters: ['/468x80.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.pornexpert.net/v2/468x80.jpg',
+ },
+ {
+ filters: ['||youtube.com/api/stats/playback?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.youtube.com/api/stats/playback?',
+ },
+ {
+ filters: ['||youtube.com/ptracking?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.youtube.com/ptracking?',
+ },
+ {
+ filters: ['||youtube.com/pagead/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.youtube.com/pagead/',
+ },
+ {
+ filters: ['/weblog.js?', '||cafe24.com/weblog.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cafe24hosting.weblog.cafe24.com/weblog.js?',
+ },
+ {
+ filters: ['/logstat.', '||logstat.caixin.com^', '/clickheat^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://logstat.caixin.com/clickheat',
+ },
+ {
+ filters: ['||istripper.com^$third-party,domain=~istripper.eu'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://clicks.istripper.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||pubdirecte.com^$third-party,domain=~debrideurstream.fr', '||pubdirecte.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://pubdirecte.com',
+ },
+ {
+ filters: ['/abDetector.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d1rlca3pqma1yp.cloudfront.net/abdetector.js',
+ },
+ {
+ filters: ['/minder-tracker.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d1rlca3pqma1yp.cloudfront.net/minder-tracker.js',
+ },
+ {
+ filters: ['/scripts/ga.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.uh.edu/scripts/ga.js',
+ },
+ {
+ filters: ['||assoc-amazon.*^e/ir?t=$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.assoc-amazon.com/e/ir?t=encymetatheme-20&l=ur2&o=1',
+ },
+ {
+ filters: ['||assoc-amazon.ca^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.assoc-amazon.ca',
+ },
+ {
+ filters: ['||assoc-amazon.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.assoc-amazon.fr',
+ },
+ {
+ filters: ['||assoc-amazon.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.assoc-amazon.de',
+ },
+ {
+ filters: ['||assoc-amazon.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.assoc-amazon.co.uk',
+ },
+ {
+ filters: ['||aweber.com/form/displays.htm?$image', '||forms.aweber.com^*/displays.htm?id='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://forms.aweber.com/form/displays.htm?id=jMzs7CysrAysDA==',
+ },
+ {
+ filters: ['||analytics.styria.hr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.styria.hr',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://c.dx.com/openx/',
+ },
+ {
+ filters: ['@@||dx.com/openx/$image,first-party'],
+ sourceUrl: 'https://www.dx.com',
+ type: 'image',
+ url: 'http://e.dx.com/openx/',
+ },
+ {
+ check: true,
+ filters: ['468-60.gif|'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://parsfootball.com/wp-content/uploads/2017/08/simorgh468-60.gif',
+ },
+ {
+ filters: ['/ad_choices_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.advance.net/static/common/img/ad_choices_arrow_transparent.png',
+ },
+ {
+ filters: ['||burt.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.burt.io',
+ },
+ {
+ filters: ['||clickdimensions.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics-au.clickdimensions.com',
+ },
+ {
+ filters: ['||theonecdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.theonecdn.com',
+ },
+ {
+ filters: ['||events.turbosquid.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.turbosquid.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://parsfootball.com',
+ type: 'script',
+ url: 'http://parsfootball.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://parsfootball.com',
+ type: 'script',
+ url: 'http://parsfootball.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||storesurprise.com^', '||storesurprise.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://storesurprise.com',
+ },
+ {
+ filters: ['||adhitzads.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adhitzads.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://tribune.com.pk',
+ type: 'script',
+ url: 'https://tribune.com.pk/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||sfimg.com/SFIBanners/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.sfimg.com/SFIBanners/',
+ },
+ {
+ filters: ['||coinmedia.co^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://coinmedia.co',
+ },
+ {
+ filters: ['||plugrush.com^$third-party', '||plugrush.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://static.plugrush.com',
+ },
+ {
+ check: true,
+ filters: ['||derstandard.at/s/', '@@||derstandard.at/s/*$image,first-party'],
+ sourceUrl: 'https://text.derstandard.at',
+ type: 'image',
+ url: 'https://text.derstandard.at/s/',
+ },
+ {
+ filters: ['||skyrock.net/stats/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.skyrock.net/stats/',
+ },
+ {
+ filters: ['||horyzon-media.com^$third-party', '||ads.horyzon-media.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.horyzon-media.com',
+ },
+ {
+ filters: ['||mms.nj.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mms.nj.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'script',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||oboxads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.oboxads.com',
+ },
+ {
+ filters: ['.php?p=stats&'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://video.almstba.tv/ajax.php?p=stats&do=show&aid=1&at=1',
+ },
+ {
+ filters: ['||masture.mobi^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://masture.mobi',
+ },
+ {
+ filters: ['||lporirxe.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://flx790.lporirxe.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://ads.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||truehits.net^', '||truehits.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://webrank.truehits.net',
+ },
+ {
+ filters: ['||kqzyfj.com/placeholder-$third-party', '||kqzyfj.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.kqzyfj.com/placeholder-34352774',
+ },
+ {
+ filters: ['||dpbolvw.net/placeholder-$third-party', '||dpbolvw.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dpbolvw.net/placeholder-34352780',
+ },
+ {
+ filters: ['/468x60-'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://static1.freebitco.in/banners/468x60-3.png',
+ },
+ {
+ filters: ['||yceml.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://www.yceml.net',
+ },
+ {
+ filters: ['@@||bom.gov.au/*/analytics.js$script,first-party'],
+ sourceUrl: 'http://www.bom.gov.au',
+ type: 'script',
+ url: 'http://www.bom.gov.au/includes/analytics.js',
+ },
+ {
+ filters: ['/ztagtrackedevent/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://report-zt.1rx.io/ztagtrackedevent/',
+ },
+ {
+ filters: ['/gifstats.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.skyrock.com/profil/gifstats.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://tribune.com.pk',
+ type: 'script',
+ url: 'https://tribune.com.pk/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.tubexclips.com',
+ type: 'image',
+ url: 'http://tn.tubexclips.com/ad/',
+ },
+ {
+ filters: ['/backlink2.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.morevisits.info/services/backlink/backlink2.php',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.tubexclips.com',
+ type: 'image',
+ url: 'http://tn.tubexclips.com/ad/',
+ },
+ {
+ filters: ['||ultimedia.com/deliver/statistiques/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ultimedia.com/deliver/statistiques/',
+ },
+ {
+ filters: ['||vdopia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cs.vdopia.com',
+ },
+ {
+ filters: ['||videoadex.com^$third-party', '||videoadex.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.videoadex.com',
+ },
+ {
+ filters: ['||rek.www.wp.pl^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rek.www.wp.pl',
+ },
+ {
+ filters: ['||ultimedia.com/v/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://dig.ultimedia.com/v/',
+ },
+ {
+ filters: ['@@||anandabazar.com/js/anandabazar-bootstrap/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.anandabazar.com/js/anandabazar-bootstrap/',
+ },
+ {
+ filters: [
+ '@@/google-analytics-dashboard',
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['||traq.li/tracker/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.traq.li/tracker/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@||video.unrulymedia.com^$script,subdocument,domain=allmusic.com|sidereel.com|springstreetads.com',
+ ],
+ sourceUrl: 'https://www.sidereel.com',
+ type: 'script',
+ url: 'https://video.unrulymedia.com',
+ },
+ {
+ filters: ['-appanalytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://prod-sb-appanalytics-us1.servicebus.windows.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['/stat/count'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://getcourse.ru/stat/counter',
+ },
+ {
+ filters: ['-ad-code/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.c4assets.com/all4-ad-code/',
+ },
+ {
+ filters: ['||responsetap.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-ssl.responsetap.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['@@||anandabazar.com/js/ads.js$script,first-party'],
+ sourceUrl: 'https://www.anandabazar.com',
+ type: 'script',
+ url: 'https://www.anandabazar.com/js/ads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://senego.com',
+ type: 'script',
+ url: 'https://senego.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['||revolvermaps.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ra.revolvermaps.com',
+ },
+ {
+ filters: ['@@||jagranjosh.com/Resources/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.jagranjosh.com/Resources/',
+ },
+ {
+ filters: ['||log.r7.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://home.log.r7.com',
+ },
+ {
+ filters: ['||audience-mostread.r7.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://audience-mostread.r7.com',
+ },
+ {
+ filters: ['||hoverr.media^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ht-mob91mobiles.hoverr.media',
+ },
+ {
+ filters: ['?ZoneID=*&SiteID=*&PageID='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://banman.iafd.com/a.aspx?ZoneID=1&Task=Get&Mode=HTML&SiteID=1&PageID=27223',
+ },
+ {
+ filters: ['/popunder?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.adnium.com/popunder?',
+ },
+ {
+ filters: ['||valshara.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.valshara.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://tribune.com.pk',
+ type: 'script',
+ url: 'https://tribune.com.pk/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||analytics.ladmedia.fr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://analytics.ladmedia.fr',
+ },
+ {
+ filters: ['/ad_axt_', '/axt/ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.automatad.com/axt/ad_axt_91mobiles_mob.min.js',
+ },
+ {
+ filters: ['||rtb-usync.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rtb-usync.com',
+ },
+ {
+ filters: ['||theagency.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.theagency.com',
+ },
+ {
+ filters: ['||awept.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://awept.com',
+ },
+ {
+ filters: ['||personalicanvas.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.personalicanvas.com',
+ },
+ {
+ filters: ['||trk.adbutter.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trk.adbutter.net',
+ },
+ {
+ filters: ['||early-birds.fr/tracker/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://api.early-birds.fr/tracker/',
+ },
+ {
+ filters: ['/analytics-cdn.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics-cdn.prezly.com',
+ },
+ {
+ filters: ['||analytics.prezly.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.prezly.com',
+ },
+ {
+ filters: ['&adnet='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.desafiomundial.com/images/spacer.gif?abk=1&adnet=1&t=318033',
+ },
+ {
+ filters: ['||k-analytix.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.k-analytix.com',
+ },
+ {
+ filters: [
+ '@@||vg247.com^$script,domain=eurogamer.net|nintendolife.com|rockpapershotgun.com|usgamer.net|vg247.com',
+ ],
+ sourceUrl: 'https://www.vg247.com',
+ type: 'script',
+ url: 'https://www.vg247.com',
+ },
+ {
+ filters: ['||georiot.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.georiot.com',
+ },
+ {
+ filters: ['/ga_tracking.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.probiller.com/assets/shared/js/ga_tracking.js',
+ },
+ {
+ filters: ['||static-sb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-sb.com',
+ },
+ {
+ filters: ['||social-sb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://social-sb.com',
+ },
+ {
+ filters: ['||cameraprive.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.cameraprive.com',
+ },
+ {
+ filters: ['/image/sponsors/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://st.snimg.com/image/sponsors/',
+ },
+ {
+ filters: ['/bluekai.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st.snimg.com/section-front/js/bluekai.js',
+ },
+ {
+ filters: ['/responsive-ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st.snimg.com/section-front/js/responsive-ad.js',
+ },
+ {
+ filters: ['/pixel_iframe.'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://secure.imvu.com/pixel_iframe.php',
+ },
+ {
+ filters: ['-comscore.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.zedo.com/wp-content/uploads/2013/07/partner-comscore.png',
+ },
+ {
+ filters: ['||zedo.com/img/bh.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tt7.zedo.com/img/bh.gif?',
+ },
+ {
+ filters: ['/report_ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ksl.com/javascript/report_ad_gpt_responsive.js',
+ },
+ {
+ filters: ['||ddm.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sense.ddm.io',
+ },
+ {
+ filters: ['||rs-stripe.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stripe.rs-stripe.com',
+ },
+ {
+ filters: ['/adbox/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://res.oitool.com/adbox/',
+ },
+ {
+ filters: ['||geolocation.performgroup.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.geolocation.performgroup.com',
+ },
+ {
+ filters: ['||stats.bluebillywig.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.bluebillywig.com',
+ },
+ {
+ filters: ['/quantcast.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://st.snimg.com/section-front/js/quantcast.js',
+ },
+ {
+ filters: ['||thegatewaypundit.com^*.png$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.thegatewaypundit.com/wp-content/uploads/bottom-triangle.png',
+ },
+ {
+ filters: ['/gads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.anandabazar.com/js/anandabazar-bootstrap/gads.js',
+ },
+ {
+ filters: ['||i.ligatus.com/*-placements/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://i.ligatus.com/fr-placements/',
+ },
+ {
+ filters: ['@@||intensedebate.com/js/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.intensedebate.com/js/',
+ },
+ {
+ filters: [
+ '@@||doubleclick.net/instream/ad_status.js$domain=eurogamer.net|nintendolife.com|rockpapershotgun.com|usgamer.net|vg247.com',
+ ],
+ sourceUrl: 'https://www.vg247.com',
+ type: 'script',
+ url: 'https://static.doubleclick.net/instream/ad_status.js',
+ },
+ {
+ filters: ['||steadfastsystem.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://steadfastsystem.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.oantagonista.com',
+ type: 'script',
+ url: 'https://www.oantagonista.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/responsive_ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.sigmalive.com/assets/js/responsive_ads.js',
+ },
+ {
+ filters: ['/tealium.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rfa.org/english/tealium.js',
+ },
+ {
+ filters: ['/bannerframe.*?'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ero-video.net/advert/bannerFrame.html?',
+ },
+ {
+ filters: ['||affiliate.dtiserv.com^$third-party', '||affiliate.dtiserv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://affiliate.dtiserv.com',
+ },
+ {
+ filters: ['||octopuspop.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.octopuspop.com',
+ },
+ {
+ filters: ['/trovit-analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.trovit.com/trovit-analytics.js',
+ },
+ {
+ filters: ['/adnet.$domain=~adnet.agency|~adnet.hr'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adnet.pravda.com',
+ },
+ {
+ filters: ['||adfill.me^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adfill.me',
+ },
+ {
+ filters: ['||retailrocket.ru/content/javascript/tracking.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.retailrocket.ru/content/javascript/tracking.js',
+ },
+ {
+ filters: ['||tms-st.cdn.ngenix.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tms-st.cdn.ngenix.net',
+ },
+ {
+ filters: ['_loader_adv-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.3bmeteo.com/js/static/js_loader_adv-dd050bc1b3.min.js',
+ },
+ {
+ filters: ['||tracking.retailrocket.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracking.retailrocket.net',
+ },
+ {
+ filters: ['/event/pageview/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://tracking.retailrocket.net/1.0/event/pageView/',
+ },
+ {
+ filters: ['/adserv.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://kinogo.eu/templates/kinogo/js/adserv.js',
+ },
+ {
+ filters: ['/admicro_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://media1.admicro.vn/core/viewplus/admicro_core_vplus_mb.js',
+ },
+ {
+ filters: ['_300x250-'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://banners.adfox.ru/170301/adfox/657447/default_300x250-1.html',
+ },
+ {
+ filters: ['||rakuten.co.jp/gw.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://grp15.ias.rakuten.co.jp/gw.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://genndi.com',
+ type: 'script',
+ url: 'https://genndi.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/analytics/track.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.24sata.hr/analytics/track.js',
+ },
+ {
+ filters: ['||pogo.com/v/*/js/ad.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pogo.com/v/CjsBMQ/js/ad.js',
+ },
+ {
+ filters: ['@@||cloudflare.com^*/fingerprint2.min.js$domain=saavn.com'],
+ sourceUrl: 'https://www.saavn.com',
+ type: 'script',
+ url: 'https://cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/1.5.1/fingerprint2.min.js',
+ },
+ {
+ filters: ['/css/ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://sportnews.to/chatbox/css/ads.css',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://genndi.com',
+ type: 'script',
+ url: 'https://genndi.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '||dt00.net^$third-party,domain=~marketgid.com|~marketgid.ru|~marketgid.ua|~mgid.com|~thechive.com',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://jsc.dt00.net',
+ },
+ {
+ filters: ['/informerStat?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://bravo.newsru.co.il/informer/informerStat?',
+ },
+ {
+ filters: ['.hr/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://m.24sata.hr/ads.txt',
+ },
+ {
+ filters: ['/edAnalyticsWrapper.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://downloads.redbull.com/webtrekk/edAnalyticsWrapper.js',
+ },
+ {
+ filters: ['/analytics-ingress-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics-ingress-global.bitmovin.com',
+ },
+ {
+ filters: ['/adscloud.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://adscloud.biz',
+ },
+ {
+ filters: ['||d2muzdhs7lpmo0.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2muzdhs7lpmo0.cloudfront.net',
+ },
+ {
+ filters: ['||drf8e429z5jzt.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://drf8e429z5jzt.cloudfront.net',
+ },
+ {
+ filters: ['/assets/ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s6.travelask.ru/assets/ad-banner',
+ },
+ {
+ filters: ['/deadblocker/*', '/wp-content/plugins/deadblocker/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.tvserial.it/wp-content/plugins/deadblocker/',
+ },
+ {
+ filters: ['||goodtag.it^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://goodtag.it',
+ },
+ {
+ check: true,
+ filters: ['*/wp-content/plugins/deadblocker/*$script,first-party'],
+ sourceUrl: 'http://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/deadblocker/',
+ },
+ {
+ filters: [
+ '@@||disquscdn.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|freewarefiles.com|gamerant.com|gamersheroes.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|usherald.com|valuewalk.com|vcpost.com|vgpie.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.thegatewaypundit.com',
+ type: 'script',
+ url: 'https://c.disquscdn.com',
+ },
+ {
+ filters: ['_120x600_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://netrefer-a.akamaihd.net/williamhill/WilliamHill_Logo_120x600_2018.jpg',
+ },
+ {
+ filters: ['/affimages/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wlbetathome.eacdn.com/wlbetathome/affimages/',
+ },
+ {
+ filters: [
+ '@@||platform.twitter.com^$image,domain=allthingsvegas.com|dailydot.com|dailywire.com|legalinsurrection.com|newser.com|quirlycues.com|thegatewaypundit.com|viralnova.com|xtribune.com',
+ ],
+ sourceUrl: 'https://www.thegatewaypundit.com',
+ type: 'image',
+ url: 'https://platform.twitter.com',
+ },
+ {
+ filters: ['||soccervista.com/bonus.html'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.soccervista.com/bonus.html',
+ },
+ {
+ filters: ['||ads.betfair.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ads.betfair.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@||apis.google.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|askmefast.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breathecast.com|bugout.news|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailysurge.com|dailywire.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|enstarz.com|evil.news|freedom.news|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|greatamericanrepublic.com|guns.news|gymflow100.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|infowars.com|instigatornews.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|oddee.com|opednews.com|patriotoutdoornews.com|patriottribune.com|politichicks.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|wakingtimes.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.thegatewaypundit.com',
+ type: 'script',
+ url: 'https://apis.google.com',
+ },
+ {
+ filters: ['_300x600_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/5677799/TH18_Winnie_Eyewear_300x600_en.jpg',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/advertisement1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.mapsofindia.com/advertisement1.png',
+ },
+ {
+ filters: ['468x60.jpg|'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://link-banner.xn--41a.ws/i/banners/468x60.jpg',
+ },
+ {
+ filters: ['||ti.com/assets/js/headerfooter/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ti.com/assets/js/headerfooter/',
+ },
+ {
+ filters: ['/get?affid=$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://brweb-a.akamaihd.net/get?affid=8208&subaffid=1001',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/tracker-setting.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://greedy-snake.thenewslens.com/publish/thenewslens/tracker-setting.js',
+ },
+ {
+ filters: ['/wp-bannerize/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://www.justjared.com/wp-content/plugins/wp-bannerize/',
+ },
+ {
+ filters: ['.in/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve.j2k9.in/ads.js',
+ },
+ {
+ filters: ['||adspeed.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://g.adspeed.net/ad.php?',
+ },
+ {
+ filters: ['||analytics.thenewslens.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://analytics.thenewslens.com',
+ },
+ {
+ filters: ['||projectwonderful.com^$third-party', '||projectwonderful.com^', '/ad_display.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.projectwonderful.com/ad_display.js',
+ },
+ {
+ filters: [
+ '|https://$image,script,subdocument,xmlhttprequest,domain=depositfiles.com|depositfiles.org|dfiles.eu|dfiles.ru',
+ '@@||depositfiles.com/js/$script',
+ '@@||static.depositfiles.com^$image,script',
+ '@@||static.depositfiles.com^$script',
+ ],
+ sourceUrl: 'https://dfiles.eu',
+ type: 'script',
+ url: 'https://static.depositfiles.com/js/',
+ },
+ {
+ filters: ['@@||static.depositfiles.com^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.depositfiles.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||log000.goo.ne.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://log000.goo.ne.jp',
+ },
+ {
+ filters: ['/global/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.syl.ru/misc/js/global/ads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tvserial.it',
+ type: 'script',
+ url: 'https://www.tvserial.it/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['_728_90.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adcdn.goo.ne.jp/images/banner/2018-07-30_10/g08_728_90.jpg',
+ },
+ {
+ filters: ['||zontera.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://core.zontera.com',
+ },
+ {
+ filters: ['.com/x0.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://core1.zontera.com/x0.gif?',
+ },
+ {
+ filters: ['/z.inc.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bilder.fernsehserien.de/z/z.inc.php?',
+ },
+ {
+ filters: ['/site_stats/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://xslt.alexa.com/site_stats/',
+ },
+ {
+ filters: ['.digital/ads/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://hiru.digital/ads/',
+ },
+ {
+ filters: ['/homeadsscript.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.aljazeera.com/assets/scripts/homeadsscript.js',
+ },
+ {
+ check: true,
+ filters: ['/exitpopup.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://us-ws.gr-cdn.com/javascripts/global/ExitPopup.min.c9ad0e5e.js',
+ },
+ {
+ filters: ['_468x60_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s.mobile.ir/Static/b/wb_468x60_20181022_hotdeal.gif',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['/adsscript.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.aljazeera.com/assets/scripts/adsscript.js',
+ },
+ {
+ filters: ['||pix.telekom.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pix.telekom.de',
+ },
+ {
+ filters: ['_468x60.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/6975435/MAS_HST_MARCOM_EN_DBMOA_PROS_468X60.gif',
+ },
+ {
+ filters: ['/writelog.$domain=~writelog.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://news.bnu.edu.cn/cms/web/writeLog.jsp',
+ },
+ {
+ check: true,
+ filters: ['/adclick/*'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://a.centrum.cz/cent/adclick/',
+ },
+ {
+ filters: ['||leadforensics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.leadforensics.com',
+ },
+ {
+ filters: ['@@||animenewsnetwork.com/javascripts/advertisement.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.animenewsnetwork.com/javascripts/advertisement.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['||sat24.com/bannerdetails.aspx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.sat24.com/bannerdetails.aspx?',
+ },
+ {
+ filters: ['||pathful.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.pathful.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.free-power-point-templates.com',
+ type: 'script',
+ url: 'https://cdn.free-power-point-templates.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||google-analytics.com/plugins/ga/inpage_linkid.js$domain=lovehoney.co.uk|maxiclimber.com|opendns.com|openshift.com|vimeo.com|westernunion.at|westernunion.be|westernunion.ca|westernunion.ch|westernunion.cl|westernunion.co.jp|westernunion.co.nz|westernunion.co.uk|westernunion.co.za|westernunion.com|westernunion.com.au|westernunion.com.co|westernunion.com.hk|westernunion.com.my|westernunion.com.pe|westernunion.de|westernunion.fr|westernunion.ie|westernunion.it|westernunion.nl|westernunion.ph|westernunion.pl|westernunion.se|westernunion.sg',
+ ],
+ sourceUrl: 'https://login.opendns.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/plugins/ga/inpage_linkid.js',
+ },
+ {
+ filters: ['||rdstation.com.br^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pageview-notify.rdstation.com.br',
+ },
+ {
+ filters: ['||webtracker.jp^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.webtracker.jp',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: ['_336x280_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/5677799/TH18_Winnie_Eyewear_336x280_en.jpg',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: ['||tercept.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.tercept.com',
+ },
+ {
+ filters: ['/logviewedpage?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ska-ingestion.sportskeeda.com/logviewedpage?',
+ },
+ {
+ filters: ['||stats.paypal.com^', '/counter.cgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b.stats.paypal.com/counter.cgi?',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['||propellerads.com^$third-party', '||propellerads.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://native.propellerads.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: ['||cdn-analytics.ladmedia.fr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn-analytics.ladmedia.fr',
+ },
+ {
+ filters: ['||stat.iteye.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://stat.iteye.com',
+ },
+ {
+ filters: ['||a2dfp.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://fr.a2dfp.net',
+ },
+ {
+ filters: ['||ampxchange.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ampxchange.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: ['||thewhizproducts.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.thewhizproducts.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lumpics.ru',
+ type: 'script',
+ url: 'http://lumpics.ru/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@||onesignal.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.estrenosdoramas.net',
+ type: 'script',
+ url: 'https://cdn.onesignal.com',
+ },
+ {
+ filters: ['||poirreleast.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://poirreleast.club',
+ },
+ {
+ filters: ['/adlink?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.babyblog.ru/adlink?',
+ },
+ {
+ filters: ['||babyblog.ru/pixel?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.babyblog.ru/pixel?',
+ },
+ {
+ filters: ['/adsame.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adsame.cyol.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lumpics.ru',
+ type: 'script',
+ url: 'http://lumpics.ru/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['/SetSabreAnalyticsCookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.jetblue.com/js/SetSabreAnalyticsCookie.js',
+ },
+ {
+ filters: ['/ga*.js?PID='],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.apa.org/ga789068.js?PID=1E9B0FF7-9E1F-379F-A90E-F22277DBECF9',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://s.famitsu.com',
+ type: 'script',
+ url: 'https://s.famitsu.com/ad/',
+ },
+ {
+ filters: ['/statistics/pageStat/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://101.ru/api/statistics/pageStat/',
+ },
+ {
+ filters: ['/webtag.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://about.textnow.com/wp-content/plugins/guideme//js/webtag.js',
+ },
+ {
+ filters: ['/analytics/ping^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://app.vagalume.com.br/analytics/ping',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lumpics.ru',
+ type: 'script',
+ url: 'http://lumpics.ru/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||doubleclick.net/ad/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.doubleclick.net/ad/',
+ },
+ {
+ filters: [
+ '@@||jwplatform.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://www.estrenosdoramas.net',
+ type: 'script',
+ url: 'https://content.jwplatform.com',
+ },
+ {
+ filters: ['||adsame.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://imgdemo.adsame.com',
+ },
+ {
+ filters: ['||toro-tags.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://toro-tags.com',
+ },
+ {
+ filters: ['||toroadvertisingmedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://toroadvertisingmedia.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'http://www.lbldy.com',
+ type: 'image',
+ url: 'http://www.lbldy.com/ad/',
+ },
+ {
+ filters: ['||l.qq.com^$~object-subrequest,~xmlhttprequest', '||l.qq.com^$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cm.l.qq.com',
+ },
+ {
+ filters: ['||ad.reklamport.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.reklamport.com',
+ },
+ {
+ filters: ['/rpgetad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.reklamport.com/rpgetad.ashx',
+ },
+ {
+ filters: ['/lazyad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sprstatic2.blob.core.windows.net/615/js/lazyad-loader.min.js',
+ },
+ {
+ filters: ['||etracker.de^', '||etracker.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.etracker.de',
+ },
+ {
+ filters: ['/en/ads/*'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://ikman.lk/en/ads/',
+ },
+ {
+ filters: ['||tabici.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.tabici.com',
+ },
+ {
+ filters: ['/elqimg.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ultimatesoftware.com/Scripts/elqNow/elqImg.js',
+ },
+ {
+ filters: ['/log-nt/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://qoe-1.yottaa.net/log-nt/',
+ },
+ {
+ filters: ['/clicktracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://clicktracker.nznweb.com.br',
+ },
+ {
+ filters: ['.com/e.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.sellpoints.com/e.gif?',
+ },
+ {
+ filters: ['||porcore.com/uploads/f/$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://porcore.com/uploads/f/',
+ },
+ {
+ filters: ['||vs3.com/_special/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://secure.vs3.com/_special/banners/',
+ },
+ {
+ filters: ['||swoop.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ardrone.swoop.com',
+ },
+ {
+ filters: ['||yieldify.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://app.yieldify.com',
+ },
+ {
+ filters: ['.lazyload-ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gcdn.emol.cl/static/js/jquery.lazyload-ad-1.4.js',
+ },
+ {
+ filters: ['||top10sportsites.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://top10sportsites.com',
+ },
+ {
+ filters: ['||fastcounter.de^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.fastcounter.de',
+ },
+ {
+ check: true,
+ filters: ['@@*$xmlhttprequest,domain=firstonetv.net'],
+ sourceUrl: 'http://www.firstonetv.net',
+ type: 'xhr',
+ url: 'http://',
+ },
+ {
+ filters: ['/adRoll.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.adsclk.com/img/adroll.jpg',
+ },
+ {
+ filters: ['/imp/a.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.affiliate.rakuten.co.jp/mw/imp/a.gif?',
+ },
+ {
+ filters: ['/appier-track-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jscdn.appier.net/js/appier-track-v1.7.js',
+ },
+ {
+ filters: ['/ad/html/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ad.tagtoo.co/static/ad/html/',
+ },
+ {
+ filters: ['-ad2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://content.ad2iction.com/mediascroll/mediascroll-ad2.css',
+ },
+ {
+ filters: ['||adservicemedia.dk^$third-party', '/LastClick/js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://online.adservicemedia.dk/cgi-bin/Services/LastClick/js?',
+ },
+ {
+ filters: ['/universal-tracking-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www-static.cdn-one.com/js/universal-tracking-1.0.1.js',
+ },
+ {
+ filters: ['||sfiles.org/sw.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sfiles.org/sw.js',
+ },
+ {
+ filters: [
+ '|https://$image,script,subdocument,third-party,xmlhttprequest,domain=sfiles.org|suprafiles.me|suprafiles.net|suprafiles.org',
+ ],
+ sourceUrl: 'https://sfiles.org',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['/Pixel.pl?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://online.adservicemedia.dk/cgi-bin/Services/LastClick/Pixel.pl?',
+ },
+ {
+ filters: ['||tqlkg.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://www.tqlkg.com',
+ },
+ {
+ filters: ['||incogpontus.club^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://incogpontus.club',
+ },
+ {
+ filters: ['/image/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.pchome.net/public/image/ad/',
+ },
+ {
+ filters: ['||skeettools.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://v2.skeettools.com',
+ },
+ {
+ filters: ['||pnperf.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn-promox.pnperf.com',
+ },
+ {
+ filters: ['||benchtag2.co^$third-party', '/benchmarketingsmarttag/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://benchtag2.co/benchmarketingsmarttag/',
+ },
+ {
+ filters: ['||adbit.biz^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://adbit.biz',
+ },
+ {
+ filters: ['||bitcoadz.io^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.bitcoadz.io',
+ },
+ {
+ filters: ['/468x60_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://s3.amazonaws.com/mtvpv-banners-live/banners/pv/general/468x60_3.gif',
+ },
+ {
+ filters: ['/lazy-ads@'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://cdn.jsdelivr.net/npm/lazy-ads@1',
+ },
+ {
+ filters: ['||wnp.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://wnp.com',
+ },
+ {
+ filters: ['_468_60.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.bitcoadz.io/upload/1373_468_60.gif',
+ },
+ {
+ filters: ['||afgr3.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.afgr3.com',
+ },
+ {
+ filters: ['||ysm.yahoo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://partnerads.ysm.yahoo.com',
+ },
+ {
+ filters: ['/adguard.$domain=~adguard.com|~adguard.mobi|~adguard.oneskyapp.com|~greinr.com'],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'http://adguard.com',
+ },
+ {
+ filters: ['||vfgta.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://v.vfgta.com',
+ },
+ {
+ filters: ['||yahoo.com/beacon/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://search.yahoo.com/beacon/',
+ },
+ {
+ filters: ['/468-60.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://wnp.com/static/img/mybanner/468-60.gif',
+ },
+ {
+ filters: ['/trkpixel.gif'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://top10sportsites.com/trkpixel.gif',
+ },
+ {
+ filters: ['/khan_analystics.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.khan.co.kr/spko/js/khan_analystics.js',
+ },
+ {
+ filters: ['||srx.com.sg^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.srx.com.sg',
+ },
+ {
+ filters: ['|https://$third-party,script,domain=descargasnsn.com|jkanime.net'],
+ sourceUrl: 'https://jkanime.net',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||plista.com/activity'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://farm-de.plista.com/activity2;domainid:243466;campaignid:254566;event:11',
+ },
+ {
+ filters: ['/ganalytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static00.forvo.com/_presentation/assets/js/vendor/ganalytics.js',
+ },
+ {
+ filters: ['||ad.khan.co.kr^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ad.khan.co.kr',
+ },
+ {
+ filters: ['||retentionscience.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://waves.retentionscience.com',
+ },
+ {
+ filters: ['?offer_id=*&aff_id='],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://appfocus.go2cloud.org/aff_c?offer_id=2040&aff_id=1&source=-lp0',
+ },
+ {
+ filters: ['/stats-dc1.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.accorhotels.com/fstrz/r/stats-dc1.fzcdn.net',
+ },
+ {
+ filters: ['/ad-server/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.jbhifi.com.au/ad-server/',
+ },
+ {
+ filters: ['/pixeltracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://playercdn.jivox.com/images/pixeltracker.gif',
+ },
+ {
+ filters: ['/adtext_'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://cdn.new-star.co.kr/data/adnew/1908/4665/adtext_1908_4665.html',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.hearthstonetopdecks.com',
+ type: 'script',
+ url: 'https://www.hearthstonetopdecks.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||wywyuserservice.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wywyuserservice.com',
+ },
+ {
+ filters: ['/img/tracking-$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gdeposylka.ru/img/tracking-parcel.png',
+ },
+ {
+ filters: ['||sat.sanoma.fi^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sat.sanoma.fi',
+ },
+ {
+ filters: [
+ '@@||swatchseries.to/public/js/jquery$script,domain=dwatchseries.to|swatchseries.to|thewatchseries.ac|unblckd.org|watchseries.sk',
+ ],
+ sourceUrl: 'https://www1.swatchseries.to',
+ type: 'script',
+ url: 'https://static.swatchseries.to/public/js/jquery-1.10.2.min.js',
+ },
+ {
+ check: true,
+ filters: [
+ '|https://$other,script,stylesheet,third-party,xmlhttprequest,domain=dwatchseries.to|swatchseries.to|thewatchseries.ac|unblckd.org|watchseries.sk',
+ ],
+ sourceUrl: 'https://www1.swatchseries.to',
+ type: 'stylesheet',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||swatchseries.to/sw.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www1.swatchseries.to/sw.js',
+ },
+ {
+ check: true,
+ filters: ['||d2fbkzyicji7c4.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2fbkzyicji7c4.cloudfront.net',
+ },
+ {
+ filters: ['-adops.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bem-upload-adops.s3.amazonaws.com',
+ },
+ {
+ filters: ['||t.beopinion.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://t.beopinion.com',
+ },
+ {
+ filters: ['||gamestar.de/_misc/tracking/$domain=gamestar.de', '||gamestar.de/_misc/tracking/'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'image',
+ url: 'https://www.gamestar.de/_misc/tracking/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.hearthstonetopdecks.com',
+ type: 'script',
+ url: 'https://www.hearthstonetopdecks.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||y-track.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://prod-js.aws.y-track.com',
+ },
+ {
+ filters: ['||google-analytics.com/analytics.js$domain=gamestar.de'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=gamestar.de'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['||wysistat.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.wysistat.com',
+ },
+ {
+ filters: ['||googletagmanager.com/gtm.js?$third-party,domain=gamestar.de'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['||scorecardresearch.com^$domain=gamestar.de'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'script',
+ url: 'https://sb.scorecardresearch.com',
+ },
+ {
+ check: true,
+ filters: [
+ '/get-tracking-data',
+ '@@||swatchseries.to/show/get-tracking-data$xmlhttprequest,first-party',
+ ],
+ sourceUrl: 'https://www1.swatchseries.to',
+ type: 'xhr',
+ url: 'https://www1.swatchseries.to/show/get-tracking-data',
+ },
+ {
+ filters: ['@@||adnxs.com/as/1h/pages/transfermarkt.js$domain=transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://acdn.adnxs.com/as/1h/pages/transfermarkt.js',
+ },
+ {
+ filters: ['||tmssl.akamaized.net//ads/ads.js$domain=transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://tmssl.akamaized.net//ads/ads.js',
+ },
+ {
+ check: true,
+ filters: ['||adsafeprotected.com^$domain=imasdk.googleapis.com|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'xhr',
+ url: 'https://pixel.adsafeprotected.com',
+ },
+ {
+ filters: ['||ad.71i.de^$domain=autobild.de|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://ad.71i.de',
+ },
+ {
+ filters: ['||smartadserver.com^$domain=autobild.de|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'xhr',
+ url: 'https://prg.smartadserver.com',
+ },
+ {
+ filters: ['_320x250_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/6165641/en_320x250_New_RW2_Master_Banners_5.jpg',
+ },
+ {
+ filters: ['@@||imagesrv.adition.com/js/srp.js$domain=transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://imagesrv.adition.com/js/srp.js',
+ },
+ {
+ filters: ['||flix360.com/beat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rt.flix360.com/beat?',
+ },
+ {
+ filters: [
+ '||tealiumiq.com^$domain=autobild.de|metal-hammer.de|musikexpress.de|transfermarkt.de',
+ ],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'image',
+ url: 'https://collect-eu-central-1.tealiumiq.com',
+ },
+ {
+ filters: ['||scrubswim.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scrubswim.com',
+ },
+ {
+ filters: ['||criteo.net^$domain=transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://static.criteo.net',
+ },
+ {
+ filters: ['||flashtalking.com^$domain=focus.de|g.doubleclick.net|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://servedby.flashtalking.com',
+ },
+ {
+ filters: [
+ '||nuggad.net^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|quoka.de|ran.de|sat1.de|sixx.de|transfermarkt.de',
+ ],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://71i.nuggad.net',
+ },
+ {
+ filters: ['||mookie1.com^$domain=autobild.de|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'image',
+ url: 'https://de-gmtdmp.mookie1.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.koreus.com',
+ type: 'xhr',
+ url: 'https://www.koreus.com/ad/',
+ },
+ {
+ filters: ['120x600.png|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.computerbase.de/img/ads/120x600.png',
+ },
+ {
+ filters: ['||amunx.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ram.amunx.de',
+ },
+ {
+ filters: ['||share-online.biz/affiliate/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.share-online.biz/affiliate/',
+ },
+ {
+ filters: ['@@||explosm.net/comics/$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://files.explosm.net/comics/',
+ },
+ {
+ filters: ['||layer-ad.org^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://displayad.layer-ad.org/delivery/ad.php?',
+ },
+ {
+ check: true,
+ filters: ['/popunder.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.holidaycheck.de/javascript/release/custom/addon/popunder.js',
+ },
+ {
+ filters: ['||lasagneandands.com^$third-party', '/postad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.lasagneandands.com/1540305154097/postad.bmp',
+ },
+ {
+ filters: ['||abs.proxistore.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://abs.proxistore.com',
+ },
+ {
+ filters: ['||vinsight.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl-static.vinsight.de',
+ },
+ {
+ filters: ['/468x60/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn05.toboads.com/rs/bigshop/468x60/',
+ },
+ {
+ filters: ['/adserver_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcwelt.de/js/adserver_footer.js',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.koreus.com',
+ type: 'xhr',
+ url: 'https://www.koreus.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://movie-blog.to',
+ type: 'script',
+ url: 'http://movie-blog.to/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['://adclear.*/acv?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adclear.baur.de/acv/A2532052/acv?',
+ },
+ {
+ filters: ['_advertorial_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.tagesspiegel.de/images/150731_tg_advertorial_testimonial_300x225',
+ },
+ {
+ filters: ['||googletagmanager.com/gtm.js?$domain=autobild.de|transfermarkt.de'],
+ sourceUrl: 'https://www.transfermarkt.de',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['||statistics.aldi-international.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://statistics.aldi-international.com',
+ },
+ {
+ filters: ['/ping.gif?$domain=gamestar.de'],
+ sourceUrl: 'https://www.gamestar.de',
+ type: 'image',
+ url: 'https://jwpltx.com/v1/jwplayer6/ping.gif?',
+ },
+ {
+ filters: ['@@||ajax.googleapis.com^$script,domain=dailywire.com'],
+ sourceUrl: 'https://www.dailywire.com',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: ['||coll1onf.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.coll1onf.com',
+ },
+ {
+ filters: ['@@||frandroid.com/ads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.frandroid.com/ads.js',
+ },
+ {
+ filters: ['||addnow.com/tracker/'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://api.addnow.com/tracker/',
+ },
+ {
+ filters: ['||cheezburger.com/api/visitor'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.cheezburger.com/api/visitor',
+ },
+ {
+ filters: ['||piwik.pro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bdtm.containers.piwik.pro',
+ },
+ {
+ filters: ['||conyak.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://data.conyak.com',
+ },
+ {
+ filters: ['@@||soundcloud.com^$script,domain=dailywire.com'],
+ sourceUrl: 'https://www.dailywire.com',
+ type: 'script',
+ url: 'https://w.soundcloud.com',
+ },
+ {
+ filters: ['||cumulus-cloud.com/trackers/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://n01d05.cumulus-cloud.com/trackers/',
+ },
+ {
+ filters: ['||adnxs.com/*/sport1.js$script,redirect=noopjs,domain=sport1.de'],
+ sourceUrl: 'https://www.sport1.de',
+ type: 'script',
+ url: 'https://acdn.adnxs.com/as/1h/pages/sport1.js',
+ },
+ {
+ filters: ['/ads.js/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.boursorama.com/js/ads.js/',
+ },
+ {
+ check: true,
+ filters: ['@@||widgets.outbrain.com/outbrain.js$domain=cheatsheet.com|supercheats.com'],
+ sourceUrl: 'https://www.cheatsheet.com',
+ type: 'script',
+ url: 'https://widgets.outbrain.com/outbrain.js',
+ },
+ {
+ filters: ['||twinplan.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://www.twinplan.com',
+ },
+ {
+ filters: ['||contaxe.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://www.contaxe.com',
+ },
+ {
+ filters: ['://mint.*/?js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://mint.werbeagentur-muenster.de/?js',
+ },
+ {
+ filters: ['||adnet.de^$third-party', '||adnet.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.adnet.de',
+ },
+ {
+ check: true,
+ filters: ['@@||odb.outbrain.com^$script,domain=cheatsheet.com'],
+ sourceUrl: 'https://www.cheatsheet.com',
+ type: 'script',
+ url: 'https://odb.outbrain.com',
+ },
+ {
+ filters: ['@@||googletagmanager.com/gtm.js?$domain=bunte.de|finanzen.net'],
+ sourceUrl: 'https://www.finanzen.net',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['||golem.de/staticrl/scripts/golem_cpxl_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.golem.de/staticrl/scripts/golem_cpxl_113-min.js',
+ },
+ {
+ filters: ['||cpx.golem.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cpx.golem.de',
+ },
+ {
+ filters: ['||cpxl.golem.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://cpxl.golem.de',
+ },
+ {
+ filters: ['/smartad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dauphine.lacotebleue.fr/media/js/smartad.js',
+ },
+ {
+ filters: ['||gekko.spiceworks.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gekko.spiceworks.com',
+ },
+ {
+ filters: ['.com/px.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gekko.spiceworks.com/px.js?',
+ },
+ {
+ filters: ['||antvoice.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://js.antvoice.com',
+ },
+ {
+ filters: ['||stats.urban-media.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tsp.stats.urban-media.com',
+ },
+ {
+ filters: ['@@||damoh.golem.de^$script,domain=golem.de'],
+ sourceUrl: 'https://www.golem.de',
+ type: 'script',
+ url: 'https://ssl.1.damoh.golem.de',
+ },
+ {
+ filters: ['||ezakus.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://boursorama.ezakus.net',
+ },
+ {
+ filters: ['||ip-label.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://col001.ip-label.net',
+ },
+ {
+ filters: ['/fingerprint2.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dpstream.net/theme/mobile_version/js/fingerprint2.js',
+ },
+ {
+ filters: ['@@||static.lexpress.fr/*/ads.$script,stylesheet'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://static.lexpress.fr/doc/ads.css',
+ },
+ {
+ filters: ['/tagcommander.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.lexpress.fr/tagcommander.js',
+ },
+ {
+ filters: ['||r66net.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://kweb.r66net.com',
+ },
+ {
+ filters: ['/VideoAdContent?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://content.videostep.com/MobileVideoAd/VideoAdContent?',
+ },
+ {
+ filters: ['/lazyad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.p24.hu/CTS/helper-scripts/adverts/lazyload/lazyad.min.js',
+ },
+ {
+ filters: ['||mediabong.com/t/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://player.mediabong.com/t/',
+ },
+ {
+ filters: ['/ad-tags/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.iflscience.com/ad-tags/',
+ },
+ {
+ filters: ['_ad_iframe.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://app.adnetmedia.ee/js/mcn_ad_iframe.js',
+ },
+ {
+ filters: [
+ '@@||rockpapershotgun.com^$script,domain=eurogamer.net|nintendolife.com|rockpapershotgun.com|usgamer.net|vg247.com',
+ ],
+ sourceUrl: 'https://www.rockpapershotgun.com',
+ type: 'script',
+ url: 'https://www.rockpapershotgun.com',
+ },
+ {
+ filters: ['/InlineAds.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rockpapershotgun.com/wp-content/themes/rps-2018/js/InlineAds.js',
+ },
+ {
+ filters: ['||affilae.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.affilae.com',
+ },
+ {
+ filters: ['||optinproject.com/rt/visit/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://api.optinproject.com/rt/visit/',
+ },
+ {
+ filters: ['||paypal.com^*/pixel.gif$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.paypal.com/en_US/i/scr/pixel.gif',
+ },
+ {
+ filters: ['/ad_box_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.56lm.cc/test/fanfox/pc/ad_box_13.js',
+ },
+ {
+ filters: ['||distrowatch.com^*/3cx.png'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://distrowatch.com/images/yvzhuwbpy/3cx.png',
+ },
+ {
+ filters: ['/webTracking.$domain=~webtracking.girard-agediss.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://services.hornbach.de/frontendintegration-ui/webtracking.js',
+ },
+ {
+ filters: ['||cosmjs.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.cosmjs.com',
+ },
+ {
+ filters: ['/cdx-radar/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/cdx-radar/',
+ },
+ {
+ filters: ['||distrowatch.com^*-*.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://distrowatch.com/images/other/tip-with-paypal.gif',
+ },
+ {
+ filters: ['||view.atdmt.com^*/view/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://view.atdmt.com/MRR/view/',
+ },
+ {
+ filters: ['||fifa.com^*/sponsors/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://api.fifa.com/api/v1/picture/sponsors/',
+ },
+ {
+ filters: [
+ '@@||googlesyndication.com/simgad/$image,domain=amctheatres.com|beqala.com|bodas.com.mx|bodas.net|casamentos.com.br|casamentos.pt|casamiento.com.uy|casamientos.com.ar|drupalcommerce.org|economist.com|eurogamer.net|flightcentre.co.uk|liverpoolfc.com|mariages.net|matrimonio.com|matrimonio.com.co|matrimonio.com.pe|matrimonios.cl|nintendolife.com|orbitz.com|pianobuyer.com|podomatic.com|ripley.cl|ripley.com.pe|rockpapershotgun.com|thoughtcatalog.com|usgamer.net|vg247.com|weddingspot.co.uk|wlj.net|zavvi.com',
+ ],
+ sourceUrl: 'https://www.rockpapershotgun.com',
+ type: 'image',
+ url: 'https://tpc.googlesyndication.com/simgad/',
+ },
+ {
+ filters: ['||tracking.finanzen.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.finanzen.net',
+ },
+ {
+ filters: ['/tagcommander_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.lexpress.fr/assets/js/tagcommander_variables.js',
+ },
+ {
+ filters: ['||nativeleads.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://system.nativeleads.net',
+ },
+ {
+ filters: ['/VideoTracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.static-fra.de/lib/rtli/video-tracking/build/videotracking.min.js',
+ },
+ {
+ filters: ['/advertisements.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.fstatic.nl/master_2014/assets/advertisements.js',
+ },
+ {
+ filters: ['||uptrendsdata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hit.uptrendsdata.com',
+ },
+ {
+ filters: ['||onet.pl/eclk/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://csr.onet.pl/eclk/',
+ },
+ {
+ filters: ['@@||imrworldwide.com/novms/*/ggcm*.js$domain=ndr.de|tvnow.de|watchbox.de'],
+ sourceUrl: 'https://www.ndr.de',
+ type: 'script',
+ url: 'https://cdn-gl.imrworldwide.com/novms/js/2/ggcmb510.js',
+ },
+ {
+ filters: ['||recognified.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.recognified.net',
+ },
+ {
+ filters: ['/google/autotrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.static.rtbf.be/rtbf/www/js/vendors/google/autotrack.js',
+ },
+ {
+ filters: ['||appn.center^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://appn.center',
+ },
+ {
+ filters: [
+ '@@||youtube.com/iframe_api$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|faithit.com|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|gamerant.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|headcramp.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|o4anews.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicalcowboy.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|reverbpress.com|reviveusa.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tinypic.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'http://boredomtherapy.com',
+ type: 'script',
+ url: 'http://www.youtube.com/iframe_api',
+ },
+ {
+ filters: [
+ '@@||vimeocdn.com^$script,domain=boredomtherapy.com|dailywire.com|headcramp.com|honesttopaws.com|mentalflare.com',
+ ],
+ sourceUrl: 'http://boredomtherapy.com',
+ type: 'script',
+ url: 'http://a.vimeocdn.com',
+ },
+ {
+ filters: ['||stat.boredomtherapy.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://stat.boredomtherapy.com',
+ },
+ {
+ filters: [
+ '@@||ytimg.com/yts/jsbin/$script,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativeintel.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|faithit.com|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|gamerant.com|girlsjustwannahaveguns.com|glitch.news|godfatherpolitics.com|gosocial.co|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|headcramp.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|janmorganmedia.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|parentherald.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|realfarmacy.com|realmomsrealreviews.com|realtytoday.com|redhotchacha.com|redmaryland.com|returnofkings.com|reverbpress.com|reviveusa.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tinypic.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|universityherald.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|westernjournalism.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'http://boredomtherapy.com',
+ type: 'script',
+ url: 'https://s.ytimg.com/yts/jsbin/',
+ },
+ {
+ filters: ['||adhese.com^$third-party', '||adhese.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads-ipm.adhese.com',
+ },
+ {
+ filters: ['/ClickTrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://reklama.ngs.ru/clicktrack.js',
+ },
+ {
+ filters: [
+ '|http://$script,third-party,xmlhttprequest,domain=tvmuse.com',
+ '@@||s.tvmuze.eu^$script,third-party,domain=tvmuse.com',
+ ],
+ sourceUrl: 'http://www.tvmuse.com',
+ type: 'script',
+ url: 'http://s.tvmuze.eu',
+ },
+ {
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=tvmuse.com'],
+ sourceUrl: 'http://www.tvmuse.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['||168logger.com^$third-party', '/log/event?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://168logger.com/v1/log/event?',
+ },
+ {
+ filters: ['@@||apis.google.com^$script,third-party,domain=tvmuse.com'],
+ sourceUrl: 'http://www.tvmuse.com',
+ type: 'script',
+ url: 'http://apis.google.com',
+ },
+ {
+ filters: ['||audienceinsights.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://secure.audienceinsights.net',
+ },
+ {
+ check: true,
+ filters: ['||log.outbrain.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://log.outbrain.com',
+ },
+ {
+ filters: ['||advideum.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.advideum.com',
+ },
+ {
+ filters: ['||adslvr.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trk.adslvr.com',
+ },
+ {
+ filters: ['||playtem.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://sdk.playtem.com',
+ },
+ {
+ filters: ['||4jnzhl0d0.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://4jnzhl0d0.com',
+ },
+ {
+ filters: ['||mediego.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.mediego.com',
+ },
+ {
+ filters: ['||adnz.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adnz.co',
+ },
+ {
+ filters: ['||ens.nzz.ch^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ens.nzz.ch',
+ },
+ {
+ filters: ['/viewcount-service.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://viewcount-service.rtbf.be',
+ },
+ {
+ filters: ['/log?tag='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dm.lindependant.fr/log?tag=42&trk[]=26&trk[]=27&_cid=midl',
+ },
+ {
+ filters: ['||kindgirls.com/banners2/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.kindgirls.com/banners2/',
+ },
+ {
+ filters: ['||ttlbd.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://master.ttlbd.net',
+ },
+ {
+ filters: [
+ '@@||disquscdn.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai2.net|animeid.io|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bestsongspk.com|big4umovies.net|bilasport.pw|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fastdrama.co|faststream.ws|felipephtutoriais.com.br|filerocks.us|filesupload.org|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hulkload.com|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|l2s.io|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|linclik.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|media1fire.com|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minatosuki.website|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pure-anime.tv|pussybook.xyz|putarfilm.com|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|sky-streams.blogspot.co.uk|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|tfpdl.de|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thiruttuvcd.me|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'http://gamestorrent.co',
+ type: 'script',
+ url: 'https://c.disquscdn.com',
+ },
+ {
+ filters: ['||ezoic.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.ezoic.net',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.thewindowsclub.com',
+ type: 'script',
+ url: 'https://www.thewindowsclub.com/ezoic/',
+ },
+ {
+ filters: ['||stormyachiever.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stormyachiever.com',
+ },
+ {
+ filters: ['||cdntrf.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdntrf.com',
+ },
+ {
+ filters: ['||adquality.ch^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adquality.ch',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.thewindowsclub.com',
+ type: 'script',
+ url: 'https://www.thewindowsclub.com/ezoic/',
+ },
+ {
+ filters: ['||leadsmonitor.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://manomano-1.leadsmonitor.io',
+ },
+ {
+ filters: ['/scripts/ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.ligatus.com/scripts/ad_functionality',
+ },
+ {
+ filters: ['||idt.id-news.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://idt.id-news.net',
+ },
+ {
+ filters: ['||leguide.com/js/lgtrk-*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.cimg.leguide.com/js/lgtrk-1.3.min.js',
+ },
+ {
+ filters: ['/releases/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.flowplayer.com/releases/ads/',
+ },
+ {
+ filters: ['||omsnative.de/nativendo.js', '/nativendo.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-t.omsnative.de/nativendo.js',
+ },
+ {
+ filters: ['/estat.$domain=~estat.stat.ee'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/estat.js',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['/adyoulike.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/modules/adyoulike.js',
+ },
+ {
+ filters: ['@@||numerama.com/ads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.numerama.com/ads.js',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['||livetex.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cs15.livetex.ru',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.thewindowsclub.com',
+ type: 'script',
+ url: 'https://www.thewindowsclub.com/ezoic/',
+ },
+ {
+ filters: ['||dmtry.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.dmtry.com',
+ },
+ {
+ filters: ['||tvspielfilm.de/imedia/*,dim:300x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.tvspielfilm.de/imedia/5288/9575288,dim:300x250.png',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=tvspielfilm.de'],
+ sourceUrl: 'https://m.tvspielfilm.de',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['||googletagmanager.com/gtm.js?$domain=tvspielfilm.de'],
+ sourceUrl: 'https://m.tvspielfilm.de',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['/jstats.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://edito.seloger.com/sites/default/modules/jstats/jstats.php',
+ },
+ {
+ filters: ['/reklama5.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://reklama5.ngs.ru',
+ },
+ {
+ filters: ['/reklama4.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://reklama4.ngs.ru',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['||theglobeandmail.com^*/marketing/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.theglobeandmail.com/files/dev/marketing/',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.thewindowsclub.com',
+ type: 'script',
+ url: 'https://www.thewindowsclub.com/ezoic/',
+ },
+ {
+ filters: ['/GoogleAnalytics|'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.kraken.com/en-us/googleanalytics',
+ },
+ {
+ filters: ['@@||static.lci.fr/assets/scripts/common/tracker.js?$script,first-party'],
+ sourceUrl: 'https://www.lci.fr',
+ type: 'script',
+ url: 'https://static.lci.fr/assets/scripts/common/tracker.js?',
+ },
+ {
+ filters: ['||stripedburst.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stripedburst.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.thewindowsclub.com',
+ type: 'script',
+ url: 'https://www.thewindowsclub.com/ezoic/',
+ },
+ {
+ filters: ['-ad.jpg?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://static.wpolityce.pl/img/publicystyka-ad.jpg?',
+ },
+ {
+ filters: ['||tisoomi-services.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tisoomi-services.com',
+ },
+ {
+ filters: ['/analys/dep/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn01.dn-static.se/analys/dep/',
+ },
+ {
+ filters: ['||impressiondesk.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://secure-id.impressiondesk.com',
+ },
+ {
+ filters: ['/reklama2.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://reklama2.ngs.ru',
+ },
+ {
+ filters: ['||promotools.biz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://ban.promotools.biz',
+ },
+ {
+ filters: ['/ads.js.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://statics.jacquieetmichel.net/4/js/libs/ads.js.02954b94520b.js',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=woxikon.de'],
+ sourceUrl: 'http://postleitzahlen.woxikon.de',
+ type: 'script',
+ url: 'http://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['/adblock_notify.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mr1-3a.exs.pl/adblock_notify.js',
+ },
+ {
+ filters: ['/storyads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://storyads.storymedia.se',
+ },
+ {
+ filters: ['||qoijertneio.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stm.qoijertneio.com',
+ },
+ {
+ filters: ['||awestatic.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static1.awestatic.com',
+ },
+ {
+ filters: ['.300x250.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://passbacks.districtm.ca/supertag/wimp.com.t1.z500.300x250.js',
+ },
+ {
+ filters: ['/web/ads/*', '/ads/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://media.genybet.fr/web/ads/ads/',
+ },
+ {
+ filters: ['/jppolPrebid.', '@@||politiken.dk/static/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://politiken.dk/static/js/jppolPrebid.js',
+ },
+ {
+ filters: ['||albacross.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve.albacross.com',
+ },
+ {
+ filters: ['/static/tracking/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.tagesanzeiger.ch/cre-1.0/static/tracking/',
+ },
+ {
+ filters: ['||piximedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.piximedia.com',
+ },
+ {
+ filters: ['||gambling-affiliation.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.gambling-affiliation.com',
+ },
+ {
+ filters: ['/728x90/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://static.emsservice.de/werbemittel/Citroen/2018-06-28_16-43-34/728x90/',
+ },
+ {
+ filters: ['_FLYAD.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-de.plista.com/async/PLISTA_FLYAD.js',
+ },
+ {
+ filters: ['.org/js/ga-', '@@||pbskids.org/js/ga-current.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pbskids.org/js/ga-current.js',
+ },
+ {
+ filters: ['||handelsblatt.com/*/empty.js$script,first-party'],
+ sourceUrl: 'https://www.handelsblatt.com',
+ type: 'script',
+ url: 'https://www.handelsblatt.com/preparesite/empty.js',
+ },
+ {
+ filters: ['||grmtech.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://grmtech.net',
+ },
+ {
+ filters: ['||advice-ads-cdn.vice.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://advice-ads-cdn.vice.com',
+ },
+ {
+ filters: ['-mastertag.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vice-publishers-cdn.vice.com/MASTERTAG/vice-digital-mastertag.js',
+ },
+ {
+ filters: ['/tda.*/in.gif'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tda.tagesanzeiger.ch/in/newsnet/in.gif',
+ },
+ {
+ filters: ['/ad-issue.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://trk.vidible.tv/trk/ad-issue.gif',
+ },
+ {
+ filters: ['/affilinet/*$domain=~affilinet-inside.com|~affilinet-inside.fr'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.conrad.de/etc/statichtml/conrad-de/b2c/gtm/affilinet/',
+ },
+ {
+ filters: ['/deliverad/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.pcgameshardware.de/common/deliverad/',
+ },
+ {
+ filters: ['/trckUtil.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.pcgameshardware.de/bcommon/js/trckUtil.min.js',
+ },
+ {
+ filters: ['||osd.oxygem.it^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://osd.oxygem.it',
+ },
+ {
+ filters: ['@@||www.google-analytics.com/ga.js$script,domain=santander.com.mx|tv2.no'],
+ sourceUrl: 'http://benny.tv2.no',
+ type: 'script',
+ url: 'http://www.google-analytics.com/ga.js',
+ },
+ {
+ filters: ['&advert_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://beacon.krxd.net/event.gif?event_id=J4g86PJ_&event_type=cact&advert_=no',
+ },
+ {
+ filters: ['||mastertag.effiliation.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mastertag.effiliation.com',
+ },
+ {
+ filters: ['||track.effiliation.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.effiliation.com',
+ },
+ {
+ filters: [
+ '@@||quantserve.com/quant.js$domain=apps.facebook.com|caranddriver.com|g4tv.com|nymag.com|salon.com|theblaze.com',
+ ],
+ sourceUrl: 'https://www.theblaze.com',
+ type: 'script',
+ url: 'https://secure.quantserve.com/quant.js',
+ },
+ {
+ filters: ['/google-analytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.o2online.de/assets/code/tracking/google-analytics/',
+ },
+ {
+ filters: ['/tblz_sailthru/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.theblaze.com/wp-content/plugins/tblz_sailthru/',
+ },
+ {
+ filters: ['/storeAdvImpression.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.liberoquotidiano.it/webservices/storeAdvImpression.jsp',
+ },
+ {
+ filters: ['||trkme.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://a.trkme.net',
+ },
+ {
+ filters: ['||pam.nextinpact.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pam.nextinpact.com',
+ },
+ {
+ filters: ['||svtrd.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.svtrd.com',
+ },
+ {
+ filters: ['/ads_view.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.rvty.net/view/ads_view.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://buttsmithy.com',
+ type: 'script',
+ url: 'http://buttsmithy.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||serienjunkies.org/media/ajax/deals/'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://serienjunkies.org/media/ajax/deals/',
+ },
+ {
+ filters: ['/video.ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tv.liberoquotidiano.it/js/videojs/video.ads.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,important,domain=skylinewebcams.com',
+ '@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$domain=3dsforum.tk|afreesms.com|androidrepublic.org|apkmirror.com|appraisersforum.com|bitcofree.com|bitcoinker.com|boxbit.co.in|broadbandforum.co|bsmotoring.com|calcularindemnizacion.es|clubedohardware.com.br|cpu-world.com|danydanielrt.com|debridit.com|debridnet.com|demo-uhd3d.com|dev-metal.com|ezoden.com|freebitco.in|freeclaimbtc.xyz|getdebrid.com|globaldjmix.com|gnomio.com|gsmdude.com|hackintosh.zone|hubturkey.net|hulkusc.com|i-stats.net|incredibox.com|javadecompilers.com|kadinlarkulubu.com|lailasblog.com|lcpdfr.com|leecher.us|liberallogic101.com|lomeutec.com|mangacap.com|mangahop.com|masfuertequeelhierro.com|media4up.com|megaleech.us|mma-core.com|mpc-g.com|mypapercraft.net|narkive.com|niresh.co|niresh12495.com|nonags.com|noticiasautomotivas.com.br|pattayaone.net|play-old-pc-games.com|receive-a-sms.com|ringmycellphone.com|rockfile.eu|sc2casts.com|scriptnulled.eu|settlersonlinemaps.com|shinobilifeonline.com|short.am|sizedrive.com|skylinewebcams.com|slideplayer.com.br|streaming-hub.com|technoshouter.com|thehomestyle.co|unlockpwd.com|unlocktheinbox.com|uploadex.com|uploadrocket.net|wallpapersimages.co.uk|wowtoken.info|wrestlingtalk.org|xcl.com.br|zeperfs.com',
+ ],
+ sourceUrl: 'http://www.skylinewebcams.com',
+ type: 'script',
+ url: 'http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['||parkingcrew.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://parkingcrew.net',
+ },
+ {
+ filters: ['/script_log.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://d.sudouest.fr/logs/script_log.php',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['/domainads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.gstatic.com/domainads/',
+ },
+ {
+ filters: ['||urlcash.net^$third-party', '||urlcash.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'http://www.urlcash.net',
+ },
+ {
+ filters: ['|https://$script,xmlhttprequest,domain=urlcash.net'],
+ sourceUrl: 'http://www.urlcash.net',
+ type: 'script',
+ url: 'https://',
+ },
+ {
+ filters: ['|http://$script,xmlhttprequest,domain=urlcash.net'],
+ sourceUrl: 'http://www.urlcash.net',
+ type: 'script',
+ url: 'http://',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['/adfarm.$first-party,domain=~bar.mediaplex.com'],
+ sourceUrl: 'http://sub.mediaplex.com',
+ type: 'document',
+ url: 'https://adfarm.mediaplex.com/ad/fm/',
+ },
+ {
+ filters: ['||mediaplex.com/ad/fm/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'https://adfarm.mediaplex.com/ad/fm/',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ check: true,
+ filters: ['/160x600/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://s0.2mdn.net/6306117/1539069237292/160x600/',
+ },
+ {
+ filters: ['||cloudfront.net^*/sponsors/$domain=indycar.com|overwatchleague.com|pbs.org'],
+ sourceUrl: 'https://overwatchleague.com',
+ type: 'image',
+ url: 'https://d2y4mhrku00tr3.cloudfront.net/images/sponsors/',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: [
+ '||ed-protect.org/cdn-cgi/apps/head/',
+ '/cdn-cgi/apps/head/*$script,first-party,domain=cmacapps.com|ed-protect.org|fdesouche.com|hdwallpapers.in|psypost.org|tamiltunes.live|who-called.co.uk',
+ ],
+ sourceUrl: 'http://www.ed-protect.org',
+ type: 'script',
+ url: 'http://www.ed-protect.org/cdn-cgi/apps/head/',
+ },
+ {
+ filters: ['/analytics/smarttag-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ovh.com/fr/js/analytics/smarttag-blog-de.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['||jsecoin.com^$third-party', '||jsecoin.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://load.jsecoin.com',
+ },
+ {
+ filters: ['.pl/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.dobreprogramy.pl/ads/',
+ },
+ {
+ filters: ['||vice-ads-cdn.vice.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://vice-ads-cdn.vice.com',
+ },
+ {
+ filters: ['||onestat.com^', '||onestat.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://stat.onestat.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['/ad8.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad8.ad-srv.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['||geo.kaloo.ga^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://geo.kaloo.ga',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['/ad_bannerPool-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://publishing.kaloo.ga/mod/ad_bannerPool-463df18.js',
+ },
+ {
+ filters: ['@@||analytics.edgekey.net/html5/akamaihtml5-min.js$domain=br.de'],
+ sourceUrl: 'https://www.br.de',
+ type: 'script',
+ url: 'https://79423.analytics.edgekey.net/html5/akamaihtml5-min.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||connatix.com/min/connatix.renderer.infeed.min.js$domain=salon.com'],
+ sourceUrl: 'https://www.salon.com',
+ type: 'script',
+ url: 'https://cdn.connatix.com/min/connatix.renderer.infeed.min.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['/inpl.measure.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://js.iplsc.com/inpl.measure/inpl.measure.jssc',
+ },
+ {
+ filters: ['||analytics.tout.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.tout.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.net',
+ type: 'image',
+ url: 'https://www.notebookcheck.net',
+ },
+ {
+ filters: ['||events.kaloo.ga^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://events.kaloo.ga',
+ },
+ {
+ filters: ['||htl.bid^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://htl.bid',
+ },
+ {
+ filters: ['||sleepcartoon.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sleepcartoon.com',
+ },
+ {
+ filters: ['||eclipse.org/membership/promo/images/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.eclipse.org/membership/promo/images/',
+ },
+ {
+ filters: ['-imppix/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://goutee.top/h-imppix/',
+ },
+ {
+ filters: ['||acxiom-online.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://p-eu.acxiom-online.com',
+ },
+ {
+ filters: ['/track/impression/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.financial-infos.de/track/impression/',
+ },
+ {
+ filters: ['||d3kyk5bao1crtw.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3kyk5bao1crtw.cloudfront.net',
+ },
+ {
+ filters: ['||pipe-collect.ebu.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://pipe-collect.ebu.io',
+ },
+ {
+ filters: ['||tracking.lengow.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.lengow.com',
+ },
+ {
+ filters: ['/miniads?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://zlm.interia.pl/a/miniads?',
+ },
+ {
+ filters: ['||d3tglifpd8whs6.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3tglifpd8whs6.cloudfront.net',
+ },
+ {
+ filters: ['||mbsy.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mbsy.co',
+ },
+ {
+ check: true,
+ filters: ['||youbora.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smartplugin.youbora.com',
+ },
+ {
+ filters: [
+ '@@||googletagmanager.com/gtm.js?$domain=autorevue.cz|e15.cz|mobilmania.cz|sportrevue.cz|zive.cz',
+ ],
+ sourceUrl: 'https://m.zive.cz',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: ['/gainjectmin.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sophos.com/en-us/medialibrary/Scripts/Tracking/gainjectmin.js',
+ },
+ {
+ filters: ['||dwf6crl4raal7.cloudfront.net^$third-party,script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dwf6crl4raal7.cloudfront.net',
+ },
+ {
+ filters: ['||cointraffic.io^$third-party', '||cointraffic.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://apps3.cointraffic.io',
+ },
+ {
+ filters: ['/ad-maven-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s3-us-west-2.amazonaws.com/ad-maven-public-cdn',
+ },
+ {
+ filters: ['||pebblemedia.be^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.pebblemedia.be',
+ },
+ {
+ filters: ['||washtimes.com/js/dart.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://twt-assets.washtimes.com/js/dart.8ad33fb3ede5.js',
+ },
+ {
+ filters: ['/ads/config/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://twt-assets.washtimes.com/v4/js/ads/config/',
+ },
+ {
+ filters: ['||profitrumour.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://profitrumour.com',
+ },
+ {
+ filters: ['||c.newsinc.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.newsinc.com',
+ },
+ {
+ filters: ['||swelen.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.swelen.com',
+ },
+ {
+ filters: ['||intensedebate.com/remotevisit.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://intensedebate.com/remoteVisit.php?',
+ },
+ {
+ filters: ['||flurry.com^', '||flurry.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.flurry.com',
+ },
+ {
+ filters: [
+ '@@||s7.addthis.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|askmefast.com|breathecast.com|bulletsfirst.net|clashdaily.com|classicalite.com|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|coviral.com|crossmap.com|dailyfeed.co.uk|dailyheadlines.net|dailysurge.com|dccrimestories.com|digitaljournal.com|eaglerising.com|enstarz.com|girlsjustwannahaveguns.com|glitch.news|gosocial.co|greatamericanrepublic.com|hngn.com|infowars.com|instigatornews.com|joeforamerica.com|kdramastars.com|kpopstarz.com|latinpost.com|libertyunyielding.com|minutemennews.com|musictimes.com|naturalblaze.com|naturalnews.com|natureworldnews.com|newser.com|oddee.com|parentherald.com|patriotoutdoornews.com|rantlifestyle.com|realfarmacy.com|redmaryland.com|shark-tank.com|spectator.org|stevedeace.com|supercheats.com|techtimes.com|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thelibertarianrepublic.com|themattwalshblog.com|thepoke.co.uk|tinypic.com|traileraddict.com|universityherald.com|valuewalk.comvcpost.com|victoriajackson.com|viralnova.com|viralthread.com',
+ ],
+ sourceUrl: 'http://m.newser.com',
+ type: 'script',
+ url: 'http://s7.addthis.com',
+ },
+ {
+ filters: ['||absorbingband.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://absorbingband.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.basketusa.com',
+ type: 'script',
+ url: 'https://www.basketusa.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||uralweb.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://j.uralweb.ru',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://osxdaily.com',
+ type: 'script',
+ url: 'http://cdn.osxdaily.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '@@||cam4.*/ads/directory/$first-party,xmlhttprequest,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.cam4.com',
+ type: 'xhr',
+ url: 'https://www.cam4.com/ads/directory/',
+ },
+ {
+ filters: ['||hotdogsandads.com^$third-party', '/retrad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.hotdogsandads.com/1540305459598/retrad.bmp',
+ },
+ {
+ filters: ['||intensedebate.com/empty.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.intensedebate.com/empty.php',
+ },
+ {
+ filters: ['.adserv/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.berlin.de/.adserv/',
+ },
+ {
+ filters: ['||adtraction.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://track.adtraction.com',
+ },
+ {
+ filters: ['||double.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://track.double.net',
+ },
+ {
+ filters: ['/service/track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sc.liveclicker.net/service/track?',
+ },
+ {
+ filters: ['||boss.berlinonline.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://boss.berlinonline.de',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://osxdaily.com',
+ type: 'script',
+ url: 'http://cdn.osxdaily.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||newser.com/utility.aspx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://m.newser.com/utility.aspx?',
+ },
+ {
+ filters: [
+ '||www.pc-magazin.de^$script,domain=www.pc-magazin.de',
+ '@@||pc-magazin.de/js/$script,domain=pc-magazin.de',
+ ],
+ sourceUrl: 'https://www.pc-magazin.de',
+ type: 'script',
+ url: 'https://www.pc-magazin.de/js/',
+ },
+ {
+ filters: ['/revcontent.'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://labs-cdn.revcontent.com/build/amphtml/revcontent.amp.min.js',
+ },
+ {
+ filters: ['||nexeps.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.nexeps.com',
+ },
+ {
+ filters: ['||siradsalot.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tiesto2.siradsalot.com',
+ },
+ {
+ check: true,
+ filters: ['||buzzonclick.com^$third-party', '||buzzonclick.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.buzzonclick.com',
+ },
+ {
+ filters: ['/adtech.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.jyllands-posten.dk/js/adtech.js',
+ },
+ {
+ filters: ['||adtelligence.de^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.adtelligence.de',
+ },
+ {
+ filters: ['/Visitor.aspx?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://proactive.congstar.de/netagent/proactive/Visitor.aspx?',
+ },
+ {
+ filters: ['/acfp.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bcd.esprit.de/scripts/acfp.js',
+ },
+ {
+ filters: ['?advertiserid=$domain=~adadyn.com|~outbrain.com|~seek.co.nz|~seek.com.au'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bcd.esprit.de/pcj/rest/pcj/js/?advertiserId=20&ts=1540305478547',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.basketusa.com',
+ type: 'script',
+ url: 'https://www.basketusa.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '||1emn.com^$script,domain=hotair.com|lacrossetribune.com|moviepilot.com|nationalpost.com|notalwaysright.com',
+ ],
+ sourceUrl: 'https://hotair.com',
+ type: 'script',
+ url: 'https://p.d.1emn.com',
+ },
+ {
+ filters: ['@@||ksta.de^*/api/tracking/service/ksta/templateclient.js$domain=ksta.de'],
+ sourceUrl: 'https://www.ksta.de',
+ type: 'script',
+ url: 'https://track.ksta.de/cre-1.0/api/tracking/service/ksta/templateclient.js',
+ },
+ {
+ filters: ['@@||ksta.de^*/tracking/tracking.js$domain=ksta.de'],
+ sourceUrl: 'https://www.ksta.de',
+ type: 'script',
+ url: 'https://track.ksta.de/cre-1.0/tracking/tracking.js',
+ },
+ {
+ filters: ['||adclear.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://track.adclear.net',
+ },
+ {
+ filters: ['/advertisingwidgets/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.pc-magazin.de/img/bilder/118423054/advertisingwidgets/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||flakyfeast.com^', '||flakyfeast.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://flakyfeast.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||afgr4.com^', '||afgr4.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.afgr4.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||m6web.fr/statsd/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://mon.m6web.fr/statsd/',
+ },
+ {
+ filters: ['/piwik_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.congstar.de/piwik_congstar',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||do09.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.do09.net',
+ },
+ {
+ filters: ['.fr/z.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.orange.fr/z.gif?',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.wpbeginner.com',
+ type: 'script',
+ url: 'https://www.wpbeginner.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/WebTrackingService.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.do09.net/api/WebTrackingService.svc',
+ },
+ {
+ filters: ['||digital-metric.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.digital-metric.com',
+ },
+ {
+ filters: ['/rumtag.', '||netvigie.com^$third-party', '/netrum.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rumtag.netvigie.com/netrum.js',
+ },
+ {
+ filters: ['@@||bestofmedia.com^*/advertisement.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://m.bestofmedia.com/sfp/images/js/advertisement.js',
+ },
+ {
+ filters: ['||smashsurprise.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smashsurprise.com',
+ },
+ {
+ filters: ['||seattletimes.com/clientip'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://awsapi.seattletimes.com/clientip',
+ },
+ {
+ filters: ['||ligatus.com/push/url.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://push.rce.ligatus.com/push/url.gif?',
+ },
+ {
+ filters: ['/ads/dfp.'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.dorkly.com/jument/ads/dfp.html',
+ },
+ {
+ check: true,
+ filters: ['@@||xpanama.net^$xmlhttprequest'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://adserver.xpanama.net',
+ },
+ {
+ filters: ['||theintercept.com/a?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.prod.theintercept.com/a?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.basketusa.com',
+ type: 'script',
+ url: 'https://www.basketusa.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||mindlytix.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hubtr.mindlytix.com',
+ },
+ {
+ filters: ['&adunit='],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://leasticoulddo.com/safe-frames?mode=RTK&adunit=I4T7&id=v5eS',
+ },
+ {
+ filters: ['||pukrazopchatka.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.pukrazopchatka.com',
+ },
+ {
+ filters: ['||synovite-scripts.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.synovite-scripts.com',
+ },
+ {
+ filters: [
+ '@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=11freunde.de|gofeminin.de|guterhut.de|hardwareluxx.de|hbf-info.de|notebooksbilliger.de|rakuten.at|rakuten.de|rtl.de|welt.de|zalando.de',
+ ],
+ sourceUrl: 'https://www.rtl.de',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gpt/pubads_impl_266.js',
+ },
+ {
+ filters: [
+ '@@||g.doubleclick.net/gampad/ads?$script,xmlhttprequest,domain=gofeminin.de|guterhut.de|hardwareluxx.de|hbf-info.de|notebooksbilliger.de|rakuten.at|rakuten.de|rtl.de|zalando.de',
+ ],
+ sourceUrl: 'https://www.rtl.de',
+ type: 'script',
+ url: 'https://securepubads.g.doubleclick.net/gampad/ads?',
+ },
+ {
+ filters: ['/ad/sponsored-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bilder-a.akamaihd.net/lib/rtli/cbd/ad/sponsored-1x1.gif',
+ },
+ {
+ filters: ['_adsense.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i3.ypcdn.com/ypu/js/compiled/bpp_adsense.js',
+ },
+ {
+ filters: ['||optnmstr.com^$third-party,domain=whatismyipaddress.com'],
+ sourceUrl: 'https://whatismyipaddress.com',
+ type: 'script',
+ url: 'https://a.optnmstr.com',
+ },
+ {
+ filters: ['||eanalyzer.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.eanalyzer.de',
+ },
+ {
+ filters: ['||stripe.com/?event='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://q.stripe.com/?event=failed_mirador_ping',
+ },
+ {
+ filters: [
+ '/__utm.gif$domain=autobild.de|quoka.de|tellows.de|thewatchseries.to|transfermarkt.de',
+ ],
+ sourceUrl: 'https://www.autobild.de',
+ type: 'image',
+ url: 'https://ssl.google-analytics.com/r/__utm.gif',
+ },
+ {
+ filters: ['/ads01.', '||groovinads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads01.groovinads.com',
+ },
+ {
+ filters: ['||d1wa9546y9kg0n.cloudfront.net/index.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1wa9546y9kg0n.cloudfront.net/index.js',
+ },
+ {
+ filters: ['||mg2connext.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://cdn.mg2connext.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tecmint.com',
+ type: 'script',
+ url: 'https://www.tecmint.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '|https://$script,third-party,xmlhttprequest,domain=29443kmq.video|xmoviesforyou.com',
+ ],
+ sourceUrl: 'https://xmoviesforyou.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com^$script,important,domain=autobild.de|metal-hammer.de|musikexpress.de|rollingstone.de',
+ ],
+ sourceUrl: 'https://www.autobild.de',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tecmint.com',
+ type: 'script',
+ url: 'https://www.tecmint.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tecmint.com',
+ type: 'script',
+ url: 'https://www.tecmint.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||octavius.rocks^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://service.octavius.rocks',
+ },
+ {
+ filters: ['||googleapis.com/qmftp/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://storage.googleapis.com/qmftp/',
+ },
+ {
+ filters: ['||googleapis.com/yieldlab/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://storage.googleapis.com/yieldlab/',
+ },
+ {
+ filters: ['/account-stats/*', '/counters/pages?'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://api.radio.de/account-stats/v1/accounts/246240042/counters/pages?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://xmoviesforyou.com',
+ type: 'script',
+ url: 'https://xmoviesforyou.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.tecmint.com',
+ type: 'script',
+ url: 'https://www.tecmint.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||d31bfnnwekbny6.cloudfront.net/customers/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d31bfnnwekbny6.cloudfront.net/customers/',
+ },
+ {
+ filters: ['||retrack.q-divisioncdn.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://retrack.q-divisioncdn.de',
+ },
+ {
+ filters: ['||dkm6b5q0h53z4.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dkm6b5q0h53z4.cloudfront.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/frosmo.easy.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2wzl9lnvjz3bh.cloudfront.net/frosmo.easy.js',
+ },
+ {
+ filters: ['||cod.bitrec.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cod.bitrec.com',
+ },
+ {
+ filters: ['/tracker_async.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://allani.pl/assets/tracker_async.js',
+ },
+ {
+ filters: ['||xing.com/collect/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://box.xing.com/collect/',
+ },
+ {
+ filters: ['||mastertag.q-sis.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mastertag.q-sis.de',
+ },
+ {
+ filters: ['||urtracker.q-sis.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://urtracker.q-sis.de',
+ },
+ {
+ filters: ['||mastertag.kpcustomer.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mastertag.kpcustomer.de',
+ },
+ {
+ filters: ['||inpref.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://wwwdecathlonpl.inpref.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ check: true,
+ filters: ['/adserver7/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adserver.iprom.net/adserver7/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/evercookie.', '/evercookie/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.thejigsawpuzzles.com/lib/evercookie/evercookie.js',
+ },
+ {
+ filters: ['/evercookie_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.thejigsawpuzzles.com/lib/evercookie/php/evercookie_etag.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||fitanalytics.com/metrics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://metrics.fitanalytics.com/metrics/',
+ },
+ {
+ check: true,
+ filters: ['@@||inpref.com/messageApi?$xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://inpref.com/messageApi?',
+ },
+ {
+ filters: ['/log/impression/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://core.iprom.net/log/impression/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://dsgvo-gesetz.de',
+ type: 'script',
+ url: 'https://dsgvo-gesetz.de/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||codecguide.com/stats.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.codecguide.com/stats.js',
+ },
+ {
+ filters: ['||afsanalytics.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://code.afsanalytics.com',
+ },
+ {
+ filters: [
+ '/advertising-$domain=~abramarketing.com|~advertising-direct.com|~advertising-factory.de|~microsoft.com|~outbrain.com|~yellowimages.com',
+ ],
+ sourceUrl: 'about:blank',
+ type: 'document',
+ url: 'https://www.thinkwithgoogle.com/advertising-channels',
+ },
+ {
+ filters: ['||events.yourcx.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.yourcx.io',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ check: true,
+ filters: ['-google-analytics/'],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/mashshare-google-analytics/',
+ },
+ {
+ filters: ['||userneeds.dk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.survey.webstatus.v2.userneeds.dk',
+ },
+ {
+ filters: ['/_p4.php$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://theync.com/templates/ync/ads/_p4.php',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['||google-analytics.com/analytics.js$domain=notebookcheck.com'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['/iframe.tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://altsysimg.developpez.com/javascripts/iframe.tracker.js',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://xmoviesforyou.com',
+ type: 'script',
+ url: 'https://xmoviesforyou.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||eulerian.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mm.eulerian.net',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: [
+ '@@||searchengineland.com/figz/wp-content/seloads/$image,domain=searchengineland.com',
+ ],
+ sourceUrl: 'https://searchengineland.com',
+ type: 'image',
+ url: 'https://searchengineland.com/figz/wp-content/seloads/',
+ },
+ {
+ filters: ['||statpipe.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://statpipe.ru',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/log_view.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.justuno.com/ajax/log_view.html',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://draxe.com',
+ type: 'script',
+ url: 'https://draxe.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||ioam.de/tx.io?$domain=notebookcheck.com'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'script',
+ url: 'https://de.ioam.de/tx.io?',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['@@||notebookcheck.$image,first-party'],
+ sourceUrl: 'https://www.notebookcheck.com',
+ type: 'image',
+ url: 'https://www.notebookcheck.com',
+ },
+ {
+ filters: ['/bn/tracker/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://marketing.foxitsoftware.com/cdnr/24/acton/bn/tracker/',
+ },
+ {
+ check: true,
+ filters: [
+ '||optimizely.com^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|ran.de|sat1.de|sixx.de',
+ ],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'script',
+ url: 'https://cdn.optimizely.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@||s1.adform.net^$script,domain=rewe.de',
+ '@@||adform.net/banners/$domain=consorsbank.de|rewe.de',
+ ],
+ sourceUrl: 'https://www.rewe.de',
+ type: 'script',
+ url: 'https://s1.adform.net/banners/',
+ },
+ {
+ filters: ['@@||adform.net/adx/$script,domain=rewe.de'],
+ sourceUrl: 'https://www.rewe.de',
+ type: 'script',
+ url: 'https://adx.adform.net/adx/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://blogsport.gsp.ro',
+ type: 'script',
+ url: 'http://blogsport.gsp.ro/oprisan/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||nuggad.net^$domain=prosieben.at|prosieben.ch|prosieben.de'],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'script',
+ url: 'https://71i.nuggad.net',
+ },
+ {
+ filters: [
+ '||semasio.net^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|ran.de|sat1.de|sixx.de',
+ '||semasio.net^$domain=prosieben.at|prosieben.ch|prosieben.de',
+ ],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'image',
+ url: 'https://uip.semasio.net',
+ },
+ {
+ filters: [
+ '||theadex.com^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|quoka.de|ran.de|sat1.de|sixx.de',
+ '||theadex.com^$domain=prosieben.at|prosieben.ch|prosieben.de',
+ ],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'image',
+ url: 'https://dmp.theadex.com',
+ },
+ {
+ filters: ['||google-analytics.com/analytics.js$domain=prosieben.at|prosieben.ch|prosieben.de'],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'script',
+ url: 'https://www.google-analytics.com/analytics.js',
+ },
+ {
+ filters: [
+ '||imrworldwide.com^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|ran.de|sat1.de|sixx.de',
+ '||imrworldwide.com^$domain=prosieben.at|prosieben.ch|prosieben.de',
+ ],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'script',
+ url: 'https://seccdn-gl.imrworldwide.com',
+ },
+ {
+ filters: ['/log/1.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rum.7tv.de/service/log/1.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/adwords/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.google.fr/adwords/',
+ },
+ {
+ filters: [
+ '||movad.de/c.ount?',
+ '||movad.de/c.ount?$domain=prosieben.at|prosieben.ch|prosieben.de',
+ ],
+ sourceUrl: 'https://www.prosieben.de',
+ type: 'image',
+ url: 'https://event.movad.de/c.ount?',
+ },
+ {
+ filters: ['||ownlocal.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.secure.ownlocal.com',
+ },
+ {
+ filters: ['||indochino.com/indo-ecapture-widget/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.indochino.com/indo-ecapture-widget/',
+ },
+ {
+ filters: ['||event-listener.air.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://event-listener.air.tv',
+ },
+ {
+ filters: ['||events.air.tv^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.air.tv',
+ },
+ {
+ filters: [
+ '@@||d1xrtnyoeeet33.cloudfront.net/assets/js/lib/*$script,domain=calgaryherald.com|calgarysun.com|canoe.com|edmontonsun.com|financialpost.com|leaderpost.com|lfpress.com|montrealgazette.com|nationalpost.com|ottawacitizen.com|ottawasun.com|theprovince.com|thestarphoenix.com|torontosun.com|vancouversun.com|windsorstar.com|winnipegsun.com',
+ ],
+ sourceUrl: 'https://nationalpost.com',
+ type: 'script',
+ url: 'https://d1xrtnyoeeet33.cloudfront.net/assets/js/lib/',
+ },
+ {
+ filters: ['/ad_images/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://pic.najdi.si/ad_images/',
+ },
+ {
+ filters: ['||oddomane.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.oddomane.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.palmerreport.com',
+ type: 'script',
+ url: 'https://www.palmerreport.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/_lib/ga.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.banki.ru/_lib/ga.js',
+ },
+ {
+ filters: ['/eas_fif.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lib.lrytas.lt/js/cx/EAS_fif.js',
+ },
+ {
+ check: true,
+ filters: ['@@||banki.ru/bitrix/*/advertising.block/$stylesheet'],
+ sourceUrl: 'http://foo.com',
+ type: 'stylesheet',
+ url: 'http://www.banki.ru/bitrix/components/custom/advertising.block/',
+ },
+ {
+ filters: ['/newads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.lrytas.lt/lib/js/ad/newads/',
+ },
+ {
+ filters: ['||emediate.se^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://eas3.emediate.se',
+ },
+ {
+ filters: ['@@||amazon-adsystem.com/widgets/q?$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://ws-eu.amazon-adsystem.com/widgets/q?',
+ },
+ {
+ filters: ['||where.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://paypal.adtag.where.com',
+ },
+ {
+ filters: ['||useitbetter.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://31487.l.useitbetter.com',
+ },
+ {
+ filters: [
+ '||inpref.s3.amazonaws.com^$third-party',
+ '@@||inpref.s3.amazonaws.com/frosmo.easy.js$script,third-party',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://inpref.s3.amazonaws.com/frosmo.easy.js',
+ },
+ {
+ filters: ['||spurioussteam.com^', '||spurioussteam.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://spurioussteam.com',
+ },
+ {
+ filters: ['||questionmarket.com^$third-party', '||questionmarket.com/adsc/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://amch.questionmarket.com/adsc/',
+ },
+ {
+ check: true,
+ filters: ['||ads.bluelithium.com^', '||bluelithium.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.bluelithium.com',
+ },
+ {
+ filters: ['/analytics.do', '/hit-counter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://analytics.doccheck.com/dc-analytics/hit-counter.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://buzzmonclick.com',
+ type: 'script',
+ url: 'https://buzzmonclick.com/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||hotnews.ro/pageCount.htm?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.hotnews.ro/pageCount.htm?',
+ },
+ {
+ filters: ['||sextracker.com^$third-party', '||sextracker.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://counter4.sextracker.com',
+ },
+ {
+ filters: ['||chaturbate.com/affiliates/'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://chaturbate.com/affiliates/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://ln.nikkis.info',
+ type: 'script',
+ url: 'https://ln.nikkis.info/ezoic/',
+ },
+ {
+ filters: ['/iFramedAdTemplate/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://www.cbr.com/iFramedAdTemplate/',
+ },
+ {
+ filters: ['@@||thenextweb.com/wp-content/advertisement.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://thenextweb.com/wp-content/advertisement.js',
+ },
+ {
+ filters: ['||widget.privy.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.privy.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://ln.nikkis.info',
+ type: 'script',
+ url: 'https://ln.nikkis.info/ezoic/',
+ },
+ {
+ filters: ['||analytics.volvocars.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.volvocars.com',
+ },
+ {
+ filters: ['||sophus3.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.sophus3.com',
+ },
+ {
+ filters: ['/gemius_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.lrytas.lt/static/js/gemius_code_init.js',
+ },
+ {
+ filters: ['||events.privy.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://events.privy.com',
+ },
+ {
+ filters: ['||smart.styria-digital.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://smart.styria-digital.com',
+ },
+ {
+ filters: ['||leaplunchroom.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://leaplunchroom.com',
+ },
+ {
+ filters: ['||savecart.pl/d/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://castoramapl.savecart.pl/d/',
+ },
+ {
+ filters: ['||analytics.cnd-motionmedia.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.cnd-motionmedia.de',
+ },
+ {
+ check: true,
+ filters: ['||heias.com^$third-party', '||ads.heias.com^', '||heias.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.heias.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://ln.nikkis.info',
+ type: 'script',
+ url: 'https://ln.nikkis.info/ezoic/',
+ },
+ {
+ filters: ['||hartgeld.com/images/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://hartgeld.com/images/banners/',
+ },
+ {
+ filters: ['||curalate.com^*/events.jsonp$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.curalate.com/v1/reels/lulus/events.jsonp',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://ln.nikkis.info',
+ type: 'script',
+ url: 'https://ln.nikkis.info/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://buzzmonclick.com',
+ type: 'script',
+ url: 'https://buzzmonclick.com/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ad-layers-', '/css/ad-'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://digiday.com/wp-content/plugins/ad-layers/css/ad-layers-dfp.css',
+ },
+ {
+ filters: ['/ad-layers.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://digiday.com/wp-content/plugins/ad-layers/css/ad-layers.css',
+ },
+ {
+ filters: ['@@||mpsnare.iesnare.com/wu/snare.js$domain=westernunion.com'],
+ sourceUrl: 'https://www.westernunion.com',
+ type: 'script',
+ url: 'https://mpsnare.iesnare.com/wu/snare.js',
+ },
+ {
+ filters: ['||nirsoft.net/banners/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.nirsoft.net/banners/',
+ },
+ {
+ filters: ['||coinzilla.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://coinzilla.io',
+ },
+ {
+ filters: ['||dsp.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pix.dsp.io',
+ },
+ {
+ filters: ['||pictures.zooplus.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pictures.zooplus.com',
+ },
+ {
+ filters: ['||65mjvw6i1z.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://65mjvw6i1z.com',
+ },
+ {
+ filters: [
+ '|http://$script,third-party,xmlhttprequest,domain=milfzr.com',
+ '@@||ajax.googleapis.com^$script,domain=milfzr.com',
+ ],
+ sourceUrl: 'http://milfzr.com',
+ type: 'script',
+ url: 'http://ajax.googleapis.com',
+ },
+ {
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=milfzr.com'],
+ sourceUrl: 'http://milfzr.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://buzzmonclick.com',
+ type: 'script',
+ url: 'https://buzzmonclick.com/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://ln.nikkis.info',
+ type: 'script',
+ url: 'https://ln.nikkis.info/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['_120x60_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://content.aimatch.com/mstar/9/Premium_120x60_Animated_v4_0816.gif',
+ },
+ {
+ filters: ['/optimost_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d2uncb19xzxhzx.cloudfront.net/autonomy_m/optimost_global_head.js',
+ },
+ {
+ filters: ['||optimost.com^', '||optimost.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://es.optimost.com',
+ },
+ {
+ filters: ['/targetemsecure.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://targetemsecure.blob.core.windows.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||multporn.net/frunti_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://multporn.net/frunti_punti_lad.js',
+ },
+ {
+ filters: ['@@||computerworld.com/www/js/ads/gpt_includes.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/ads/gpt_includes.js',
+ },
+ {
+ filters: ['/analytics/eloqua/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/analytics/eloqua/',
+ },
+ {
+ filters: ['/elqfcs.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/analytics/eloqua/elqFCS.js',
+ },
+ {
+ filters: ['/elqscr.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/analytics/eloqua/elqScr.js',
+ },
+ {
+ filters: ['/elqidg.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/analytics/eloqua/elqIDG.js',
+ },
+ {
+ filters: ['/sponsored-links.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.computerworld.com/www.idge/css/sponsored-links.css',
+ },
+ {
+ filters: ['/brandAnalytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.computerworld.com/www/js/analytics/brandAnalytics.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||gameblog.fr/scripts/adframe.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.gameblog.fr/scripts/adframe.js',
+ },
+ {
+ filters: ['||polluxnetwork.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn-assetsx.polluxnetwork.com',
+ },
+ {
+ filters: ['/pub/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s79369.cdn.ngenix.net/static/js/pub/ads/',
+ },
+ {
+ filters: ['||google.com/insights/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/insights/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://buzzmonclick.com',
+ type: 'script',
+ url: 'https://buzzmonclick.com/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||befirstcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://befirstcdn.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@||yandex.ru/metrika/watch.js$domain=alean.ru|anoncer.net|nabortu.ru|tv.yandex.ru|tvrain.ru',
+ ],
+ sourceUrl: 'https://tvrain.ru',
+ type: 'script',
+ url: 'https://mc.yandex.ru/metrika/watch.js',
+ },
+ {
+ filters: ['/clicktracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hessenschau.de/assets_2.61.1/js/clickTracking.js',
+ },
+ {
+ filters: ['/annonser.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://annonser.single.no',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://gum-gum-streaming.com',
+ type: 'script',
+ url: 'https://gum-gum-streaming.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/statistics.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://iogames.space/modules/statistics/statistics.js?',
+ },
+ {
+ filters: ['/full-page-script.$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://srtfly.com/js/full-page-script.js',
+ },
+ {
+ filters: ['/videoads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://dupl.io/videoAds.js',
+ },
+ {
+ filters: ['||macworld.com/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.macworld.com/ads/',
+ },
+ {
+ filters: ['||tracker.downdetector.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracker.downdetector.com',
+ },
+ {
+ filters: ['.ad6media.$domain=~ad6media.fr', '||ad6media.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.ad6media.fr',
+ },
+ {
+ filters: ['/adgear.js', '||adgear.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.adgear.com//adgear.js',
+ },
+ {
+ filters: ['||affiz.net^$third-party', '/ads_display.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://server1.affiz.net/tracking/ads_display.php',
+ },
+ {
+ filters: ['/smartpixel-1.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2qmp7jjpd79k7.cloudfront.net/smartpixel-1.js',
+ },
+ {
+ filters: ['||toyota.com/analytics/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.toyota.com/analytics/',
+ },
+ {
+ filters: ['/pageTracking.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://offer.optus.com.au/Script/pageTracking.js',
+ },
+ {
+ filters: ['||report-uri.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://irishtimes.report-uri.io',
+ },
+ {
+ filters: ['||adsp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adsp.com',
+ },
+ {
+ filters: ['@@||macworld.com/www/js/ads/jquery.lazyload-ad.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.macworld.com/www/js/ads/jquery.lazyload-ad.js',
+ },
+ {
+ filters: ['$image,third-party,xmlhttprequest,domain=rd.com'],
+ sourceUrl: 'https://www.rd.com',
+ type: 'image',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['-ad-pixel-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rd.com/wp-content/plugins/rd-ad-pixel-controller',
+ },
+ {
+ filters: ['||alcmpn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wt.alcmpn.com',
+ },
+ {
+ filters: ['||traversedlp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.traversedlp.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://reseauinternational.net',
+ type: 'script',
+ url: 'https://reseauinternational.net/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['@@||omtrdc.net^*/mbox/json?$xmlhttprequest,domain=vodafone.it'],
+ sourceUrl: 'http://m.vodafone.it',
+ type: 'xhr',
+ url: 'http://vodafoneitaly.tt.omtrdc.net/m2/vodafoneitaly/mbox/json?',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||smart-dmp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.ucg.smart-dmp.com',
+ },
+ {
+ filters: ['||mynsystems.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://white.mynsystems.com',
+ },
+ {
+ filters: ['||mps-gba.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://online.mps-gba.de',
+ },
+ {
+ filters: ['||keytiles.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://lb-de2.keytiles.com',
+ },
+ {
+ filters: ['@@||mobinozer.com^*/gads.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.games.mobinozer.com/shared/loader/gads.js',
+ },
+ {
+ filters: ['@@||mobinozer.com^*/advert.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.games.mobinozer.com/shared/loader/advert.js',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/cedexis.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.adverline.com/tools/cedexis.js',
+ },
+ {
+ filters: ['||adxpansion.com^$third-party', '||adxpansion.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.adxpansion.com',
+ },
+ {
+ filters: ['||quadran.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.quadran.eu',
+ },
+ {
+ filters: ['||air360tracker.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.air360tracker.net',
+ },
+ {
+ filters: ['||tyxo.bg^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cnt.tyxo.bg',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||ometria.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ometria.com',
+ },
+ {
+ filters: ['||tag4arm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.tag4arm.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||agilone.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.agilone.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://positivr.fr',
+ type: 'script',
+ url: 'https://positivr.fr/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||sk8t.fr^$third-party', '/sk1n-async.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://sk8t.fr/js/sk1n-async.js',
+ },
+ {
+ filters: ['||7x5.fr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://s.7x5.fr',
+ },
+ {
+ filters: ['||widget.spoods.io/loader.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.spoods.io/loader.js',
+ },
+ {
+ filters: ['||metaffiliation.com^$~image,~subdocument,third-party,domain=~netaffiliation.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://img.metaffiliation.com',
+ },
+ {
+ filters: ['||tracker.twenga.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tracker.twenga.fr',
+ },
+ {
+ filters: ['_bannerads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.linuxquestions.org/ads/OSS_NA18_BannerAds_Generic_v1_125x125.png',
+ },
+ {
+ filters: ['||7x4.fr^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://7x4.fr',
+ },
+ {
+ filters: ['||myaffiliates.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.myaffiliates.com',
+ },
+ {
+ filters: ['||veoxa.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://profiling.veoxa.com',
+ },
+ {
+ filters: ['||hunkal.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://binel.hunkal.com',
+ },
+ {
+ filters: ['||tinypass.com^*/track?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://api-v3.tinypass.com/api/v3/page/track?',
+ },
+ {
+ filters: ['||gacela.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gacela.eu',
+ },
+ {
+ filters: ['||derwesten.de/stats/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.derwesten.de/stats/',
+ },
+ {
+ check: true,
+ filters: ['|https://$script,third-party,domain=alltube.pl'],
+ sourceUrl: 'http://www.alltube.pl',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||ajax.googleapis.com/ajax/libs/$script,domain=alltube.pl'],
+ sourceUrl: 'http://www.alltube.pl',
+ type: 'script',
+ url: 'https://ajax.googleapis.com/ajax/libs/',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.pl/jsverify.php$xmlhttprequest'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://www.alltube.pl/jsverify.php',
+ },
+ {
+ filters: ['|http://$script,third-party,domain=alltube.pl'],
+ sourceUrl: 'http://www.alltube.pl',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||akanoo.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.akanoo.com',
+ },
+ {
+ filters: ['||greerlies.pro^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://greerlies.pro',
+ },
+ {
+ filters: ['/hstrck-detect.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://weltsport.appspot.com/hstrck-detect.js',
+ },
+ {
+ filters: ['||hstrck.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://a.hstrck.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ttt.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.teltarif.de/ttt.gif?',
+ },
+ {
+ filters: ['||bauernative.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.bauernative.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||saymedia.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://beacon-streamer.saymedia.com',
+ },
+ {
+ filters: ['/pixel.track2?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.comodo.com/images/pixel.track2?',
+ },
+ {
+ filters: ['||seatguru.com^*/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.seatguru.com/en_US/cat/js/20180928201007/analytics.js',
+ },
+ {
+ filters: ['||nudevista.com/xhr/xhr.html'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.nudevista.com/xhr/xhr.html',
+ },
+ {
+ filters: ['/TealeafSDK.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.uhaul.com/tl/TealeafSDK.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||proadscdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.proadscdn.com',
+ },
+ {
+ filters: ['||teltarif.de/ad/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.teltarif.de/ad/',
+ },
+ {
+ filters: ['||ticklesign.com^', '||ticklesign.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ticklesign.com',
+ },
+ {
+ filters: ['/pixel?type='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d.company-target.com/pixel?type=img',
+ },
+ {
+ filters: ['||bizsolutions.strands.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bizsolutions.strands.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['_advertisement.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dejure.org/jcg/_advertisement.js',
+ },
+ {
+ filters: ['/assets/ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://towideo.pl/assets/ads_configs',
+ },
+ {
+ filters: ['||ncs.eadaily.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ncs.eadaily.com',
+ },
+ {
+ filters: ['||iias.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.iias.eu',
+ },
+ {
+ filters: ['||legistrike.pro^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://legistrike.pro',
+ },
+ {
+ filters: ['.com/adlib/', '_adlib.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://storage.googleapis.com/adlib/deju_adlib.js',
+ },
+ {
+ filters: ['||cptrack.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content.cptrack.de',
+ },
+ {
+ filters: ['/banners/300'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.elegantthemes.com/affiliates/media/banners/300x250.gif',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://tpo.nl',
+ type: 'script',
+ url: 'https://tpo.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||wiwo.de/preparesite/empty.js$script,first-party'],
+ sourceUrl: 'https://www.wiwo.de',
+ type: 'script',
+ url: 'https://www.wiwo.de/preparesite/empty.js',
+ },
+ {
+ filters: ['||intgr.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://a.intgr.net',
+ },
+ {
+ filters: ['||ads.saymedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.saymedia.com',
+ },
+ {
+ filters: ['||ad.atdmt.com/i/*='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.atdmt.com/i/img;p=11047201363493;cache=',
+ },
+ {
+ filters: ['/criteoRTA.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://smart.idmnet.pl/criteoRTA.js',
+ },
+ {
+ filters: ['||j93557g.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://j93557g.com',
+ },
+ {
+ filters: ['/xtclicks_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.education.gouv.fr/xiti/xtclicks_all.js',
+ },
+ {
+ filters: ['||brighteroption.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://track.brighteroption.com',
+ },
+ {
+ filters: ['||xclaimwords.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hr-engine.xclaimwords.net',
+ },
+ {
+ filters: ['_afs_ads.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.google.com/afsonline/show_afs_ads.js',
+ },
+ {
+ filters: ['/adedge/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sv.brand-display.com/adedge/',
+ },
+ {
+ filters: ['||publicidees.com^', '||publicidees.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.publicidees.com',
+ },
+ {
+ filters: ['||apicit.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://apicit.net',
+ },
+ {
+ filters: ['||lvodomi.info^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://lvodomi.info',
+ },
+ {
+ filters: ['/modules/dfp/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.haaretz.co.il/htz/js/resp/modules/dfp/',
+ },
+ {
+ filters: ['||remintrex.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static1.remintrex.com',
+ },
+ {
+ filters: ['@@||rustica.fr/assets/js/advertisement$script,first-party'],
+ sourceUrl: 'https://www.rustica.fr',
+ type: 'script',
+ url: 'https://www.rustica.fr/assets/js/advertisement-20170824.js',
+ },
+ {
+ filters: ['||measurementapi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://196345.measurementapi.com',
+ },
+ {
+ filters: ['/imp?sid='],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ichilipa.ru/imp?sid=363965&inner=1',
+ },
+ {
+ filters: ['@@||haaretz.co.il/logger/p.gif?$image,xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.haaretz.co.il/logger/p.gif?',
+ },
+ {
+ filters: ['||coull.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cookiemonster.coull.com',
+ },
+ {
+ filters: ['||ct.buzzfeed.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ct.buzzfeed.com',
+ },
+ {
+ filters: ['/nextdaymedia-ads/*', '-ads/videoblaster/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3-eu-west-1.amazonaws.com/nextdaymedia-ads/videoblaster/',
+ },
+ {
+ filters: ['/adplogger/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://services.api.no/api/adplogger/',
+ },
+ {
+ filters: ['/js/tracking_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn3.prod.lad-vid-agg.ladmedia.fr/build/js/tracking_js.6047ecf9.js',
+ },
+ {
+ filters: ['||evt.klarna.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://evt.klarna.com',
+ },
+ {
+ filters: ['||conversionlogic.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.conversionlogic.net',
+ },
+ {
+ filters: ['||analytics.freespee.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.freespee.com',
+ },
+ {
+ filters: ['/tag_sys.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.tisoomi-services.com/sjkhffg/1540305948532/tag_sys.html',
+ },
+ {
+ filters: ['||utility.rogersmedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://utility.rogersmedia.com',
+ },
+ {
+ filters: ['||backstage.funnelenvy.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://backstage.funnelenvy.com',
+ },
+ {
+ filters: ['||b1js.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.b1js.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.pubg.com',
+ type: 'script',
+ url: 'https://www.pubg.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.pubg.com',
+ type: 'script',
+ url: 'https://www.pubg.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||b1img.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://b1img.com',
+ },
+ {
+ filters: ['&banner_id='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ing.dk/ads.js?&banner_id=123321',
+ },
+ {
+ check: true,
+ filters: ['||o0bc.com^'],
+ sourceUrl: 'https://www.boston.com',
+ type: 'image',
+ url: 'https://c.o0bc.com',
+ },
+ {
+ filters: ['/api/v1/stat?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://app.getsitecontrol.com/api/v1/stat?',
+ },
+ {
+ filters: ['||radio-canada.ca/omniture/omni_stats_base.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.radio-canada.ca/omniture/omni_stats_base.js?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://bringatrailer.com',
+ type: 'script',
+ url: 'https://cdn.bringatrailer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||nonstoppartner.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ext.nonstoppartner.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://bringatrailer.com',
+ type: 'script',
+ url: 'https://cdn.bringatrailer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adiro.$domain=~adiro.se'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.motorsport-total.com/styles/tpl/mst/js/adiro.js',
+ },
+ {
+ filters: ['||pages05.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sc.pages05.net',
+ },
+ {
+ filters: [
+ '@@||videoplaza.tv/*/pulse-sdk-html5/*$script,domain=rtl.be',
+ '||videoplaza.tv^$third-party,script',
+ ],
+ sourceUrl: 'http://m.rtl.be',
+ type: 'script',
+ url: 'http://service.videoplaza.tv/proxy/pulse-sdk-html5/',
+ },
+ {
+ filters: ['||ad.wsod.com^$third-party', '||ad.wsod.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.wsod.com',
+ },
+ {
+ filters: [
+ '$script,domain=zdnet.fr,third-party',
+ '@@||ajax.googleapis.com^$script,domain=zdnet.fr',
+ ],
+ sourceUrl: 'https://www.zdnet.fr',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://bringatrailer.com',
+ type: 'script',
+ url: 'https://cdn.bringatrailer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||phywi.org^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.phywi.org',
+ },
+ {
+ filters: ['/Universal-Federated-Analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www2.ed.gov/style/Universal-Federated-Analytics.1.0.js',
+ },
+ {
+ filters: ['/stats/xtcore.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.autoplus.fr/js/stats/xtcore.js',
+ },
+ {
+ filters: ['/sra_analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content.shoprunner.com/srsec/sra_analytics.min.js',
+ },
+ {
+ filters: ['||shoprunner.com^*/record?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://srsvc.shoprunner.com/v2/stream/pdp/record?',
+ },
+ {
+ filters: ['/leaderboard_ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.toptenreviews.com/pdp/js/components/leaderboard_ad.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://bringatrailer.com',
+ type: 'script',
+ url: 'https://cdn.bringatrailer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['-ads-production.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nzme-ads-production.s3.amazonaws.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['.org/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bbbpromos.org/ads-async.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://bringatrailer.com',
+ type: 'script',
+ url: 'https://cdn.bringatrailer.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||smintmouse.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.smintmouse.com',
+ },
+ {
+ filters: ['||cloudfront.net/analytics_$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3u9kj2t4eazrw.cloudfront.net/analytics_global_new.js',
+ },
+ {
+ filters: ['.de/werbung/'],
+ sourceUrl: 'http://www.nordbayern.de',
+ type: 'image',
+ url: 'http://mediadb.nordbayern.de/werbung/',
+ },
+ {
+ filters: ['/probance_tracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.autoplus.fr/probance/2018/10/23/probance_tracker.js',
+ },
+ {
+ filters: ['||badgirlz.org^', '||badgirlz.org^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://badgirlz.org',
+ },
+ {
+ filters: ['||metalyzer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.metalyzer.com',
+ },
+ {
+ filters: ['||society6.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://society6.com',
+ },
+ {
+ filters: [
+ '@@||openx.net/w/1.0/jstag?nc=$script,domain=erdbeerlounge.de|gamona.de|giga.de|kino.de|spielaffe.de|spieletipps.de',
+ ],
+ sourceUrl: 'https://m.spielaffe.de',
+ type: 'script',
+ url: 'https://stroer-d.openx.net/w/1.0/jstag?nc=4444-spielaffe',
+ },
+ {
+ filters: [
+ '@@||amazon-adsystem.com/aax2/amzn_ads.js$domain=gamona.de|giga.de|spielaffe.de|spieletipps.de',
+ ],
+ sourceUrl: 'https://m.spielaffe.de',
+ type: 'script',
+ url: 'https://c.amazon-adsystem.com/aax2/amzn_ads.js',
+ },
+ {
+ filters: [
+ '||ds-aksb-a.akamaihd.net^$domain=kabeleins.de|prosieben.de|prosiebenmaxx.de|ran.de|sat1.de|sixx.de',
+ ],
+ sourceUrl: 'https://www.ran.de',
+ type: 'script',
+ url: 'https://ds-aksb-a.akamaihd.net',
+ },
+ {
+ filters: ['-ad-big.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.hwupgrade.it/css/img/icona-ad-big.png',
+ },
+ {
+ filters: ['||pcrl.co/js/jstracker.min.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://assets.pcrl.co/js/jstracker.min.js',
+ },
+ {
+ filters: ['||lettucelimit.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://lettucelimit.com',
+ },
+ {
+ filters: ['||leadboxer.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.leadboxer.com',
+ },
+ {
+ filters: ['||smart-digital-solutions.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.smart-digital-solutions.com',
+ },
+ {
+ filters: ['||rfksrv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://43081656-prod.rfksrv.com',
+ },
+ {
+ filters: ['||amazonaws.com/cdn.barilliance.com/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/cdn.barilliance.com/',
+ },
+ {
+ filters: ['||scripts.psyma.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scripts.psyma.com',
+ },
+ {
+ filters: ['||omniconvert.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.omniconvert.com',
+ },
+ {
+ filters: ['||adventori.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adventori.com',
+ },
+ {
+ filters: ['/metriweb/spring.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.immoweb.be/metriweb/spring.js',
+ },
+ {
+ filters: ['||trackuity.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.trackuity.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['.php?ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pornkino.to/tf/foobar.php?ad_channel=1',
+ },
+ {
+ filters: ['/generateadtag.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.immoweb.be/nl/js/generateadtag.js',
+ },
+ {
+ filters: ['||trafficfabrik.com^', '||trafficfabrik.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.trafficfabrik.com',
+ },
+ {
+ filters: ['||prizel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.prizel.com',
+ },
+ {
+ filters: ['||femalefirst.co.uk/widgets/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.femalefirst.co.uk/widgets/',
+ },
+ {
+ filters: ['/pdpads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.produpress.be/assets/js/immo/pdpads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['||adten.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.adten.eu',
+ },
+ {
+ filters: ['/netseerads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ps.ns-cdn.com/dsatserving2/scripts/netseerads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['@@||lipsum.com/images/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.lipsum.com/images/banners/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://pornkino.to',
+ type: 'script',
+ url: 'https://pornkino.to/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: ['||refinedads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.refinedads.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://hub.packtpub.com',
+ type: 'script',
+ url: 'https://hub.packtpub.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||thetvdb.com/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.thetvdb.com/banners/',
+ },
+ {
+ filters: ['||gnezdo.ru^$third-party', '||gnezdo.ru/cgi-bin/$third-party', '/tzr.fcgi?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fcgi.gnezdo.ru/cgi-bin/tzr.fcgi?',
+ },
+ {
+ filters: ['||a.adroll.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://a.adroll.com',
+ },
+ {
+ filters: ['/banners/promo/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.evga.com/home/banners/promo/',
+ },
+ {
+ filters: ['||wipe.de^$~script,third-party', '||wipe.de^$third-party,image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tb.wwa.wipe.de',
+ },
+ {
+ filters: ['/adscripts/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.71i.de/global_js/AdScripts/',
+ },
+ {
+ filters: ['||himediads.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.himediads.com',
+ },
+ {
+ filters: ['/mistats/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.miamiherald.com/mistats/',
+ },
+ {
+ filters: ['/finalizestats.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.miamiherald.com/mistats/finalizestats.js',
+ },
+ {
+ filters: ['/adnexus-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a248.e.akamai.net/appnexus.download.akamai.com/89298/adnexus-prod',
+ },
+ {
+ filters: ['||directcrm.ru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.directcrm.ru',
+ },
+ {
+ filters: ['/call/pubj/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.horyzon-media.com/call/pubj/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ filters: ['/amazon-ad-', '-ad-link-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.lewrockwell.com/wp-content/mu-plugins/amazon-ad-link-lr',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'script',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'xhr',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://m.beforeitsnews.com',
+ type: 'image',
+ url: 'https://ad.beforeitsnews.com/ad/',
+ },
+ {
+ filters: ['||thisiswaldo.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.thisiswaldo.com',
+ },
+ {
+ filters: ['/triggertag.js', '||triggertag.gorillanation.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.triggertag.gorillanation.com/js/triggertag.js',
+ },
+ {
+ filters: ['/gn_tracking.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.assets.craveonline.com/js/tracking/gn_tracking.js',
+ },
+ {
+ filters: ['||cloudfront.net^$script,domain=gentside.com'],
+ sourceUrl: 'https://www.gentside.com',
+ type: 'script',
+ url: 'https://d2lcoyv3ods5zz.cloudfront.net',
+ },
+ {
+ filters: ['@@||gentside.com/js/prebid/config/*$script,first-party'],
+ sourceUrl: 'https://www.gentside.com',
+ type: 'script',
+ url: 'https://www.gentside.com/js/prebid/config/',
+ },
+ {
+ filters: [
+ '@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=esgentside.com|exclusivomen.com|gentside.com|gentside.co.uk|gentside.de|gentside.it|maxisciences.com|ohmirevista.com|ohmymag.co.uk|ohmymag.com|ohmymag.de|ohmymag.it',
+ ],
+ sourceUrl: 'https://www.gentside.com',
+ type: 'script',
+ url: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://stantondaily.com',
+ type: 'script',
+ url: 'http://stantondaily.com/ezoic/',
+ },
+ {
+ filters: ['||listrakbi.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.listrakbi.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://stantondaily.com',
+ type: 'script',
+ url: 'http://stantondaily.com/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://stantondaily.com',
+ type: 'script',
+ url: 'http://stantondaily.com/ezoic/',
+ },
+ {
+ filters: ['||arianelab.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://i.arianelab.com',
+ },
+ {
+ filters: ['||mybuys.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://t.p.mybuys.com',
+ },
+ {
+ filters: ['||55labs.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.55labs.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://stantondaily.com',
+ type: 'script',
+ url: 'http://stantondaily.com/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://stantondaily.com',
+ type: 'script',
+ url: 'http://stantondaily.com/ezoic/',
+ },
+ {
+ filters: ['||hit-parade.com^', '||hit-parade.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://loga.hit-parade.com',
+ },
+ {
+ filters: ['@@||analytics.logsss.com/logsss*.min.js$script,domain=rosegal.com'],
+ sourceUrl: 'https://m.rosegal.com',
+ type: 'script',
+ url: 'https://analytics.logsss.com/logsss20.min.js',
+ },
+ {
+ filters: ['||sexuria.com/poup.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sexuria.com/poup.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://creativecommons.org',
+ type: 'script',
+ url: 'https://creativecommons.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||ziffstatic.com/jst/zdsticky.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.ziffstatic.com/jst/zdsticky.rel.js',
+ },
+ {
+ filters: ['||r24-tech.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://muser.r24-tech.com',
+ },
+ {
+ filters: ['/article_counter.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.pravda.sk/stats/article_counter.php?',
+ },
+ {
+ filters: ['@@||assets.adobedtm.com^$script,domain=rogers.com'],
+ sourceUrl: 'https://www.rogers.com',
+ type: 'script',
+ url: 'https://assets.adobedtm.com',
+ },
+ {
+ filters: ['||creativecommons.org/elog/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://search.creativecommons.org/elog/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://creativecommons.org',
+ type: 'script',
+ url: 'https://creativecommons.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ebook-gratuit.co',
+ type: 'script',
+ url: 'https://www.ebook-gratuit.co/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://creativecommons.org',
+ type: 'script',
+ url: 'https://creativecommons.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['@@||boldchat.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://vmss.boldchat.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://creativecommons.org',
+ type: 'script',
+ url: 'https://creativecommons.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ebook-gratuit.co',
+ type: 'script',
+ url: 'https://www.ebook-gratuit.co/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://creativecommons.org',
+ type: 'script',
+ url: 'https://creativecommons.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ebook-gratuit.co',
+ type: 'script',
+ url: 'https://www.ebook-gratuit.co/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||bankrate.com/jsfeeds/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'http://www.bankrate.com/jsfeeds/',
+ },
+ {
+ filters: ['-ads.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jungefreiheit.de/wp-content/themes/jf/js/mobile-ads.js?',
+ },
+ {
+ filters: ['||webleads-tracker.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stats.webleads-tracker.com',
+ },
+ {
+ filters: ['||virgul.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ng.virgul.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ghacks.net',
+ type: 'script',
+ url: 'https://www.ghacks.net/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/native-ad-'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ced-ns.sascdn.com/diff/templates/js/native-ad-rtb',
+ },
+ {
+ filters: ['||stat24.com^', '||stat24.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://redefine.hit.stat24.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ghacks.net',
+ type: 'script',
+ url: 'https://www.ghacks.net/wp-content/cache/busting/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ajax-hits-counter/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://cpykami.ru/wp-content/plugins/ajax-hits-counter/',
+ },
+ {
+ filters: [
+ '|https://$script,third-party,xmlhttprequest,domain=rlslog.net',
+ '||trust.zone^$third-party',
+ ],
+ sourceUrl: 'http://www.rlslog.net',
+ type: 'script',
+ url: 'https://trust.zone',
+ },
+ {
+ filters: ['|http://$script,third-party,xmlhttprequest,domain=rlslog.net'],
+ sourceUrl: 'http://www.rlslog.net',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['||pxl2015x1.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://p.pxl2015x1.com',
+ },
+ {
+ filters: ['_ad.png?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gaia.adage.com/images/bin/image/small/NRA_pro_Kavanaugh_ad.png?',
+ },
+ {
+ filters: ['||prodwaves.pro^', '||prodwaves.pro^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://prodwaves.pro',
+ },
+ {
+ filters: ['||adoric-om.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://95662602.adoric-om.com',
+ },
+ {
+ filters: ['/t/event?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://2bf9.secretescapes.com/t/event?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.les-crises.fr',
+ type: 'script',
+ url: 'https://www.les-crises.fr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||flex.msn.com/mstag/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://flex.msn.com/mstag/',
+ },
+ {
+ filters: ['-adtool.appspot.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://carid-adtool.appspot.com',
+ },
+ {
+ filters: ['.com/js/ga-*.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.carid.com/js/ga-ec.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.les-crises.fr',
+ type: 'script',
+ url: 'https://www.les-crises.fr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/TagCommander.cfc?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.largus.fr/v4/remote/TagCommander.cfc?',
+ },
+ {
+ filters: ['||keenspot.com/images/headerbar-'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://cdn.keenspot.com/images/headerbar-keenspotshop-twokindsvol4.gif',
+ },
+ {
+ filters: ['||geni.us/snippet.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.geni.us/snippet.js',
+ },
+ {
+ filters: ['/analytics/ga.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wwwcache.wral.com/presentation/v3/scripts/providers/analytics/ga.js',
+ },
+ {
+ filters: ['||visitor-track.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://code.visitor-track.com',
+ },
+ {
+ filters: ['||multiview.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sync.multiview.com',
+ },
+ {
+ filters: ['||r.my.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://r.my.com',
+ },
+ {
+ filters: ['||my.com/v1/hit/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://1l-hit.my.com/v1/hit/',
+ },
+ {
+ filters: ['/argtk.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.largus.fr/analytics/includes/javascript/argtk.min.js',
+ },
+ {
+ filters: ['||stadt-bremerhaven.de/grafiken/pswbanner.jpg'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stadt-bremerhaven.de/grafiken/pswbanner.jpg',
+ },
+ {
+ filters: ['/ads-common.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ir-na.amazon-adsystem.com/s/ads-common.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lustigewitzeblog.com',
+ type: 'script',
+ url: 'http://lustigewitzeblog.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/app/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://target.my.com/media/js/app/ads.js',
+ },
+ {
+ check: true,
+ filters: [
+ '||bullseye.backbeatmedia.com^',
+ '||backbeatmedia.com^$third-party',
+ '||backbeatmedia.com^',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bullseye.backbeatmedia.com',
+ },
+ {
+ check: true,
+ filters: ['/adserver1.', '||adserver1.backbeatmedia.com^', '/ajrotator/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adserver1.backbeatmedia.com/servlet/ajrotator/',
+ },
+ {
+ filters: ['/optimost.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.avis.com/etc/designs/avis/home/clientlib/scripts/common/optimost.js',
+ },
+ {
+ filters: ['/widget/s.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://nextclick.pl/widget/s.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lustigewitzeblog.com',
+ type: 'script',
+ url: 'http://lustigewitzeblog.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['?event=performancelogger:'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.stepstone.de/?event=performancelogger:general.logPagePerformance',
+ },
+ {
+ filters: ['||navrcholu.cz^', '||navrcholu.cz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s1.navrcholu.cz',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://lustigewitzeblog.com',
+ type: 'script',
+ url: 'http://lustigewitzeblog.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||haaretz.com/logger/p.gif?$image,xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.haaretz.com/logger/p.gif?',
+ },
+ {
+ filters: ['/lunametrics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.digikey.com/MakerScripts/lunametrics-youtube.gtm.min.js',
+ },
+ {
+ filters: ['/css/ads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://forum.root.cz/Themes/root-reseller/css/ads-local.css',
+ },
+ {
+ filters: ['||pixel.ad^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://centro.pixel.ad',
+ },
+ {
+ filters: ['||epnt.ebay.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://epnt.ebay.com',
+ },
+ {
+ filters: ['_browsermetrix.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.wireshark.org/assets/js/opnet_browsermetrix.c.js',
+ },
+ {
+ filters: ['/www/xengine/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://qc-de.stepstone.com/www/xengine/',
+ },
+ {
+ filters: ['||adk2.co^$third-party', '||adk2.co^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://speednetwork14.adk2.co',
+ },
+ {
+ filters: ['||tget.me^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tget.me',
+ },
+ {
+ filters: ['_metricsTagging.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/static.politifact.com/js/tpc_metricsTagging.js',
+ },
+ {
+ filters: ['||smartzonessva.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smartzonessva.com',
+ },
+ {
+ filters: ['||d36wtdrdo22bqa.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d36wtdrdo22bqa.cloudfront.net',
+ },
+ {
+ filters: ['/?essb_counter_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'http://femmie.ru/?essb_counter_cache=rebuild',
+ },
+ {
+ filters: ['-core-ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://share.9cdn.net/share/short_cache/js/ads/mi9-core-ads.v3.js',
+ },
+ {
+ filters: ['.au/c.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://c.nine.com.au/c.gif?',
+ },
+ {
+ filters: ['||adc.nine.com.au^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adc.nine.com.au',
+ },
+ {
+ filters: ['/adman/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://xmissy.nl/adman/',
+ },
+ {
+ filters: ['||etracker.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.etracker.com',
+ },
+ {
+ filters: ['_popunder.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xmissy.nl/adman/popscripts/pupunder/realgfporn_popunder.min.js',
+ },
+ {
+ filters: ['/analytics/track/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://in.brilliant.org/analytics/track/',
+ },
+ {
+ filters: ['@@||omtrdc.net/cdn/target.js$script,domain=swisscom.ch'],
+ sourceUrl: 'https://www.swisscom.ch',
+ type: 'script',
+ url: 'https://cdn.tt.omtrdc.net/cdn/target.js',
+ },
+ {
+ filters: ['@@||omtrdc.net^*/mbox/ajax?$script,domain=swisscom.ch'],
+ sourceUrl: 'https://www.swisscom.ch',
+ type: 'script',
+ url: 'https://swisscomag.tt.omtrdc.net/m2/swisscomag/mbox/ajax?',
+ },
+ {
+ filters: ['|https://$script,third-party,xmlhttprequest,domain=fullmatchesandshows.com'],
+ sourceUrl: 'https://www.fullmatchesandshows.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['/adservices/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.relappro.com/adservices/',
+ },
+ {
+ filters: ['||mms.oregonlive.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mms.oregonlive.com',
+ },
+ {
+ filters: ['/tracking/fingerprint/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://www.nexon.net/api/v001/account/tracking/fingerprint/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||ratkalol.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.ratkalol.com',
+ },
+ {
+ filters: ['*.php$domain=alrincon.com'],
+ sourceUrl: 'http://www.alrincon.com',
+ type: 'script',
+ url: 'http://www.alrincon.com/poun.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@||imrworldwide.com/v60.js$domain=corriereadriatico.it|ilgazzettino.it|ilmattino.it|ilmessaggero.it|leggo.it|quotidianodipuglia.it',
+ ],
+ sourceUrl: 'https://www.ilmessaggero.it',
+ type: 'script',
+ url: 'https://secure-it.imrworldwide.com/v60.js',
+ },
+ {
+ filters: ['||n26.com/n26_sp_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://n26-trusted.n26.com/n26_sp_282.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@||omtrdc.net^*/mbox/standard?$script,domain=ancestry.co.uk|ancestry.com|ancestry.com.au|ancestry.it|blogtalkradio.com|swisscom.ch',
+ ],
+ sourceUrl: 'https://www.swisscom.ch',
+ type: 'script',
+ url: 'https://swisscomag.tt.omtrdc.net/m2/swisscomag/mbox/standard?',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.tv/jsverify.php$first-party,xmlhttprequest'],
+ sourceUrl: 'http://alltube.tv',
+ type: 'xhr',
+ url: 'http://alltube.tv/jsverify.php',
+ },
+ {
+ filters: ['||track.cedsdigital.it^', '/track_views.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.cedsdigital.it/track_views.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.tv/jsverify.php$first-party,xmlhttprequest'],
+ sourceUrl: 'http://alltube.tv',
+ type: 'xhr',
+ url: 'http://alltube.tv/jsverify.php',
+ },
+ {
+ filters: ['/ocounter.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://freehostedscripts.net/ocounter.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||nmcdn.us^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.nmcdn.us',
+ },
+ {
+ filters: ['||tacticalrepublic.com^$third-party', '://delivery.*/jstag^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://delivery.tacticalrepublic.com/w/1.0/jstag',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.commitstrip.com',
+ type: 'script',
+ url: 'http://www.commitstrip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||appsha5.space^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://l1.appsha5.space',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.tv/jsverify.php$first-party,xmlhttprequest'],
+ sourceUrl: 'http://alltube.tv',
+ type: 'xhr',
+ url: 'http://alltube.tv/jsverify.php',
+ },
+ {
+ filters: [
+ '/ga.min.js',
+ '@@||qbrick.com^*/ga.min.js$domain=iltalehti.fi',
+ '@@||avpwidgets.qbrick.com/playplugins/*/ga/ga.min.js$script',
+ ],
+ sourceUrl: 'https://www.iltalehti.fi',
+ type: 'script',
+ url: 'https://avpwidgets.qbrick.com/playplugins/ga/v2/modules/ga/ga.min.js',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.tv/jsverify.php$first-party,xmlhttprequest'],
+ sourceUrl: 'http://alltube.tv',
+ type: 'xhr',
+ url: 'http://alltube.tv/jsverify.php',
+ },
+ {
+ check: true,
+ filters: ['@@||alltube.tv/jsverify.php$first-party,xmlhttprequest'],
+ sourceUrl: 'http://alltube.tv',
+ type: 'xhr',
+ url: 'http://alltube.tv/jsverify.php',
+ },
+ {
+ filters: ['/ee-tagging.', '/mbox/at/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ee-tagging.s3.amazonaws.com/header/mbox/at/',
+ },
+ {
+ filters: ['||cooladata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.cooladata.com',
+ },
+ {
+ filters: ['||experience.contextly.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://experience.contextly.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.budgetbytes.com',
+ type: 'script',
+ url: 'https://www.budgetbytes.com/wp-content/cache/min/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://grrlpowercomic.com',
+ type: 'script',
+ url: 'http://grrlpowercomic.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||tracking.musixmatch.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracking.musixmatch.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ablebits.com',
+ type: 'script',
+ url: 'https://www.ablebits.com/office-addins-blog/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/fullad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ladies.de/global/js/fullad/fullad.js',
+ },
+ {
+ filters: ['_advertisement/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ladies.de/global/class/overlay_advertisement/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.budgetbytes.com',
+ type: 'script',
+ url: 'https://www.budgetbytes.com/wp-content/cache/min/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ablebits.com',
+ type: 'script',
+ url: 'https://www.ablebits.com/office-addins-blog/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||sumo.com/api/event/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sumo.com/api/event/',
+ },
+ {
+ filters: ['/gtm-tracking-events.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.yves-rocher.fr/_ui/shared/js/gtm-tracking-events.js',
+ },
+ {
+ filters: ['/webstats.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.westjet.com/assets/wj-web/js/webstats.js',
+ },
+ {
+ filters: ['||global.canon^*/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://global.canon/00cmn/js/en/analytics.js',
+ },
+ {
+ filters: ['/clicktale.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.westjet.com/resources/js/clicktale.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://medside.ru',
+ type: 'script',
+ url: 'https://medside.ru/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/nedstat.', '||nedstat.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://es.nedstat.net/cgi-bin/nedstat.gif',
+ },
+ {
+ filters: ['||superjob.ru/ws/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.superjob.ru/ws/',
+ },
+ {
+ filters: ['||blogherads.com^$third-party', '||blogherads.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.blogherads.com',
+ },
+ {
+ filters: ['||comfortablecheese.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://comfortablecheese.com',
+ },
+ {
+ filters: ['/dltrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rarlab.com/dltrack.js',
+ },
+ {
+ filters: ['/trackingCode-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.gametwist.com/nrgs/en/api/trackingCode-v1',
+ },
+ {
+ filters: ['||peer39.com^$third-party', '||peer39.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://catrg.peer39.com',
+ },
+ {
+ filters: ['.analytics.min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://epson.com.co/_ui/_v11551/responsive/common/js/acc.analytics.min.js',
+ },
+ {
+ filters: [
+ '@@||cxense.com/cx.js$domain=brandonsun.com|channelnewsasia.com|winnipegfreepress.com',
+ ],
+ sourceUrl: 'https://www.channelnewsasia.com',
+ type: 'script',
+ url: 'https://cdn.cxense.com/cx.js',
+ },
+ {
+ filters: ['||detailedglue.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'fetch',
+ url: 'https://detailedglue.com',
+ },
+ {
+ filters: ['/jsadscripts/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://services.investors.com/jsadscripts/',
+ },
+ {
+ filters: ['/ads/ad_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hardwarezone.com.sg/ads/ad_site_notice.js',
+ },
+ {
+ filters: ['/adnotice.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hardwarezone.com.sg/js/adNotice.js',
+ },
+ {
+ filters: ['||vepxl1.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.vepxl1.net',
+ },
+ {
+ filters: ['||nice264.com/data?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://nqs.nice264.com/data?',
+ },
+ {
+ filters: ['/gads.html'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.hifi-forum.de/timg/gads.htmlIyO2-FBOP8.gif',
+ },
+ {
+ filters: [
+ '||www.connect.de^$script,domain=www.connect.de',
+ '@@||connect.de/js/$script,domain=connect.de',
+ ],
+ sourceUrl: 'https://www.connect.de',
+ type: 'script',
+ url: 'https://www.connect.de/js/',
+ },
+ {
+ filters: ['||res.rbl.ms^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://res.rbl.ms',
+ },
+ {
+ filters: ['||geistm.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://i.geistm.com',
+ },
+ {
+ filters: ['||analytics.staticiv.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.staticiv.com',
+ },
+ {
+ filters: ['-sidebar-ad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://dailygeekshow.com/wp-content/themes/soofresh2/css/sticky-sidebar-ad.css',
+ },
+ {
+ filters: ['||t.powerreviews.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.powerreviews.com',
+ },
+ {
+ check: true,
+ filters: ['||adingo.jp.eimg.jp^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://c.adingo.jp.eimg.jp',
+ },
+ {
+ filters: ['||c.x.oanda.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.x.oanda.com',
+ },
+ {
+ filters: ['||adc.9news.com.au^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adc.9news.com.au',
+ },
+ {
+ filters: [
+ '@@||pagead2.googlesyndication.com/pagead/show_ads.js$domain=360haven.com|9bis.net|9jumpin.com.au|9news.com.au|afreesms.com|ahmedabadmirror.com|atlanticcitywebcam.com|bbc.com|bicimotosargentina.com|budget101.com|buickforums.com|bullywiihacks.com|carsfromitaly.info|codeasily.com|darkreloaded.com|docpaste.com|downloads.codefi.re|dragoart.com|dreamscene.org|drivearabia.com|dsero.com|epmads.com|fcportables.com|ffiles.com|file4go.com|foro.clubcelica.es|free.smsmarkaz.urdupoint.com|freecoins4.me|freewaregenius.com|ftlauderdalebeachcam.com|ftlauderdalewebcam.com|full-ngage-games.blogspot.com|gamespowerita.com|gifmagic.com|hackintosh.zone|hastlegames.com|hostyd.com|hulkusc.com|ibmmainframeforum.com|ilix.in|intoday.in|ip-address.org|keywestharborwebcam.com|kingofgames.net|korean-candy.com|kshowes.net|litecoiner.net|livenewschat.eu|lordpyrak.net|lumload.com|mangacap.com|mangakaka.com|megaallday.com|misheel.net|modsaholic.com|morganhillwebcam.com|moviemistakes.com|mugiwaranofansub.blogspot.com.ar|mypapercraft.net|newsok.com|ninjaraider.com|nonags.com|nornar.com|numberempire.com|nx8.com|nyharborwebcam.com|omegadrivers.net|photos.essence.com|portarubawebcam.com|portbermudawebcam.com|portcanaveralwebcam.com|portevergladeswebcam.com|portmiamiwebcam.com|portnywebcam.com|preemlinks.com|priva.us|puromarketing.com|radioaficion.com|rapid8.com|readersdigest.com.au|seeingwithsound.com|simply-debrid.com|smashgamez.com|softpedia.com|software4all-now.blogspot.co.uk|tamercome.blogspot.co.uk|tech-blog.net|techydoor.com|themes.themaxdavis.com|tipstank.com|top100clans.com|trutower.com|tv-kino.net|upfordown.com|uploadlw.com|urlink.at|virginmedia.com|warp2search.net|washington.edu|windows7themes.net|winterrowd.com|woprime.com|wtf-teen.com|yellowbridge.com',
+ ],
+ sourceUrl: 'https://www.9news.com.au',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/show_ads.js',
+ },
+ {
+ filters: ['||d.ligatus.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d.ligatus.com',
+ },
+ {
+ filters: ['||bitcoin-pay.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bitcoin-pay.eu',
+ },
+ {
+ filters: ['||plemencomp.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://plemencomp.co',
+ },
+ {
+ filters: ['.cc/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://fili.cc/ads/',
+ },
+ {
+ filters: [
+ '||banners.adultfriendfinder.com^$third-party',
+ '||banners.adultfriendfinder.com^',
+ '||adultfriendfinder.com/piclist?$third-party',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://banners.adultfriendfinder.com/piclist?',
+ },
+ {
+ filters: [
+ '@@||wp.com/wp-content/js/$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://downloadgameps3.com',
+ type: 'script',
+ url: 'https://s0.wp.com/wp-content/js/',
+ },
+ {
+ filters: [
+ '@@||secure.gravatar.com^$script,domain=171gifs.com|1proxy.de|2ddl.download|300mbfilms.org|300mbmovies4u.lol|321jav.com|353online.com|4horlover.blogspot.com|4horlover2.blogspot.com|4proxy.de|61tube.com|69sugar.com|6jav.com|6teentube.am|7starhd.com|9xmovies.site|abcmalayalam.co|abgdianci.com|adultdouga.biz|aflamfree.net|aflamtorrent.com|agarios.org|ahlamtv.com|al.ly|alantv.net|alivefoot.us|alivefootballstreaming.com|allpeliculas.com|alltube.tv|ally.sh|amabitch.com|amateur.ug|ancensored.com|andrija-i-andjelka.com|animakai.info|anime-music.info|anime-shitai.tv|anime-sugoi.com|animeado.net|animeai.org|animeai2.net|animelek.com|animemusicdownload.info|animesenzalimiti.com|animesonline2hd.org|animesonlinetk.info|animesorion.org|animezone.pl|anitube.es|antenasport.eu|anyanime.com|apklover.net|aquariumgays.com|arab-moviez.org|arabloads.net|arabp2p.com|archived.moe|artgifsocean.com|asianporndistrict.com|asianxv.com|assistirfilmeshd.org|assistirfilmesonline2.net|avonline.tv|avpockiehd.com|axxomovies.in|azkempire.com|aznude.com|baixarsomusica.com|bajarjuegospcgratis.com|bakacan.com|balkandownload.org|balkanje.com|bdmusicboss.net|bdsmporn.us|beautiesbondage.com|becekin.net|beelink.in|behchala.com|bersek.xyz|bestsongspk.com|big4umovies.net|bilasport.pw|bitch-show.com|bitporno.com|blackboxrepack.com|blacklionmusic.com|blogqpot.com|bludv.com|bokep2017.com|bokepcewek.net|bokepseks.co|bolly2tolly.com|bouncebreak.com|brazzershd.co|btdb.in|bugiltelanjang17.com|bypassed.cab|bypassed.plus|bypassed.team|calcioitalia.stream|camrouge.com|camwhores.co|cartoonhd.be|cartoonhd.cc|cartoonhd.globa|cartoonhd.global|cartoonth12.com|catchcoin.pw|catosports.ml|centraldeanimes.biz|cholotubex.com|cinemamkv.xyz|cinetux.net|clik.pw|cliphayho.com|cloudy.ec|coastalhut.com|columbia-xxx.com|comicporno.org|comicsmanics.com|cookiesnetfl1x.com|cooltamil.com|coroas40.com|coshurl.co|couchtuner.fr|couchtuner.nu|cricbox.net|cwtube.dj|czechmoneyteens.com|dailyuploads.net|dato.porn|datpiff.biz|dblatino.com|dclinks.info|dd-books.com|debrideco.com|demonoid.co|depedlps.blogspot.com|desixnxx.net|devil-torrents.pl|discografiascompletas.net|divxatope1.com|djmazamp3.info|dokazm.mk|donlotfile.com|download-xyz.com|downloadgameps3.com|downloadgamepsp.com|downloadgamexbox.com|dragonball-time.com|drakorindo.com|drakorindofilms.com|drhmonegyi.net|dvdwap.com|dzrepackteam.com|e-hentai.me|e-jav.com|easyxtubes.com|edmdl.com|ekasiwap.com|electro-torrent.pl|embedlink.info|embedsr.to|erodouga69.com|erostar.jp|estrenosdoramas.net|estrenosdoramas.org|etsmods.net|eurostreaming.video|exposure.pw|fagken.com|fas.li|fastdrama.co|faststream.in|faststream.ws|felipephtutoriais.com.br|filecrypt.cc|filerocks.us|filmaon.com|filmclub.tv|filmehd.net|filmeserialeonline.org|filmeseseriesonline.net|filmesonline1080p.com|filmesonline4.com|filmesonlineagora.com|filmesonlineplay.com|filmesonlinex.biz|filmetraduseonline.ro|filmgur.com|filmi7.com|filminvazio.com|filmovi.eu|filmozu.net|filmuptobox.net|filsex.com|flashbd24.blogspot.com|flixanity.online|freeadultcomix.com|freeiptvlinks.net|freelivesports.co|freesoftwaredlul.com|fuckingsession.com|full-serie.biz|fullmaza.net|fullpinoymovies.net|futebolps2.com|fxporn.net|gameofporn.net|gamepciso.com|gamestorrent.co|garotosbrasil.com|gaycock4u.com|gaysex69.net|gibanica.club|girlswithmuscle.com|gogoanime.ch|goldchannelmovie.net|gottateens.com|gravuregirlz.com|grcrt.net|guasavemp3.com|hacknetfl1x.net|halacima.net|happy-foxie.com|haylike.net|hdarkzone.com|hdencoders.com|hdmovie16.ws|hdmovie24.net|hdmusic23.net|hdmusic25.com|hdmusic90.co|hdporner720.com|hdpornfull.co|hdpornfull.net|hdshows.in|hdteenvids.com|hdtube.co|hdzex.net|healthsoul.info|hentai-for.me|hentai-id.tv|hentai.to|hentaicomicsbr.net|hentaiplay.net|hentaiplus.co|hentaistream.co|her69.net|herobo.com|heymanga.me|hindimoviesonlines.net|hiper.cool|hkfree.co|homeporn.tv|hon3yhd.com|hqq.watch|hyperdebrid.net|i-gay.org|icwutudidare.info|idolblog.org|ig2fap.com|igg-games.com|ightdl.xyz|iimgur.club|ilinks.ug|ilovefilmesonline.biz|image-bugs.com|imagecoin.net|imgshot.pw|imgsmile.com|immunicity.cab|immunicity.plus|immunicity.team|incestoporno.org|insharee.com|iprojectfreetv.us|iptvsatlinks.blogspot.com|itastreaming.gratis|ivhunter.com|iwatchgameofthrones.cc|izporn.net|jav-for.me|javeu.com|javfhd.tv|javfinder.to|javgay.com|javhd.pro|javhd4k.com|javkimochiii.com|javleak.com|javmobile.net|javmost.com|javonline.online|javpob.com|javrom.com|javstream.co|javus.net|jdownloader2premium.com|jilhub.xyz|jizzman.com|jogostorrentgratis.net|jpfiles.eu|jpgayporn.net|jpidols.tv|k18.co|k2nblog.com|karanpc.com|kingstheme.com|kingvid.tv|kissanime.ru|kissasian.com|kizzboy.com|kooora2day.com|koraspeak.com|koreansubindo.net|kreskowkazone.pl|kreskowki.tv|kshowes.net|lacajita.xyz|lambingan.su|layar-21.com|layarindo21.com|lecheanal.com|leech.ae|leosims.com|letsjav.com|link2download.net|livehd90m.info|livesoccertv.live|livestreaming24.net|loonertube.com|lyricsy.ir|macgames-download.com|macnwins.com|magesy.be|manatelugump3.net|mangacanblog.com|maniacosporcomics.com|marapcana.eu|marvin-vibez.to|masflowmusik.net|masterfilmesonlinegratis.info|maxinlive.com|mbfcast.pw|megafilmeshdplus.org|megafodabr.com|megahentaicomics.com|megaseriesonline.com|megatobox.net|meguminime.com|metaserie.com|milfcomix.com|milversite.me|minatosuki.com|minhaserie.me|mitemovie.com|mixhdporn.com|mkvtv.net|mmfilmes.com|mocnoi.com|modelblog.org|movie24k.ch|movieerotic.net|moviehd-free.com|moviehd-xxx.com|movierulz.ch|movierulz.cm|movierulz.xyz|movies24hd.co|movies5x.com|moviesak47.com|moviesgoldonline.net|moviesgoldonline.pro|moviesgolds.com|movieshdgratis.com.mx|movietubenow.bz|movietv.ws|moviezplanet.org|movieztimes.com|mp3haat.com|mp3kart.cc|mp3kart.co|mp3kart.com|mp3mydownload.com|mp3puu.com|mp3songdl.net|musculoduro.com.br|muvibg.com|mylucah.co|mymoviepot.xyz|mzansifun.com|mzansiporntube.com|mzansixxx.com|namethatpornstar.com|naphi.lol|nasze-kino.online|nbafullhd.com|neko-miku.com|nekonime.com|newhdmovie24.biz|newhdmovie24.co|newhdmovies.net|newpct.com|newpct1.com|nflstream.net|ngentot.tv|ninfetasnovinhas.net|nontonanime.org|nontononlinedrama.com|nosteam.com.ro|nosteam.org.ro|nudeyoung.xyz|nulledcenter.com|nungg.com|nungmovies-hd.com|nuttit.com|nxtcomicsclub.com|ocsstream.info|ohohd.com|ohyeah1080.com|okmovie-hd.com|olangal.pro|omberbagi.com|ondeeubaixo.com|one-series.cc|onlinefilmovisaprevodom.cc|onlinefilmsitesii.net|onlinemoviesgold.one|onlinemoviesprime.net|openx.tv|opujem.com|otaku-animehd.com|otorrents.com|ottakae.com|pahe.in|pandamovie.eu|pass69.com|pcgames-download.com|peliculasabc.net|peliculasgo.com|peliculasm.tv|peliculasmega1k.com|peliculastomas01.org|pelisplus.tv|pelisxporno.com|pentasex.com|perfecthdmovies.pw|perulareshd.pw|phimotv.net|picanteeproibido.com.br|pinaycute.com|pipocao.com|pirateaccess.xyz|piratebay.co.in|planetsport.pw|playbokep.me|playpornfree.net|pleermp3.net|pokemonlaserielatino.com|polskie-torrenty.com|popjav.com|porneq.com|pornfromcz.com|pornfromczech.com|pornhardx.com|pornhd5k.com|pornhubz.tumblr.com|pornleak.net|pornlibrary.net|pornmegabox.net|pornobae.com|pornocomics.net|pornotorrent.com.br|pornotorrent.org|pornpassw0rds.com|pornsexonline.xxx|pornvibe.org|pornvxl.com|pornzexx.com|portalroms.com|portalultautv.com|primewire.io|programasvirtualespc.net|projectfreetvhd.co|projectfreetvi.info|psarips.com|pubfilmonline.net|pure-anime.tv|pussybook.xyz|q3sk-dizi.blogspot.com|querofilmehd.com|r34anim.com|rapcloud.co|reallifecamhd.com|reallifecamvd.com|ripvod.com|rosextube.com|runvideo.net|savvystreams.blogspot.co.uk|savvystreams.blogspot.com|sceper.ws|sdmoviespoint.in|serialed.blogspot.com|series-cravings.tv|seriesblanco.com|seriesblanco.tv|seriescr.com|seriesfuture.com|seriesintorrent.com|serieslatino.tv|seriesparaassistironline.org|seriesparalatinoamerica.blogspot.com|sexisfree.net|sexix.net|sexiz.net|sexkino.to|sexloading.com|sexvui.net|sexxdesi.net|sexy-youtubers.com|sexyeroticgirls.comshofonline.org|short.am|shush.se|sinevizyonda.org|singgah.in|sitpad.info|skidrow-games.io|skidrowcrack.com|skidrowgamesreloaded.com|sklns.net|soccerembed.blogspot.com|solotorrent.net|soparagamestorrents.com|spacemov.tv|speedplay.pro|sports4u.net|sportshd.me|stadium-live.biz|streamcherry.com|streamingok.com|streamlord.com|streampornfree.com|strikeout.co|suki48.web.id|superteenz.com|sweext.com|tamilmv.eu|tamilmv.vc|tamilrasigan.net|tamilyogi.fm|teenboytwink.com|teentubeq.com|tele-wizja.com|telugudon.com|telugupalaka.com|teluguringtones.co|telugusexstorieskathalu.net|theapricity.com|thebarchive.com|thebestofcafucus.com|thepiratebay.cd|thepiratebay24.ga|thepiratebay3.org|theputlocker.net|thesimplebay.pro|thevid.net|thiruttuvcd.me|thplayers.com|tlenovelas.net|todaypk.ag|todaypk.li|todoinmega.com|tokusatsuindo.com|torjackan.info|torrentcounter.cc|torrentfilmesbr.com|torrentlocura.com|torrentool.com|torrentoon.com|torrentrapid.com|torrentscompletos.com|torrentsgroup.com|tousatu.biz|tr7music.me|tuhentaionline.com|tumejortorrent.com|tuportaldemusica.com|turkishseries.li|tuserie.com|tushyporn.net|tvrex.net|twitchstats.net|u2s.io|ufreetv.com|unblocked.cab|unblocked.plus|unblocked.team|unduhfilmrama.biz|upcomics.org|uporniahd.com|urle.co|usabit.com|uskip.me|utaseries.co|utaseries.com|uwatchfree.co|v100v.net|vdizpk.com|veekyforums.com|veporn.net|vercanalestv.com|verdirectotv.com|verpeliculasporno.gratis|vertusnovelas.net|veyqo.net|veziserialeonline.info|vibokep.info|vidabc.com|video.az|videobokepgratis.me|videobokepincest.xyz|videoexa.com|videosexbokep.org|videosnudes.com|vidiobokeptop.com|vidtome.co|vidz7.com|vidzcode.com|viooz.ac|vipracing.biz|viralshow.info|vivatorrents.com|viveseries.com|vivetusnovelas.com|vixvids.to|vpondo.com|vpornex.com|watchaha.com|watcharcheronline.com|watchcommunity.cc|watchcommunity.tv|watchers.to|watchfomny.tv|watchjavidol.com|watchjavonline.com|watchme247.co.il|watchparksandrecreation.cc|watchpornfree.me|watchtheofficeonline.cc|watchtheofficeonline.net|watchxxxparody.com|wetblog.org|wibudesu.com|wolverdon-filmes.com|world4ufree.ws|worldvidz.com|wplocker.com|xdvideos.org|xfilmywap.com|xgatinhas.com|xkorean.net|xmovies1.com|xmovies247.com|xmovies8.org|xrares.com|xteenchan.com|xvideospanish.com|xxgasm.com|xxhdporn.com|xxx-comics.com|xxxstooorage.com|yallakora-online.com|yedhit.com|yeucontrai.com|yify-torrent.xyz|yify.bz|yodrama.com|youpornzz.com|yourporn.sexy|youswear.com|ytsyify.com|yuptorrents.com|yuuk.net|zambianobserver.com|zfilmeonline.eu|zippymoviez.top|zippysharealbum.download|zonavideo.net|zone-series.cc|zoocine.co|zoomtv.me|zw-net.com',
+ ],
+ sourceUrl: 'https://downloadgameps3.com',
+ type: 'script',
+ url: 'https://secure.gravatar.com',
+ },
+ {
+ filters: ['||ssl-images-amazon.com/images/*/banner/$third-party,domain=~amazon.de'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://images-eu.ssl-images-amazon.com/images/G/08/associates/mariti/banner/',
+ },
+ {
+ filters: ['||awzbijw.com^', '||awzbijw.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://awzbijw.com',
+ },
+ {
+ filters: ['/bitrix/spread.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://shop.tricolor.tv/bitrix/spread.php?',
+ },
+ {
+ filters: ['||d1nmxiiewlx627.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1nmxiiewlx627.cloudfront.net',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://www.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://www.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://www.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['/adonis_event/*', '/stats/adonis_'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://stats.walytics.com/stats/adonis_event/',
+ },
+ {
+ filters: ['/house-ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://images.cwtv.com/images/house-ads/',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['*?proxy=$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.laola1.at/?proxy=js/build/layout_37.js&t=1540278711',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://livefromalounge.boardingarea.com',
+ type: 'script',
+ url: 'https://livefromalounge.boardingarea.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.wirelesshack.org',
+ type: 'script',
+ url: 'https://www.wirelesshack.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['@@||images.cwtv.com^$script,first-party'],
+ sourceUrl: 'http://m.cwtv.com',
+ type: 'script',
+ url: 'http://images.cwtv.com',
+ },
+ {
+ filters: ['||impactradius.com^$third-party', '/display-ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://adn.impactradius.com/display-ad/',
+ },
+ {
+ filters: ['||evyy.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://incapsula.evyy.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://livefromalounge.boardingarea.com',
+ type: 'script',
+ url: 'https://livefromalounge.boardingarea.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.wirelesshack.org',
+ type: 'script',
+ url: 'https://www.wirelesshack.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||trafic.ro^', '/trafic.js', '||trafic.ro^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.trafic.ro/js/trafic.js',
+ },
+ {
+ filters: ['/CofAds/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://pubserver.xl.pt/CofAds/',
+ },
+ {
+ filters: ['@@|https://$script,third-party,domain=eventhubs.com'],
+ sourceUrl: 'https://www.eventhubs.com',
+ type: 'script',
+ url: 'https://foo.com',
+ },
+ {
+ filters: ['@@||eventhubs.com^*.$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.eventhubs.com/static/js/jquery-2.1.4',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.wirelesshack.org',
+ type: 'script',
+ url: 'https://www.wirelesshack.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.opex360.com',
+ type: 'script',
+ url: 'http://www.opex360.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||static.criteo.com/images^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://static.criteo.com/images',
+ },
+ {
+ filters: [
+ '@@||global.fncstatic.com/static/*/VisitorAPI.js$script,domain=video.foxbusiness.com',
+ ],
+ sourceUrl: 'https://video.foxbusiness.com',
+ type: 'script',
+ url: 'https://global.fncstatic.com/static/isa/app/lib/VisitorAPI.js',
+ },
+ {
+ filters: ['/GujAd/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.11freunde.de/sites/all/themes/elf/gujAd/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.wirelesshack.org',
+ type: 'script',
+ url: 'https://www.wirelesshack.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||marktest.pt^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://data.netscope.marktest.pt',
+ },
+ {
+ filters: ['/js/tracking.min.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.melty.fr/js/tracking.min.js?',
+ },
+ {
+ filters: ['||frosmo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://common_api.frosmo.com',
+ },
+ {
+ filters: ['||reussissonsensemble.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://act.reussissonsensemble.fr',
+ },
+ {
+ filters: ['@@||kachelmannwetter.com/js/ads.js$script,first-party'],
+ sourceUrl: 'https://kachelmannwetter.com',
+ type: 'script',
+ url: 'https://kachelmannwetter.com/js/ads.js',
+ },
+ {
+ filters: ['@@||icons.iconarchive.com/icons/$image'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://icons.iconarchive.com/icons/',
+ },
+ {
+ filters: ['/track_visit.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://g2crowd.ladesk.com/scripts/track_visit.php',
+ },
+ {
+ filters: ['/aff_i?offer_id='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://powerhouse.go2cloud.org/aff_i?offer_id=163&aff_id=1619',
+ },
+ {
+ filters: ['@@||11freunde.de/sites/all/themes/elf/gujAd/gujAd.js$domain=11freunde.de'],
+ sourceUrl: 'https://www.11freunde.de',
+ type: 'script',
+ url: 'https://www.11freunde.de/sites/all/themes/elf/gujAd/gujAd.js',
+ },
+ {
+ filters: ['/emos2.js$~xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hessnatur.com/_ui/shared/js/emos2.js',
+ },
+ {
+ filters: ['/ablank.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.melty.fr/ablank.gif?',
+ },
+ {
+ filters: ['/adbg.jpg'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.atpworldtour.com/Assets/atpwt/images/global/adbg.jpg',
+ },
+ {
+ filters: ['/emstrack.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.hessnatur.com/de/natur/emstrack.js',
+ },
+ {
+ filters: ['/adcode_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.adnet.de/conv/adCode_58905.js',
+ },
+ {
+ check: true,
+ filters: ['/contentanalytics/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sumo.com/apps/contentanalytics/',
+ },
+ {
+ filters: [
+ '@@||pagead2.googlesyndication.com/pagead/js/lidar.js$domain=convert-me.com|destructoid.com|grammarist.com|videotoolbox.com',
+ ],
+ sourceUrl: 'https://www.destructoid.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/js/lidar.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.opex360.com',
+ type: 'script',
+ url: 'http://www.opex360.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||counter.star.lg.ua^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://counter.star.lg.ua',
+ },
+ {
+ filters: ['||tracc.it^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.tracc.it',
+ },
+ {
+ filters: ['/pubimppixel/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www4.smartadserver.com/call/pubimppixel/',
+ },
+ {
+ filters: ['||ad.altervista.org^', '/js.ad/size='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.altervista.org/js.ad/size=300X250',
+ },
+ {
+ check: true,
+ filters: ['||hotjar.com^$domain=quoka.de'],
+ sourceUrl: 'https://m.quoka.de',
+ type: 'script',
+ url: 'https://static.hotjar.com',
+ },
+ {
+ filters: ['||finative.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.finative.eu',
+ },
+ {
+ filters: ['||peerius.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://teufel.peerius.com',
+ },
+ {
+ filters: ['||hfc195b.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hfc195b.com',
+ },
+ {
+ filters: ['||export.newscube.de^$~subdocument', '||export.newscube.de^$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://export.newscube.de',
+ },
+ {
+ filters: ['||imglnka.com^', '||imglnka.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.imglnka.com',
+ },
+ {
+ filters: ['||mytoys.de/acv/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://0815.mytoys.de/acv/',
+ },
+ {
+ filters: ['||adunity.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content.adunity.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://losst.ru',
+ type: 'script',
+ url: 'https://losst.ru/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ads-min.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rs.mail.ru/static/ads-min.js',
+ },
+ {
+ check: true,
+ filters: ['@@||snapchat.com/static/js/google-analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.snapchat.com/static/js/google-analytics.js',
+ },
+ {
+ filters: ['||intergient.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://echo.intergient.com',
+ },
+ {
+ filters: ['||googleapis.com^*/gen_204?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://maps.googleapis.com/maps/gen_204?',
+ },
+ {
+ filters: ['||w.online-verlag-freiburg.de^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://w.online-verlag-freiburg.de',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://9docu.com',
+ type: 'script',
+ url: 'https://9docu.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||gridsumdissector.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.gridsumdissector.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/gs.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://recv-wd.gridsumdissector.com/gs.gif?',
+ },
+ {
+ filters: ['||inquisitiveinvention.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://inquisitiveinvention.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://9docu.com',
+ type: 'script',
+ url: 'https://9docu.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adchoices-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://images.military.com/media/shared/css-global/adchoices-icon.png',
+ },
+ {
+ filters: ['||neads.delivery^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://neads.delivery',
+ },
+ {
+ filters: ['@@||adobetag.com^*/amc.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adobetag.com/d1/v2/ZDEtbW9uc3RlcmpvYnMtMTI4ODgtMjMzNy0=/amc.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.urlaubsguru.de',
+ type: 'script',
+ url: 'https://mediafiles.urlaubsguru.de/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||fruitflan.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://lb.fruitflan.com',
+ },
+ {
+ filters: ['||imagesnake.com/includes/js/js.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.imagesnake.com/includes/js/js.js',
+ },
+ {
+ filters: [
+ '|http://$image,script,third-party,xmlhttprequest,domain=1channel.biz|letmewatchthis.pl|letmewatchthis.video|primewire.is|primewire.to|primewire.unblockall.xyz|snowysmile.com',
+ ],
+ sourceUrl: 'http://www.primewire.is',
+ type: 'script',
+ url: 'http://foo.com',
+ },
+ {
+ filters: ['@@||courier-js.dallasnews.com^$first-party,script'],
+ sourceUrl: 'http://www.dallasnews.com',
+ type: 'script',
+ url: 'https://courier-js.dallasnews.com',
+ },
+ {
+ filters: ['||turnto.com/webEvent/$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.turnto.com/webEvent/',
+ },
+ {
+ filters: ['/jsstat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://jsstat.com',
+ },
+ {
+ filters: ['/hit.png?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.cultura.com/js/smile/tracker/hit.png?',
+ },
+ {
+ filters: ['?ad_tag=', '&adclient='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.googletagservices.com/tag/js/gpt.js?ad_tag=0&adclient=0',
+ },
+ {
+ filters: ['.728x90.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://passbacks.districtm.ca/supertag/lapresse.ca.t0.z501.728x90.js',
+ },
+ {
+ filters: ['/usrtrck-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://dnevnik.hr/bin/usrtrck-new.php',
+ },
+ {
+ filters: ['/ads.swf'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.wieistmeineip.de/image/ads.swfv_OQRThX3.gif',
+ },
+ {
+ filters: ['||mercent.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.mercent.com',
+ },
+ {
+ filters: ['/revtracking/*', '/revinit.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://promos.rtm.com/revtracking/revinit.js',
+ },
+ {
+ filters: ['/adsec.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adsec.iprom.net',
+ },
+ {
+ filters: ['||tracking.vid4u.org^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://tracking.vid4u.org',
+ },
+ {
+ filters: ['/getcookie.php?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dassaultsystem.commander1.com/getcookie.php?',
+ },
+ {
+ filters: ['||kayak.*/px/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.kayak.fr/px/',
+ },
+ {
+ filters: ['/adblockdetect/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s-pt.ppstatic.pl/lib/adblockdetect/',
+ },
+ {
+ filters: ['||p0.com/1x1'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://linkle.p0.com/1x1c.dyn',
+ },
+ {
+ filters: ['||businessclick.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads.businessclick.com',
+ },
+ {
+ filters: ['/analytics.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.adclickstream.com/analytics.gif?',
+ },
+ {
+ filters: ['/ad-ace/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'font',
+ url: 'https://ustaliy.ru/wp-content/plugins/ad-ace/',
+ },
+ {
+ filters: [
+ '/adfarm.$~image,third-party,domain=~mediaplex.com',
+ '||mediaplex.com/ad/js/$third-party',
+ ],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adfarm.mediaplex.com/ad/js/',
+ },
+ {
+ filters: ['/adfarm.$first-party,domain=~bar.mediaplex.com'],
+ sourceUrl: 'https://sub.mediaplex.com',
+ type: 'script',
+ url: 'https://adfarm.mediaplex.com/ad/js/',
+ },
+ {
+ filters: ['||dc08i221b0n8a.cloudfront.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dc08i221b0n8a.cloudfront.net',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://freegogpcgames.com',
+ type: 'script',
+ url: 'http://freegogpcgames.com/freegogpcgames.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||s.infogram.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.infogram.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://freegogpcgames.com',
+ type: 'script',
+ url: 'http://freegogpcgames.com/freegogpcgames.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.blogdumoderateur.com',
+ type: 'script',
+ url: 'https://www.blogdumoderateur.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||sixscissors.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://sixscissors.com',
+ },
+ {
+ filters: ['/api/pageview?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tb.de17a.com/api/pageView?',
+ },
+ {
+ filters: ['||qservz.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://t.qservz.com',
+ },
+ {
+ filters: ['||pixel.4players.de^', '/pageeventcounter;', '/adbutler/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://pixel.4players.de/pageeventcounter;11/adtags/adbutler/',
+ },
+ {
+ filters: ['-Web-Ad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static5.fore.4pcdn.de/sourcen/ads/delivery/opentag-web-ad.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://freegogpcgames.com',
+ type: 'script',
+ url: 'https://freegogpcgames.com/freegogpcgames.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||subpixel.4players.de^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://subpixel.4players.de',
+ },
+ {
+ filters: ['/Hit.ashx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://data.travelzoo.com/Hit.ashx?',
+ },
+ {
+ filters: ['||elderlyscissors.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://elderlyscissors.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://cad-comic.com',
+ type: 'script',
+ url: 'https://cad-comic.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||mindtake.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.mindtake.com',
+ },
+ {
+ filters: ['||mbl.is/augl/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.mbl.is/augl/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://cad-comic.com',
+ type: 'script',
+ url: 'https://cad-comic.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||airserve.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://heartbeat.airserve.net',
+ },
+ {
+ filters: ['/Ad.asmx/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.exist.ru/Api/Ad.asmx/',
+ },
+ {
+ filters: ['||validclick.com^$third-party', '||validclick.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://admin.adt.validclick.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||akamai.net^$script,domain=argos.co.uk|newscientist.com|upwork.com'],
+ sourceUrl: 'https://www.newscientist.com',
+ type: 'script',
+ url: 'https://a248.e.akamai.net',
+ },
+ {
+ filters: ['||my.brandwire.tv/sites/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://my.brandwire.tv/sites/',
+ },
+ {
+ filters: ['||innomdc.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.innomdc.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.r-bloggers.com',
+ type: 'script',
+ url: 'https://www.r-bloggers.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||madsack-native.de^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d.madsack-native.de',
+ },
+ {
+ filters: ['@@||ohmymag.com/js/prebid/config/*$script,first-party'],
+ sourceUrl: 'https://www.ohmymag.com',
+ type: 'script',
+ url: 'https://www.ohmymag.com/js/prebid/config/',
+ },
+ {
+ filters: ['/tracker/tracker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://comunidade.globalmediagroup.pt/tracker/tracker.js',
+ },
+ {
+ filters: ['||userzoom.com/uz.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn3.userzoom.com/uz.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||logging.prefixbox.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://logging.prefixbox.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.eveuniversity.org',
+ type: 'script',
+ url: 'https://www.eveuniversity.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||psma01.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://psma01.com',
+ },
+ {
+ filters: ['||opentracker.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://script.opentracker.net',
+ },
+ {
+ filters: ['||onedmp.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'http://c1.onedmp.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.yesasia.ru',
+ type: 'script',
+ url: 'http://www.yesasia.ru/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.eveuniversity.org',
+ type: 'script',
+ url: 'https://www.eveuniversity.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.eveuniversity.org',
+ type: 'script',
+ url: 'https://www.eveuniversity.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.eveuniversity.org',
+ type: 'script',
+ url: 'https://www.eveuniversity.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.eveuniversity.org',
+ type: 'script',
+ url: 'https://www.eveuniversity.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/natero_analytics.', '||natero.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://event.natero.com/scripts/natero_analytics.min.js',
+ },
+ {
+ filters: ['||mrskincash.com^$third-party', '||mrskincash.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://images.mrskincash.com',
+ },
+ {
+ filters: ['||nudography.com/photos/banners/', '/120_600_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.nudography.com/photos/banners/120_600_1a.jpg',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['||crowdskout.com/analytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.crowdskout.com/analytics.js',
+ },
+ {
+ filters: ['||crowdskout.com/skout.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.crowdskout.com/skout.js',
+ },
+ {
+ filters: ['||crowdskout.com^*/page-view'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://a.crowdskout.com/v1-1/page-view',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['/tracing?aspect='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bgcms.outdooractive.com/tracing?aspect=oamFull&proj=outdooractive',
+ },
+ {
+ filters: ['||cetrk.com^', '||cetrk.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cetrk.com',
+ },
+ {
+ filters: ['-featured-ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://germania.one/wp-content/plugins/awpcp-featured-ads/',
+ },
+ {
+ filters: ['_300x250px.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.kaspersky.com/de/affiliates/kl_promo_11.18_300x250px.gif',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.nakedcapitalism.com',
+ type: 'script',
+ url: 'https://www.nakedcapitalism.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/images/ad.$domain=~ngohq.com'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.nudography.com/images/ad.gif',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.nakedcapitalism.com',
+ type: 'script',
+ url: 'https://www.nakedcapitalism.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['||ibpxl.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ibpxl.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['||doubleclick.net/adj/$~object-subrequest,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.doubleclick.net/adj/',
+ },
+ {
+ filters: ['/wtbase.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.swedbank.ee/scripts/wtbase.js',
+ },
+ {
+ filters: ['/ads/track.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.rvty.net/ads/Track.js',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://fallbrook247.com',
+ type: 'script',
+ url: 'https://fallbrook247.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||banomago.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://banomago.com',
+ },
+ {
+ filters: ['||albertonne.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://albertonne.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://cgpersia.com',
+ type: 'script',
+ url: 'https://cgpersia.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['/n4403ad.', '||n4403ad.doubleclick.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://n4403ad.doubleclick.net',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://summonerswar.co',
+ type: 'script',
+ url: 'https://summonerswar.co/ezoic/',
+ },
+ {
+ filters: ['||pings.vidpulse.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pings.vidpulse.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minecraftmods.com',
+ type: 'script',
+ url: 'https://www.minecraftmods.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||wp.com/wp-content/themes/*/ads.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s2.wp.com/wp-content/themes/vip/chicagosuntimes/assets/js/ads.js',
+ },
+ {
+ filters: ['||webserviceaward.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.webserviceaward.com',
+ },
+ {
+ filters: ['||hardwareluxx.de/images/stories/werbung/'],
+ sourceUrl: 'https://www.hardwareluxx.de',
+ type: 'image',
+ url: 'https://www.hardwareluxx.de/images/stories/werbung/',
+ },
+ {
+ filters: ['/cbstats/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://chicago.suntimes.com/cbstats/',
+ },
+ {
+ filters: ['/adtag/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.vrvm.com/pass/vrv/adtag/',
+ },
+ {
+ filters: ['||kuchebraska.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.kuchebraska.com',
+ },
+ {
+ filters: ['||murdoog.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://code.murdoog.com',
+ },
+ {
+ filters: ['||adtaily.pl^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.adtaily.pl',
+ },
+ {
+ filters: ['||nighter.club^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://place1111.nighter.club',
+ },
+ {
+ filters: ['||pubexchange.com/modules/partner/$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.pubexchange.com/modules/partner/',
+ },
+ {
+ filters: ['.com/analytics.js?_t=$script,third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://trw12.com/analytics.js?_t=43894137332',
+ },
+ {
+ filters: ['||affiliate-b.com^$third-party', '.php?adv='],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://track.affiliate-b.com/start_bd.php?adv=C1419Q',
+ },
+ {
+ filters: ['||bacontent.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.bacontent.de',
+ },
+ {
+ filters: ['/adspace/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adspaces.ero-advertising.com/adspace/',
+ },
+ {
+ filters: ['||exoticads.com^$third-party', '/xads.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://cdn.exoticads.com/xads.js',
+ },
+ {
+ filters: ['||haymarket.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.whatcardev.haymarket.com',
+ },
+ {
+ filters: ['||indeed.com/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gdc.indeed.com/ads/',
+ },
+ {
+ filters: ['/apilog?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gdc.indeed.com/rpc/apilog?',
+ },
+ {
+ filters: ['||cts.businesswire.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cts.businesswire.com',
+ },
+ {
+ filters: ['/add_stats'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.15min.lt/ajax/tracking/add_stats_item',
+ },
+ {
+ filters: ['||callrail.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.callrail.com',
+ },
+ {
+ filters: ['/custom/ads'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.elespectador.com/profiles/ee/modules/custom/ads_paute_facil',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.zoso.ro',
+ type: 'script',
+ url: 'https://www.zoso.ro/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.prikol.ru',
+ type: 'script',
+ url: 'http://www.prikol.ru/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||production-mcs.lvp.llnw.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://production-mcs.lvp.llnw.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.zoso.ro',
+ type: 'script',
+ url: 'https://www.zoso.ro/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||production-eqbc.lvp.llnw.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://production-eqbc.lvp.llnw.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.zoso.ro',
+ type: 'script',
+ url: 'https://www.zoso.ro/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/analyticstick.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://forums.mmorpg.com/settings/analyticstick.json',
+ },
+ {
+ filters: ['||kullalabulla.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.kullalabulla.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.zoso.ro',
+ type: 'script',
+ url: 'https://www.zoso.ro/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||mms.mlive.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mms.mlive.com',
+ },
+ {
+ filters: ['/toplytics.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cloud.addictivetips.com/wp-content/plugins/toplytics/js/toplytics.js',
+ },
+ {
+ filters: ['/adformats/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.contentspread.net/24i/red/adformats/',
+ },
+ {
+ filters: ['/eht.js?site_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://ht.redtube.com/js/eht.js?site_id=2',
+ },
+ {
+ filters: ['||4f2sm1y1ss.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://4f2sm1y1ss.com',
+ },
+ {
+ filters: ['||d1cerpgff739r9.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1cerpgff739r9.cloudfront.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.consoglobe.com',
+ type: 'script',
+ url: 'https://www.consoglobe.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||monkeytracker.cz^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.monkeytracker.cz',
+ },
+ {
+ filters: ['||getsmartlook.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rec.getsmartlook.com',
+ },
+ {
+ filters: ['/analytics-assets/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://m.startribune.com/analytics-assets/',
+ },
+ {
+ filters: ['||sub2tech.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://webservices.sub2tech.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.consoglobe.com',
+ type: 'script',
+ url: 'https://www.consoglobe.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||adrsp.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://wrs.adrsp.net',
+ },
+ {
+ filters: ['/wtinit.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.swedbank.lt/js/wtinit.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.consoglobe.com',
+ type: 'script',
+ url: 'https://www.consoglobe.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||netclickstats.com^', '||netclickstats.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://netclickstats.com',
+ },
+ {
+ filters: ['/AdCookies.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.tre.it/res/js/AdCookies.js',
+ },
+ {
+ filters: ['||cloudfront.net/scripts/js3caf.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d1lxhc4jvstzrp.cloudfront.net/scripts/js3caf.js',
+ },
+ {
+ filters: ['||servedby.o2.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://servedby.o2.co.uk',
+ },
+ {
+ filters: ['||adtiger.de^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.adtiger.de',
+ },
+ {
+ filters: ['||receptivereaction.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://receptivereaction.com',
+ },
+ {
+ filters: ['||adc-serv.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://r.adc-serv.net',
+ },
+ {
+ filters: ['/get.ad?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://logs6.xiti.com/get.ad?',
+ },
+ {
+ filters: ['_728x90px.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.kaspersky.com/de/affiliates/kl_promo_11.18_728x90px.gif',
+ },
+ {
+ filters: ['||leadlab.click^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://c.leadlab.click',
+ },
+ {
+ filters: ['/300x150_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s04.s3c.es/imag/_v0/770x420/8/e/3/300x150_bmw-logo.jpg',
+ },
+ {
+ filters: ['||nowinteract.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://imp3.nowinteract.com',
+ },
+ {
+ filters: ['160x600.png|'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://asset.mediaw.it/frontend/2018-10/banner_notebook_160x600.png',
+ },
+ {
+ filters: ['||webads.nl^$third-party', '||webads.nl^'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://images.webads.nl',
+ },
+ {
+ filters: ['/tracking/tracking_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.edeka.de/media/03_design/js/tracking/tracking_central_js.js',
+ },
+ {
+ filters: ['468x60.html|'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://news1.mmnews.de/mmads-468x60.html',
+ },
+ {
+ filters: ['/abm.asp?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.meteo.gr/absolutebmxe/abm.asp?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://krebsonsecurity.com',
+ type: 'script',
+ url: 'https://krebsonsecurity.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '||onecount.net^$third-party',
+ '@@||validate.onecount.net/js/all.min.js$script,domain=foreignpolicy.com',
+ ],
+ sourceUrl: 'https://foreignpolicy.com',
+ type: 'script',
+ url: 'https://validate.onecount.net/js/all.min.js',
+ },
+ {
+ filters: ['@@||validate.onecount.net/onecount/api/public/$script,domain=foreignpolicy.com'],
+ sourceUrl: 'https://foreignpolicy.com',
+ type: 'script',
+ url: 'https://validate.onecount.net/onecount/api/public/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://krebsonsecurity.com',
+ type: 'script',
+ url: 'https://krebsonsecurity.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://krebsonsecurity.com',
+ type: 'script',
+ url: 'https://krebsonsecurity.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||abebooks.com/timer.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.abebooks.com/timer.gif?',
+ },
+ {
+ filters: ['||yldr.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.yldr.io',
+ },
+ {
+ filters: ['||linkwi.se^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://go.linkwi.se',
+ },
+ {
+ filters: ['||tracking.hsn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.hsn.com',
+ },
+ {
+ filters: ['/sponsored_links.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://files.findlaw.com/doubleclickjs/sponsored_links.js',
+ },
+ {
+ filters: ['||trakken.de^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.trakken.de',
+ },
+ {
+ filters: ['/abmw.asp'],
+ sourceUrl: 'http://foo.com',
+ type: 'document',
+ url: 'http://www.meteo.gr/absolutebmxe/abmw.asp',
+ },
+ {
+ filters: ['||g17media.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.g17media.com',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://polza-vred.su',
+ type: 'script',
+ url: 'http://polza-vred.su/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://zaufanatrzeciastrona.pl',
+ type: 'script',
+ url: 'https://zaufanatrzeciastrona.pl/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://polza-vred.su',
+ type: 'script',
+ url: 'http://polza-vred.su/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: ['/ad24/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://media.kieskeurig.nl/images/01/60/46/e9/0938/4d36/ad24/',
+ },
+ {
+ check: true,
+ filters: ['||et.twyn.com^$third-party', '||twyn.com^', '||et.twyn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://et.twyn.com',
+ },
+ {
+ filters: ['||ipinfodb.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://api.ipinfodb.com',
+ },
+ {
+ filters: ['_advert/'],
+ sourceUrl: 'https://foo.com',
+ type: 'document',
+ url: 'https://export.tvnet.lv/export_advert/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://polza-vred.su',
+ type: 'script',
+ url: 'http://polza-vred.su/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: [
+ '|https://$script,third-party,xmlhttprequest,domain=rule34hentai.net',
+ '@@||ajax.googleapis.com^$script,domain=rule34hentai.net',
+ ],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://ajax.googleapis.com',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party', '@@||rule34hentai.net/data/cache/$script'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net/data/cache/',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: ['@@||travel-assets.com/datacapture/*$script,domain=expedia.co.uk'],
+ sourceUrl: 'https://www.expedia.co.uk',
+ type: 'script',
+ url: 'https://b.travel-assets.com/datacapture/',
+ },
+ {
+ check: true,
+ filters: [
+ '.com/ad/$first-party,domain=~blogs.technet.microsoft.com|~channel4.com|~cspace.com|~linkedin.com|~mediaplex.com|~online.wsj.com',
+ ],
+ sourceUrl: 'https://www.lcpdfr.com',
+ type: 'xhr',
+ url: 'https://www.lcpdfr.com/ad/',
+ },
+ {
+ filters: ['||serve.*/promoload?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve.adnetasia.com/promoload?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://polza-vred.su',
+ type: 'script',
+ url: 'http://polza-vred.su/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||eloqua.com/visitor/v200/svrgp.aspx?$domain=itworld.com|juniper.net'],
+ sourceUrl: 'https://www.juniper.net',
+ type: 'image',
+ url: 'https://s1229.t.eloqua.com/visitor/v200/svrGP.aspx?',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||track.juno.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.juno.com',
+ },
+ {
+ filters: ['/adpeeps.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adv.pravmir.ru/adpeeps.php',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: ['||stat.pravmir.ru^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stat.pravmir.ru',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: ['@@||fluidplayer.com^$script,domain=rule34hentai.net'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://cdn.fluidplayer.com',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/160_600_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://img.mediad2.jp/img/admin/Client/MIKATA/20181003/160_600_201808314_1.gif',
+ },
+ {
+ filters: ['/~cdn/ads/*', '/ad_shared/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.revjet.com/~cdn/Ads/ad_shared/',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ check: true,
+ filters: ['||rule34hentai.net^$script,first-party'],
+ sourceUrl: 'https://www.rule34hentai.net',
+ type: 'script',
+ url: 'https://www.rule34hentai.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://trashscanlations.com',
+ type: 'script',
+ url: 'https://trashscanlations.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||rotator.tradetracker.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rotator.tradetracker.net',
+ },
+ {
+ filters: ['||impactradius-go.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://a.impactradius-go.com',
+ },
+ {
+ filters: ['||relaymedia.com/ping?$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.relaymedia.com/ping?',
+ },
+ {
+ filters: ['/images/werbung.', '/werbung.gif'],
+ sourceUrl: 'http://www.egun.de',
+ type: 'image',
+ url: 'http://www.egun.de/market/images/werbung.gif',
+ },
+ {
+ filters: ['||egun.de/market/images/banner/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.egun.de/market/images/banner/',
+ },
+ {
+ filters: ['/adsvr.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://embed.wprost.pl/embed/_css/adsvr.css',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://minecraftsix.com',
+ type: 'script',
+ url: 'http://minecraftsix.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||reevoo.com/track_url/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.mark.reevoo.com/track_url/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.legorafi.fr',
+ type: 'script',
+ url: 'http://www.legorafi.fr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||justanswer.com/browsercheck/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.justanswer.com/browsercheck/',
+ },
+ {
+ filters: ['||xdirectx.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://api.xdirectx.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.legorafi.fr',
+ type: 'script',
+ url: 'http://www.legorafi.fr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/Track/Capture.aspx?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.bali6nora.com/Track/Capture.aspx?',
+ },
+ {
+ filters: ['||czilladx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://serve.czilladx.com',
+ },
+ {
+ filters: ['||chargeplatform.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.chargeplatform.com',
+ },
+ {
+ filters: ['/sam-pro-free/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wuzzup.ru/wp-content/plugins/sam-pro-free/',
+ },
+ {
+ filters: ['||omniscientspark.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://omniscientspark.com',
+ },
+ {
+ filters: ['/wp-content/plugins/useful-banner-manager/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://hippique.blog-pmu.fr/wp-content/plugins/useful-banner-manager/',
+ },
+ {
+ filters: ['||secureboom.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secureboom.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://movie4k.is',
+ type: 'script',
+ url: 'https://movie4k.is/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://movie4k.is',
+ type: 'script',
+ url: 'https://movie4k.is/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||ax.idg.se^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ax.idg.se',
+ },
+ {
+ filters: ['||gx.idg.se^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://gx.idg.se',
+ },
+ {
+ filters: ['||ai.idg.se^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ai.idg.se',
+ },
+ {
+ filters: ['||intercom.io/gtm_tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://app.intercom.io/gtm_tracking/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||sexykittenporn.com^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://content2.sexykittenporn.com',
+ },
+ {
+ filters: ['||sexykittenporn.com^*/banners/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://content2.sexykittenporn.com/images/sexykittenporn.com/banners/',
+ },
+ {
+ filters: ['/attachad.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.prototypes.ru/boxdigital/attachad.js',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/PageTrack.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.revolve.com/r/mobile/PageTrack.jsp',
+ },
+ {
+ filters: ['||track.cordial.io^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.cordial.io',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://businesstech.idg.se',
+ type: 'script',
+ url: 'https://businesstech.idg.se/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||legolas-media.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://rt.legolas-media.com',
+ },
+ {
+ filters: ['||myvisitors.se^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.myvisitors.se',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.mrmoneymustache.com',
+ type: 'script',
+ url: 'http://www.mrmoneymustache.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['/backlink.php?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.mybacklink.fr/backlink.php?',
+ },
+ {
+ filters: ['||nerohut.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://nerohut.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.trixhentai.com',
+ type: 'script',
+ url: 'http://www.trixhentai.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||thedailywtf.com/fblast/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.thedailywtf.com/fblast/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.mrmoneymustache.com',
+ type: 'script',
+ url: 'http://www.mrmoneymustache.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/openads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://openads.aira.cz',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.trixhentai.com',
+ type: 'script',
+ url: 'http://www.trixhentai.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/blogads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.cowcotland.com/themes/v3/style/blogads.css',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.trixhentai.com',
+ type: 'script',
+ url: 'http://www.trixhentai.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||marketshot.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://beacon.marketshot.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.trixhentai.com',
+ type: 'script',
+ url: 'http://www.trixhentai.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://gdpr-info.eu',
+ type: 'script',
+ url: 'https://gdpr-info.eu/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/seed.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://p.travelsmarter.net/api/usersync/seed.gif?',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||gogoanime.*/scripts/$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.gogoanime.to/cdn-cgi/scripts/',
+ },
+ {
+ filters: ['||sdrive.skoda-auto.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://sdrive.skoda-auto.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://www.bleedingcool.com',
+ type: 'script',
+ url: 'https://www.bleedingcool.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.freenas.org',
+ type: 'script',
+ url: 'http://www.freenas.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||targetix.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://st.targetix.net',
+ },
+ {
+ filters: ['||seewhy.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://abandonment4.saas.seewhy.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://speld.nl',
+ type: 'script',
+ url: 'https://hooiberg.speld.nl/speld.nl/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.freenas.org',
+ type: 'script',
+ url: 'http://www.freenas.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||nui.media^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pmi.nui.media',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.freenas.org',
+ type: 'script',
+ url: 'http://www.freenas.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://speld.nl',
+ type: 'script',
+ url: 'https://hooiberg.speld.nl/speld.nl/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.freenas.org',
+ type: 'script',
+ url: 'http://www.freenas.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||bi.medscape.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://bi.medscape.com',
+ },
+ {
+ filters: [
+ '||pagead2.googlesyndication.com/pagead/js/$script,important,redirect=noopjs,domain=onvasortir.com',
+ ],
+ sourceUrl: 'https://montauban.onvasortir.com',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com/pagead/js/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.freenas.org',
+ type: 'script',
+ url: 'http://www.freenas.org/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||devatics.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d21.devatics.com',
+ },
+ {
+ filters: ['||socialhoney.co^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.socialhoney.co',
+ },
+ {
+ check: true,
+ filters: ['/adpopup.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://embed.wprost.pl/embed/_js/adpopup.js',
+ },
+ {
+ filters: ['/pv/new?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d21.devatics.com/api/jsonp/pv/new?',
+ },
+ {
+ filters: ['||subscribe.hearstmags.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://subscribe.hearstmags.com',
+ },
+ {
+ filters: ['-125x40-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.dorzeczy.pl/dorzeczy/_i/button-125x40-app-store.png',
+ },
+ {
+ filters: ['||aggregator.inquisitr.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://aggregator.inquisitr.com',
+ },
+ {
+ filters: ['||e-webtrack.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.e-webtrack.net',
+ },
+ {
+ filters: ['.com/?wid='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.audiusa.com/?wid=1128&fit=constrain',
+ },
+ {
+ filters: ['||connectignite.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.connectignite.com',
+ },
+ {
+ filters: [
+ '@@||googletagmanager.com/gtm.js$domain=netcombo.com.br|saraiva.com.br|tugatech.com.pt',
+ ],
+ sourceUrl: 'https://www.saraiva.com.br',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js',
+ },
+ {
+ filters: ['||adapex.io^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adapex.io',
+ },
+ {
+ filters: ['||stats.mako.co.il^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://stats.mako.co.il',
+ },
+ {
+ filters: ['||in-appadvertising.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://in-appadvertising.com',
+ },
+ {
+ filters: ['||dinorslick.icu^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://play.dinorslick.icu',
+ },
+ {
+ filters: ['@@||t.st/video/$script,domain=thestreet.com'],
+ sourceUrl: 'https://www.thestreet.com',
+ type: 'script',
+ url: 'https://s.t.st/video/',
+ },
+ {
+ check: true,
+ filters: ['_adlog.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ads.24ur.com/adserver/api_adlog.php',
+ },
+ {
+ filters: ['||ea.celio.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ea.celio.com',
+ },
+ {
+ filters: ['||carts.guru^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.carts.guru',
+ },
+ {
+ filters: ['||mixpo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://swf.mixpo.com',
+ },
+ {
+ filters: ['/media/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pornsocket.com/media/ads/',
+ },
+ {
+ filters: [
+ '||adspaces.ero-advertising.com/adspace/*$script,redirect=noopjs,domain=pornsocket.com',
+ ],
+ sourceUrl: 'https://www.pornsocket.com',
+ type: 'script',
+ url: 'https://adspaces.ero-advertising.com/adspace/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ check: true,
+ filters: ['||442c8891ec726f339.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://442c8891ec726f339.com',
+ },
+ {
+ filters: ['/files/ad/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://www.pornsocket.com/media/com_hwdmediashare/files/ad/',
+ },
+ {
+ filters: ['||petiteumbrella.com^', '||petiteumbrella.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://petiteumbrella.com',
+ },
+ {
+ filters: ['||cloudfront.net/vis_opt_no_jquery.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d5phz18u4wuww.cloudfront.net/vis_opt_no_jquery.js',
+ },
+ {
+ filters: ['-120x60-'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://i1.adis.ws/i/playmobil/lechuza-af-120x60-logo',
+ },
+ {
+ filters: ['/default/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.treccani.it/export/sites/default/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.finder.com.au',
+ type: 'script',
+ url: 'https://www.finder.com.au/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ filters: ['@@||c212.net^$image,domain=prnewswire.com'],
+ sourceUrl: 'https://www.prnewswire.com',
+ type: 'image',
+ url: 'https://c212.net',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ filters: ['||search.ch/audit/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.search.ch/audit/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.finder.com.au',
+ type: 'script',
+ url: 'https://www.finder.com.au/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ filters: ['||analytics.optilead.co.uk^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.optilead.co.uk',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ filters: ['/www/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.weekli.systems/www/ads/',
+ },
+ {
+ filters: ['||adblockanalytics.com^', '@@||adblockanalytics.com/ads.js|'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adblockanalytics.com/ads.js',
+ },
+ {
+ filters: ['/analyze.js^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adblockanalytics.com/analyze.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.finder.com.au',
+ type: 'script',
+ url: 'https://www.finder.com.au/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.notebookreview.com',
+ type: 'script',
+ url: 'http://www.notebookreview.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=xrares.com'],
+ sourceUrl: 'https://www.xrares.com',
+ type: 'xhr',
+ url: 'https://kz1d.piguiqproxy.com',
+ },
+ {
+ check: true,
+ filters: ['||amgload.net^$xmlhttprequest,redirect=nooptext,domain=xrares.com'],
+ sourceUrl: 'https://www.xrares.com',
+ type: 'xhr',
+ url: 'https://xk9n.amgload.net',
+ },
+ {
+ filters: ['/468x60b.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.woothemes.com/ads/468x60b.jpg',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.cultofmac.com',
+ type: 'script',
+ url: 'https://www.cultofmac.com/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.finder.com.au',
+ type: 'script',
+ url: 'https://www.finder.com.au/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||seethisinaction.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'http://seethisinaction.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.notebookreview.com',
+ type: 'script',
+ url: 'http://www.notebookreview.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||analytics.brave.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.brave.com',
+ },
+ {
+ filters: ['||frtyj.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.frtyj.com',
+ },
+ {
+ check: true,
+ filters: ['@@||themarker.com^$xmlhttprequest,first-party'],
+ sourceUrl: 'https://www.themarker.com',
+ type: 'xhr',
+ url: 'https://www.themarker.com',
+ },
+ {
+ filters: ['||liveburst.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad.liveburst.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.notebookreview.com',
+ type: 'script',
+ url: 'http://www.notebookreview.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adsby.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://adsby.bidtheatre.com',
+ },
+ {
+ filters: ['||bm23.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://p.bm23.com',
+ },
+ {
+ filters: ['/tagCNIL.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.nrj-play.fr/js/tagCNIL.js',
+ },
+ {
+ filters: ['@@||themarker.com/logger/p.gif?$image,xmlhttprequest'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.themarker.com/logger/p.gif?',
+ },
+ {
+ filters: ['_adcall.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://storage.googleapis.com/adtags/modhoster/modhoster_AdCall.js',
+ },
+ {
+ filters: ['/dfp-custom/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://wtop.com/wp-content/plugins/dfp-custom/',
+ },
+ {
+ filters: ['/sailthru.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://wtop.com/wp-content/plugins/sailthru-custom/assets/js/sailthru.js',
+ },
+ {
+ filters: ['||impossibleexpansion.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://impossibleexpansion.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||mamydirect.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.mamydirect.com',
+ },
+ {
+ filters: ['||idealo.net/js/idealoWidget-$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.idealo.net/js/idealoWidget-17828.min.js',
+ },
+ {
+ filters: ['||ztsrv.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.ztsrv.com',
+ },
+ {
+ filters: ['/images/sponsored/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://img.hunkercdn.com/x16/cme/hunker_data/images/sponsored/',
+ },
+ {
+ filters: ['||d3ujids68p6xmq.cloudfront.net^', '||cloudfront.net/abw.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d3ujids68p6xmq.cloudfront.net/abw.js',
+ },
+ {
+ filters: ['||d1uanozc5el74n.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d1uanozc5el74n.cloudfront.net',
+ },
+ {
+ filters: ['/track/jsinfo'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www3.smartadserver.com/track/jsinfo.asp',
+ },
+ {
+ filters: ['||rtbnowads.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://rtbnowads.com',
+ },
+ {
+ filters: ['||d2tgfbvjf3q6hn.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2tgfbvjf3q6hn.cloudfront.net',
+ },
+ {
+ filters: ['||t.c4tw.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://t.c4tw.net',
+ },
+ {
+ filters: ['@@||static.urbia.de/*/gujAd.js$script,first-party'],
+ sourceUrl: 'https://m.urbia.de',
+ type: 'script',
+ url: 'https://static.urbia.de/gujAd/gujAd.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.askamanager.org',
+ type: 'script',
+ url: 'https://www.askamanager.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||rbl.ms/res/users/tracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://res.rbl.ms/res/users/tracking/',
+ },
+ {
+ filters: ['||deoi3kwqhv0d5.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://deoi3kwqhv0d5.cloudfront.net',
+ },
+ {
+ filters: ['||collector.roistat.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://collector.roistat.com',
+ },
+ {
+ filters: ['/collect/sdk?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ssl.kaptcha.com/collect/sdk?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.askamanager.org',
+ type: 'script',
+ url: 'https://www.askamanager.org/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://1000mg.jp',
+ type: 'script',
+ url: 'http://1000mg.jp/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||log.mappy.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://log.mappy.net',
+ },
+ {
+ filters: ['||track.workablemetro.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://track.workablemetro.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://1000mg.jp',
+ type: 'script',
+ url: 'http://1000mg.jp/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=sockshare.net'],
+ sourceUrl: 'http://www1.sockshare.net',
+ type: 'xhr',
+ url: 'https://piguiqproxy.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['||78tdd75.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://78tdd75.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['/adTools.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sfchronicle.com/js/hdn/unification/modules/adTools.js',
+ },
+ {
+ filters: ['||adhslx.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://o.adhslx.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://1000mg.jp',
+ type: 'script',
+ url: 'http://1000mg.jp/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||amazonaws.com^*/transcriptions/$domain=diki.pl'],
+ sourceUrl: 'https://www.diki.pl',
+ type: 'image',
+ url: 'https://etutor-images-common.s3.eu-central-1.amazonaws.com/en/transcriptions/',
+ },
+ {
+ filters: ['/cXense-Analytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.iris.net.co/js/cXense-Analytics-2-1.js',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['/javascript/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.schiphol.nl/static/javascript/ads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://1000mg.jp',
+ type: 'script',
+ url: 'http://1000mg.jp/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.paroles.net',
+ type: 'script',
+ url: 'https://www.paroles.net/ezoic/',
+ },
+ {
+ filters: ['||count.carrierzone.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://count.carrierzone.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.paroles.net',
+ type: 'script',
+ url: 'https://www.paroles.net/ezoic/',
+ },
+ {
+ filters: ['/Google/ga.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.castorama.ru/js/google/ga.js',
+ },
+ {
+ filters: ['.at/werbung/'],
+ sourceUrl: 'https://www.vol.at',
+ type: 'script',
+ url: 'https://media.vol.at/werbung/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.mo.gov',
+ type: 'script',
+ url: 'https://www.mo.gov/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.paroles.net',
+ type: 'script',
+ url: 'https://www.paroles.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://cdn-1.wololo.net/wagic/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://2018god.net',
+ type: 'script',
+ url: 'http://2018god.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.mo.gov',
+ type: 'script',
+ url: 'https://www.mo.gov/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.paroles.net',
+ type: 'script',
+ url: 'https://www.paroles.net/ezoic/',
+ },
+ {
+ filters: ['@@||btstatic.com/tag.js$script,domain=vw.com'],
+ sourceUrl: 'http://www.vw.com',
+ type: 'script',
+ url: 'http://s.btstatic.com/tag.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.mo.gov',
+ type: 'script',
+ url: 'https://www.mo.gov/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||zemanta.com^*/loader.js$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://wprp.zemanta.com/static/js/loader.js',
+ },
+ {
+ check: true,
+ filters: ['||brightonclick.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.brightonclick.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'https://www.paroles.net',
+ type: 'script',
+ url: 'https://www.paroles.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://2018god.net',
+ type: 'script',
+ url: 'http://2018god.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||ad.amgdgt.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ad.amgdgt.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.mo.gov',
+ type: 'script',
+ url: 'https://www.mo.gov/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||watchmygf.me/banner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.watchmygf.me/banner/',
+ },
+ {
+ filters: ['||watchmygf.me/contents/content_sources/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn1.watchmygf.me/contents/content_sources/',
+ },
+ {
+ check: true,
+ filters: ['||watchmygf.me/js/popupimage.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.watchmygf.me/js/popupimage.js',
+ },
+ {
+ filters: ['_advertise.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.tvtv.de/javascript/header_advertise.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://2018god.net',
+ type: 'script',
+ url: 'http://2018god.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||uploaded.net/img/public/$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://uploaded.net/img/public/',
+ },
+ {
+ filters: [
+ '||rapidgator.net/images/pics/$third-party',
+ '||rapidgator.net/images/pics/*_300%D1%85250_',
+ ],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://rapidgator.net/images/pics/36_300%D1%85250_1.gif',
+ },
+ {
+ filters: ['_728x901.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.hentaicore.net/wp-content/uploads/2012/02/hmp_728x901.jpg',
+ },
+ {
+ filters: ['/widget/ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.cruisecritic.net/assets-1540306406/js/zd/widget/ads.min.js',
+ },
+ {
+ filters: ['/hitcount?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.abendzeitung-muenchen.de/cms/hitcount?',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://cdn-1.wololo.net/wagic/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://2018god.net',
+ type: 'script',
+ url: 'http://2018god.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.hentaicore.net',
+ type: 'script',
+ url: 'http://www.hentaicore.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||behavioralengine.com^', '||behavioralengine.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.behavioralengine.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.hentaicore.net',
+ type: 'script',
+ url: 'http://www.hentaicore.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.xmind.net',
+ type: 'script',
+ url: 'https://www.xmind.net/blog/en/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||creatives.cliphunter.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://creatives.cliphunter.com',
+ },
+ {
+ filters: ['@@||infoworld.com/www/js/ads/gpt_includes.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.infoworld.com/www/js/ads/gpt_includes.js',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://cdn-1.wololo.net/wagic/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['_adsys_'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://epoznan.pl/ajax/get_adsys_code.php',
+ },
+ {
+ filters: ['||cineplex.com/skins/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://mediafiles.cineplex.com/Skins/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://cdn-1.wololo.net/wagic/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://wololo.net',
+ type: 'script',
+ url: 'http://wololo.net/ezoic/',
+ },
+ {
+ filters: ['@@||thermofisher.com/*/analytics.sitecatalyst.js$script,first-party'],
+ sourceUrl: 'https://www.thermofisher.com',
+ type: 'script',
+ url: 'https://www.thermofisher.com/de/de/_jcr_content/analytics.sitecatalyst.js',
+ },
+ {
+ filters: ['||suddensidewalk.com^', '||suddensidewalk.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://suddensidewalk.com',
+ },
+ {
+ filters: ['||aa.avvo.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://aa.avvo.com',
+ },
+ {
+ filters: ['/ads_images/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://en.about.aegeanair.com/-/media/images/aboutaegean/ads_images/',
+ },
+ {
+ filters: ['||botscanner.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://scan.botscanner.com',
+ },
+ {
+ filters: ['||metaffiliation.com^*^maff='],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://action.metaffiliation.com/trk.php?maff=P4E9EB56C81D2315&argsite=dc',
+ },
+ {
+ filters: ['/resources/ads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.sortiraparis.com/resources/ads/',
+ },
+ {
+ filters: [
+ '@@||pro.hit.gemius.pl/gplayer.js$script,domain=nova.cz',
+ '||pro.hit.gemius.pl^$script,redirect=noopjs,domain=nova.cz',
+ ],
+ sourceUrl: 'http://tv.nova.cz',
+ type: 'script',
+ url: 'https://pro.hit.gemius.pl/gplayer.js',
+ },
+ {
+ filters: ['://eulerian.*/ea.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://eulerian.grosbill.com/ea.js',
+ },
+ {
+ filters: ['||truecar.com/tct?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.truecar.com/tct?',
+ },
+ {
+ filters: ['||clickintext.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tags.clickintext.net',
+ },
+ {
+ filters: ['||smrt.as^'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://smrt.as',
+ },
+ {
+ filters: ['||incentivesnetwork.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.incentivesnetwork.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.androidplanet.nl',
+ type: 'script',
+ url: 'https://www.androidplanet.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.androidplanet.nl',
+ type: 'script',
+ url: 'https://www.androidplanet.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.androidplanet.nl',
+ type: 'script',
+ url: 'https://www.androidplanet.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://mangadex.com',
+ type: 'script',
+ url: 'https://mangadex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://mangadex.com',
+ type: 'script',
+ url: 'https://mangadex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||flx1.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://c.flx1.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.androidplanet.nl',
+ type: 'script',
+ url: 'https://www.androidplanet.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://mangadex.com',
+ type: 'script',
+ url: 'https://mangadex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||informz.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://comptia.informz.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://mangadex.com',
+ type: 'script',
+ url: 'https://mangadex.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['.ro/c.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cnt.m.ro/c.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.androidplanet.nl',
+ type: 'script',
+ url: 'https://www.androidplanet.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.returnofkings.com',
+ type: 'script',
+ url: 'http://www.returnofkings.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||evolvemediallc.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://secureassets.evolvemediallc.com',
+ },
+ {
+ filters: ['/contentiq.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://dashboard.evolveplatform.net/contentiq.js',
+ },
+ {
+ filters: ['||resonantbrush.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://resonantbrush.com',
+ },
+ {
+ filters: ['/ad-cdn.', '?ad_size='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad-cdn.technoratimedia.com/00/37/21/uat_82137.js?ad_size=320x50',
+ },
+ {
+ filters: ['/adserv_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://uat-net.technoratimedia.com/00/37/21/adserv_82137.js',
+ },
+ {
+ filters: ['/null.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.hrs.de/web3/bi/null.gif?',
+ },
+ {
+ filters: ['||successfultogether.co.uk^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://act.successfultogether.co.uk',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.returnofkings.com',
+ type: 'script',
+ url: 'http://www.returnofkings.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||adrcdn.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://media.adrcdn.com',
+ },
+ {
+ filters: ['/oas_analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://oas.monster.com/Scripts/oas_analytics.js',
+ },
+ {
+ filters: [
+ '@@||stroeerdigitalgroup.de/metatag/live/bauer-tvmovie/metaTag.min.js$domain=tvmovie.de',
+ ],
+ sourceUrl: 'https://www.tvmovie.de',
+ type: 'script',
+ url: 'https://cdn.stroeerdigitalgroup.de/metatag/live/bauer-tvmovie/metaTag.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://pornplaybb.com',
+ type: 'script',
+ url: 'http://pornplaybb.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.returnofkings.com',
+ type: 'script',
+ url: 'http://www.returnofkings.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adimage.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://secure.jdn.monster.com/render/adimage.aspx',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://pornplaybb.com',
+ type: 'script',
+ url: 'http://pornplaybb.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||oewabox.at^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dispatcher.oewabox.at',
+ },
+ {
+ filters: ['||adizio.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pool.adizio.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://pornplaybb.com',
+ type: 'script',
+ url: 'http://pornplaybb.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||widget.imshopping.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.imshopping.com',
+ },
+ {
+ filters: ['/includes/tracking_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://m.ubs.com/includes/tracking_head.min.201809280953.min.0327928997.js',
+ },
+ {
+ filters: ['||ftv-publicite.fr^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pub.ftv-publicite.fr',
+ },
+ {
+ filters: ['||sc-f6eade8.js^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://sc-f6eade8.js',
+ },
+ {
+ check: true,
+ filters: ['@@||qbrick.com/framework/modules/analytics/analytics.min.js$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://play2.qbrick.com/framework/modules/analytics/analytics.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'http://www.younitymedia.nl',
+ type: 'script',
+ url: 'http://www.younitymedia.nl/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blindgossip.com',
+ type: 'script',
+ url: 'https://blindgossip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||d2d8qsxiai9qwj.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d2d8qsxiai9qwj.cloudfront.net',
+ },
+ {
+ filters: ['||user-clicks.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://pix.user-clicks.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blindgossip.com',
+ type: 'script',
+ url: 'https://blindgossip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blindgossip.com',
+ type: 'script',
+ url: 'https://blindgossip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ check: true,
+ filters: ['||gfdfhdh5t5453.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gfdfhdh5t5453.com',
+ },
+ {
+ filters: ['||adbrn.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://sp.adbrn.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['*/wp-adblock-$script,redirect=fuckadblock.js-3.2.0'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.thepiratedownload.org/wp-content/plugins/wp-adblock-dedect',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blindgossip.com',
+ type: 'script',
+ url: 'https://blindgossip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||addthiscdn.com/live/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://l.addthiscdn.com/live/',
+ },
+ {
+ filters: ['/HitCounter.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://dayonline.ru/hitcounter.php',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://blindgossip.com',
+ type: 'script',
+ url: 'https://blindgossip.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||bmmetrix.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.bmmetrix.com',
+ },
+ {
+ filters: ['||qwertize.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d.qwertize.com',
+ },
+ {
+ filters: ['/ads/a.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://img.besty.pl/ads/a.js',
+ },
+ {
+ filters: ['||tracker.publico.pt^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tracker.publico.pt',
+ },
+ {
+ filters: ['_Banner_Ads_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://s0.2mdn.net/8667481/Me-We_Banner_Ads_New_Sizes728x90.jpg',
+ },
+ {
+ filters: ['@@||adtech.de/dt/common/DAC.js$domain=dn.no'],
+ sourceUrl: 'https://www.dn.no',
+ type: 'script',
+ url: 'https://aka-cdn.adtech.de/dt/common/DAC.js',
+ },
+ {
+ filters: ['||livecounter.theyosh.nl^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://livecounter.theyosh.nl',
+ },
+ {
+ filters: ['/gaEventTracking.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.progressive.com/content/js/domainprogressive/gaEventTracking.min.js',
+ },
+ {
+ filters: ['||mycdn.co^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://p0.mycdn.co',
+ },
+ {
+ filters: ['/ServeAd?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://api.lanistaads.com/ServeAd?',
+ },
+ {
+ filters: ['://ax-d.*/jstag^', '||pixfuture.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ax-d.pixfuture.net/w/1.0/jstag',
+ },
+ {
+ filters: ['||adnuntius.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn.adnuntius.com',
+ },
+ {
+ filters: ['/stats/count.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://store.x-plane.org/stats/count.asp',
+ },
+ {
+ filters: ['-728x90-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sexyandfunny.com/_odd_images/20150326-728x90-pbtv-001.jpg',
+ },
+ {
+ filters: ['||sexyandfunny.com/images/totem'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sexyandfunny.com/images/totemnewyes3.jpg',
+ },
+ {
+ filters: ['||yelp.ca/spice?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://m.yelp.ca/spice?',
+ },
+ {
+ filters: ['||sayyac.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://srv.sayyac.net',
+ },
+ {
+ filters: ['||ads.financialcontent.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ads.financialcontent.com',
+ },
+ {
+ filters: ['||tracker.financialcontent.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tracker.financialcontent.com',
+ },
+ {
+ filters: ['||hitslink.com^', '||hitslink.com^$third-party', '/statistics.asp?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://counter.hitslink.com/statistics.asp?',
+ },
+ {
+ filters: ['_468x80_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sexyandfunny.com/_odd_images/pantyloving_468x80_01.gif',
+ },
+ {
+ filters: ['/pixel-track.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://live.marketshot.com/js/mics/pixel-track.js',
+ },
+ {
+ filters: ['-google-analytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://discover.king.com/wp-content/plugins/mc-google-analytics-tracking',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/analytics/tools_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.philips.de/analytics/tools_lib.js',
+ },
+ {
+ filters: ['/analytics/tms_'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.philips.de/analytics/tms_lib.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ninefornews.nl',
+ type: 'script',
+ url: 'https://www.ninefornews.nl/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/analytics/*satellitelib.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.crsc.philips.com/analytics/production/satellitelib.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['||formisimo.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://cdn-static.formisimo.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.ninefornews.nl',
+ type: 'script',
+ url: 'https://www.ninefornews.nl/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['_mzblank.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.acehardware.com/_mzblank.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['@@||cxense.com/cx.js$script,domain=letelegramme.fr'],
+ sourceUrl: 'https://www.letelegramme.fr',
+ type: 'script',
+ url: 'https://scdn.cxense.com/cx.js',
+ },
+ {
+ filters: ['||dpypzvjarj.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://dpypzvjarj.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://serie-vostfr.biz',
+ type: 'script',
+ url: 'https://serie-vostfr.biz/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/google-analyticator/*', '/external-tracking.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.ros.org/wp-content/plugins/google-analyticator/external-tracking.js',
+ },
+ {
+ filters: ['||user-red.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://synce.user-red.com',
+ },
+ {
+ filters: ['||clustrmaps.com^', '||clustrmaps.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.clustrmaps.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/streamads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://streamads.mainroll.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://takprosto.cc',
+ type: 'script',
+ url: 'https://takprosto.cc/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/tracking-cookie.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static-goldenfrog.netdna-ssl.com/js/tracking-cookie.js',
+ },
+ {
+ filters: ['/php/stats/*', '/stats/pv.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.goldenline.pl/php/stats/pv.php',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: [
+ '@@||wp.com/wp-content/$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|breaking911.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|girlsjustwannahaveguns.com|glitch.news|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|medicine.news|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|redhotchacha.com|redmaryland.com|returnofkings.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.thepoke.co.uk',
+ type: 'script',
+ url: 'https://s0.wp.com/wp-content/',
+ },
+ {
+ check: true,
+ filters: ['/uk.ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://uk.ads.justpremium.com',
+ },
+ {
+ filters: ['/ox/www/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://rv.ibanbic.com/ox/www/',
+ },
+ {
+ filters: ['/tracking/click?'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://products.gobankingrates.com/tracking/click?',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['/shinystat.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.pgol.it/scripts/shinystat.js.pagespeed.jm.HASH.js',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.mkvcage.ws',
+ type: 'script',
+ url: 'https://www.mkvcage.ws/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.mkvcage.ws',
+ type: 'script',
+ url: 'https://www.mkvcage.ws/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||pptchecker.club^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pptchecker.club',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['||unarmedindustry.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://unarmedindustry.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: [
+ '@@||api-public.addthis.com/url/shares.json?$script,third-party,domain=activistpost.com|addictinginfo.com|alfonzorachel.com|askmefast.com|breathecast.com|bulletsfirst.net|clashdaily.com|classicalite.com|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|crossmap.com|dailyheadlines.net|dailysurge.com|dccrimestories.com|digitaljournal.com|eaglerising.com|enstarz.com|girlsjustwannahaveguns.com|greatamericanrepublic.com|hngn.com|infowars.com|instigatornews.com|joeforamerica.com|kdramastars.com|kpopstarz.com|latinpost.com|libertyunyielding.com|minutemennews.com|musictimes.com|naturalblaze.com|naturalnews.com|natureworldnews.com|newser.com|oddee.com|patriotoutdoornews.com|rantlifestyle.com|realfarmacy.com|redmaryland.com|shark-tank.com|spectator.org|stevedeace.com|techtimes.com|theblacksphere.net|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|tinypic.com|valuewalk.comvcpost.com|victoriajackson.com|viralnova.com|viralthread.com',
+ ],
+ sourceUrl: 'https://www.thepoke.co.uk',
+ type: 'script',
+ url: 'https://api-public.addthis.com/url/shares.json?',
+ },
+ {
+ filters: ['/stickyad.'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://staticx.zacks.com/css/zacks/css2/stickyad.css',
+ },
+ {
+ filters: ['_google_ads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://staticx.zacks.com/js/zacks/inline/takeover_google_ads.js',
+ },
+ {
+ filters: ['||naturalnews.com/wp-content/themes/*/js/Abigail.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.naturalnews.com/wp-content/themes/naturalnews-child/js/Abigail.js',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: [
+ '@@||vimeo.com^$script,domain=activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|askmefast.com|auntyacid.com|boredomtherapy.com|breaking911.com|bulletsfirst.net|clashdaily.com|classicalite.com|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|coviral.com|crossmap.com|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|dailywire.com|dccrimestories.com|digitaljournal.com|eaglerising.com|enstarz.com|foreverymom.com|freedomforce.com|girlsjustwannahaveguns.com|greatamericanrepublic.com|groopspeak.com|guardianlv.com|hallels.com|headcramp.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|joeforamerica.com|kdramastars.com|kpopstarz.com|lastresistance.com|latinpost.com|libertyalliance.com|libertyunyielding.com|mentalflare.com|minutemennews.com|musictimes.com|myscienceacademy.org|naturalblaze.com|naturalnews.com|natureworldnews.com|newser.com|newsthump.com|oddee.com|patriotoutdoornews.com|pickthebrain.com|politicaloutcast.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realtytoday.com|redhotchacha.com|redmaryland.com|shark-tank.com|spectator.org|stevedeace.com|techtimes.com|thefreethoughtproject.com|thegatewaypundit.com|themattwalshblog.com|thepoke.co.uk|traileraddict.com|valuewalk.comvcpost.com|victoriajackson.com|viralnova.com|viralthread.com',
+ ],
+ sourceUrl: 'https://www.naturalnews.com',
+ type: 'script',
+ url: 'https://player.vimeo.com',
+ },
+ {
+ filters: [
+ '@@||assets.pinterest.com^$script,third-party,domain=100percentfedup.com|activistpost.com|addictinginfo.com|alfonzorachel.com|allthingsvegas.com|americansublime.com|askmefast.com|auntyacid.com|barbwire.com|bestfunnyjokes4u.com|bighealthreport.com|bipartisanreport.com|boredomtherapy.com|breaking911.com|breathecast.com|bulletsfirst.net|celebrity-gossip.net|clashdaily.com|classicalite.com|collapse.news|comicallyincorrect.com|conservativebyte.com|conservativevideos.com|constitution.com|coviral.com|craigjames.com|creepybasement.com|crossmap.com|cyberwar.news|dailydot.com|dailyfeed.co.uk|dailyheadlines.net|dailyhealthpost.com|dailysurge.com|damnlol.com|dccrimestories.com|deneenborelli.com|digitaljournal.com|eaglerising.com|earnthenecklace.com|enstarz.com|evil.news|fitnessconnoisseur.com|foreverymom.com|freedom.news|freedomdaily.com|freedomforce.com|freedomoutpost.com|gamerant.com|girlsjustwannahaveguns.com|glitch.news|greatamericanrepublic.com|groopspeak.com|guardianlv.com|guns.news|gymflow100.com|hallels.com|hautereport.com|healthstatus.com|hispolitica.com|hngn.com|honesttopaws.com|ifyouonlynews.com|infowars.com|instigatornews.com|intellectualconservative.com|jobsnhire.com|joeforamerica.com|juicerhead.com|justdiy.com|kdramastars.com|keepandbear.com|kpopstarz.com|lastresistance.com|latinpost.com|legalinsurrection.com|liberty.news|libertyalliance.com|libertyunyielding.com|lidblog.com|medicine.news|mentalflare.com|minutemennews.com|moneyversed.com|musictimes.com|myscienceacademy.org|natural.news|naturalblaze.com|naturalnews.com|naturalsociety.com|natureworldnews.com|newser.com|newseveryday.com|newsthump.com|oddee.com|opednews.com|patriotoutdoornews.com|patriottribune.com|pickthebrain.com|politicaloutcast.com|politichicks.com|practicallyviral.com|quirlycues.com|rantlifestyle.com|realfarmacy.com|realmomsrealreviews.com|redhotchacha.com|redmaryland.com|returnofkings.com|rightwingnews.com|robotics.news|shark-tank.com|shedthoselbs.com|slender.news|sonsoflibertymedia.com|spectator.org|stevedeace.com|stupid.news|supercheats.com|techconsumer.com|techtimes.com|theblacksphere.net|theboredmind.com|thefreethoughtproject.com|thegatewaypundit.com|thehayride.com|themattwalshblog.com|thepoke.co.uk|therealside.com|theviralmob.com|tosavealife.com|traileraddict.com|truththeory.com|twisted.news|urbantabloid.com|usherald.com|valuewalk.com|vcpost.com|victoriajackson.com|videogamesblogger.com|viralnova.com|viralthread.com|visiontoamerica.com|wakingtimes.com|winningdemocrats.com|xtribune.com|youthhealthmag.com',
+ ],
+ sourceUrl: 'https://www.naturalnews.com',
+ type: 'script',
+ url: 'https://assets.pinterest.com',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['/pingServerAction?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.traveller.com.au/public/action/pingServerAction?',
+ },
+ {
+ filters: ['/adsmapping/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.televisa.com/wp-content/plugins/adsmapping/',
+ },
+ {
+ filters: ['||esmas.com/scripts/esmas_stats.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www2.esmas.com/scripts/esmas_stats.js',
+ },
+ {
+ filters: ['||fairfax.com.au/js/track/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://resources.fairfax.com.au/js/track/',
+ },
+ {
+ filters: ['||btstats.devtribu.fr^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://btstats.devtribu.fr',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.windows8facile.fr',
+ type: 'script',
+ url: 'https://www.windows8facile.fr/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ads/?uniq='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://livestatisc.com/ads/?uniq=0.4930039551425265',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['/amazon-affiliate-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dcrainmaker.com/wp-content/plugins/amazon-affiliate-link-localizer',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ check: true,
+ filters: ['@@||youbora.com/*/js/adapters/jwplayer$script'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://smartplugin.youbora.com/v6/js/adapters/jwplayer7',
+ },
+ {
+ check: true,
+ filters: ['-google-analytics.'],
+ sourceUrl: 'http://www.ccma.cat',
+ type: 'script',
+ url: 'http://statics.ccma.cat/js/modul-audiencies-google-analytics.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.espritsciencemetaphysiques.com',
+ type: 'script',
+ url: 'https://www.espritsciencemetaphysiques.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['/ezoic/*$script,first-party'],
+ sourceUrl: 'http://www.minecraftmaps.com',
+ type: 'script',
+ url: 'http://www.minecraftmaps.com/ezoic/',
+ },
+ {
+ filters: ['||mms.cleveland.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://mms.cleveland.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.espritsciencemetaphysiques.com',
+ type: 'script',
+ url: 'https://www.espritsciencemetaphysiques.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/mint/?js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://daringfireball.net/mint/?js',
+ },
+ {
+ filters: ['||sedoparking.com^$third-party', '||sedoparking.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://img.sedoparking.com',
+ },
+ {
+ filters: ['||audiencies.ccma.cat^'],
+ sourceUrl: 'http://foo.com',
+ type: 'xhr',
+ url: 'https://audiencies.ccma.cat',
+ },
+ {
+ filters: ['/1x1.a?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://deut1.fdj.fr/dynview/psel/1x1.a?',
+ },
+ {
+ filters: ['||avito.ru/stat/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.avito.ru/stat/',
+ },
+ {
+ filters: ['||axf8.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://0521cb.r.axf8.net',
+ },
+ {
+ filters: ['-dtaectolog-'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://di-dtaectolog-us-prod-1.appspot.com',
+ },
+ {
+ filters: ['.com/0.gif?'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://sstatic1.histats.com/0.gif?',
+ },
+ {
+ filters: ['||quizzicalzephyr.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://quizzicalzephyr.com',
+ },
+ {
+ filters: ['||ai.iol.io^', '/aa/www/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ai.iol.io/aa/www/',
+ },
+ {
+ filters: ['/jquery.adi.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://static.cdn.markiza.sk/media/3.0/core/jquery/js/jquery.adi.js',
+ },
+ {
+ filters: ['||entensity.net/crap/'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.entensity.net/crap/',
+ },
+ {
+ filters: ['.info/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.regular-expressions.info/ads/',
+ },
+ {
+ check: true,
+ filters: ['||searchmarketing.com^', '||tracking.searchmarketing.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://tracking.searchmarketing.com',
+ },
+ {
+ filters: ['||adg.bzgint.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://adg.bzgint.com',
+ },
+ {
+ filters: ['||id.localsearch.ch^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://id.localsearch.ch',
+ },
+ {
+ filters: ['/didna-pixel-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://storage.googleapis.com/didna-files/didna-pixel-reviewjournal.js',
+ },
+ {
+ filters: ['||keyxel.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://tk.keyxel.com',
+ },
+ {
+ filters: ['/javascripts/ga.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.dellin.ru/javascripts/ga.js',
+ },
+ {
+ filters: ['||etui.fs.ml.com^', '||ml.com/enterprisetagging/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://etui.fs.ml.com/enterprisetagging/',
+ },
+ {
+ filters: ['/adutil.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.loopnet.com/xNet/MainSite/Scripts/Ads/AdUtil.js',
+ },
+ {
+ filters: ['||bn.adultempire.com^', '/s-pcjs.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://bn.adultempire.com/m/s-pcjs.php',
+ },
+ {
+ filters: ['||keymetric.net^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://km14634.keymetric.net',
+ },
+ {
+ filters: ['/adblocker.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://js.tvinfo.net/js/1526653104/adblocker.js',
+ },
+ {
+ filters: ['||green-griffin-860.appspot.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://green-griffin-860.appspot.com',
+ },
+ {
+ filters: ['/krux.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.androidworld.it/wp-content/themes/aw/js/krux.js',
+ },
+ {
+ filters: ['||porndoe.com/deliverAbc/'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://porndoe.com/deliverAbc/',
+ },
+ {
+ filters: ['/mh_metric.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://phen.fabricmedia.ru/mh_metric.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://topdocumentaryfilms.com',
+ type: 'script',
+ url: 'https://topdocumentaryfilms.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://topdocumentaryfilms.com',
+ type: 'script',
+ url: 'https://topdocumentaryfilms.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adevent.$domain=~adevent.com'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://adevent.bigmining.com',
+ },
+ {
+ filters: ['||coin-hive.com^$third-party', '||coin-hive.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://coin-hive.com',
+ },
+ {
+ filters: ['/ads/?id='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.chargeplatform.com/ads/?id=1288491558',
+ },
+ {
+ filters: ['/ads/sidebar-'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://marketinghub.active.com/css/ads/sidebar-ads.css',
+ },
+ {
+ filters: ['||nzaza.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://nzaza.com',
+ },
+ {
+ check: true,
+ filters: ['||piguiqproxy.com^$xmlhttprequest,redirect=nooptext,domain=112.ua'],
+ sourceUrl: 'https://tv.112.ua',
+ type: 'xhr',
+ url: 'https://piguiqproxy.com',
+ },
+ {
+ filters: ['||neighborlywatch.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://neighborlywatch.com',
+ },
+ {
+ filters: ['@@||googleadservices.com/pagead/conversion_async.js$domain=dillards.com'],
+ sourceUrl: 'https://www.dillards.com',
+ type: 'script',
+ url: 'https://www.googleadservices.com/pagead/conversion_async.js',
+ },
+ {
+ filters: ['/images/adv_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://cdn.gorodrabot.ru/themes/newjob/images/adv_search.svg',
+ },
+ {
+ filters: ['||tubeadvertising.eu^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://smart.tubeadvertising.eu',
+ },
+ {
+ filters: ['@@||next-episode.net^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.next-episode.net',
+ },
+ {
+ filters: ['/nativeads-'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.iab.com/wp-content/uploads/2015/07/nativeads-578x243.png',
+ },
+ {
+ filters: ['/cgi-bin/ads/*'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.apornstories.com/cgi-bin/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://quillette.com',
+ type: 'script',
+ url: 'https://quillette.com/wp-content/plugins/akismet/',
+ },
+ {
+ check: true,
+ filters: ['@@||stats.g.doubleclick.net/dc.js$script,domain=ticketfly.com'],
+ sourceUrl: 'http://www.ticketfly.com',
+ type: 'script',
+ url: 'http://stats.g.doubleclick.net/dc.js',
+ },
+ {
+ filters: ['||facebook.com/ct.php'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.facebook.com/ct.php',
+ },
+ {
+ filters: ['||track.shop2market.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://track.shop2market.com',
+ },
+ {
+ filters: ['@@||networkworld.com/www/js/ads/gpt_includes.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.networkworld.com/www/js/ads/gpt_includes.js?',
+ },
+ {
+ filters: ['/dcloadads/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ynetnews.com/dc/dcLoadAds/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://quillette.com',
+ type: 'script',
+ url: 'https://quillette.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||bdgest.com/js/site.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.bdgest.com/js/site.js?',
+ },
+ {
+ filters: ['/AttractiveAds_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.winwin.co.il/AttractiveAds_Media',
+ },
+ {
+ filters: ['/awepop.'],
+ sourceUrl: 'https://foo.com',
+ type: 'fetch',
+ url: 'https://ak.sail-horizon.com/spm/awepop.js',
+ },
+ {
+ filters: ['||gayadnetwork.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://tag.gayadnetwork.com',
+ },
+ {
+ filters: ['/js/counter.js?'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.film.ru/i/js/counter.js?',
+ },
+ {
+ filters: ['||taxidrivermovie.com/mrskin_runner/'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.taxidrivermovie.com/mrskin_runner/',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'http://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/analytics/liferay-', '/liferay-analytics-'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://telmex.com/html/js/analytics/liferay-analytics-api.js',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'https://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.lebara.com.au',
+ type: 'script',
+ url: 'https://www.lebara.com.au/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'https://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: ['.composeTrack.htm'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://www.quattroruote.it/system/util.composeTrack.html',
+ },
+ {
+ check: true,
+ filters: ['||adnetworkperformance.com^$third-party', '||adnetworkperformance.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.adnetworkperformance.com',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'http://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['||survey.interquest.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://survey.interquest.com',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'http://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.lebara.com.au',
+ type: 'script',
+ url: 'https://www.lebara.com.au/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '|https://$script,first-party,xmlhttprequest,domain=taxidrivermovie.com',
+ '@@||taxidrivermovie.com/style/core-min.js$script,first-party',
+ ],
+ sourceUrl: 'http://www.taxidrivermovie.com',
+ type: 'script',
+ url: 'https://www.taxidrivermovie.com/style/core-min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['.ca/ads/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://components.bellmedia.ca/ads/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.lebara.com.au',
+ type: 'script',
+ url: 'https://www.lebara.com.au/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://truepundit.com',
+ type: 'script',
+ url: 'https://truepundit.com/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.lebara.com.au',
+ type: 'script',
+ url: 'https://www.lebara.com.au/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||pixel.redditmedia.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pixel.redditmedia.com',
+ },
+ {
+ filters: ['||eventbeacon.ca^', '||eventbeacon.ca^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://data.eventbeacon.ca',
+ },
+ {
+ filters: ['||loc.gov/js/*/s_code.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.loc.gov/js/global/metrics/sc/s_code.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minimachines.net',
+ type: 'script',
+ url: 'https://www.minimachines.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minimachines.net',
+ type: 'script',
+ url: 'https://www.minimachines.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minimachines.net',
+ type: 'script',
+ url: 'https://www.minimachines.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||toyota.jp/onetag/'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://onetag.tws.toyota.jp/onetag/',
+ },
+ {
+ filters: ['||widget.s24.com^*/s24widget.min.js$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://widget.s24.com/js/s24widget.min.js',
+ },
+ {
+ filters: ['/pixel.track?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://strmlntrack.com/pixel.track?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minimachines.net',
+ type: 'script',
+ url: 'https://www.minimachines.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adverts_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://touch.daft.ie/dist/images/about/adverts_logo-d2edd7d61e.svg',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.minimachines.net',
+ type: 'script',
+ url: 'https://www.minimachines.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/article-analytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.ledevoir.com/js/nweb/article-analytics.js',
+ },
+ {
+ filters: ['||owldata.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://j.owldata.com',
+ },
+ {
+ filters: ['||capturemedia.network^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://edge.capturemedia.network',
+ },
+ {
+ filters: ['||analytics.thetab.com^', '/tablytics.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://analytics.thetab.com/tablytics.prod.js',
+ },
+ {
+ filters: ['||affiliatly.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.affiliatly.com',
+ },
+ {
+ filters: ['||telemetry.jivosite.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://telemetry.jivosite.com',
+ },
+ {
+ filters: ['||a.tovarro.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.tovarro.com',
+ },
+ {
+ filters: ['/overture.$script,stylesheet,domain=~overture.doremus.org'],
+ sourceUrl: 'https://foo.com',
+ type: 'stylesheet',
+ url: 'https://www.mag2.com/css/overture.css',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://www.sandraandwoo.com',
+ type: 'script',
+ url: 'http://www.sandraandwoo.com/gaia/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||ilead.itrack.it^', '||itrack.it^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ilead.itrack.it',
+ },
+ {
+ filters: ['/trackingapi.'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://trackingapi.bonial.fr',
+ },
+ {
+ filters: ['||pictela.net^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://secure-ads.pictela.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://terminallance.com',
+ type: 'script',
+ url: 'https://terminallance.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||tapinfluence.com^$third-party', '||tapinfluence.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://a.tapinfluence.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://cdn2.list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['_300x250Banner_'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ssl.cdne.cpmstar.com/cached/creatives/1119714/_300x250Banner_2.png',
+ },
+ {
+ filters: ['/script/track?url='],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.boursier.com/script/track?url=%2F',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://terminallance.com',
+ type: 'script',
+ url: 'https://terminallance.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://terminallance.com',
+ type: 'script',
+ url: 'https://terminallance.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['||ad.atdmt.com/c/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ad.atdmt.com/c/',
+ },
+ {
+ filters: ['||fiksu.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pt.fiksu.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://cdn2.list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||googleapis.com/aam.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://gadasource.storage.googleapis.com/aam.js',
+ },
+ {
+ filters: ['||q1mediahydraplatform.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.q1mediahydraplatform.com',
+ },
+ {
+ filters: ['/advertisement3.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.carls-sims-4-guide.com/includes/advertisement3.js',
+ },
+ {
+ filters: ['||easyresearch.se^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://web.easyresearch.se',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://cdn2.list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://cdn2.list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||reqpostanza.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://xhr.reqpostanza.com',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://cdn2.list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['@@/wp-content/plugins/google-analytics-premium/*$script,stylesheet,first-party'],
+ sourceUrl: 'https://list25.com',
+ type: 'script',
+ url: 'https://list25.com/wp-content/plugins/google-analytics-premium/',
+ },
+ {
+ filters: ['||u5e.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://stodctm.u5e.com',
+ },
+ {
+ filters: ['/europixads.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www1.hdeuropix.io/js/europixads.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-for-wordpress/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://terminallance.com',
+ type: 'script',
+ url: 'https://terminallance.com/wp-content/plugins/google-analytics-for-wordpress/',
+ },
+ {
+ filters: ['|http://x.o2.pl^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://x.o2.pl',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://filmstreaming.to',
+ type: 'script',
+ url: 'https://filmstreaming.to/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/sp_tracker.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://ws3.smartp.com/sp_tracker.cfm',
+ },
+ {
+ filters: ['@@||diep.io^$script,first-party'],
+ sourceUrl: 'http://diep.io',
+ type: 'script',
+ url: 'http://static.diep.io',
+ },
+ {
+ filters: ['@@||diep.io^$script,first-party'],
+ sourceUrl: 'http://diep.io',
+ type: 'script',
+ url: 'http://static.diep.io',
+ },
+ {
+ filters: ['@@||diep.io^$script,first-party'],
+ sourceUrl: 'http://diep.io',
+ type: 'script',
+ url: 'http://static.diep.io',
+ },
+ {
+ filters: ['||geobar.ziffdavisinternational.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://geobar.ziffdavisinternational.com',
+ },
+ {
+ filters: [
+ '@@||www.google.*/ads/$first-party,domain=google.ca|google.co.in|google.co.nz|google.co.uk|google.co.za|google.com|google.com.au|google.com.eg|google.de|google.es|google.ie|google.it',
+ ],
+ sourceUrl: 'https://play.google.com',
+ type: 'image',
+ url: 'https://www.google.com/ads/',
+ },
+ {
+ filters: ['||drehscheibe-online.de/ds_cms/banner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.drehscheibe-online.de/ds_cms/banner/',
+ },
+ {
+ filters: ['.net/l.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://fxrkxw-m.ns1p.net/l.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.askvg.com',
+ type: 'script',
+ url: 'https://www.askvg.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||d22v2nmahyeg2a.cloudfront.net^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://d22v2nmahyeg2a.cloudfront.net',
+ },
+ {
+ filters: ['.net/tp.gif?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://d22v2nmahyeg2a.cloudfront.net/tp.gif?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.askvg.com',
+ type: 'script',
+ url: 'https://www.askvg.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.askvg.com',
+ type: 'script',
+ url: 'https://www.askvg.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/adbridg.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.tampabay.com/resources/scripts/dfp/adbridg.js',
+ },
+ {
+ filters: ['/gatracking.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.tampabay.com/js/scripts/gaTracking.js',
+ },
+ {
+ filters: ['||ab-in-den-urlaub.de/usertracking/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.ab-in-den-urlaub.de/usertracking/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.pravda-tv.com',
+ type: 'script',
+ url: 'https://www.pravda-tv.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||sumologic.com^$third-party,domain=~sumologic.net'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://endpoint1.collection.us2.sumologic.com',
+ },
+ {
+ filters: ['@@||cloudfront.net^*/VisitorAPI.js$domain=financialpost.com'],
+ sourceUrl: 'https://business.financialpost.com',
+ type: 'script',
+ url: 'https://d1xrtnyoeeet33.cloudfront.net/assets/js/lib/VisitorAPI.js',
+ },
+ {
+ filters: ['@@||cloudfront.net^*/AppMeasurement.js$domain=financialpost.com'],
+ sourceUrl: 'https://business.financialpost.com',
+ type: 'script',
+ url: 'https://d1xrtnyoeeet33.cloudfront.net/assets/js/lib/AppMeasurement.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://img3.appinn.com/static/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://mods-fs.net',
+ type: 'script',
+ url: 'http://mods-fs.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/tracking.php?id'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://t.hspvst.com/tracking.php?id=124&e=tracking',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://www.appinn.com//wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://mods-fs.net',
+ type: 'script',
+ url: 'http://mods-fs.net/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://ibooks.to',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/sponsors.js?'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/ad-inserter/js/sponsors.js?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.pravda-tv.com',
+ type: 'script',
+ url: 'https://www.pravda-tv.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/advertisementAPI/*'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://chess24.com/api/web/advertisementAPI/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://ibooks.to',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['_ad_300.'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.sott.net/images/sidebars/secrethistory_ad_300.jpg',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://ibooks.to',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://ibooks.to',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/ad-inserter/includes/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://ibooks.to',
+ type: 'script',
+ url: 'http://ibooks.to/wp-content/plugins/ad-inserter/includes/',
+ },
+ {
+ filters: ['/capture_client.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d7v0k4dt27zlp.cloudfront.net/assets/capture_client.js',
+ },
+ {
+ filters: ['||mediative.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.mediative.com',
+ },
+ {
+ filters: ['||canada.com/js/analytics/', '/analytics/core.'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://www.canada.com/js/analytics/core.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://img3.appinn.com/static/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.pravda-tv.com',
+ type: 'script',
+ url: 'https://www.pravda-tv.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://www.appinn.com//wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/ad12.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad12.ad-srv.net',
+ },
+ {
+ check: true,
+ filters: ['/ad5.$domain=~ad5.pw', '/ad5.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ad5.ad-srv.net',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.pravda-tv.com',
+ type: 'script',
+ url: 'https://www.pravda-tv.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://img3.appinn.com/static/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.appinn.com',
+ type: 'script',
+ url: 'https://www.appinn.com//wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||wwwpromoter.com^$third-party', '||wwwpromoter.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://creative.wwwpromoter.com',
+ },
+ {
+ filters: ['/ad-banner.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.secretsdujeu.com/ads/ad-banner.v7.js',
+ },
+ {
+ check: true,
+ filters: ['||ads.contextweb.com^'],
+ sourceUrl: 'https://foo.com',
+ type: 'xhr',
+ url: 'https://ads.contextweb.com',
+ },
+ {
+ filters: ['/stats/init.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://s.dogannet.tv/q/s/stats/init.min.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://totallyinsanetranlation.com',
+ type: 'script',
+ url: 'http://totallyinsanetranlation.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||worldoftulo.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://backend.worldoftulo.com',
+ },
+ {
+ filters: ['||dep-x.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://cdn.dep-x.com',
+ },
+ {
+ filters: ['||suntcontent.se^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://d.suntcontent.se',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://totallyinsanetranlation.com',
+ type: 'script',
+ url: 'http://totallyinsanetranlation.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||publish-int.se^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://context-app-cdn.publish-int.se',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://wellnessmama.com',
+ type: 'script',
+ url: 'https://wellnessmama.com/wp-content/cache/min/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||edaa.eu^'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://yoc.edaa.eu',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://totallyinsanetranlation.com',
+ type: 'script',
+ url: 'http://totallyinsanetranlation.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://wellnessmama.com',
+ type: 'script',
+ url: 'https://wellnessmama.com/wp-content/cache/min/1/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||unblog.fr/cu.js'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'http://wwv4.unblog.fr/cu.js',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://totallyinsanetranlation.com',
+ type: 'script',
+ url: 'http://totallyinsanetranlation.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||systemed.fr/assets/js/advertisement$script,first-party'],
+ sourceUrl: 'https://www.systemed.fr',
+ type: 'script',
+ url: 'https://www.systemed.fr/assets/js/advertisement-20170824.js',
+ },
+ {
+ filters: ['_adserver.'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.edaa.eu/wp-content/uploads/2014/03/smart_adserver.gif',
+ },
+ {
+ filters: ['/demandbase_'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'https://www.edaa.eu/wp-content/uploads/2018/02/demandbase_logo-1.png',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'http://totallyinsanetranlation.com',
+ type: 'script',
+ url: 'http://totallyinsanetranlation.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['@@||googletagmanager.com/gtm.js?$domain=iphoneitalia.com|la7.it'],
+ sourceUrl: 'http://www.la7.it',
+ type: 'script',
+ url: 'https://www.googletagmanager.com/gtm.js?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.screamingfrog.co.uk',
+ type: 'script',
+ url: 'https://www.screamingfrog.co.uk/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||vppst.iltrovatore.it^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://vppst.iltrovatore.it',
+ },
+ {
+ filters: ['/dfp/common/*', '/rcsad_'],
+ sourceUrl: 'http://foo.com',
+ type: 'script',
+ url: 'https://stadvtools.akamaized.net/dfp/common/rcsad_partner.js',
+ },
+ {
+ filters: ['||clubedohardware.com.br/cdn-cgi/apps/head/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.clubedohardware.com.br/cdn-cgi/apps/head/',
+ },
+ {
+ filters: ['@@||ads.clubedohardware.com.br/www/delivery/$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://ads.clubedohardware.com.br/www/delivery/',
+ },
+ {
+ filters: ['||pagead2.googlesyndication.com^$important,domain=clubedohardware.com.br'],
+ sourceUrl: 'https://www.clubedohardware.com.br',
+ type: 'script',
+ url: 'https://pagead2.googlesyndication.com',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://www.screamingfrog.co.uk',
+ type: 'script',
+ url: 'https://www.screamingfrog.co.uk/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||z444o.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://z444o.com',
+ },
+ {
+ filters: ['||schnittberichte.com^*/werbung/'],
+ sourceUrl: 'https://www.schnittberichte.com',
+ type: 'image',
+ url: 'https://www.schnittberichte.com/pics/werbung/',
+ },
+ {
+ filters: ['||iljmp.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://infowars.iljmp.com',
+ },
+ {
+ filters: [
+ '@@||exponential.com/tags/ClubeDoHardwarecombr/ROS/tags.js$domain=clubedohardware.com.br',
+ ],
+ sourceUrl: 'https://www.clubedohardware.com.br',
+ type: 'script',
+ url: 'https://tags.expo9.exponential.com/tags/ClubeDoHardwarecombr/ROS/tags.js',
+ },
+ {
+ filters: ['@@||tribalfusion.com/displayAd.js?$domain=clubedohardware.com.br|yellowbridge.com'],
+ sourceUrl: 'https://www.clubedohardware.com.br',
+ type: 'script',
+ url: 'https://s.tribalfusion.com/displayAd.js?',
+ },
+ {
+ filters: ['||amazonaws.com/kbnetworkz/$domain=hardforum.com'],
+ sourceUrl: 'https://hardforum.com',
+ type: 'script',
+ url: 'https://s3.amazonaws.com/kbnetworkz/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://photographylife.com',
+ type: 'script',
+ url: 'https://photographylife.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://photographylife.com',
+ type: 'script',
+ url: 'https://photographylife.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['/dfp/jquery.'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www.pcworld.pl/g1/global/a/dfp/jquery.lazyload-ad.js',
+ },
+ {
+ filters: ['||pjtra.com/b/$third-party', '||pjtra.com^$third-party'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://www.pjtra.com/b/',
+ },
+ {
+ filters: ['||pepperjamnetwork.com^$third-party', '||pepperjamnetwork.com^'],
+ sourceUrl: 'http://foo.com',
+ type: 'image',
+ url: 'http://media.pepperjamnetwork.com',
+ },
+ {
+ filters: ['||clicktripz.com/scripts/js/ct.js'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://static.clicktripz.com/scripts/js/ct.js',
+ },
+ {
+ filters: ['||99bitcoins.com/_load/'],
+ sourceUrl: 'https://foo.com',
+ type: 'other',
+ url: 'https://99bitcoins.com/_load/',
+ },
+ {
+ filters: ['||yext.com/plpixel?'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://pl.yext.com/plpixel?',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.trucnet.com',
+ type: 'script',
+ url: 'https://www.trucnet.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/google-analytics-dashboard-for-wp/*$script,stylesheet,first-party',
+ ],
+ sourceUrl: 'https://www.trucnet.com',
+ type: 'script',
+ url: 'https://www.trucnet.com/wp-content/plugins/google-analytics-dashboard-for-wp/',
+ },
+ {
+ filters: [
+ '@@/wp-content/plugins/akismet/*$script,first-party,domain=~gaytube.com|~pornhub.com|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com',
+ ],
+ sourceUrl: 'https://photographylife.com',
+ type: 'script',
+ url: 'https://photographylife.com/wp-content/plugins/akismet/',
+ },
+ {
+ filters: ['||werstreamt.es/themes/wse/images/partner/'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://www.werstreamt.es/themes/wse/images/partner/',
+ },
+ {
+ filters: ['/b/ss/*&aqe=$image'],
+ sourceUrl: 'https://foo.com',
+ type: 'image',
+ url: 'https://smetrics.cnn.com/b/ss/cnn-adbp-intl/1/H.26.1/s19259258865278?AQB=1&ndh=1&t=5%2F3%2F2019%2011%3A48%3A34%205%20-120&fid=50308920DCB59DCD-0B21FD511330AE54&ce=UTF-8&ns=cnn&pageName=cnn%3Ain%3Aedition%3A%2F&g=https%3A%2F%2Fedition.cnn.com%2F&cc=USD&ch=cnn%20homepage&server=edition.cnn.com&events=event26&c5=nvs&v5=D%3Dc5&c8=new%3A1&v8=D%3Dc8&c9=nvs&v9=D%3Dc9&c13=section&v13=D%3Dc13&v15=8190&c17=anonymous&v17=D%3Dc17&v22=0&c26=edition.cnn.com%2F&v26=D%3DpageName&v27=D%3Dch&c28=cnn%20homepage%3Anvs&v28=D%3Dc28&v29=edition.cnn.com&c30=cnn%20international&v30=D%3Dc30&c32=adbp%3Aindex&v32=D%3Dc32&c33=adbp%3Anone&v33=D%3Dc33&c35=cnn.41.1-0-0.20181206%3A0&v35=D%3Dc35&c37=desktop&v37=D%3Dc37&c46=15544577135208340916840520&v46=D%3Dc46&c47=5ca7240500fda80a3f92ba001523ae53&v47=D%3Dc47&c56=landscape&v56=D%3Dc56&c57=no%20mvpd%20set&v57=D%3Dc57&c59=no%20mvpd%20set&v59=D%3Dc59&c64=cnn%20news&v64=D%3Dc64&c75=nvs&v75=D%3Dc75&h1=news%7Ccnn%7Ccnn%20international%7Cedition.cnn.com%7Ccnn%20homepage%7Ccnn%20homepage%3Anvs&s=1707x960&c=24&j=1.6&v=N&k=Y&bw=1704&bh=821&AQE=1',
+ },
+ {
+ filters: ['/\\w{10,20}\\.com/$script'],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://qwertyuiop123456789.com/path',
+ },
+ {
+ filters: [
+ '/\\w{1,20}\\.com/$script',
+ '/\\w{2,20}\\.com/$script',
+ '/\\w{3,20}\\.com/$script',
+ '/\\w{4,20}\\.com/$script',
+ '/\\w{5,20}\\.com/$script',
+ '/\\w{6,20}\\.com/$script',
+ '/\\w{6,20}\\.com/$script',
+ '/\\w{7,20}\\.com/$script',
+ '/\\w{8,20}\\.com/$script',
+ ],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://qwertyuiop123456789.com/path',
+ },
+ {
+ filters: [
+ '/[0]+.com/$script',
+ '/[1].*.com/$script',
+ '/[2].*.com/$script',
+ '/[3].*.com/$script',
+ '/[4].*.com/$script',
+ '/[5].*.com/$script',
+ ],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://1234500.com/path',
+ },
+ {
+ filters: ['/-foo$/'],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://1234500.com/path-foo',
+ },
+ {
+ filters: [
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}\\.js$/$script,domain=foo.com',
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}\\.js/$script,domain=foo.com',
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}.js$/$script,domain=foo.com',
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}.js$/$script,domain=foo.com',
+ ],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://asdsdDWEQDAD.ru/1234567890qwertyuiop.js',
+ },
+ {
+ filters: ['/^https?:\\/\\/m\\.anysex\\.com\\/[a-zA-Z]{1,4}\\/[a-zA-Z]+\\.php$/$image,script'],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://m.anysex.com/abc/qweWDsdawd.php',
+ },
+ {
+ filters: ['/wasabisyrup.com\\/storage\\/[-_a-zA-Z0-9]{8,}.gif/$script'],
+ sourceUrl: 'https://foo.com/',
+ type: 'script',
+ url: 'http://bar.co.uk/pathwasabisyrup.com/storage/_-3d12dd12d.gif',
+ },
+ {
+ filters: ['||geo*.hltv.org^'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://geo2.hltv.org/rekl13.php',
+ },
+ {
+ filters: ['||www*.swatchseries.to^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www1.swatchseries.to/sw.js',
+ },
+ {
+ filters: ['||imp*.tradedoubler.com^$third-party'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://impde.tradedoubler.com/imp',
+ },
+ {
+ filters: ['||www*.swatchseries.to^$script'],
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ url: 'https://www1.swatchseries.to/public/js/bootstrap-modal.js',
+ },
+];
+//# sourceMappingURL=requests.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js.map
new file mode 100644
index 0000000..d8553c2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/data/requests.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../../test/data/requests.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js
new file mode 100644
index 0000000..4cdd944
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js
@@ -0,0 +1,107 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const config_1 = require("../../../src/config");
+const filters_1 = require("../../../src/engine/bucket/filters");
+const cosmetic_1 = require("../../../src/filters/cosmetic");
+const network_1 = require("../../../src/filters/network");
+const lists_1 = require("../../../src/lists");
+const utils_1 = require("../../utils");
+describe('#FiltersContainer', () => {
+ for (const config of [
+ new config_1.default({ enableCompression: true }),
+ new config_1.default({ enableCompression: false }),
+ ]) {
+ describe(`compression = ${config.enableCompression}`, () => {
+ describe('#update', () => {
+ let container;
+ const filters = [
+ network_1.default.parse('||foo.com', true),
+ network_1.default.parse('||bar.com', true),
+ network_1.default.parse('||baz.com', true),
+ ];
+ beforeEach(() => {
+ container = new filters_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: [],
+ });
+ });
+ it('with no filters', () => {
+ (0, chai_1.expect)(container.getFilters()).to.have.lengthOf(0);
+ container.update([], undefined);
+ (0, chai_1.expect)(container.getFilters()).to.have.lengthOf(0);
+ });
+ it('with one filter', () => {
+ (0, chai_1.expect)(container.getFilters()).to.have.lengthOf(0);
+ container.update([filters[0]], undefined);
+ (0, chai_1.expect)(container.getFilters().map((f) => f.rawLine)).to.eql([
+ filters[0].rawLine,
+ ]);
+ });
+ it('with one filter', () => {
+ container.update([filters[0]], undefined);
+ container.update([], undefined);
+ (0, chai_1.expect)(container.getFilters().map((f) => f.rawLine)).to.eql([
+ filters[0].rawLine,
+ ]);
+ });
+ it('deletes one filter', () => {
+ container.update([filters[0]], undefined);
+ container.update([], new Set([filters[0].getId()]));
+ (0, chai_1.expect)(container.getFilters()).to.have.lengthOf(0);
+ });
+ it('deletes and adds one filter', () => {
+ container.update([filters[0]], undefined);
+ container.update([filters[1]], new Set([filters[0].getId()]));
+ (0, chai_1.expect)(container.getFilters().map((f) => f.rawLine)).to.eql([
+ filters[1].rawLine,
+ ]);
+ });
+ it('multiple updates', () => {
+ container.update([filters[0]], undefined);
+ container.update([filters[1], filters[2]], new Set([filters[0].getId()]));
+ (0, chai_1.expect)(container.getFilters().map((f) => f.rawLine)).to.eql([
+ filters[1].rawLine,
+ filters[2].rawLine,
+ ]);
+ container.update([], new Set([filters[2].getId(), filters[1].getId()]));
+ (0, chai_1.expect)(container.getFilters()).to.have.lengthOf(0);
+ });
+ });
+ describe('#getFilters', () => {
+ it('network', () => {
+ const filters = (0, lists_1.parseFilters)(utils_1.allLists, {
+ debug: true,
+ loadCosmeticFilters: false,
+ }).networkFilters;
+ (0, chai_1.expect)(new filters_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters,
+ }).getFilters()).to.eql(filters);
+ });
+ it('cosmetic', () => {
+ const filters = (0, lists_1.parseFilters)(utils_1.allLists, {
+ debug: true,
+ loadNetworkFilters: false,
+ }).cosmeticFilters;
+ (0, chai_1.expect)(new filters_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters,
+ }).getFilters()).to.eql(filters);
+ });
+ });
+ });
+ }
+});
+//# sourceMappingURL=filters.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js.map
new file mode 100644
index 0000000..91485b3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/bucket/filters.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters.test.js","sourceRoot":"","sources":["../../../../../test/engine/bucket/filters.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js
new file mode 100644
index 0000000..dfb32fd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js
@@ -0,0 +1,1111 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const tldts_experimental_1 = require("tldts-experimental");
+const engine_1 = require("../../src/engine/engine");
+const network_1 = require("../../src/filters/network");
+const request_1 = require("../../src/request");
+const resources_1 = require("../../src/resources");
+const requests_1 = require("../data/requests");
+const utils_1 = require("../utils");
+/**
+ * Helper function used in the Engine tests. All the assertions are performed by
+ * this function. It will be called to tests the different configurations of
+ * engines, for each of the requests and all of the filters.
+ */
+function test({ engine, filter, testFiltersInIsolation, resources, request, importants, redirects, exceptions, normalFilters, }) {
+ // it(`[engine] isolation=${testFiltersInIsolation} optimized=${engine.enableOptimizations} ${
+ // filter.rawLine
+ // }`, () => {
+ // Set correct resources in `engine` (`resources` is expected to have been
+ // created using the matching redirect filters for the current Request so
+ // that all redirect matches will have a corresponding resource in
+ // `resources`).
+ engine.resources = resources;
+ // Collect all matching filters for this request.
+ const matchingFilters = new Set();
+ for (const matchingFilter of Array.from(engine.matchAll(request))) {
+ (matchingFilter.rawLine || '').split(' <+> ').forEach((f) => {
+ matchingFilters.add(f);
+ });
+ }
+ // Check if one of the filters is a special case: important,
+ // exception or redirect; and perform extra checks then.
+ if (filter.isImportant()) {
+ const result = engine.match(request);
+ (0, chai_1.expect)(result.filter).not.to.be.undefined;
+ if (result.filter !== undefined &&
+ result.filter.rawLine !== undefined &&
+ !result.filter.rawLine.includes('<+>')) {
+ (0, chai_1.expect)(importants).to.include(result.filter.rawLine);
+ // Handle case where important filter is also a redirect
+ if (filter.isRedirect()) {
+ (0, chai_1.expect)(redirects).to.include(result.filter.rawLine);
+ }
+ }
+ (0, chai_1.expect)(result.exception).to.be.undefined;
+ if (!filter.isRedirect()) {
+ (0, chai_1.expect)(result.redirect).to.be.undefined;
+ }
+ (0, chai_1.expect)(result.match).to.be.true;
+ }
+ else if (filter.isException() &&
+ normalFilters.length !== 0 &&
+ !testFiltersInIsolation &&
+ importants.length === 0) {
+ const result = engine.match(request);
+ (0, chai_1.expect)(result.exception).not.to.be.undefined;
+ if (result.exception !== undefined &&
+ result.exception.rawLine !== undefined &&
+ !result.exception.rawLine.includes('<+>')) {
+ (0, chai_1.expect)(exceptions).to.include(result.exception.rawLine);
+ }
+ (0, chai_1.expect)(result.filter).not.to.be.undefined;
+ (0, chai_1.expect)(result.redirect).to.be.undefined;
+ (0, chai_1.expect)(result.match).to.be.false;
+ }
+ else if (filter.isRedirect() && exceptions.length === 0 && importants.length === 0) {
+ const result = engine.match(request);
+ (0, chai_1.expect)(result.filter).not.to.be.undefined;
+ if (result.filter !== undefined &&
+ result.filter.rawLine !== undefined &&
+ !result.filter.rawLine.includes('<+>')) {
+ (0, chai_1.expect)(redirects).to.include(result.filter.rawLine);
+ }
+ (0, chai_1.expect)(result.exception).to.be.undefined;
+ (0, chai_1.expect)(result.redirect).not.to.be.undefined;
+ (0, chai_1.expect)(result.match).to.be.true;
+ }
+ (0, chai_1.expect)(matchingFilters).to.include(filter.rawLine);
+ // });
+}
+function buildResourcesFromRequests(filters) {
+ const resources = [];
+ filters.forEach((filter) => {
+ if (filter.redirect !== undefined) {
+ const redirect = filter.redirect;
+ // Guess resource type
+ let type = 'application/javascript';
+ if (redirect.endsWith('.gif')) {
+ type = 'image/gif;base64';
+ }
+ resources.push(`${redirect} ${type}\n${redirect}`);
+ }
+ });
+ return resources_1.default.parse(resources.join('\n\n'), { checksum: '' });
+}
+function createEngine(filters, enableOptimizations = true) {
+ return engine_1.default.parse(filters, {
+ debug: true,
+ enableOptimizations,
+ });
+}
+describe('#FiltersEngine', () => {
+ it('network filters are disabled', () => {
+ const request = request_1.default.fromRawDetails({ url: 'https://foo.com' });
+ // Enabled
+ (0, chai_1.expect)(engine_1.default.parse('||foo.com', { loadNetworkFilters: true }).match(request).match).to.be
+ .true;
+ // Disabled
+ (0, chai_1.expect)(engine_1.default.parse('||foo.com', { loadNetworkFilters: false }).match(request).match).to.be
+ .false;
+ });
+ it('cosmetic filters are disabled', () => {
+ // Enabled
+ (0, chai_1.expect)(engine_1.default.parse('##selector', { loadCosmeticFilters: true }).getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ })).to.eql({
+ active: true,
+ extended: [],
+ scripts: [],
+ styles: 'selector { display: none !important; }',
+ });
+ // Disabled
+ (0, chai_1.expect)(engine_1.default.parse('##selector', { loadCosmeticFilters: false }).getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ })).to.eql({
+ active: false,
+ extended: [],
+ scripts: [],
+ styles: '',
+ });
+ });
+ describe('cps policies', () => {
+ it('no policy in engine', () => {
+ (0, chai_1.expect)(createEngine('this is not a csp').getCSPDirectives(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ }))).to.be.undefined;
+ });
+ it('network filters are disabled', () => {
+ (0, chai_1.expect)(engine_1.default.parse('||foo.com$csp=bar', { loadNetworkFilters: false }).getCSPDirectives(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ }))).to.be.undefined;
+ });
+ it('request not supported', () => {
+ // Not supported protocol
+ (0, chai_1.expect)(engine_1.default.parse('||foo.com$csp=bar').getCSPDirectives(request_1.default.fromRawDetails({
+ url: 'ftp://foo.com',
+ }))).to.be.undefined;
+ // Not document request
+ (0, chai_1.expect)(engine_1.default.parse('||foo.com$csp=bar').getCSPDirectives(request_1.default.fromRawDetails({
+ type: 'script',
+ url: 'ftp://foo.com',
+ }))).to.be.undefined;
+ });
+ it('does not match request', () => {
+ (0, chai_1.expect)(createEngine('||bar.com$csp=bar').getCSPDirectives(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ }))).to.be.undefined;
+ });
+ it('matches request (1 policy)', () => {
+ (0, chai_1.expect)(createEngine('||foo.com$csp=bar').getCSPDirectives(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ }))).to.equal('bar');
+ });
+ it('matches request (2 policy)', () => {
+ const policies = createEngine(`
+||foo.com$csp=bar
+$csp=baz,domain=bar.com
+`).getCSPDirectives(request_1.default.fromRawDetails({
+ sourceUrl: 'https://bar.com',
+ url: 'https://foo.com',
+ }));
+ (0, chai_1.expect)(policies).not.to.be.undefined;
+ if (policies !== undefined) {
+ (0, chai_1.expect)(policies.split('; ').sort()).to.eql(['bar', 'baz']);
+ }
+ });
+ it('matches request (1 policy with one exception)', () => {
+ (0, chai_1.expect)(createEngine(`
+||foo.com$csp=bar
+@@$csp=baz
+$csp=baz,domain=bar.com
+`).getCSPDirectives(request_1.default.fromRawDetails({
+ sourceUrl: 'https://bar.com',
+ url: 'https://foo.com',
+ }))).to.equal('bar');
+ });
+ it('exception global exception', () => {
+ (0, chai_1.expect)(createEngine(`
+@@$csp,domain=bar.com
+||foo.com$csp=bar
+@@$csp=baz
+$csp=baz,domain=bar.com
+`).getCSPDirectives(request_1.default.fromRawDetails({
+ sourceUrl: 'https://bar.com',
+ url: 'https://foo.com',
+ }))).to.be.undefined;
+ });
+ });
+ describe('badfilter', () => {
+ const request = request_1.default.fromRawDetails({
+ sourceUrl: 'https://bar.com',
+ type: 'image',
+ url: 'https://foo.com',
+ });
+ // - from Engine.parse
+ // - new filter in Engine.update
+ // - works after serialization/deserialization?
+ it('does not match on its own', () => {
+ (0, chai_1.expect)(createEngine('||foo.com$badfilter').match(request).match).to.be.false;
+ });
+ it('cancels filter with same ID', () => {
+ (0, chai_1.expect)(createEngine(`
+||foo.com$domain=bar.com|foo.com,badfilter
+||foo.com$domain=foo.com|bar.com
+`).match(request).match).to.be.false;
+ });
+ it('does not cancel similar filter', () => {
+ (0, chai_1.expect)(createEngine(`
+||foo.com$domain=bar.com|foo.com,badfilter
+||foo.com$domain=foo.com|bar.com,image
+`).match(request).match).to.be.true;
+ });
+ it('cancels exceptions', () => {
+ (0, chai_1.expect)(createEngine(`
+@@||foo.com^
+||foo.com^
+`).match(request).match).to.be.false;
+ (0, chai_1.expect)(createEngine(`
+@@||foo.com^
+@@||foo.com^$badfilter
+||foo.com^
+`).match(request).match).to.be.true;
+ });
+ it('works with update as well', () => {
+ const badfilter = network_1.default.parse('||foo.com$domain=bar.com|foo.com,badfilter');
+ (0, chai_1.expect)(badfilter).not.to.be.null;
+ if (badfilter === null) {
+ return;
+ }
+ // Initially, no $badfilter
+ const engine = engine_1.default.parse('||foo.com$domain=foo.com|bar.com', { debug: true });
+ (0, chai_1.expect)(engine.match(request).match).to.be.true;
+ // Add $badfilter
+ engine.update({
+ newNetworkFilters: [badfilter],
+ });
+ (0, chai_1.expect)(engine.match(request).match).to.be.false;
+ // Remove $badfilter
+ engine.update({
+ removedNetworkFilters: [badfilter.getId()],
+ });
+ (0, chai_1.expect)(engine.match(request).match).to.be.true;
+ });
+ });
+ describe('redirect', () => {
+ const request = request_1.default.fromRawDetails({
+ sourceUrl: 'https://bar.com',
+ type: 'image',
+ url: 'https://foo.com',
+ });
+ const createEngineWithResource = (filters, resource) => {
+ const engine = createEngine(filters.join('\n'));
+ engine.resources.js.set(resource, resource);
+ engine.resources.resources.set(resource, {
+ body: resource,
+ contentType: 'application/javascript',
+ });
+ return engine;
+ };
+ it('normal redirect', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource(['||foo.com$image,redirect=foo.js'], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.true;
+ (0, chai_1.expect)(exception).to.be.undefined;
+ (0, chai_1.expect)(filter).not.to.be.undefined;
+ (0, chai_1.expect)(filter.toString()).to.equal('||foo.com$image,redirect=foo.js');
+ (0, chai_1.expect)(redirect).to.eql({
+ body: 'foo.js',
+ contentType: 'application/javascript',
+ dataUrl: 'data:application/javascript;base64,Zm9vLmpz',
+ });
+ });
+ it('redirect-rule does not match on its own', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource(['||foo.com$image,redirect-rule=foo.js'], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.false;
+ (0, chai_1.expect)(exception).to.be.undefined;
+ (0, chai_1.expect)(filter).to.be.undefined;
+ (0, chai_1.expect)(redirect).to.be.undefined;
+ });
+ it('redirect-rule matches if request was blocked', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource(['||foo.com$image,redirect-rule=foo.js', '||foo.com$image'], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.true;
+ (0, chai_1.expect)(exception).to.be.undefined;
+ (0, chai_1.expect)(filter).not.to.be.undefined;
+ (0, chai_1.expect)(filter.toString()).to.equal('||foo.com$image,redirect-rule=foo.js');
+ (0, chai_1.expect)(redirect).to.eql({
+ body: 'foo.js',
+ contentType: 'application/javascript',
+ dataUrl: 'data:application/javascript;base64,Zm9vLmpz',
+ });
+ });
+ it('redirect=none cancels redirect-rule', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource([
+ '||foo.com$image,redirect-rule=foo.js',
+ '||foo.com$image',
+ '||foo.com$image,redirect=none',
+ ], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.false;
+ (0, chai_1.expect)(exception).not.to.be.undefined;
+ (0, chai_1.expect)(exception.toString()).to.equal('||foo.com$image,redirect=none');
+ (0, chai_1.expect)(filter).not.to.be.undefined;
+ (0, chai_1.expect)(filter.toString()).to.equal('||foo.com$image,redirect-rule=foo.js');
+ (0, chai_1.expect)(redirect).to.be.undefined;
+ });
+ it('redirect=none cancels redirect', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource(['||foo.com$image,redirect=foo.js', '||foo.com$image', '||foo.com$image,redirect=none'], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.false;
+ (0, chai_1.expect)(exception).not.to.be.undefined;
+ (0, chai_1.expect)(exception.toString()).to.equal('||foo.com$image,redirect=none');
+ (0, chai_1.expect)(filter).not.to.be.undefined;
+ (0, chai_1.expect)(filter.toString()).to.equal('||foo.com$image,redirect=foo.js');
+ (0, chai_1.expect)(redirect).to.be.undefined;
+ });
+ it('exception rule also cancels redirect', () => {
+ const { filter, exception, match, redirect } = createEngineWithResource(['||foo.com$image,redirect=foo.js', '||foo.com$image', '@@||foo.com$image'], 'foo.js').match(request);
+ (0, chai_1.expect)(match).to.be.false;
+ (0, chai_1.expect)(exception).not.to.be.undefined;
+ (0, chai_1.expect)(exception.toString()).to.equal('@@||foo.com$image');
+ (0, chai_1.expect)(filter).not.to.be.undefined;
+ (0, chai_1.expect)(filter.toString()).to.equal('||foo.com$image,redirect=foo.js');
+ (0, chai_1.expect)(redirect).to.be.undefined;
+ });
+ });
+ describe('network filters', () => {
+ // Collect all filters from all requests in the dataset. Each test case
+ // contains one request as well as a list of filters matching this request
+ // (exceptions, normal filters, etc.). We create a big list of filters out
+ // of them.
+ const allRequestFilters = requests_1.default.map(({ filters }) => filters.join('\n')).join('\n');
+ // Create several base engines to be used in different scenarii:
+ // - Engine with *no filter* optimizations *enabled*
+ // - Engine with *no filter* optimizations *disabled*
+ // - Engine with *all filters* optimizations *enabled*
+ // - Engine with *all filters* optimizations *disabled*
+ const engineFullOptimized = engine_1.default.parse(allRequestFilters, {
+ debug: true,
+ enableOptimizations: true,
+ });
+ const engineFull = engine_1.default.parse(allRequestFilters, {
+ debug: true,
+ enableOptimizations: false,
+ });
+ // For each request, make sure that we get the correct match in 4 different
+ // setups:
+ // - Engine with only the filter being tested
+ // - Engine with all the filters
+ // - Engine with optimizations enabled
+ // - Engine with optimizations disabled
+ for (let i = 0; i < requests_1.default.length; i += 1) {
+ const { filters, type, url, sourceUrl } = requests_1.default[i];
+ // Dispatch `filters` into the following categories: exception, important,
+ // redirects or normal filters. This will be used later to check the
+ // output of Engine.match. Additionally, we keep the list of NetworkFilter
+ // instances.
+ const exceptions = [];
+ const importants = [];
+ const redirects = [];
+ const normalFilters = [];
+ const parsedFilters = [];
+ for (let j = 0; j < filters.length; j += 1) {
+ const filter = filters[j];
+ const parsed = network_1.default.parse(filter, true);
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ parsedFilters.push(parsed);
+ if (parsed.isException()) {
+ exceptions.push(filter);
+ }
+ if (parsed.isImportant()) {
+ importants.push(filter);
+ }
+ if (parsed.isRedirect()) {
+ redirects.push(filter);
+ }
+ if (!parsed.isRedirect() && !parsed.isException() && !parsed.isImportant()) {
+ normalFilters.push(filter);
+ }
+ }
+ }
+ // Prepare a fake `resources.txt` created from the list of filters of type
+ // `redirect` in `filters`. A resource of the right name will be created
+ // for each of them.
+ const resources = buildResourcesFromRequests(parsedFilters);
+ // Create an instance of `Request` to be shared for all the calls to
+ // `Engine.match` or `Engine.matchAll`.
+ const request = request_1.default.fromRawDetails({
+ sourceUrl,
+ type: type,
+ url,
+ });
+ it(`[request] type=${type} url=${url}, sourceUrl=${sourceUrl}`, () => {
+ // Check each filter individually
+ for (let j = 0; j < parsedFilters.length; j += 1) {
+ const filter = parsedFilters[j];
+ const baseConfig = {
+ exceptions,
+ filter,
+ importants,
+ normalFilters,
+ redirects,
+ request,
+ resources,
+ };
+ // Engine with only this filter
+ test(Object.assign(Object.assign({}, baseConfig), { engine: new engine_1.default({ networkFilters: [filter] }), testFiltersInIsolation: true }));
+ // All filters with optimizations enabled
+ test(Object.assign(Object.assign({}, baseConfig), { engine: engineFullOptimized, testFiltersInIsolation: false }));
+ // All filters with optimizations disabled
+ test(Object.assign(Object.assign({}, baseConfig), { engine: engineFull, testFiltersInIsolation: false }));
+ }
+ });
+ }
+ });
+ describe('#getCosmeticsFilters', () => {
+ describe('script injections', () => {
+ it('injects script', () => {
+ const engine = engine_1.default.parse('foo.com##+js(script.js,arg1)');
+ engine.resources = resources_1.default.parse('script.js application/javascript\n{{1}}', {
+ checksum: '',
+ });
+ (0, chai_1.expect)(engine.getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ }).scripts).to.eql(['arg1']);
+ });
+ it('script missing', () => {
+ (0, chai_1.expect)(engine_1.default.parse('foo.com##+js(foo,arg1)').getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ }).scripts).to.eql([]);
+ });
+ });
+ describe('elemhide', () => {
+ it('disables cosmetics if domain matches', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$elemhide
+foo.com##selector1
+##selector1
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('');
+ });
+ });
+ describe('specifichide', () => {
+ it('allows specific cosmetics by default', () => {
+ (0, chai_1.expect)(engine_1.default.parse('foo.com##selector').getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ }).styles).not.to.equal('');
+ });
+ it('disables specific cosmetics if domain matches', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$specifichide
+foo.com##selector1
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('');
+ });
+ it('allows specific cosmetics if $specifichide', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$specifichide
+foo.com##selector
+||foo.com^$specifichide
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).not.to.equal('');
+ });
+ it('allows specific cosmetics if $specifichide,important', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$important,specifichide
+foo.com##selector
+||foo.com^$specifichide,important
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).not.to.equal('');
+ });
+ it('disables specific cosmetics if @@$specifichide,important', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$important,specifichide
+foo.com##selector
+foo.com##.selector
+foo.com###selector
+||foo.com^$specifichide
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('');
+ });
+ it('disabling specific hides does not impact scriptlets', () => {
+ const engine = engine_1.default.parse(['@@||foo.com^$specifichide', 'foo.com##+js(foo)'].join('\n'));
+ engine.resources.js.set('foo', '');
+ (0, chai_1.expect)(engine.getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ }).scripts).to.have.lengthOf(1);
+ });
+ });
+ describe('generichide', () => {
+ it('allows generic cosmetics by default', () => {
+ (0, chai_1.expect)(engine_1.default.parse('##selector').getCosmeticsFilters({
+ domain: 'foo.com',
+ hostname: 'foo.com',
+ url: 'https://foo.com',
+ }).styles).not.to.equal('');
+ });
+ it('disables generic cosmetics if domain matches', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$generichide
+~bar.*##selector1
+##selector2
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('');
+ });
+ it('allows generic cosmetics if $generichide', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$generichide
+##selector
+||foo.com^$generichide
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).not.to.equal('');
+ });
+ it('allows generic cosmetics if $generichide,important', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$important,generichide
+##selector
+||foo.com^$generichide,important
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).not.to.equal('');
+ });
+ it('disables generic cosmetics if @@$generichide,important', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+@@||foo.com^$important,generichide
+##selector
+##.selector
+###selector
+||foo.com^$generichide
+`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('');
+ });
+ });
+ it('handles custom :styles', () => {
+ (0, chai_1.expect)(engine_1.default.parse(`
+##selector :style(foo)
+##selector :style(bar)
+##selector1 :style(foo)`).getCosmeticsFilters({ domain: 'foo.com', hostname: 'foo.com', url: 'https://foo.com' })
+ .styles).to.equal('selector ,\nselector1 { foo }\n\nselector { bar }');
+ });
+ [
+ // Unhide
+ // ======
+ // = unhide without domain
+ {
+ filters: ['##selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: ['selector'],
+ },
+ {
+ filters: ['#@#selector', '##selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: [],
+ },
+ // = unhide without domain + class
+ {
+ classes: ['selector'],
+ filters: ['##.selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: ['.selector'],
+ },
+ {
+ classes: ['selector'],
+ filters: ['#@#.selector', '##.selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: [],
+ },
+ // = unhide without domain + id
+ {
+ filters: ['###selector'],
+ hostname: 'foo.com',
+ ids: ['selector'],
+ injections: [],
+ matches: ['#selector'],
+ },
+ {
+ filters: ['###selector', '#@##selector'],
+ hostname: 'foo.com',
+ ids: ['selector'],
+ injections: [],
+ matches: [],
+ },
+ // = unhide without domain + href
+ {
+ filters: ['##a[href="https://foo"]'],
+ hostname: 'foo.com',
+ hrefs: ['https://foo.com/bar'],
+ injections: [],
+ matches: ['a[href="https://foo"]'],
+ },
+ {
+ filters: ['##a[href="https://foo"]', '#@#a[href="https://foo"]'],
+ hostname: 'foo.com',
+ hrefs: ['https://foo.com/bar'],
+ injections: [],
+ matches: [],
+ },
+ // = unhide +js() exception
+ {
+ filters: ['foo.com##+js(scriptlet)'],
+ hostname: 'foo.com',
+ hrefs: [],
+ injections: ['scriptlet'],
+ matches: [],
+ },
+ {
+ filters: ['foo.com##+js(scriptlet)', 'foo.com#@#+js(scriptlet)'],
+ hostname: 'foo.com',
+ hrefs: [],
+ injections: [],
+ matches: [],
+ },
+ // = unhide +js() disable
+ {
+ filters: [
+ 'foo.com##+js(scriptlet1)',
+ 'foo.com##+js(scriptlet2)',
+ // 'foo.com#@#+js()',
+ ],
+ hostname: 'foo.com',
+ hrefs: [],
+ injections: ['scriptlet1', 'scriptlet2'],
+ matches: [],
+ },
+ {
+ filters: [
+ 'foo.com##+js(scriptlet1)',
+ 'foo.com##+js(scriptlet2)',
+ 'foo.com#@#+js()', // specific to hostname
+ ],
+ hostname: 'foo.com',
+ hrefs: [],
+ injections: [],
+ matches: [],
+ },
+ {
+ filters: [
+ 'foo.com##+js(scriptlet1)',
+ 'foo.com##+js(scriptlet2)',
+ '#@#+js()', // applies to all hostnames
+ ],
+ hostname: 'foo.com',
+ hrefs: [],
+ injections: [],
+ matches: [],
+ },
+ // Generic Hides
+ // =============
+ // Filters which are not classes, ids or hrefs are matched using the
+ // generic index so we expect them to be returned even without providing
+ // any DOM information.
+ {
+ filters: ['##adwords1', '~google.*##adwords2'],
+ hostname: 'domain.com',
+ injections: [],
+ matches: ['adwords1', 'adwords2'],
+ },
+ // Selectors ids, classes and hrefs are not returned without DOM information.
+ {
+ filters: [
+ '##.adwords1',
+ '~google.*##.adwords2',
+ '##[href="https://foo"]',
+ '##[href^="https://foo"]',
+ '##[href*="https://foo"]',
+ '##a[href*="https://foo"]',
+ ],
+ hostname: 'domain.com',
+ injections: [],
+ matches: [],
+ },
+ // Return filters with correct DOM info
+ // .class
+ {
+ filters: [
+ '##.adwords1',
+ '~google.*###adwords2',
+ '##[href="https://foo"]',
+ '##[href^="https://foo"]',
+ '##[href*="https://foo"]',
+ '##a[href*="https://foo"]',
+ ],
+ classes: ['foo', 'bar', 'adwords1'],
+ hostname: 'domain.com',
+ injections: [],
+ matches: ['.adwords1'],
+ },
+ // #id
+ {
+ filters: [
+ '##.adwords1',
+ '~google.*###adwords2',
+ '##[href="https://foo"]',
+ '##[href^="https://foo"]',
+ '##[href*="https://foo"]',
+ '##a[href*="https://foo"]',
+ ],
+ hostname: 'domain.com',
+ ids: ['foo', 'bar', 'adwords2'],
+ injections: [],
+ matches: ['#adwords2'],
+ },
+ // hrefs
+ {
+ filters: [
+ '##.adwords1',
+ '~google.*###adwords2',
+ '##[href="https://foo.com"]',
+ '##[href^="https://bar.com"]',
+ '##[href*="https://baz.net"]',
+ '##a[href*="http://foo.com"]',
+ ],
+ hostname: 'domain.com',
+ hrefs: ['https://foo.com', 'https://bar.com'],
+ injections: [],
+ matches: [
+ '[href="https://foo.com"]',
+ '[href^="https://bar.com"]',
+ 'a[href*="http://foo.com"]',
+ ],
+ },
+ // DOM-specific selectors should be subjected to exceptions in hostname and entities
+ // = no matching class
+ {
+ classes: [],
+ filters: ['~foo.com##.selector'],
+ hostname: 'bar.com',
+ injections: [],
+ matches: [],
+ },
+ // = matching class + domain
+ {
+ classes: ['selector'],
+ filters: ['~foo.com##.selector'],
+ hostname: 'bar.com',
+ injections: [],
+ matches: ['.selector'],
+ },
+ // = domain exception
+ {
+ classes: ['selector'],
+ filters: ['~foo.com##.selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: [],
+ },
+ // = entity exception
+ {
+ classes: ['selector'],
+ filters: ['~foo.*##.selector'],
+ hostname: 'foo.com',
+ injections: [],
+ matches: [],
+ },
+ {
+ classes: ['selector'],
+ filters: ['~foo.*##.selector'],
+ hostname: 'foo.co.uk',
+ injections: [],
+ matches: [],
+ },
+ // ==========
+ {
+ filters: ['##adwords1', '~google.*##adwords2'],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ // Negated entity exceptions do not appear in matches
+ {
+ filters: ['##adwords1', '~google.com#@#adwords2'],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ {
+ filters: ['##adwords1', '~google.com#@#adwords2'],
+ hostname: 'google.de',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ {
+ filters: ['##adwords1', '~google.*#@#adwords2'],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ // Exception cancels generic rule
+ {
+ filters: ['##adwords1', 'google.com#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: [],
+ },
+ // Exception cancels entity rule
+ {
+ filters: ['google.*##adwords1', 'google.com#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: [],
+ },
+ // Exception cancels hostname rule
+ {
+ filters: ['google.com##adwords1', 'google.com#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: [],
+ },
+ // Entity exception cancels generic rule
+ {
+ filters: ['##adwords1', 'google.*#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: [],
+ },
+ // Entity exception cancels entity rule
+ {
+ filters: ['google.*##adwords1', 'google.*#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: [],
+ },
+ // Exception does not cancel if selector is different
+ {
+ filters: ['##adwords1', 'google.de#@#adwords2'],
+ hostname: 'google.de',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ {
+ filters: ['google.de##adwords1', 'google.de#@#adwords2'],
+ hostname: 'google.de',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ // Exception does not cancel if hostname is different
+ {
+ filters: ['##adwords1', 'google.com#@#adwords1'],
+ hostname: 'google.de',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ {
+ filters: ['##adwords1', 'accounts.google.com#@#adwords1'],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['adwords1'],
+ },
+ // Hostname matching hostname vs. domain
+ // = domain constraint matches hostname with subdomains
+ {
+ filters: ['baz.com##selector'],
+ hostname: 'foo.bar.baz.com',
+ injections: [],
+ matches: ['selector'],
+ },
+ // = entity constraint matches hostname with subdomains
+ {
+ filters: ['baz.*##selector'],
+ hostname: 'foo.bar.baz.com',
+ injections: [],
+ matches: ['selector'],
+ },
+ {
+ filters: ['baz.*##selector'],
+ hostname: 'foo.bar.baz.co.uk',
+ injections: [],
+ matches: ['selector'],
+ },
+ // = domain exception matches hostname with subdomain
+ {
+ filters: ['~baz.de##selector'],
+ hostname: 'foo.bar.baz.de',
+ injections: [],
+ matches: [],
+ },
+ // = entity exception matches hostname with subdomain
+ {
+ filters: ['~baz.*##selector'],
+ hostname: 'foo.bar.baz.co.uk',
+ injections: [],
+ matches: [],
+ },
+ // ===
+ {
+ filters: ['##ad-stack'],
+ hostname: 'speedtest.net',
+ injections: [],
+ matches: ['ad-stack'],
+ },
+ {
+ filters: ['##AD300Right'],
+ hostname: 'example.de',
+ injections: [],
+ matches: ['AD300Right'],
+ },
+ {
+ filters: [],
+ hostname: 'pokerupdate.com',
+ injections: [],
+ matches: [],
+ },
+ {
+ filters: ['pokerupdate.com##related-room', 'pokerupdate.com##prev-article'],
+ hostname: 'pokerupdate.com',
+ injections: [],
+ matches: ['related-room', 'prev-article'],
+ },
+ {
+ filters: [
+ 'google.com,~mail.google.com##.class[style="margin: 0pt;"]1',
+ '~mail.google.com##.class[style="margin: 0pt;"]2',
+ '###tads + div + .c',
+ '##.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '##.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ hostname: 'google.com',
+ injections: [],
+ matches: [
+ '.class[style="margin: 0pt;"]1',
+ '.class[style="margin: 0pt;"]2',
+ '#tads + div + .c',
+ '.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ classes: ['class', 'mw'],
+ ids: ['tads'],
+ },
+ {
+ filters: [
+ 'google.com,~mail.google.com##.class[style="margin: 0pt;"]1',
+ '~mail.google.com##.class[style="margin: 0pt;"]2',
+ '###tads + div + .c',
+ '##.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '##.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ hostname: 'google.com',
+ injections: [],
+ matches: [
+ '.class[style="margin: 0pt;"]1',
+ '#tads + div + .c',
+ '.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ classes: ['mw'],
+ ids: ['tads'],
+ },
+ {
+ filters: [
+ 'google.com,~mail.google.com##.class[style="margin: 0pt;"]',
+ '###tads + div + .c',
+ '##.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '##.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['.class[style="margin: 0pt;"]', '#tads + div + .c'],
+ ids: ['tads'],
+ },
+ {
+ filters: [
+ 'google.com,~mail.google.com##.class[style="margin: 0pt;"]',
+ '###tads + div + .c',
+ '##.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '##.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ hostname: 'google.com',
+ injections: [],
+ matches: ['.class[style="margin: 0pt;"]'],
+ },
+ {
+ filters: [
+ 'google.com,~mail.google.com##.class[style="margin: 0pt;"]',
+ '###tads + div + .c',
+ '##.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '##.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ hostname: 'mail.google.com',
+ injections: [],
+ matches: [
+ '#tads + div + .c',
+ '.mw > #rcnt > #center_col > #taw > #tvcap > .c',
+ '.mw > #rcnt > #center_col > #taw > .c',
+ ],
+ classes: ['class', 'mw'],
+ ids: ['tads'],
+ },
+ {
+ filters: [],
+ hostname: 'bitbucket.org',
+ injections: [],
+ matches: [],
+ },
+ ].forEach(({ classes, filters, hostname, hrefs, ids, injections, matches, }) => {
+ it(JSON.stringify({ filters, hostname, matches, injections }), () => {
+ // Initialize engine with all rules from test case
+ const engine = createEngine(filters.join('\n'));
+ engine.resources.js.set('scriptlet', 'scriptlet');
+ engine.resources.js.set('scriptlet1', 'scriptlet1');
+ engine.resources.js.set('scriptlet2', 'scriptlet2');
+ // #getCosmeticsFilters
+ const { styles, scripts } = engine.getCosmeticsFilters({
+ domain: (0, tldts_experimental_1.getDomain)(hostname) || '',
+ hostname,
+ url: `https://${hostname}`,
+ classes,
+ hrefs,
+ ids,
+ });
+ (0, chai_1.expect)(scripts).to.have.lengthOf(injections.length);
+ (0, chai_1.expect)(scripts.sort()).to.eql(injections.sort());
+ // Parse stylesheets to get selectors back
+ const selectors = [];
+ if (styles.length !== 0) {
+ for (const stylesheet of styles.trim().split('\n\n')) {
+ const parts = stylesheet.trim().split(',\n');
+ selectors.push(...parts.slice(0, -1));
+ // Handle last one separately since it has the CSS rule
+ const last = parts[parts.length - 1];
+ selectors.push(last.slice(0, last.lastIndexOf('{')).trim());
+ }
+ }
+ (0, chai_1.expect)(selectors).to.have.lengthOf(matches.length);
+ (0, chai_1.expect)(selectors.sort()).to.eql(matches.sort());
+ });
+ });
+ });
+});
+describe('diff updates', () => {
+ function testUpdates(name, baseFilters) {
+ describe(name, () => {
+ const base = engine_1.default.parse(baseFilters.join('\n'), {
+ debug: false,
+ enableCompression: false,
+ enableOptimizations: false,
+ integrityCheck: false,
+ loadCosmeticFilters: false,
+ loadGenericCosmeticsFilters: false,
+ loadNetworkFilters: true,
+ });
+ const baseSerialized = base.serialize();
+ const getSerialized = () => baseSerialized.slice();
+ const getEngine = () => engine_1.default.deserialize(getSerialized());
+ it('stays the same with empty update', () => {
+ const engine = getEngine();
+ const updated = engine.updateFromDiff({});
+ (0, chai_1.expect)(updated).to.be.false;
+ (0, chai_1.expect)((0, utils_1.typedArrayEqual)(engine.serialize(), getSerialized())).to.be.true;
+ });
+ it('stays the same with adding removing same filters', () => {
+ const filtersAdded = [
+ '||hostname*^bar|$image,domain=foo.com|baz.co.uk',
+ '||hostname*^bar|$image,domain=foo.com|baz.co.uk,generichide',
+ '||hostame*^bar|$image,domain=foo.com|baz.co.uk,badfilter',
+ '||hostame*^bar|$image,domain=foo.com|baz.co.uk',
+ 'ads$csp=foo',
+ 'tracker$redirect=foo.js',
+ '@@||f*o*o.com^$~media',
+ '/very_important/ads.js$important,script',
+ 'foo.com,bar.*##.selector',
+ '#@#.selector',
+ '##+js(inject.js,arg1,arg2)',
+ ];
+ const filtersRemoved = Array.from(filtersAdded);
+ const engine = getEngine();
+ // Add filters
+ let updated = engine.updateFromDiff({ added: filtersAdded });
+ (0, chai_1.expect)(updated).to.be.true;
+ (0, chai_1.expect)((0, utils_1.typedArrayEqual)(engine.serialize(), getSerialized())).to.be.false;
+ // Remove same filters
+ updated = engine.updateFromDiff({ removed: filtersRemoved });
+ (0, chai_1.expect)(updated).to.be.true;
+ (0, chai_1.expect)((0, utils_1.typedArrayEqual)(engine.serialize(), getSerialized())).to.be.true;
+ });
+ });
+ }
+ testUpdates('empty engine', []);
+ testUpdates('easylist engine', (0, utils_1.loadEasyListFilters)());
+});
+//# sourceMappingURL=engine.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js.map
new file mode 100644
index 0000000..fd43462
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/engine.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../../../../test/engine/engine.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js
new file mode 100644
index 0000000..5819127
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js
@@ -0,0 +1,353 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const utils_1 = require("../utils");
+const request_1 = require("../../src/request");
+const engine_1 = require("../../src/engine/engine");
+const utils_2 = require("../../src/utils");
+const data_view_1 = require("../../src/data-view");
+const metadata_1 = require("../../src/engine/metadata");
+const patterns_1 = require("../../src/engine/metadata/patterns");
+const categories_1 = require("../../src/engine/metadata/categories");
+const organizations_1 = require("../../src/engine/metadata/organizations");
+const map_1 = require("../../src/engine/map");
+const network_1 = require("../../src/filters/network");
+const ZYPMEDIA = {
+ key: 'zypmedia',
+ name: 'ZypMedia',
+ category: 'advertising',
+ organization: 'zypmedia',
+ alias: null,
+ website_url: 'http://www.zypmedia.com/',
+ ghostery_id: '2742',
+ domains: ['extend.tv'],
+ filters: ['||sync.extend.tv^'],
+};
+const ZYPMEDIA_ORGANIZATION = {
+ key: 'zypmedia',
+ name: 'Zypmedia',
+ description: 'ZypLink connects local media companies, advertising agencies and advertisers with the widest array of premium video and display impressions across desktop, mobile and connected TVs. ZypLink applies advanced geographic, demographic, contextual, behavioral and other targeting utilizing the best 3rd party data sources, proprietary 1st party data collected and segmented by ZypMedia, and 1st data supplied by advertisers (when available).',
+ website_url: 'http://www.zypmedia.com/',
+ country: null,
+ privacy_policy_url: 'http://www.zypmedia.com/privacy-policy',
+ privacy_contact: 'privacy@zypmedia.com',
+ ghostery_id: '4668',
+};
+const ADVERTISING_CATEGORY = {
+ key: 'advertising',
+ name: 'Advertising',
+ color: '#cb55cd',
+ description: 'Includes advertising services such as data collection, behavioral analysis or retargeting.',
+};
+function sortPatterns(pattenrs) {
+ return pattenrs.sort((pattern1, pattern2) => (0, utils_2.fastHash)(pattern1.name) - (0, utils_2.fastHash)(pattern2.name));
+}
+function sortCategories(categories) {
+ return categories.sort((category1, category2) => (0, utils_2.fastHash)(category1.name) - (0, utils_2.fastHash)(category2.name));
+}
+function sortOrganizations(organizations) {
+ return organizations.sort((organization1, organization2) => (0, utils_2.fastHash)(organization1.name) - (0, utils_2.fastHash)(organization2.name));
+}
+describe('#IPattern', () => {
+ const view = data_view_1.StaticDataView.allocate(100000, { enableCompression: false });
+ it('serialization', () => {
+ for (const [name, pattern] of Object.entries((0, utils_1.getRawTrackerDB)().patterns)) {
+ (0, chai_1.expect)((0, patterns_1.isValid)(pattern), name).to.be.true;
+ if ((0, patterns_1.isValid)(pattern)) {
+ view.setPos(0);
+ (0, patterns_1.serialize)(pattern, view);
+ (0, chai_1.expect)(view.getPos(), name).to.eql((0, patterns_1.getSerializedSize)(pattern));
+ view.setPos(0);
+ (0, chai_1.expect)((0, patterns_1.deserialize)(view), name).to.eql(pattern);
+ }
+ }
+ });
+ it('stored in CompactMap', () => {
+ const inputPatterns = Object.values((0, utils_1.getRawTrackerDB)().patterns);
+ const map = (0, patterns_1.createMap)(inputPatterns);
+ // Make sure we can serialize and deserialize `map`
+ const mapView = data_view_1.StaticDataView.allocate(1000000, { enableCompression: false });
+ map.serialize(mapView);
+ (0, chai_1.expect)(mapView.getPos()).to.eql(map.getSerializedSize());
+ mapView.setPos(0);
+ const deserializedMap = map_1.CompactMap.deserialize(mapView, patterns_1.deserialize);
+ (0, chai_1.expect)(deserializedMap).to.eql(map);
+ // Make sure we get the original values back
+ const patterns = map.getValues();
+ sortPatterns(inputPatterns);
+ sortPatterns(patterns);
+ (0, chai_1.expect)(patterns).to.eql(inputPatterns);
+ for (const pattern of inputPatterns) {
+ const keys = (0, patterns_1.getKeys)(pattern);
+ for (const key of keys) {
+ (0, chai_1.expect)(map.get(key)).to.deep.include(pattern);
+ }
+ }
+ });
+});
+describe('#ICategory', () => {
+ const view = data_view_1.StaticDataView.allocate(100000, { enableCompression: false });
+ it('serialization', () => {
+ for (const [name, category] of Object.entries((0, utils_1.getRawTrackerDB)().categories)) {
+ (0, chai_1.expect)((0, categories_1.isValid)(category), name).to.be.true;
+ if ((0, categories_1.isValid)(category)) {
+ view.setPos(0);
+ (0, categories_1.serialize)(category, view);
+ (0, chai_1.expect)(view.getPos(), name).to.eql((0, categories_1.getSerializedSize)(category));
+ view.setPos(0);
+ (0, chai_1.expect)((0, categories_1.deserialize)(view), name).to.eql(category);
+ }
+ }
+ });
+ it('stored in CompactMap', () => {
+ const inputCategories = Object.values((0, utils_1.getRawTrackerDB)().categories);
+ const map = (0, categories_1.createMap)(inputCategories);
+ // Make sure we can serialize and deserialize `map`
+ const mapView = data_view_1.StaticDataView.allocate(1000000, { enableCompression: false });
+ map.serialize(mapView);
+ (0, chai_1.expect)(mapView.getPos()).to.eql(map.getSerializedSize());
+ mapView.setPos(0);
+ const deserializedMap = map_1.CompactMap.deserialize(mapView, categories_1.deserialize);
+ (0, chai_1.expect)(deserializedMap).to.eql(map);
+ // Make sure we get the original values back
+ const categories = map.getValues();
+ sortCategories(inputCategories);
+ sortCategories(categories);
+ (0, chai_1.expect)(categories).to.eql(inputCategories);
+ for (const category of inputCategories) {
+ (0, chai_1.expect)(map.get((0, categories_1.getKey)(category))).to.deep.include(category);
+ }
+ });
+});
+describe('#IOrganization', () => {
+ const view = data_view_1.StaticDataView.allocate(100000, { enableCompression: false });
+ it('serialization', () => {
+ for (const [name, organization] of Object.entries((0, utils_1.getRawTrackerDB)().organizations)) {
+ (0, chai_1.expect)((0, organizations_1.isValid)(organization), name).to.be.true;
+ if ((0, organizations_1.isValid)(organization)) {
+ view.setPos(0);
+ (0, organizations_1.serialize)(organization, view);
+ (0, chai_1.expect)(view.getPos(), name).to.eql((0, organizations_1.getSerializedSize)(organization));
+ view.setPos(0);
+ (0, chai_1.expect)((0, organizations_1.deserialize)(view), name).to.eql(organization);
+ }
+ }
+ });
+ it('stored in CompactMap', () => {
+ const inputOrganization = Object.values((0, utils_1.getRawTrackerDB)().organizations);
+ const map = (0, organizations_1.createMap)(inputOrganization);
+ // Make sure we can serialize and deserialize `map`
+ const mapView = data_view_1.StaticDataView.allocate(1000000, { enableCompression: false });
+ map.serialize(mapView);
+ (0, chai_1.expect)(mapView.getPos()).to.eql(map.getSerializedSize());
+ mapView.setPos(0);
+ const deserializedMap = map_1.CompactMap.deserialize(mapView, organizations_1.deserialize);
+ (0, chai_1.expect)(deserializedMap).to.eql(map);
+ // Make sure we get the original values back
+ const organizations = map.getValues();
+ sortOrganizations(inputOrganization);
+ sortOrganizations(organizations);
+ (0, chai_1.expect)(organizations).to.eql(inputOrganization);
+ for (const organization of inputOrganization) {
+ (0, chai_1.expect)(map.get((0, organizations_1.getKey)(organization))).to.deep.include(organization);
+ }
+ });
+});
+describe('#Metadata', () => {
+ describe('#fromDomain', () => {
+ const metadata = new metadata_1.Metadata({
+ patterns: {
+ zypmedia: ZYPMEDIA,
+ },
+ organizations: {
+ zypmedia: ZYPMEDIA_ORGANIZATION,
+ },
+ categories: {
+ advertising: ADVERTISING_CATEGORY,
+ },
+ });
+ it('retrieves existing metadata', () => {
+ (0, chai_1.expect)(metadata.fromDomain('test.sync.extend.tv')).to.eql([
+ {
+ pattern: ZYPMEDIA,
+ organization: ZYPMEDIA_ORGANIZATION,
+ category: ADVERTISING_CATEGORY,
+ },
+ ]);
+ (0, chai_1.expect)(metadata.fromDomain('extend.tv')).to.eql([
+ {
+ pattern: ZYPMEDIA,
+ organization: ZYPMEDIA_ORGANIZATION,
+ category: ADVERTISING_CATEGORY,
+ },
+ ]);
+ });
+ it('returns undefined otherwise', () => {
+ (0, chai_1.expect)(metadata.fromDomain('foo.com')).to.eql([]);
+ });
+ it('handles empty string', () => {
+ (0, chai_1.expect)(metadata.fromDomain('')).to.eql([]);
+ });
+ it('handles invalid input', () => {
+ (0, chai_1.expect)(metadata.fromDomain('$foo')).to.eql([]);
+ });
+ });
+ describe('#fromFilter', () => {
+ const metadata = new metadata_1.Metadata({
+ patterns: {
+ zypmedia: ZYPMEDIA,
+ },
+ organizations: {
+ zypmedia: ZYPMEDIA_ORGANIZATION,
+ },
+ categories: {
+ advertising: ADVERTISING_CATEGORY,
+ },
+ });
+ it('retrieves existing metadata', () => {
+ (0, chai_1.expect)(metadata.fromFilter(network_1.default.parse('||sync.extend.tv^'))).to.eql([
+ {
+ pattern: ZYPMEDIA,
+ organization: ZYPMEDIA_ORGANIZATION,
+ category: ADVERTISING_CATEGORY,
+ },
+ ]);
+ });
+ it('returns undefined otherwise', () => {
+ (0, chai_1.expect)(metadata.fromFilter(network_1.default.parse('||foo.com^'))).to.eql([]);
+ });
+ });
+ describe('#fromId', () => {
+ const metadata = new metadata_1.Metadata({
+ patterns: {
+ zypmedia: ZYPMEDIA,
+ },
+ organizations: {
+ zypmedia: ZYPMEDIA_ORGANIZATION,
+ },
+ categories: {
+ advertising: ADVERTISING_CATEGORY,
+ },
+ });
+ it('retrieves existing metadata', () => {
+ var _a;
+ (0, chai_1.expect)(metadata.fromId(((_a = network_1.default.parse('||sync.extend.tv^')) === null || _a === void 0 ? void 0 : _a.getId()) || 0)).to.eql([
+ {
+ pattern: ZYPMEDIA,
+ organization: ZYPMEDIA_ORGANIZATION,
+ category: ADVERTISING_CATEGORY,
+ },
+ ]);
+ });
+ it('returns undefined otherwise', () => {
+ var _a;
+ (0, chai_1.expect)(metadata.fromId(((_a = network_1.default.parse('||foo.com^')) === null || _a === void 0 ? void 0 : _a.getId()) || 0)).to.eql([]);
+ });
+ });
+ describe('integration with FiltersEngine', () => {
+ it('loads trackerdb dump', () => {
+ const rawTrackerDB = (0, utils_1.getRawTrackerDB)();
+ const engine = engine_1.default.fromTrackerDB(rawTrackerDB);
+ const patterns = Object.values(rawTrackerDB.patterns);
+ const categories = Object.values(rawTrackerDB.categories);
+ const organizations = Object.values(rawTrackerDB.organizations);
+ // Make sure we can serialize and load the engine with metadata
+ const serialized = engine.serialize();
+ // expect(metadata.getSerializedSize()).to.eql(view.getPos());
+ const deserialized = engine_1.default.deserialize(serialized);
+ (0, chai_1.expect)(deserialized).to.eql(engine);
+ // Make sure values stored can be retrieved
+ (0, chai_1.expect)(deserialized.metadata).to.not.be.undefined;
+ if (deserialized.metadata !== undefined) {
+ (0, chai_1.expect)(sortPatterns(deserialized.metadata.getPatterns())).to.eql(sortPatterns(patterns));
+ (0, chai_1.expect)(sortCategories(deserialized.metadata.getCategories())).to.eql(sortCategories(categories));
+ (0, chai_1.expect)(sortOrganizations(deserialized.metadata.getOrganizations())).to.eql(sortOrganizations(organizations));
+ }
+ // domains: ['extend.tv'],
+ const filter = network_1.default.parse('||sync.extend.tv^');
+ filter === null || filter === void 0 ? void 0 : filter.getId();
+ (0, chai_1.expect)(engine.match(request_1.default.fromRawDetails({ url: 'https://sync.extend.tv/' }), true /* withMetadata */)).to.eql({
+ exception: undefined,
+ filter,
+ match: true,
+ metadata: [
+ {
+ 'category': ADVERTISING_CATEGORY,
+ 'organization': ZYPMEDIA_ORGANIZATION,
+ 'pattern': ZYPMEDIA,
+ },
+ ],
+ redirect: undefined,
+ });
+ (0, chai_1.expect)(engine.getPatternMetadata(request_1.default.fromRawDetails({ url: 'https://sync.extend.tv/' }))).to.eql([
+ {
+ 'category': ADVERTISING_CATEGORY,
+ 'organization': ZYPMEDIA_ORGANIZATION,
+ 'pattern': ZYPMEDIA,
+ },
+ ]);
+ (0, chai_1.expect)(engine.getPatternMetadata(request_1.default.fromRawDetails({ url: 'https://extend.tv/' }))).to.eql([]);
+ (0, chai_1.expect)(engine.getPatternMetadata(request_1.default.fromRawDetails({ url: 'https://sync.extend.tv/' }), {
+ getDomainMetadata: true,
+ })).to.eql([
+ {
+ 'category': ADVERTISING_CATEGORY,
+ 'organization': ZYPMEDIA_ORGANIZATION,
+ 'pattern': ZYPMEDIA,
+ },
+ ]);
+ });
+ });
+ describe('e2e', () => {
+ it('loads trackerdb dump', () => {
+ const rawTrackerDB = (0, utils_1.getRawTrackerDB)();
+ const patterns = Object.values(rawTrackerDB.patterns);
+ const categories = Object.values(rawTrackerDB.categories);
+ const organizations = Object.values(rawTrackerDB.organizations);
+ const metadata = new metadata_1.Metadata(rawTrackerDB);
+ // Make sure we can serialize and load the metadata
+ const view = data_view_1.StaticDataView.allocate(2000000, { enableCompression: false });
+ metadata.serialize(view);
+ // expect(metadata.getSerializedSize()).to.eql(view.getPos());
+ view.setPos(0);
+ const deserializedMetadata = metadata_1.Metadata.deserialize(view);
+ (0, chai_1.expect)(deserializedMetadata).to.eql(metadata);
+ // Make sure values stored can be retrieved
+ (0, chai_1.expect)(sortPatterns(deserializedMetadata.getPatterns())).to.eql(sortPatterns(patterns));
+ (0, chai_1.expect)(sortCategories(deserializedMetadata.getCategories())).to.eql(sortCategories(categories));
+ (0, chai_1.expect)(sortOrganizations(deserializedMetadata.getOrganizations())).to.eql(sortOrganizations(organizations));
+ for (const pattern of patterns) {
+ const organization = pattern.organization
+ ? rawTrackerDB.organizations[pattern.organization]
+ : null;
+ const category = rawTrackerDB.categories[pattern.category];
+ for (const domain of pattern.domains) {
+ (0, chai_1.expect)(metadata.fromDomain(domain), domain).to.deep.include({
+ pattern,
+ organization,
+ category,
+ });
+ }
+ for (const filter of pattern.filters) {
+ const parsedFilter = network_1.default.parse(filter);
+ if (parsedFilter !== null) {
+ (0, chai_1.expect)(metadata.fromFilter(parsedFilter)).to.deep.include({
+ pattern,
+ organization,
+ category,
+ });
+ }
+ }
+ }
+ });
+ });
+});
+//# sourceMappingURL=metadata.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js.map
new file mode 100644
index 0000000..3e75002
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/engine/metadata.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../../../test/engine/metadata.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js
new file mode 100644
index 0000000..2fa732b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js
@@ -0,0 +1,49 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chaiAsPromised = require("chai-as-promised");
+const chai_1 = require("chai");
+require("mocha");
+(0, chai_1.use)(chaiAsPromised);
+const fetch_1 = require("../src/fetch");
+describe('#fetchWithRetry', () => {
+ const fakeFetchFactory = (numberOfFailures) => {
+ return async (_) => {
+ if (numberOfFailures > 0) {
+ numberOfFailures -= 1;
+ throw new Error(`Failed: ${numberOfFailures + 1}`);
+ }
+ return {
+ arrayBuffer: () => Promise.resolve(new ArrayBuffer(0)),
+ json: () => Promise.resolve({}),
+ text: () => Promise.resolve(`${numberOfFailures}`),
+ };
+ };
+ };
+ it('succeeds on first try', async () => {
+ const response = await (0, fetch_1.fetchWithRetry)(fakeFetchFactory(0), 'https://example.com');
+ (0, chai_1.expect)(await response.text()).to.equal('0');
+ });
+ it('succeeds on second try', async () => {
+ const response = await (0, fetch_1.fetchWithRetry)(fakeFetchFactory(1), 'https://example.com');
+ (0, chai_1.expect)(await response.text()).to.equal('0');
+ });
+ it('succeeds on third try', async () => {
+ const response = await (0, fetch_1.fetchWithRetry)(fakeFetchFactory(2), 'https://example.com');
+ (0, chai_1.expect)(await response.text()).to.equal('0');
+ });
+ it('succeeds on fourth try', async () => {
+ const response = await (0, fetch_1.fetchWithRetry)(fakeFetchFactory(3), 'https://example.com');
+ (0, chai_1.expect)(await response.text()).to.equal('0');
+ });
+ it('fails on fifth try', async () => {
+ await (0, chai_1.expect)((0, fetch_1.fetchWithRetry)(fakeFetchFactory(4), 'https://example.com')).to.be.rejectedWith(Error, 'Failed: 1');
+ });
+});
+//# sourceMappingURL=fetch.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js.map
new file mode 100644
index 0000000..cc0e0f2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/fetch.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fetch.test.js","sourceRoot":"","sources":["../../../test/fetch.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,mDAAmD;AACnD,+BAAmC;AACnC,iBAAe;AAEf,IAAA,UAAG,EAAC,cAAc,CAAC,CAAC;AAEpB,wCAAqD;AAErD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,gBAAgB,GAAG,CAAC,gBAAwB,EAAS,EAAE;QAC3D,OAAO,KAAK,EAAE,CAAS,EAAE,EAAE;YACzB,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACxB,gBAAgB,IAAI,CAAC,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,WAAW,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC;aACpD;YAED,OAAO;gBACL,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAClF,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAClF,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAClF,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAClF,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,IAAA,aAAM,EAAC,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CACzF,KAAK,EACL,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js
new file mode 100644
index 0000000..d5155aa
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js
@@ -0,0 +1,44 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const data_view_1 = require("../src/data-view");
+const lists_1 = require("../src/lists");
+const utils_1 = require("./utils");
+describe('Make sure size estimate is accurate', () => {
+ const { cosmeticFilters, networkFilters } = (0, lists_1.parseFilters)(utils_1.allLists, { debug: true });
+ function testSizeEstimate(filters, compression) {
+ const buffer = data_view_1.StaticDataView.allocate(1000000, { enableCompression: compression });
+ for (let i = 0; i < filters.length; i += 1) {
+ const filter = filters[i];
+ const estimate = filter.getSerializedSize(compression);
+ // Serialize filter
+ buffer.seekZero();
+ filter.serialize(buffer);
+ const realSize = buffer.pos;
+ if (estimate !== realSize) {
+ (0, chai_1.expect)(estimate, filter.toString()).to.equal(realSize);
+ }
+ }
+ }
+ it('network', () => {
+ testSizeEstimate(networkFilters, false);
+ });
+ it('network (compression)', () => {
+ testSizeEstimate(networkFilters, true);
+ });
+ it('cosmetic', () => {
+ testSizeEstimate(cosmeticFilters, false);
+ });
+ it('cosmetic (compression)', () => {
+ testSizeEstimate(cosmeticFilters, true);
+ });
+});
+//# sourceMappingURL=filters-size-estimation.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js.map
new file mode 100644
index 0000000..e5bbecb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/filters-size-estimation.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters-size-estimation.test.js","sourceRoot":"","sources":["../../../test/filters-size-estimation.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,+BAA8B;AAC9B,iBAAe;AAEf,gDAAkD;AAIlD,wCAA4C;AAC5C,mCAAmC;AAEnC,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,gBAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpF,SAAS,gBAAgB,CAAoB,OAAY,EAAE,WAAoB;QAC7E,MAAM,MAAM,GAAG,0BAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;QAEpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAEvD,mBAAmB;YACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;YAE5B,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBACzB,IAAA,aAAM,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACxD;SACF;IACH,CAAC;IAED,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACjB,gBAAgB,CAAgB,cAAc,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,gBAAgB,CAAgB,cAAc,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,gBAAgB,CAAiB,eAAe,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,gBAAgB,CAAiB,eAAe,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js
new file mode 100644
index 0000000..a3a8296
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js
@@ -0,0 +1,191 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const html_filtering_1 = require("../src/html-filtering");
+// NOTE: `doc` is defined at the end of this file.
+describe('html-filtering', () => {
+ describe('#extractTagsFromHtml', () => {
+ const tags = (html) => (0, html_filtering_1.extractTagsFromHtml)(html, 'script')[0];
+ it('extracts all tags', () => {
+ (0, chai_1.expect)(tags('')).to.eql([]);
+ (0, chai_1.expect)(tags('foo')).to.eql([]);
+ (0, chai_1.expect)(tags('<script>bar</script>')).to.eql([[0, '<script>bar</script>']]);
+ (0, chai_1.expect)(tags('foo <script>bar</script>')).to.eql([[4, '<script>bar</script>']]);
+ (0, chai_1.expect)(tags(`
+<!DOCTYPE html> <html lang="en"> <head>
+<script>script1</script>
+<script id="_$cookiemonster"/>
+<script attr=321>console.log("<script>")</script>
+`)).to.eql([
+ [41, '<script>script1</script>'],
+ [66, '<script id="_$cookiemonster"/>'],
+ [97, '<script attr=321>console.log("<script>")</script>'],
+ ]);
+ });
+ it('extracts tags from streamed document', () => {
+ const tags1 = tags(doc);
+ const tags2 = [];
+ let rest = '';
+ let offset = 0;
+ for (let i = 0; i < doc.length; i += 10) {
+ const result = (0, html_filtering_1.extractTagsFromHtml)(rest + doc.slice(i, i + 10), 'script');
+ tags2.push(...result[0].map(([index, tag]) => [index + offset, tag]));
+ offset += result[1].length;
+ rest = result[2];
+ }
+ (0, chai_1.expect)(tags1).to.eql(tags2);
+ });
+ describe('consumes as much input as possible', () => {
+ const remains = (html) => {
+ const result = (0, html_filtering_1.extractTagsFromHtml)(html, 'script');
+ const parsed = result[1];
+ const rest = result[2];
+ (0, chai_1.expect)(parsed + rest).to.equal(html);
+ return rest;
+ };
+ it('handles empty', () => {
+ (0, chai_1.expect)(remains('')).to.equal('');
+ });
+ it('handles no tag', () => {
+ (0, chai_1.expect)(remains('foo')).to.equal('');
+ });
+ it('handles one tag', () => {
+ (0, chai_1.expect)(remains('foo<script>foo</script>')).to.equal('');
+ });
+ const str = 'foo<script>foo</script>foo<tag/><scri></scri><script>foo</script>';
+ it('remains nothing with full tags', () => {
+ (0, chai_1.expect)(remains(str)).to.equal('');
+ });
+ it('remains partial', () => {
+ (0, chai_1.expect)(remains('foo <')).to.equal('<');
+ (0, chai_1.expect)(remains('foo <s')).to.equal('<s');
+ (0, chai_1.expect)(remains('foo <sc')).to.equal('<sc');
+ (0, chai_1.expect)(remains('foo <scr')).to.equal('<scr');
+ (0, chai_1.expect)(remains('foo <scri')).to.equal('<scri');
+ (0, chai_1.expect)(remains('foo <scrip')).to.equal('<scrip');
+ });
+ // Test all possible partial tags ending the string
+ const tagStartIndex = 45; // start of last <script> tag
+ for (let i = str.length - 1; i >= tagStartIndex; i -= 1) {
+ const partial = str.slice(0, i);
+ it(partial, () => {
+ (0, chai_1.expect)(remains(partial)).to.equal(str.slice(tagStartIndex, i));
+ });
+ }
+ });
+ });
+ describe('#extractSelectorsFromRules', () => {
+ it('empty', () => {
+ (0, chai_1.expect)((0, html_filtering_1.extractSelectorsFromRules)([])).to.have.lengthOf(0);
+ });
+ it('parses patterns and regexps', () => {
+ (0, chai_1.expect)((0, html_filtering_1.extractSelectorsFromRules)([
+ ['script', ['foo']],
+ ['script', ['/foo/']],
+ ['script', ['(bar)']],
+ ['script', ['/(bar)/i']],
+ ['script', ['foo', '/(bar)/i', 'bar', '/baz/']],
+ ])).to.eql([
+ [['foo'], []],
+ [[], [/foo/]],
+ [['(bar)'], []],
+ [[], [/(bar)/i]],
+ [
+ ['foo', 'bar'],
+ [/(bar)/i, /baz/],
+ ],
+ ]);
+ });
+ });
+ describe('#StreamingHtmlFilter', () => {
+ const filter = (html, filters) => {
+ const stream = new html_filtering_1.default(filters);
+ // Feed `html` at once
+ const res1 = stream.write(html) + stream.flush();
+ // Feed `html` by small chunks
+ let res2 = '';
+ for (let i = 0; i < html.length; i += 10) {
+ res2 += stream.write(html.slice(i, i + 10));
+ }
+ res2 += stream.flush();
+ (0, chai_1.expect)(res1).to.equal(res2);
+ return res1;
+ };
+ it('handles empty', () => {
+ (0, chai_1.expect)(filter('', [['script', ['foo']]])).to.equal('');
+ });
+ describe('removes tags', () => {
+ it('simple plain pattern (full HTML)', () => {
+ (0, chai_1.expect)(filter('<script>foo</script>', [['script', ['foo']]])).to.equal('');
+ });
+ it('simple plain pattern (partial HTML)', () => {
+ (0, chai_1.expect)(filter('foo <script>foo</script>bar', [['script', ['foo']]])).to.equal('foo bar');
+ });
+ it('RegExp pattern (full HTML)', () => {
+ (0, chai_1.expect)(filter('<script>fOo</script>', [['script', ['/foo/']]])).to.equal('<script>fOo</script>');
+ (0, chai_1.expect)(filter('<script>foo</script>', [['script', ['/foo/']]])).to.equal('');
+ });
+ it('RegExp pattern (partial HTML)', () => {
+ (0, chai_1.expect)(filter('foo <script>fOo</script>bar', [['script', ['/foo/']]])).to.equal('foo <script>fOo</script>bar');
+ });
+ it('case-insensitive RegExp', () => {
+ (0, chai_1.expect)(filter('foo <script>fOo</script>bar', [['script', ['/foo/i']]])).to.equal('foo bar');
+ });
+ it('multi-pattern', () => {
+ const patterns = [['script', ['foo', 'bar', '/baz/i']]];
+ const html1 = 'foo <script></script> bar baz';
+ (0, chai_1.expect)(filter(html1, patterns)).to.equal(html1);
+ const html2 = 'foo <script>foo</script> bar baz';
+ (0, chai_1.expect)(filter(html2, patterns)).to.equal(html2);
+ const html3 = 'foo <script>bar foo</script> bar baz';
+ (0, chai_1.expect)(filter(html3, patterns)).to.equal(html3);
+ const html4 = 'foo <script>bar baz foo</script> bar baz';
+ (0, chai_1.expect)(filter(html4, patterns)).to.equal('foo bar baz');
+ const html5 = 'foo <script>bar BAZ foo</script> bar baz';
+ (0, chai_1.expect)(filter(html5, patterns)).to.equal('foo bar baz');
+ });
+ });
+ it('handles streamed input', () => {
+ (0, chai_1.expect)(filter(doc, [['script', ['bar']]])).to.equal(doc);
+ (0, chai_1.expect)(filter(doc, [
+ ['script', ['/supports_TIMING_API/i']],
+ ['script', ['head_tag_start']],
+ ['script', ['app_html_start']],
+ ['script', ['ads_dot_js_fetch_start']],
+ ['script', ["__perfMark('redux_json_start');"]],
+ ['script', ["__perfMark('js_deps_fetch_start'"]],
+ ])).to.equal(`
+<!DOCTYPE html><html lang="en"><head><div id="2x-container"><<script src="https://www.redditstatic.com/desktop2x/js/ads.js"></script><script id="data">window.___r = {"accountManagerModalData":{}},;</script><script defer="" src="https://www.example.com/foo.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/RedesignContentFonts.509eef5d33306bd3b0d5.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/RedesignOldContentFonts.e450653685d17337cac6.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Chat~Governance~Reddit.503ee0c2d353daa60d6e.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Governance~Reddit.7e2adb288af56de67f65.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Poll~Reddit.5f77a82de48fbb3beb21.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~EconHelperActions~Reddit.ae3c9f7d5b30b3be7151.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Reddit.bb2ade21a865dbd52f3f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Chat~Governance~Reddit.19024d94a81678cf79e8.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Governance~Reddit.98e55a3111b273b2f5dd.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/AdminCommunityTopics~Reddit.f091b12b417d6343dc18.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Reddit.dc10f78afef6b219b26f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListing~afc2720f.c6d86939d4bd0e144927.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Chat~ChatMessageInput~CollectionCommentsPage~CommentsPage~Frontpage~PostCreation~RedesignCha~0aefb917.e6923ac4e90b854a1995.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatMessageInput~ChatPost~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNot~3a34166c.dab3a37bed364deddf0e.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListin~44a849ee.85ccf598d319cc749b92.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~ModListing~ModQueuePages~ModerationPages~Multi~33b955cc.9c1942fb8eb4378e467c.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListing~ModQueu~900871b8.509ec80000f4968bb546.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Frontpage~ModListing~ModQueuePages~ModerationPages~Mult~8849df7b.067fda741fb3f181c83f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~ModListing~ModQueuePages~ModerationPages~Multi~5f2f5c2a.9e1690590f39e0d92f45.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Frontpage~ModListing~ModQueuePages~Multireddit~Original~029c3338.33a759111dafa848481d.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CommentsPage.dce215cbd6a2ed7e9969.js"></script></body></html>`);
+ });
+ });
+});
+const doc = `
+<!DOCTYPE html><html lang="en"><head><script>
+ var __SUPPORTS_TIMING_API = typeof performance === 'object' && !!performance.mark && !! performance.measure && !!performance.getEntriesByType;
+ function __perfMark(name) { __SUPPORTS_TIMING_API && performance.mark(name); };
+ var __firstLoaded = false;
+ function __markFirstPostVisible() {
+ if (__firstLoaded) { return; }
+ __firstLoaded = true;
+ __perfMark("first_post_title_image_loaded");
+ }
+ </script><script>
+ __perfMark('head_tag_start');
+ </script><script>
+ __perfMark('app_html_start');
+ </script><div id="2x-container"><<script>
+ __perfMark('ads_dot_js_fetch_start');
+ </script><script src="https://www.redditstatic.com/desktop2x/js/ads.js"></script><script>
+ __perfMark('redux_json_start');
+ </script><script id="data">window.___r = {"accountManagerModalData":{}},;</script><script>
+ __perfMark('js_deps_fetch_start');
+ </script><script defer="" src="https://www.example.com/foo.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/RedesignContentFonts.509eef5d33306bd3b0d5.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/RedesignOldContentFonts.e450653685d17337cac6.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Chat~Governance~Reddit.503ee0c2d353daa60d6e.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Governance~Reddit.7e2adb288af56de67f65.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Poll~Reddit.5f77a82de48fbb3beb21.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~EconHelperActions~Reddit.ae3c9f7d5b30b3be7151.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Reddit.bb2ade21a865dbd52f3f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Chat~Governance~Reddit.19024d94a81678cf79e8.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Governance~Reddit.98e55a3111b273b2f5dd.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/AdminCommunityTopics~Reddit.f091b12b417d6343dc18.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/Reddit.dc10f78afef6b219b26f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListing~afc2720f.c6d86939d4bd0e144927.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/vendors~Chat~ChatMessageInput~CollectionCommentsPage~CommentsPage~Frontpage~PostCreation~RedesignCha~0aefb917.e6923ac4e90b854a1995.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatMessageInput~ChatPost~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNot~3a34166c.dab3a37bed364deddf0e.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListin~44a849ee.85ccf598d319cc749b92.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~ModListing~ModQueuePages~ModerationPages~Multi~33b955cc.9c1942fb8eb4378e467c.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~GovernanceReleaseNotesModal~ModListing~ModQueu~900871b8.509ec80000f4968bb546.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Frontpage~ModListing~ModQueuePages~ModerationPages~Mult~8849df7b.067fda741fb3f181c83f.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CollectionCommentsPage~CommentsPage~Explore~Frontpage~ModListing~ModQueuePages~ModerationPages~Multi~5f2f5c2a.9e1690590f39e0d92f45.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/ChatPost~CollectionCommentsPage~CommentsPage~Frontpage~ModListing~ModQueuePages~Multireddit~Original~029c3338.33a759111dafa848481d.js"></script><script defer="" src="https://www.redditstatic.com/desktop2x/CommentsPage.dce215cbd6a2ed7e9969.js"></script></body></html>`;
+//# sourceMappingURL=html-filtering.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js.map
new file mode 100644
index 0000000..b6f47e7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/html-filtering.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"html-filtering.test.js","sourceRoot":"","sources":["../../../test/html-filtering.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js
new file mode 100644
index 0000000..e893fe5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js
@@ -0,0 +1,128 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const lists_1 = require("../src/lists");
+describe('#getLinesWithFilters', () => {
+ it('get not lines if empty', () => {
+ (0, chai_1.expect)((0, lists_1.getLinesWithFilters)('')).to.eql(new Set());
+ });
+ it('handle single filter', () => {
+ (0, chai_1.expect)((0, lists_1.getLinesWithFilters)('||foo.com$badfilter')).to.eql(new Set(['||foo.com$badfilter']));
+ });
+ it('handle multiple filters', () => {
+ (0, chai_1.expect)((0, lists_1.getLinesWithFilters)('||foo.com$badfilter\n||bar.co.uk')).to.eql(new Set(['||foo.com$badfilter', '||bar.co.uk']));
+ });
+ it('ignore empty lines', () => {
+ (0, chai_1.expect)((0, lists_1.getLinesWithFilters)(`
+
+||foo.com
+
+
+bar.co.uk^*baz
+
+ `)).to.eql(new Set(['||foo.com', 'bar.co.uk^*baz']));
+ });
+ it('ignore comments', () => {
+ (0, chai_1.expect)((0, lists_1.getLinesWithFilters)(`
+[Adblock Plus 2.0]
+! this is a comment
+||foo.com
+
+
+!bar.co.uk^*baz
+
+ `)).to.eql(new Set(['||foo.com']));
+ });
+});
+describe('#generateDiff', () => {
+ it('diff between empty strings', () => {
+ (0, chai_1.expect)((0, lists_1.generateDiff)('', '')).to.eql({
+ added: [],
+ removed: [],
+ });
+ });
+ it('same filters', () => {
+ (0, chai_1.expect)((0, lists_1.generateDiff)(`
+||foo.com
+
+bar.baz
+*ads*
+
+ `, `
+! comment
+
+bar.baz
+*ads*
+||foo.com
+ `)).to.eql({
+ added: [],
+ removed: [],
+ });
+ });
+ it('add filters from empty', () => {
+ (0, chai_1.expect)((0, lists_1.generateDiff)('', '||foo.com')).to.eql({
+ added: ['||foo.com'],
+ removed: [],
+ });
+ });
+ it('remove filters', () => {
+ (0, chai_1.expect)((0, lists_1.generateDiff)('||foo.com', '')).to.eql({
+ added: [],
+ removed: ['||foo.com'],
+ });
+ });
+ it('handle filter renaming', () => {
+ (0, chai_1.expect)((0, lists_1.generateDiff)('||foo.com$domain=foo.com|bar.com', '||foo.com$domain=bar.com|foo.com')).to.eql({
+ added: [],
+ removed: [],
+ });
+ });
+});
+describe('#f', () => {
+ it('handles CosmeticFilter', () => {
+ const filter = (0, lists_1.f) `##.selector`;
+ (0, chai_1.expect)(filter).not.to.be.null;
+ if (filter !== null) {
+ (0, chai_1.expect)(filter.isCosmeticFilter()).to.be.true;
+ }
+ });
+ it('handles NetworkFitler', () => {
+ const filter = (0, lists_1.f) `||foo.com`;
+ (0, chai_1.expect)(filter).not.to.be.null;
+ if (filter !== null) {
+ (0, chai_1.expect)(filter.isNetworkFilter()).to.be.true;
+ }
+ });
+ it('returns null for invalid filter', () => {
+ (0, chai_1.expect)((0, lists_1.f) `#$#~~~`).to.be.null;
+ });
+});
+describe('#mergeDiffs', () => {
+ it('merges one diff', () => {
+ const diff = {
+ added: ['||foo.com'],
+ removed: ['||bar.com'],
+ };
+ (0, chai_1.expect)((0, lists_1.mergeDiffs)([diff])).to.eql(diff);
+ });
+ it('merges several diffs', () => {
+ (0, chai_1.expect)((0, lists_1.mergeDiffs)([
+ { added: ['foo.com', 'baz.com'] },
+ { removed: ['foo.com'] },
+ { added: ['bar.com'], removed: ['foo.com'] },
+ { removed: ['bar.com'] },
+ ])).to.eql({
+ added: ['baz.com'],
+ removed: ['foo.com', 'bar.com'],
+ });
+ });
+});
+//# sourceMappingURL=lists.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js.map
new file mode 100644
index 0000000..62f6feb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/lists.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"lists.test.js","sourceRoot":"","sources":["../../../test/lists.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js
new file mode 100644
index 0000000..7782d02
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js
@@ -0,0 +1,449 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const tldts_experimental_1 = require("tldts-experimental");
+const cosmetic_1 = require("../src/filters/cosmetic");
+const network_1 = require("../src/filters/network");
+const lists_1 = require("../src/lists");
+const request_1 = require("../src/request");
+const requests_1 = require("./data/requests");
+(0, chai_1.use)((chai, utils) => {
+ utils.addMethod(chai.Assertion.prototype, 'matchRequest', function (req) {
+ const filter = this._obj;
+ const request = request_1.default.fromRawDetails(req);
+ new chai.Assertion(filter).not.to.be.null;
+ this.assert(filter.match(request), 'expected #{this} to match #{exp}', 'expected #{this} to not match #{exp}');
+ });
+ utils.addMethod(chai.Assertion.prototype, 'matchHostname', function (hostname) {
+ const filter = this._obj;
+ new chai.Assertion(filter).not.to.be.null;
+ this.assert(filter.match(hostname, (0, tldts_experimental_1.getDomain)(hostname) || ''), 'expected #{this} to match #{exp}', 'expected #{this} to not match #{exp}');
+ });
+});
+describe('#isAnchoredByHostname', () => {
+ it('matches empty hostname', () => {
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('', 'foo.com', false)).to.be.true;
+ });
+ it('does not match when filter hostname is longer than hostname', () => {
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('bar.foo.com', 'foo.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('b', '', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com', 'foo.co', false)).to.be.false;
+ });
+ it('does not match if there is not match', () => {
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('bar', 'foo.com', false)).to.be.false;
+ });
+ describe('prefix match', () => {
+ it('matches exact match', () => {
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('', '', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('f', 'f', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo', 'foo', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com', 'foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.com', '.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('com.', 'com.', false)).to.be.true;
+ });
+ it('matches partial', () => {
+ // Single label
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo', 'foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.', 'foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo', '.foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo.', '.foo.com', false)).to.be.true;
+ // Multiple labels
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com', 'foo.com.', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com.', 'foo.com.', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo.com.', '.foo.com.', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo.com', '.foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.bar', 'foo.bar.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.bar.', 'foo.bar.com', false)).to.be.true;
+ });
+ it('does not match partial prefix', () => {
+ // Single label
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo', 'foobar.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('fo', 'foo.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo', 'foobar.com', false)).to.be.false;
+ // Multiple labels
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.bar', 'foo.barbaz.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.foo.bar', '.foo.barbaz.com', false)).to.be.false;
+ });
+ });
+ describe('suffix match', () => {
+ it('matches partial', () => {
+ // Single label
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('com', 'foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.com', 'foo.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.com.', 'foo.com.', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('com.', 'foo.com.', false)).to.be.true;
+ // Multiple labels
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com.', '.foo.com.', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.com', '.foo.com', false)).to.be.true;
+ });
+ it('does not match partial', () => {
+ // Single label
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('om', 'foo.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('com', 'foocom', false)).to.be.false;
+ // Multiple labels
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('foo.bar.com', 'baz.bar.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('fo.bar.com', 'foo.bar.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.fo.bar.com', 'foo.bar.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('bar.com', 'foobar.com', false)).to.be.false;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.bar.com', 'foobar.com', false)).to.be.false;
+ });
+ });
+ describe('infix match', () => {
+ it('matches partial', () => {
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('bar', 'foo.bar.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('bar.', 'foo.bar.com', false)).to.be.true;
+ (0, chai_1.expect)((0, network_1.isAnchoredByHostname)('.bar.', 'foo.bar.com', false)).to.be.true;
+ });
+ });
+});
+describe('#NetworkFilter.match', () => {
+ requests_1.default.forEach(({ filters, type, sourceUrl, url }) => {
+ filters.forEach((filter) => {
+ it(`${filter} matches ${type}, url=${url}, source=${sourceUrl}`, () => {
+ const networkFilter = network_1.default.parse(filter, true);
+ (0, chai_1.expect)(networkFilter).not.to.be.null;
+ (0, chai_1.expect)(networkFilter).to.matchRequest({
+ sourceUrl,
+ type: type,
+ url,
+ });
+ });
+ });
+ });
+ it('pattern', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo`).to.matchRequest({ url: 'https://bar.com/foo' });
+ (0, chai_1.expect)((0, lists_1.f) `foo`).to.matchRequest({ url: 'https://bar.com/baz/foo' });
+ (0, chai_1.expect)((0, lists_1.f) `foo`).to.matchRequest({ url: 'https://bar.com/q=foo/baz' });
+ (0, chai_1.expect)((0, lists_1.f) `foo`).to.matchRequest({ url: 'https://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `-foo-`).to.matchRequest({ url: 'https://bar.com/baz/42-foo-q' });
+ (0, chai_1.expect)((0, lists_1.f) `&fo.o=+_-`).to.matchRequest({ url: 'https://bar.com?baz=42&fo.o=+_-' });
+ (0, chai_1.expect)((0, lists_1.f) `foo/bar/baz`).to.matchRequest({ url: 'https://bar.com/foo/bar/baz' });
+ (0, chai_1.expect)((0, lists_1.f) `com/bar/baz`).to.matchRequest({ url: 'https://bar.com/bar/baz' });
+ (0, chai_1.expect)((0, lists_1.f) `https://bar.com/bar/baz`).to.matchRequest({ url: 'https://bar.com/bar/baz' });
+ });
+ it('||pattern', () => {
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo`).to.matchRequest({ url: 'https://baz.foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo`).to.matchRequest({ url: 'https://foo.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.baz`).to.matchRequest({ url: 'https://foo.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.baz.`).to.matchRequest({ url: 'https://foo.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.baz.com^`).to.matchRequest({ url: 'https://foo.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.baz^`).not.to.matchRequest({ url: 'https://foo.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo`).not.to.matchRequest({ url: 'https://baz.com' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo`).not.to.matchRequest({ url: 'https://foo-bar.baz.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com`).not.to.matchRequest({ url: 'https://foo.de' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com`).not.to.matchRequest({ url: 'https://bar.foo.de' });
+ });
+ it('||pattern|', () => {
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com|`).to.matchRequest({ url: 'https://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/bar|`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/bar|`).not.to.matchRequest({ url: 'https://foo.com/bar/baz' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/bar|`).not.to.matchRequest({ url: 'https://foo.com/' });
+ (0, chai_1.expect)((0, lists_1.f) `||bar.com/bar|`).not.to.matchRequest({ url: 'https://foo.com/' });
+ });
+ it('pattern|', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.com`).to.matchRequest({ url: 'https://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `foo|`).to.matchRequest({ url: 'https://bar.com/foo' });
+ (0, chai_1.expect)((0, lists_1.f) `foo|`).not.to.matchRequest({ url: 'https://bar.com/foo/' });
+ (0, chai_1.expect)((0, lists_1.f) `foo|`).not.to.matchRequest({ url: 'https://bar.com/foo/baz' });
+ });
+ it('|pattern', () => {
+ (0, chai_1.expect)((0, lists_1.f) `|http`).to.matchRequest({ url: 'http://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `|http`).to.matchRequest({ url: 'https://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `|https://`).to.matchRequest({ url: 'https://foo.com' });
+ (0, chai_1.expect)((0, lists_1.f) `https`).not.to.matchRequest({ url: 'http://foo.com' });
+ });
+ it('|pattern|', () => {
+ (0, chai_1.expect)((0, lists_1.f) `|https://foo.com|`).to.matchRequest({ url: 'https://foo.com' });
+ });
+ it('||pattern + left-anchor', () => {
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^test`).to.matchRequest({ url: 'https://foo.com/test' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/test`).to.matchRequest({ url: 'https://foo.com/test' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^test`).not.to.matchRequest({ url: 'https://foo.com/tes' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/test`).not.to.matchRequest({ url: 'https://foo.com/tes' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^`).to.matchRequest({ url: 'https://foo.com/test' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com/test*bar`).to.matchRequest({ url: 'https://foo.com/testbar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^test*bar`).to.matchRequest({ url: 'https://foo.com/testbar' });
+ });
+ it('||hostname^*/pattern', () => {
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^*/bar`).not.to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||com^*/bar`).not.to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo^*/bar`).not.to.matchRequest({ url: 'https://foo.com/bar' });
+ // @see https://github.com/cliqz-oss/adblocker/issues/29
+ (0, chai_1.expect)((0, lists_1.f) `||foo.co^aaa/`).not.to.matchRequest({ url: 'https://bar.foo.com/bbb/aaa/' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^aaa/`).not.to.matchRequest({ url: 'https://bar.foo.com/bbb/aaa/' });
+ (0, chai_1.expect)((0, lists_1.f) `||com*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo.com^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||com^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo*/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo*com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo*com*/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo*com*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*foo*com*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*.com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*foo.com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*com/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*com*/bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `||*com*^bar`).to.matchRequest({ url: 'https://foo.com/bar' });
+ });
+ it('/regex/', () => {
+ (0, chai_1.expect)((0, lists_1.f) `/com/`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/.*/`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/foo\\.\\w+[/]/`).to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/foo.[0-9]\\w+[^/]/`).to.matchRequest({ url: 'https://foo.3om/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/foo.[0-9]\\w+[^/]/`).not.to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/foo.[0-9]\\w+[^/]/`).to.matchRequest({ url: 'https://foo43om/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/foo\\.[0-9]\\w+[^/]/`).not.to.matchRequest({ url: 'https://foo43om/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/com/$image`).not.to.matchRequest({ url: 'https://foo.com/bar' });
+ (0, chai_1.expect)((0, lists_1.f) `/\\w{10,20}\\.com/$script`).to.matchRequest({
+ type: 'script',
+ url: 'https://qwertyuiopas1234567890.com/bar',
+ });
+ });
+ it('options', () => {
+ // cpt test
+ (0, chai_1.expect)((0, lists_1.f) `||foo$image`).to.matchRequest({ url: 'https://foo.com/bar', type: 'image' });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$image`).not.to.matchRequest({
+ type: 'script',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$~image`).to.matchRequest({
+ type: 'script',
+ url: 'https://foo.com/bar',
+ });
+ // ~third-party
+ (0, chai_1.expect)((0, lists_1.f) `||foo$~third-party`).to.matchRequest({
+ sourceUrl: 'http://baz.foo.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$~third-party`).not.to.matchRequest({
+ sourceUrl: 'http://baz.bar.com',
+ url: 'https://foo.com/bar',
+ type: 'script',
+ });
+ // ~first-party
+ (0, chai_1.expect)((0, lists_1.f) `||foo$~first-party`).to.matchRequest({
+ sourceUrl: 'http://baz.bar.com',
+ url: 'https://foo.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$~first-party`).not.to.matchRequest({
+ sourceUrl: 'http://baz.foo.com',
+ url: 'https://foo.com/bar',
+ });
+ // opt-domain
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=foo.com`).to.matchRequest({
+ sourceUrl: 'http://foo.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=sub1.foo.com`).not.to.matchRequest({
+ sourceUrl: 'http://sub2.sub1.bar.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=foo.com`).not.to.matchRequest({
+ sourceUrl: 'http://bar.com',
+ url: 'https://foo.com/bar',
+ });
+ // opt-not-domain
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.com`).to.matchRequest({
+ sourceUrl: 'http://foo.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.*`).to.matchRequest({
+ sourceUrl: 'http://foo.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.com`).not.to.matchRequest({
+ sourceUrl: 'http://bar.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.*`).not.to.matchRequest({
+ sourceUrl: 'http://bar.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.*`).not.to.matchRequest({
+ sourceUrl: 'http://bar.co.uk',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~bar.com`).not.to.matchRequest({
+ sourceUrl: 'http://sub.bar.com',
+ url: 'https://foo.com/bar',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `||foo$domain=~sub1.bar.com`).not.to.matchRequest({
+ sourceUrl: 'http://sub2.sub1.bar.com',
+ url: 'https://foo.com/bar',
+ });
+ // denyallow
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.matchRequest({
+ sourceUrl: 'https://a.com',
+ url: 'https://z.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.matchRequest({
+ sourceUrl: 'https://b.com',
+ url: 'https://z.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.matchRequest({
+ sourceUrl: 'https://sub.b.com',
+ url: 'https://z.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.not.matchRequest({
+ sourceUrl: 'https://a.com',
+ url: 'https://x.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.not.matchRequest({
+ sourceUrl: 'https://a.com',
+ url: 'https://sub.y.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.not.matchRequest({
+ sourceUrl: 'https://sub.b.com',
+ url: 'https://sub.y.com/bar',
+ type: 'script',
+ });
+ (0, chai_1.expect)((0, lists_1.f) `*$3p,denyallow=x.com|y.com,domain=a.com|b.com`).to.not.matchRequest({
+ sourceUrl: 'https://c.com',
+ url: 'https://sub.y.com/bar',
+ type: 'script',
+ });
+ });
+});
+describe('#CosmeticFilter.match', () => {
+ it('does not match with hostname constraint but none provided', () => {
+ (0, chai_1.expect)((0, lists_1.f) `domain.com##.selector`).not.to.matchHostname('');
+ (0, chai_1.expect)((0, lists_1.f) `domain.*##.selector`).not.to.matchHostname('');
+ (0, chai_1.expect)((0, lists_1.f) `~domain.*##.selector`).not.to.matchHostname('');
+ (0, chai_1.expect)((0, lists_1.f) `~domain.com##.selector`).not.to.matchHostname('');
+ });
+ it('genercic filter', () => {
+ (0, chai_1.expect)((0, lists_1.f) `##.selector`).to.matchHostname('foo.com');
+ });
+ it('single domain', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.com##.selector`).to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com##.selector`).not.to.matchHostname('bar.com');
+ });
+ it('multiple domains', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,test.com##.selector`).to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,test.com##.selector`).to.matchHostname('test.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,test.com##.selector`).not.to.matchHostname('baz.com');
+ });
+ it('subdomain', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,test.com##.selector`).to.matchHostname('sub.test.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,test.com##.selector`).to.matchHostname('sub.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.com##.selector`).to.matchHostname('sub.test.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.com##.selector`).not.to.matchHostname('test.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.com##.selector`).not.to.matchHostname('com');
+ });
+ it('entity', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.*##.selector`).to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.*##.selector`).to.matchHostname('bar.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.*##.selector`).to.matchHostname('sub.test.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.*##.selector`).to.matchHostname('sub.test.fr');
+ (0, chai_1.expect)((0, lists_1.f) `foo.com,sub.test.*##.selector`).not.to.matchHostname('sub.test.evil.biz');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).to.matchHostname('foo.co.uk');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).to.matchHostname('bar.foo.co.uk');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).to.matchHostname('baz.bar.foo.co.uk');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).not.to.matchHostname('foo.evil.biz');
+ });
+ it('does not match', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).not.to.matchHostname('foo.bar.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*##.selector`).not.to.matchHostname('bar-foo.com');
+ });
+ describe('negations', () => {
+ it('entity', () => {
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*##.selector`).not.to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*##.selector`).to.matchHostname('foo.evil.biz');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*,~bar.*##.selector`).to.matchHostname('baz.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*,~bar.*##.selector`).not.to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*,~bar.*##.selector`).not.to.matchHostname('sub.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*,~bar.*##.selector`).not.to.matchHostname('bar.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.*,~bar.*##.selector`).not.to.matchHostname('sub.bar.com');
+ });
+ it('hostnames', () => {
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com##.selector`).not.to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com##.selector`).not.to.matchHostname('bar.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com##.selector`).to.matchHostname('foo.com.bar');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com##.selector`).to.matchHostname('foo.co.uk');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com##.selector`).to.matchHostname('foo.co.uk');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('sub.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('foo.de');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('sub.foo.de');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('bar.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).not.to.matchHostname('sub.bar.com');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).to.matchHostname('bar.de');
+ (0, chai_1.expect)((0, lists_1.f) `~foo.com,~foo.de,~bar.com##.selector`).to.matchHostname('sub.bar.de');
+ });
+ });
+ describe('complex', () => {
+ it('handles entity with suffix exception', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~foo.com##.selector`).not.to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~foo.com##.selector`).not.to.matchHostname('sub.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~foo.com##.selector`).to.matchHostname('foo.de');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~foo.com##.selector`).to.matchHostname('sub.foo.de');
+ });
+ it('handles entity with subdomain exception', () => {
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~sub.foo.*##.selector`).to.matchHostname('foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~sub.foo.*##.selector`).to.matchHostname('foo.de');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~sub.foo.*##.selector`).not.to.matchHostname('sub.foo.de');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~sub.foo.*##.selector`).not.to.matchHostname('sub.foo.com');
+ (0, chai_1.expect)((0, lists_1.f) `foo.*,~sub.foo.*##.selector`).to.matchHostname('sub2.foo.com');
+ });
+ });
+ it('no domain provided', () => {
+ const parsed = cosmetic_1.default.parse('foo.*##.selector');
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.match('foo.com', '')).to.be.false;
+ }
+ });
+});
+describe('#getHostnameWithoutPublicSuffix', () => {
+ it('returns null for empty hostname', () => {
+ (0, chai_1.expect)((0, request_1.getHostnameWithoutPublicSuffix)('', '')).to.be.null;
+ });
+ it('returns null for empty domain', () => {
+ (0, chai_1.expect)((0, request_1.getHostnameWithoutPublicSuffix)('com', '')).to.be.null;
+ });
+ it('returns null for a single label', () => {
+ (0, chai_1.expect)((0, request_1.getHostnameWithoutPublicSuffix)('com', 'com')).to.be.null;
+ });
+ it('simple domain', () => {
+ (0, chai_1.expect)((0, request_1.getHostnameWithoutPublicSuffix)('foo.com', 'foo.com')).to.equal('foo');
+ });
+ it('with subdomain', () => {
+ (0, chai_1.expect)((0, request_1.getHostnameWithoutPublicSuffix)('foo.bar.com', 'bar.com')).to.equal('foo.bar');
+ });
+});
+describe('#getHashesFromLabelsBackward', () => {
+ it('hash all labels', () => {
+ (0, chai_1.expect)((0, request_1.getHashesFromLabelsBackward)('foo.bar.baz', 11, 11)).to.eql(new Uint32Array(['baz', 'bar.baz', 'foo.bar.baz'].map(request_1.hashHostnameBackward)));
+ });
+ it('hash subdomains only', () => {
+ (0, chai_1.expect)((0, request_1.getHashesFromLabelsBackward)('foo.bar.baz.com', 15, 8 /* start of domain */)).to.eql(new Uint32Array(['baz.com', 'bar.baz.com', 'foo.bar.baz.com'].map(request_1.hashHostnameBackward)));
+ });
+ it('hash ignoring suffix', () => {
+ (0, chai_1.expect)((0, request_1.getHashesFromLabelsBackward)('foo.bar.baz.com', 11, 11)).to.eql(new Uint32Array(['baz', 'bar.baz', 'foo.bar.baz'].map(request_1.hashHostnameBackward)));
+ });
+ it('hash subdomains only, ignoring suffix', () => {
+ (0, chai_1.expect)((0, request_1.getHashesFromLabelsBackward)('foo.bar.baz.com', 11, 8)).to.eql(new Uint32Array(['baz', 'bar.baz', 'foo.bar.baz'].map(request_1.hashHostnameBackward)));
+ });
+});
+//# sourceMappingURL=matching.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js.map
new file mode 100644
index 0000000..87e73b8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/matching.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"matching.test.js","sourceRoot":"","sources":["../../../test/matching.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js
new file mode 100644
index 0000000..df184db
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js
@@ -0,0 +1,49 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const optimizer_1 = require("../src/engine/optimizer");
+const network_1 = require("../src/filters/network");
+function f(lines) {
+ const filters = [];
+ for (const line of lines) {
+ const filter = network_1.default.parse(line, true);
+ (0, chai_1.expect)(filter).not.to.be.null;
+ if (filter !== null) {
+ filters.push(filter);
+ }
+ }
+ return filters;
+}
+describe('#optimizeNetwork', () => {
+ it('combine into regexps', () => {
+ (0, chai_1.expect)((0, optimizer_1.optimizeNetwork)(f([
+ '/stats/tracking.',
+ '/php-stats.php?',
+ '.php?stats=',
+ '/banner.stats?',
+ '/php/stats/*',
+ '_stats.js?',
+ '/stats-tracking.js',
+ '/b/stats?',
+ '/stats/impression',
+ '/php/stats.php?',
+ '/stats/visitors',
+ '/stats.gif?',
+ '/stats/?js',
+ '/stats.php?*http',
+ '/stats?object',
+ '.php?p=stats&',
+ '/php-stats.js',
+ '/php-stats.js/',
+ ])).map((filter) => filter.toString())).to.have.lengthOf(1);
+ });
+});
+//# sourceMappingURL=optimizer.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js.map
new file mode 100644
index 0000000..289f992
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/optimizer.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"optimizer.test.js","sourceRoot":"","sources":["../../../test/optimizer.test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,+BAA8B;AAC9B,iBAAe;AAEf,uDAA0D;AAC1D,oDAAmD;AAEnD,SAAS,CAAC,CAAC,KAAe;IACxB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,MAAM,GAAG,iBAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9B,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,IAAA,aAAM,EACJ,IAAA,2BAAe,EACb,CAAC,CAAC;YACA,kBAAkB;YAClB,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,YAAY;YACZ,oBAAoB;YACpB,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,iBAAiB;YACjB,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,eAAe;YACf,gBAAgB;SACjB,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CACrC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js
new file mode 100644
index 0000000..9d9fd5b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js
@@ -0,0 +1,1909 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+ return cooked;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const cosmetic_1 = require("../src/filters/cosmetic");
+const network_1 = require("../src/filters/network");
+const lists_1 = require("../src/lists");
+const utils_1 = require("../src/utils");
+const request_1 = require("../src/request");
+function h(hostnames) {
+ return new Uint32Array(hostnames.map(request_1.hashHostnameBackward)).sort();
+}
+// TODO: collaps, popup, popunder, genericblock
+function network(filter, expected) {
+ const parsed = network_1.default.parse(filter);
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.isNetworkFilter()).to.be.true;
+ (0, chai_1.expect)(parsed.isCosmeticFilter()).to.be.false;
+ const verbose = {
+ // Attributes
+ csp: parsed.csp,
+ filter: parsed.getFilter(),
+ hostname: parsed.getHostname(),
+ denyallow: parsed.denyallow,
+ domains: parsed.domains,
+ redirect: parsed.getRedirect(),
+ // Filter type
+ isBadFilter: parsed.isBadFilter(),
+ isCSP: parsed.isCSP(),
+ isException: parsed.isException(),
+ isFullRegex: parsed.isFullRegex(),
+ isGenericHide: parsed.isGenericHide(),
+ isSpecificHide: parsed.isSpecificHide(),
+ isElemHide: parsed.isElemHide(),
+ isHostnameAnchor: parsed.isHostnameAnchor(),
+ isLeftAnchor: parsed.isLeftAnchor(),
+ isPlain: parsed.isPlain(),
+ isRedirect: parsed.isRedirect(),
+ isRedirectRule: parsed.isRedirectRule(),
+ isRegex: parsed.isRegex(),
+ isRightAnchor: parsed.isRightAnchor(),
+ // Options
+ firstParty: parsed.firstParty(),
+ fromAny: parsed.fromAny(),
+ fromDocument: parsed.fromDocument(),
+ fromFont: parsed.fromFont(),
+ fromImage: parsed.fromImage(),
+ fromMedia: parsed.fromMedia(),
+ fromObject: parsed.fromObject(),
+ fromOther: parsed.fromOther(),
+ fromPing: parsed.fromPing(),
+ fromScript: parsed.fromScript(),
+ fromStylesheet: parsed.fromStylesheet(),
+ fromSubdocument: parsed.fromSubdocument(),
+ fromWebsocket: parsed.fromWebsocket(),
+ fromXmlHttpRequest: parsed.fromXmlHttpRequest(),
+ isImportant: parsed.isImportant(),
+ thirdParty: parsed.thirdParty(),
+ };
+ (0, chai_1.expect)(verbose).to.deep.include(expected);
+ }
+ else {
+ (0, chai_1.expect)(parsed).to.equal(expected);
+ }
+}
+const DEFAULT_NETWORK_FILTER = {
+ // Attributes
+ csp: undefined,
+ filter: '',
+ hostname: '',
+ redirect: '',
+ // Filter type
+ isBadFilter: false,
+ isCSP: false,
+ isException: false,
+ isFullRegex: false,
+ isGenericHide: false,
+ isSpecificHide: false,
+ isElemHide: false,
+ isHostnameAnchor: false,
+ isLeftAnchor: false,
+ isPlain: false,
+ isRedirect: false,
+ isRedirectRule: false,
+ isRegex: false,
+ isRightAnchor: false,
+ // Options
+ firstParty: true,
+ fromAny: true,
+ fromImage: true,
+ fromMedia: true,
+ fromObject: true,
+ fromOther: true,
+ fromPing: true,
+ fromScript: true,
+ fromStylesheet: true,
+ fromSubdocument: true,
+ fromWebsocket: true,
+ fromXmlHttpRequest: true,
+ isImportant: false,
+ thirdParty: true,
+};
+describe('Network filters', () => {
+ describe('toString', () => {
+ const checkToString = (line, expected, debug = false) => {
+ const parsed = network_1.default.parse(line, debug);
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.toString()).to.equal(expected);
+ }
+ };
+ [
+ // Negations
+ 'ads$~image',
+ 'ads$~media',
+ 'ads$~object',
+ 'ads$~other',
+ 'ads$~ping',
+ 'ads$~script',
+ 'ads$~font',
+ 'ads$~stylesheet',
+ 'ads$~xhr',
+ // Options
+ 'ads$image',
+ 'ads$media',
+ 'ads$object',
+ 'ads$other',
+ 'ads$ping',
+ 'ads$script',
+ 'ads$font',
+ 'ads$3p',
+ 'ads$1p',
+ 'ads$stylesheet',
+ 'ads$xhr',
+ 'ads$important',
+ 'ads$redirect=noop',
+ 'ads$redirect-rule=noop',
+ ].forEach((line) => {
+ it(`pprint ${line}`, () => {
+ checkToString(line, line);
+ });
+ });
+ it('pprint anchored hostnames', () => {
+ checkToString('@@||foo.com', '@@||foo.com^');
+ checkToString('@@||foo.com|', '@@||foo.com^|');
+ checkToString('|foo.com|', '|foo.com|');
+ checkToString('foo.com|', 'foo.com|');
+ });
+ it('pprint domain', () => {
+ checkToString('ads$domain=foo.com|bar.co.uk|~baz.io', 'ads$domain=<hashed>');
+ });
+ it('pprint with debug=true', () => {
+ checkToString('ads$domain=foo.com|bar.co.uk|~baz.io', 'ads$domain=foo.com|bar.co.uk|~baz.io', true);
+ });
+ });
+ it('parses pattern', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isPlain: true });
+ network('ads', Object.assign(Object.assign({}, base), { filter: 'ads' }));
+ network('/ads/foo-', Object.assign(Object.assign({}, base), { filter: '/ads/foo-' }));
+ network('/ads/foo-$important', Object.assign(Object.assign({}, base), { filter: '/ads/foo-', isImportant: true }));
+ network('foo.com/ads$important', Object.assign(Object.assign({}, base), { filter: 'foo.com/ads', isImportant: true }));
+ });
+ it('parses ||pattern', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isHostnameAnchor: true, isPlain: true });
+ network('||foo.com', Object.assign(Object.assign({}, base), { filter: '', hostname: 'foo.com' }));
+ network('||foo.com$important', Object.assign(Object.assign({}, base), { filter: '', hostname: 'foo.com', isImportant: true }));
+ network('||foo.com/bar/baz$important', Object.assign(Object.assign({}, base), { filter: '/bar/baz', hostname: 'foo.com', isImportant: true, isLeftAnchor: true }));
+ });
+ it('parses ||pattern|', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isHostnameAnchor: true, isRightAnchor: true });
+ network('||foo.com|', Object.assign(Object.assign({}, base), { filter: '', hostname: 'foo.com', isPlain: true }));
+ network('||foo.com|$important', Object.assign(Object.assign({}, base), { filter: '', hostname: 'foo.com', isImportant: true, isPlain: true }));
+ network('||foo.com/bar/baz|$important', Object.assign(Object.assign({}, base), { filter: '/bar/baz', hostname: 'foo.com', isImportant: true, isLeftAnchor: true, isPlain: true }));
+ network('||foo.com^bar/*baz|$important', Object.assign(Object.assign({}, base), { filter: '^bar/*baz', hostname: 'foo.com', isImportant: true, isLeftAnchor: true, isRegex: true }));
+ });
+ it('parses |pattern', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isLeftAnchor: true });
+ network('|foo.com', Object.assign(Object.assign({}, base), { filter: 'foo.com', hostname: '', isPlain: true }));
+ network('|foo.com/bar/baz', Object.assign(Object.assign({}, base), { filter: 'foo.com/bar/baz', hostname: '', isPlain: true }));
+ network('|foo.com^bar/*baz*', Object.assign(Object.assign({}, base), { filter: 'foo.com^bar/*baz', hostname: '', isRegex: true }));
+ });
+ it('parses |pattern|', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isLeftAnchor: true, isRightAnchor: true });
+ network('|foo.com|', Object.assign(Object.assign({}, base), { filter: 'foo.com', hostname: '', isPlain: true }));
+ network('|foo.com/bar|', Object.assign(Object.assign({}, base), { filter: 'foo.com/bar', hostname: '', isPlain: true }));
+ network('|foo.com/*bar^|', Object.assign(Object.assign({}, base), { filter: 'foo.com/*bar^', hostname: '', isRegex: true }));
+ });
+ it('parses regexp', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isRegex: true });
+ network('*bar^', Object.assign(Object.assign({}, base), { filter: 'bar^', hostname: '' }));
+ network('foo.com/*bar^', Object.assign(Object.assign({}, base), { filter: 'foo.com/*bar^', hostname: '' }));
+ });
+ it('parses ||regexp', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isHostnameAnchor: true, isRegex: true });
+ network('||foo.com*bar^', Object.assign(Object.assign({}, base), { filter: '*bar^', hostname: 'foo.com' }));
+ network('||foo.com^bar*/baz^', Object.assign(Object.assign({}, base), { filter: '^bar*/baz^', hostname: 'foo.com', isLeftAnchor: true }));
+ });
+ it('parses ||regexp|', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isHostnameAnchor: true, isRegex: true, isRightAnchor: true });
+ network('||foo.com*bar^|', Object.assign(Object.assign({}, base), { filter: '*bar^', hostname: 'foo.com' }));
+ network('||foo.com^bar*/baz^|', Object.assign(Object.assign({}, base), { filter: '^bar*/baz^', hostname: 'foo.com', isLeftAnchor: true }));
+ });
+ it('parses |regexp', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isLeftAnchor: true, isRegex: true });
+ network('|foo.com*bar^', Object.assign(Object.assign({}, base), { filter: 'foo.com*bar^', hostname: '' }));
+ network('|foo.com^bar*/baz^', Object.assign(Object.assign({}, base), { filter: 'foo.com^bar*/baz^', hostname: '' }));
+ });
+ it('parses |regexp|', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isLeftAnchor: true, isRegex: true, isRightAnchor: true });
+ network('|foo.com*bar^|', Object.assign(Object.assign({}, base), { filter: 'foo.com*bar^', hostname: '' }));
+ network('|foo.com^bar*/baz^|', Object.assign(Object.assign({}, base), { filter: 'foo.com^bar*/baz^', hostname: '' }));
+ });
+ it('parses exceptions', () => {
+ const base = Object.assign(Object.assign({}, DEFAULT_NETWORK_FILTER), { isException: true });
+ network('@@ads', Object.assign(Object.assign({}, base), { filter: 'ads', isPlain: true }));
+ network('@@||foo.com/ads', Object.assign(Object.assign({}, base), { filter: '/ads', hostname: 'foo.com', isHostnameAnchor: true, isLeftAnchor: true, isPlain: true }));
+ network('@@|foo.com/ads', Object.assign(Object.assign({}, base), { filter: 'foo.com/ads', isLeftAnchor: true, isPlain: true }));
+ network('@@|foo.com/ads|', Object.assign(Object.assign({}, base), { filter: 'foo.com/ads', isLeftAnchor: true, isPlain: true, isRightAnchor: true }));
+ network('@@foo.com/ads|', Object.assign(Object.assign({}, base), { filter: 'foo.com/ads', isPlain: true, isRightAnchor: true }));
+ network('@@||foo.com/ads|', Object.assign(Object.assign({}, base), { filter: '/ads', hostname: 'foo.com', isHostnameAnchor: true, isLeftAnchor: true, isPlain: true, isRightAnchor: true }));
+ });
+ describe('regexp patterns', () => {
+ for (const filter of [
+ '/pattern/',
+ '@@/pattern/',
+ '//',
+ '//$script',
+ '//$image',
+ '//[0-9].*-.*-[a-z0-9]{4}/$script',
+ '/.space/[0-9]{2,9}/$/$script',
+ ]) {
+ it(filter, () => {
+ network(filter, {
+ isFullRegex: true,
+ });
+ });
+ }
+ for (const filter of [
+ '||foo.com/pattern/',
+ '||foo.com/pattern/$script',
+ '@@||foo.com/pattern/$script',
+ '@@|foo.com/pattern/$script',
+ '|foo.com/pattern/$script',
+ ]) {
+ it(filter, () => {
+ network(filter, {
+ isFullRegex: false,
+ });
+ });
+ }
+ });
+ describe('options', () => {
+ it('accepts any content type', () => {
+ network('||foo.com', { fromAny: true });
+ network('||foo.com$first-party', { fromAny: true });
+ network('||foo.com$third-party', { fromAny: true });
+ network('||foo.com$domain=test.com', { fromAny: true });
+ network('||foo.com$domain=test.com,match-case', { fromAny: true });
+ });
+ [
+ 'image',
+ 'media',
+ 'object',
+ 'object-subrequest',
+ 'other',
+ 'ping',
+ 'script',
+ 'font',
+ 'stylesheet',
+ 'xmlhttprequest',
+ ].forEach((option) => {
+ it(`does not accept any content type: ~${option}`, () => {
+ network(`||foo.com$~${option}`, { fromAny: false });
+ network(`||foo.com$${option}`, { fromAny: false });
+ });
+ });
+ describe('important', () => {
+ it('parses important', () => {
+ network('||foo.com$important', { isImportant: true });
+ });
+ it('parses ~important', () => {
+ // Not supported
+ network('||foo.com$~important', null);
+ });
+ it('defaults to false', () => {
+ network('||foo.com', { isImportant: false });
+ });
+ });
+ it('inline-font', () => {
+ network('||foo.com$inline-font', {
+ csp: "font-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:",
+ isCSP: true,
+ });
+ });
+ it('inline-script', () => {
+ network('||foo.com$inline-script', {
+ csp: "script-src 'self' 'unsafe-eval' http: https: data: blob: mediastream: filesystem:",
+ isCSP: true,
+ });
+ });
+ describe('csp', () => {
+ it('defaults to no csp', () => {
+ network('||foo.com', {
+ csp: undefined,
+ isCSP: false,
+ });
+ });
+ it('parses simple csp', () => {
+ network('||foo.com$csp=self bar ""', {
+ csp: 'self bar ""',
+ isCSP: true,
+ });
+ });
+ it('parses empty csp', () => {
+ network('||foo.com$csp', {
+ csp: undefined,
+ isCSP: true,
+ });
+ });
+ it('parses csp mixed with other options', () => {
+ network('||foo.com$domain=foo|bar,csp=self bar "",image', {
+ csp: 'self bar ""',
+ fromImage: true,
+ isCSP: true,
+ });
+ });
+ });
+ describe('domain', () => {
+ it('parses domain', () => {
+ network('||foo.com$domain=bar.com', {
+ domains: {
+ hostnames: h(['bar.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$domain=bar.com|baz.com', {
+ domains: {
+ hostnames: h(['bar.com', 'baz.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('parses ~domain', () => {
+ network('||foo.com$domain=~bar.com', {
+ domains: {
+ notHostnames: h(['bar.com']),
+ entities: undefined,
+ hostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$domain=~bar.com|~baz.com', {
+ domains: {
+ notHostnames: h(['bar.com', 'baz.com']),
+ entities: undefined,
+ hostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('parses domain and ~domain', () => {
+ network('||foo.com$domain=~bar.com|baz.com', {
+ domains: {
+ hostnames: h(['baz.com']),
+ notHostnames: h(['bar.com']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$domain=bar.com|~baz.com', {
+ domains: {
+ hostnames: h(['bar.com']),
+ notHostnames: h(['baz.com']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$domain=foo|~bar|baz', {
+ domains: {
+ hostnames: h(['foo', 'baz']),
+ notHostnames: h(['bar']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('accepts entities', () => {
+ network('||foo.com$domain=foo.*|~bar.*|baz', {
+ domains: {
+ hostnames: h(['baz']),
+ notHostnames: undefined,
+ entities: h(['foo']),
+ notEntities: h(['bar']),
+ parts: undefined,
+ },
+ });
+ });
+ it('defaults to no constraint', () => {
+ network('||foo.com', {
+ domains: undefined,
+ });
+ });
+ });
+ describe('denyallow', () => {
+ it('parses denyallow', () => {
+ network('||foo.com$denyallow=bar.com', {
+ denyallow: {
+ hostnames: h(['bar.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$denyallow=bar.com|baz.com', {
+ denyallow: {
+ hostnames: h(['bar.com', 'baz.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('parses ~denyallow', () => {
+ network('||foo.com$denyallow=~bar.com', {
+ denyallow: {
+ notHostnames: h(['bar.com']),
+ entities: undefined,
+ hostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$denyallow=~bar.com|~baz.com', {
+ denyallow: {
+ notHostnames: h(['bar.com', 'baz.com']),
+ entities: undefined,
+ hostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('parses denyallow and ~denyallow', () => {
+ network('||foo.com$denyallow=~bar.com|baz.com', {
+ denyallow: {
+ hostnames: h(['baz.com']),
+ notHostnames: h(['bar.com']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$denyallow=bar.com|~baz.com', {
+ denyallow: {
+ hostnames: h(['bar.com']),
+ notHostnames: h(['baz.com']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ network('||foo.com$denyallow=foo|~bar|baz', {
+ denyallow: {
+ hostnames: h(['foo', 'baz']),
+ notHostnames: h(['bar']),
+ entities: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ },
+ });
+ });
+ it('accepts entities', () => {
+ network('||foo.com$denyallow=foo.*|~bar.*|baz', {
+ denyallow: {
+ hostnames: h(['baz']),
+ notHostnames: undefined,
+ entities: h(['foo']),
+ notEntities: h(['bar']),
+ parts: undefined,
+ },
+ });
+ });
+ it('defaults to no constraint', () => {
+ network('||foo.com', {
+ denyallow: undefined,
+ });
+ });
+ });
+ describe('redirect', () => {
+ it('parses redirect', () => {
+ network('||foo.com$redirect=bar.js', {
+ isRedirect: true,
+ redirect: 'bar.js',
+ });
+ network('$redirect=bar.js', {
+ isRedirect: true,
+ redirect: 'bar.js',
+ });
+ });
+ it('parses ~redirect', () => {
+ // ~redirect is not a valid option
+ network('||foo.com$~redirect', null);
+ network('||foo.com$~redirect=foo.js', null);
+ });
+ it('parses redirect without a value', () => {
+ // Not valid
+ network('||foo.com$redirect', null);
+ network('||foo.com$redirect=', null);
+ });
+ it('defaults to false', () => {
+ network('||foo.com', {
+ isRedirect: false,
+ redirect: '',
+ });
+ });
+ });
+ describe('redirect-rule', () => {
+ it('parses redirect-rule', () => {
+ network('||foo.com$redirect-rule=bar.js', {
+ isRedirect: true,
+ isRedirectRule: true,
+ redirect: 'bar.js',
+ });
+ network('$redirect-rule=bar.js', {
+ isRedirect: true,
+ isRedirectRule: true,
+ redirect: 'bar.js',
+ });
+ });
+ it('parses ~redirect-rule', () => {
+ // ~redirect-rule is not a valid option
+ network('||foo.com$~redirect-rule=foo.js', null);
+ network('||foo.com$~redirect-rule', null);
+ });
+ it('parses redirect-rule without a value', () => {
+ // Not valid
+ network('||foo.com$redirect-rule', null);
+ network('||foo.com$redirect-rule=', null);
+ });
+ it('defaults to false', () => {
+ network('||foo.com', {
+ isRedirectRule: false,
+ redirect: '',
+ });
+ });
+ });
+ describe('match-case', () => {
+ it('parses match-case', () => {
+ network('||foo.com$match-case', {});
+ network('||foo.com$image,match-case', {});
+ network('||foo.com$media,match-case,image', {});
+ });
+ it('parses ~match-case', () => {
+ // ~match-case is not supported
+ network('||foo.com$~match-case', null);
+ });
+ });
+ describe('first-party', () => {
+ for (const option of ['first-party', '1p', '~third-party', '~3p']) {
+ for (const base of ['||foo.com', '@@||foo.com', '@@||foo.com/bar']) {
+ const filter = `${base}$${option}`;
+ it(filter, () => {
+ network(filter, { thirdParty: false, firstParty: true });
+ });
+ }
+ }
+ it('defaults to true', () => {
+ network('||foo.com', { thirdParty: true });
+ });
+ });
+ describe('third-party', () => {
+ for (const option of ['third-party', '3p', '~first-party', '~1p']) {
+ for (const base of ['||foo.com', '@@||foo.com', '@@||foo.com/bar']) {
+ const filter = `${base}$${option}`;
+ it(filter, () => {
+ network(filter, { thirdParty: true, firstParty: false });
+ });
+ }
+ }
+ it('defaults to true', () => {
+ network('||foo.com', { thirdParty: true });
+ });
+ });
+ it('all', () => {
+ network('||foo.com^$all', {
+ isHostnameAnchor: true,
+ isPlain: true,
+ firstParty: true,
+ fromAny: true,
+ fromImage: true,
+ fromMedia: true,
+ fromObject: true,
+ fromOther: true,
+ fromPing: true,
+ fromScript: true,
+ fromStylesheet: true,
+ fromSubdocument: true,
+ fromWebsocket: true,
+ fromXmlHttpRequest: true,
+ thirdParty: true,
+ });
+ });
+ it('badfilter', () => {
+ network('||foo.com^$badfilter', { isBadFilter: true });
+ network('@@||foo.com^$badfilter', { isBadFilter: true, isException: true });
+ });
+ describe('generichide', () => {
+ network('||foo.com^$ghide', { isGenericHide: true });
+ network('@@||foo.com^$ghide', { isGenericHide: true, isException: true });
+ network('||foo.com^$generichide', { isGenericHide: true });
+ network('@@||foo.com^$generichide', { isGenericHide: true, isException: true });
+ });
+ describe('specifichide', () => {
+ network('||foo.com^$shide', { isSpecificHide: true });
+ network('@@||foo.com^$shide', { isSpecificHide: true, isException: true });
+ network('||foo.com^$specifichide', { isSpecificHide: true });
+ network('@@||foo.com^$specifichide', { isSpecificHide: true, isException: true });
+ });
+ describe('elemhide', () => {
+ network('||foo.com^$ehide', { isElemHide: true });
+ network('@@||foo.com^$ehide', { isElemHide: true, isException: true });
+ network('||foo.com^$shide,ghide', { isElemHide: true });
+ network('@@||foo.com^$shide,ghide', { isElemHide: true, isException: true });
+ network('||foo.com^$elemhide', { isElemHide: true });
+ network('@@||foo.com^$elemhide', { isElemHide: true, isException: true });
+ network('||foo.com^$generichide,specifichide', { isElemHide: true });
+ network('@@||foo.com^$generichide,specifichide', { isElemHide: true, isException: true });
+ });
+ describe('un-supported options', () => {
+ ['genericblock', 'popunder', 'popup', 'woot'].forEach((unsupportedOption) => {
+ it(unsupportedOption, () => {
+ network(`||foo.com$${unsupportedOption}`, null);
+ });
+ });
+ });
+ const allOptions = (value) => ({
+ fromFont: value,
+ fromImage: value,
+ fromMedia: value,
+ fromObject: value,
+ fromOther: value,
+ fromPing: value,
+ fromScript: value,
+ fromStylesheet: value,
+ fromSubdocument: value,
+ fromWebsocket: value,
+ fromXmlHttpRequest: value,
+ });
+ [
+ ['font', 'fromFont'],
+ ['image', 'fromImage'],
+ ['media', 'fromMedia'],
+ ['object', 'fromObject'],
+ ['object-subrequest', 'fromObject'],
+ ['other', 'fromOther'],
+ ['ping', 'fromPing'],
+ ['beacon', 'fromPing'],
+ ['script', 'fromScript'],
+ ['stylesheet', 'fromStylesheet'],
+ ['css', 'fromStylesheet'],
+ ['subdocument', 'fromSubdocument'],
+ ['frame', 'fromSubdocument'],
+ ['websocket', 'fromWebsocket'],
+ ['xmlhttprequest', 'fromXmlHttpRequest'],
+ ['xhr', 'fromXmlHttpRequest'],
+ ['doc', 'fromDocument'],
+ ['document', 'fromDocument'],
+ ].forEach(([option, attribute]) => {
+ // all other attributes should be false if `$attribute` or true if `$~attribute`
+ describe(option, () => {
+ it(`parses ${option}`, () => {
+ network(`||foo.com$${option}`, Object.assign(Object.assign({}, allOptions(false)), { [attribute]: true }));
+ network(`||foo.com$object,${option}`, Object.assign(Object.assign({}, allOptions(false)), { fromObject: true, [attribute]: true }));
+ network(`||foo.com$domain=bar.com,${option}`, Object.assign(Object.assign({}, allOptions(false)), { [attribute]: true }));
+ });
+ it(`parses ~${option}`, () => {
+ network(`||foo.com$~${option}`, Object.assign(Object.assign({}, allOptions(true)), { [attribute]: false }));
+ network(`||foo.com$${option},~${option}`, {
+ [attribute]: false,
+ });
+ });
+ it('defaults to true', () => {
+ network('||foo.com', Object.assign(Object.assign({}, allOptions(true)), { [attribute]: true }));
+ });
+ });
+ });
+ });
+ describe('#getTokens', () => {
+ for (const [filter, regexTokens] of [
+ // Wildcard
+ ['||geo*.hltv.org^', [(0, utils_1.hashStrings)(['hltv', 'org'])]],
+ // RegExp with character class
+ ['/^foo$/', [(0, utils_1.hashStrings)(['foo'])]],
+ ['/^fo\\so$/', [new Uint32Array(0)]],
+ ['/^fo\\wo$/', [new Uint32Array(0)]],
+ ['/^fo\\Bo$/', [new Uint32Array(0)]],
+ ['/^foo-bar\\Bo$/', [(0, utils_1.hashStrings)(['foo'])]],
+ // All tokens are considered because none is special and surrounded by ^ and $
+ ['/^foo-bar-baz$/', [(0, utils_1.hashStrings)(['foo', 'bar', 'baz'])]],
+ // All tokens except last one
+ ['/^foo-bar-baz+/', [(0, utils_1.hashStrings)(['foo', 'bar'])]],
+ ['/^foo-bar-baz/', [(0, utils_1.hashStrings)(['foo', 'bar'])]],
+ // All tokens except first one
+ ['/foo-bar-baz$/', [(0, utils_1.hashStrings)(['bar', 'baz'])]],
+ ['/.foo-bar-baz$/', [(0, utils_1.hashStrings)(['bar', 'baz'])]],
+ // Real filters
+ ['/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}\\.js$/$doc', [(0, utils_1.hashStrings)(['js'])]],
+ [
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}\\.js/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/:\\/\\/[A-Za-z0-9]+.ru\\/[A-Za-z0-9]{20,25}.js/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/^https?:\\/\\/m\\.anysex\\.com\\/[a-zA-Z]{1,4}\\/[a-zA-Z]+\\.php$/$image,script',
+ [(0, utils_1.hashStrings)(['php'])],
+ ],
+ [
+ '/^https:\\/\\/m\\.anysex\\.com\\/[a-zA-Z]{1,4}\\/[a-zA-Z]+\\.php$/$image,script',
+ [(0, utils_1.hashStrings)(['https', 'anysex', 'com', 'php'])],
+ ],
+ [
+ '/wasabisyrup.com\\/storage\\/[-_a-zA-Z0-9]{8,}.gif/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/wasabisyrup\\.com\\/storage\\/[-_a-zA-Z0-9]{8,}.gif/$doc',
+ [(0, utils_1.hashStrings)(['com', 'storage'])],
+ ],
+ [
+ '/^wasabisyrup\\.com\\/storage\\/[-_a-zA-Z0-9]{8,}.gif/$doc',
+ [(0, utils_1.hashStrings)(['wasabisyrup', 'com', 'storage'])],
+ ],
+ [
+ '/.*(\\/proxy|\\.wasm|\\.wsm|\\.wa)$/$websocket,xmlhttprequest,badfilter',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.websocket]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^https?:\\/\\/([0-9a-z-]+\\.)?(9anime|animeland|animenova|animeplus|animetoon|animewow|gamestorrent|goodanime|gogoanime|igg-games|kimcartoon|memecenter|readcomiconline|toonget|toonova|watchcartoononline)\\.[a-z]{2,4}\\/(?!([Ee]xternal|[Ii]mages|[Ss]cripts|[Uu]ploads|ac|ajax|assets|combined|content|cov|cover|(img\\/bg)|(img\\/icon)|inc|jwplayer|player|playlist-cat-rss|static|thumbs|wp-content|wp-includes)\\/)(.*)/$first-party,script',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script])],
+ ],
+ [
+ '/^https?:\\/\\/([0-9a-z\\-]+\\.)?(9anime|animeland|animenova|animeplus|animetoon|animewow|gamestorrent|goodanime|gogoanime|igg-games|kimcartoon|memecenter|readcomiconline|toonget|toonova|watchcartoononline)\\.[a-z]{2,4}\\/(?!([Ee]xternal|[Ii]mages|[Ss]cripts|[Uu]ploads|ac|ajax|assets|combined|content|cov|cover|(img\\/bg)|(img\\/icon)|inc|jwplayer|player|playlist-cat-rss|static|thumbs|wp-content|wp-includes)\\/)(.*)/$first-party,xmlhttprequest,badfilter',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr])],
+ ],
+ ['/https?:\\/\\/.*[=|&|%|#|+].*/$badfilter', [new Uint32Array(0)]],
+ [
+ '/^http*.:\\/\\/.*[a-zA-Z0-9]{10,}.*/$xmlhttprequest,badfilter',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr])],
+ ],
+ [
+ '@@/https?:\\/\\/.*[=|&|%|#|+].*/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/^https?:\\/\\/([0-9a-z\\-]+\\.)?(9anime|animeland|animenova|animeplus|animetoon|animewow|gamestorrent|goodanime|gogoanime|igg-games|kimcartoon|memecenter|readcomiconline|toonget|toonova|watchcartoononline)\\.[a-z]{2,4}\\/(?!([Ee]xternal|[Ii]mages|[Ss]cripts|[Uu]ploads|ac|ajax|assets|combined|content|cov|cover|(img\\/bg)|(img\\/icon)|inc|jwplayer|player|playlist-cat-rss|static|thumbs|wp-content|wp-includes)\\/)(.*)/$first-party,image,badfilter',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image])],
+ ],
+ [
+ '/^https?:\\/\\/.*\\/.*[(php|?|=)].*/$first-party,image,badfilter',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image])],
+ ],
+ [
+ '/^https?:\\/\\/([0-9a-z\\-]+\\.)?(9anime|animeland|animenova|animeplus|animetoon|animewow|gamestorrent|goodanime|gogoanime|igg-games|kimcartoon|memecenter|readcomiconline|toonget|toonova|watchcartoononline)\\.[a-z]{2,4}\\/(?!([Ee]xternal|[Ii]mages|[Ss]cripts|[Uu]ploads|ac|ajax|assets|combined|content|cov|cover|(img\\/bg)|(img\\/icon)|inc|jwplayer|player|playlist-cat-rss|static|thumbs|wp-content|wp-includes)\\/)(.*)/$first-party,image,badfilter',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image])],
+ ],
+ [
+ '/^(https?|wss?):\\/\\/([0-9a-z\\-]+\\.)?([0-9a-z-]+\\.)(accountant|bid|cf|club|cricket|date|download|faith|fun|ga|gdn|gq|loan|men|ml|network|ovh|party|pro|pw|racing|review|rocks|ru|science|site|space|stream|tk|top|trade|webcam|win|xyz|zone)\\.\\/(.*)/$image,script,subdocument,websocket,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.sub_frame]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.websocket]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^(https?|wss?):\\/\\/([0-9a-z-]+\\.)?([0-9a-z-]+\\.)(accountant|bid|cf|club|cricket|date|download|faith|fun|ga|gdn|gq|loan|men|ml|network|ovh|party|pro|pw|racing|review|rocks|science|site|space|stream|tk|top|trade|webcam|win|xyz|zone)\\/(.*)/$third-party,websocket',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.websocket])],
+ ],
+ [
+ '/([0-9]{1,3}\\.){3}[0-9]{1,3}.*(\\/proxy|\\.wasm|\\.wsm|\\.wa)$/$third-party,websocket',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.websocket])],
+ ],
+ [
+ '/.*(\\/proxy|\\.wasm|\\.wsm|\\.wa)$/$websocket,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.websocket]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^https://www\\.narcity\\.com/assets/[0-9a-f]{24,}\\.js/$script',
+ [(0, utils_1.hashStrings)(['https', 'www', 'narcity', 'com', 'assets'])],
+ ],
+ [
+ '/^https://www\\.mtlblog\\.com/assets/[0-9a-f]{24,}\\.js/$script',
+ [(0, utils_1.hashStrings)(['https', 'www', 'mtlblog', 'com', 'assets'])],
+ ],
+ [
+ '/\\:\\/\\/data.*\\.com\\/[a-zA-Z0-9]{30,}/$third-party,xmlhttprequest',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr])],
+ ],
+ [
+ '/\\.(accountant|bid|click|club|com|cricket|date|download|faith|link|loan|lol|men|online|party|racing|review|science|site|space|stream|top|trade|webcam|website|win|xyz|com)\\/(([0-9]{2,9})(\\.|\\/)(css|\\?)?)$/$script,stylesheet,third-party,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.stylesheet]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/\\.accountant\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['accountant'])],
+ ],
+ [
+ '/\\.bid\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['bid'])],
+ ],
+ [
+ '/\\.click\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['click'])],
+ ],
+ [
+ '/\\.club\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['club'])],
+ ],
+ [
+ '/\\.com\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['com'])],
+ ],
+ [
+ '/\\.cricket\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['cricket'])],
+ ],
+ [
+ '/\\.date\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['date'])],
+ ],
+ [
+ '/\\.download\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['download'])],
+ ],
+ [
+ '/\\.faith\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['faith'])],
+ ],
+ [
+ '/\\.link\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['link'])],
+ ],
+ [
+ '/\\.loan\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['loan'])],
+ ],
+ [
+ '/\\.lol\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['lol'])],
+ ],
+ [
+ '/\\.men\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['men'])],
+ ],
+ [
+ '/\\.online\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['online'])],
+ ],
+ [
+ '/\\.party\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['party'])],
+ ],
+ [
+ '/\\.racing\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['racing'])],
+ ],
+ [
+ '/\\.review\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['review'])],
+ ],
+ [
+ '/\\.science\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['science'])],
+ ],
+ [
+ '/\\.site\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['site'])],
+ ],
+ [
+ '/\\.space\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['space'])],
+ ],
+ [
+ '/\\.stream\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['stream'])],
+ ],
+ [
+ '/\\.top\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['top'])],
+ ],
+ [
+ '/\\.trade\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['trade'])],
+ ],
+ [
+ '/\\.webcam\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['webcam'])],
+ ],
+ [
+ '/\\.website\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['website'])],
+ ],
+ [
+ '/\\.win\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['win'])],
+ ],
+ [
+ '/\\.xyz\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [(0, utils_1.hashStrings)(['xyz'])],
+ ],
+ [
+ '/\\:\\/\\/[a-z0-9]{5,40}\\.com\\/[0-9]{2,9}\\/$/$script,stylesheet,third-party,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.stylesheet]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/\\:\\/\\/[a-z0-9]{5,}\\.com\\/[A-Za-z0-9]{3,}\\/$/$script,third-party,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^https?:\\/\\/.*(bitly|bit)\\.(com|ly)\\/.*/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/^https?:\\/\\/.*\\/.*sw[0-9a-z(.|_)].*/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/^((?!(^https?):\\/\\/(ajax\\.googleapis\\.com|cdnjs\\.cloudflare\\.com|fonts\\.googleapis\\.com)\\/).*)$/$script,third-party',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script])],
+ ],
+ [
+ '/^https?:\\/\\/([0-9a-z-]+\\.)?(9anime|animeland|animenova|animeplus|animetoon|animewow|gamestorrent|goodanime|gogoanime|igg-games|kimcartoon|memecenter|readcomiconline|toonget|toonova|watchcartoononline)\\.[a-z]{2,4}\\/(?!([Ee]xternal|[Ii]mages|[Ss]cripts|[Uu]ploads|ac|ajax|assets|combined|content|cov|cover|(img\\/bg)|(img\\/icon)|inc|jwplayer|player|playlist-cat-rss|static|thumbs|wp-content|wp-includes)\\/)(.*)/$image,other,script,~third-party,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.other]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^https?:\\/\\/[\\w.-]*gelbooru\\.com.*[a-zA-Z0-9?!=@%#]{40,}/$image,other',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.other]),
+ ],
+ ],
+ ['/\\.filenuke\\.com/.*[a-zA-Z0-9]{4}/$script', [(0, utils_1.hashStrings)(['filenuke', 'com'])]],
+ ['/\\.sharesix\\.com/.*[a-zA-Z0-9]{4}/$script', [(0, utils_1.hashStrings)(['sharesix', 'com'])]],
+ [
+ '/^https?:\\/\\/([0-9]{1,3}\\.){3}[0-9]{1,3}/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/http*.:\\/\\/.*[a-zA-Z0-9]{110,}.*/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ ['/https?:\\/\\/.*[&|%|#|+|=].*/$doc', [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])]],
+ [
+ '/^https?:\\/\\/([0-9]{1,3}\\.){3}[0-9]{1,3}/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/\\/[0-9].*\\-.*\\-[a-z0-9]{4}/$script,xmlhttprequest',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.xhr]),
+ ],
+ ],
+ [
+ '/^https?:\\/\\/.*\\/.*[0-9a-z]{7,16}\\.js/$script',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script])],
+ ],
+ [
+ '/^http://[a-zA-Z0-9]+\\.[a-z]+\\/.*(?:[!"#$%&()*+,:;<=>?@/\\^_`{|}~-]).*[a-zA-Z0-9]+/$script,third-party',
+ [(0, utils_1.hashStrings)(['http'])],
+ ],
+ [
+ '/http://[a-zA-Z0-9]+\\.[a-z]+\\/.*(?:[!"#$%&()*+,:;<=>?@/\\^_`{|}~-]).*[a-zA-Z0-9]+/$script,third-party',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script])],
+ ],
+ [
+ '/^https?:\\/\\/motherless\\.com\\/[a-z0-9A-Z]{3,}\\.[a-z0-9A-Z]{2,}\\_/$image,subdocument',
+ [
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.image]),
+ new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.sub_frame]),
+ ],
+ ],
+ [
+ '/^https?:\\/\\/.*\\/.*sw[0-9(.|_)].*/$script',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.script])],
+ ],
+ [
+ '/http*.:\\/\\/.*[?|=|&|%|#|+].*/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ [
+ '/\\:\\/\\/([0-9]{1,3}\\.){3}[0-9]{1,3}/$doc',
+ [new Uint32Array([request_1.NORMALIZED_TYPE_TOKEN.document])],
+ ],
+ ['@@/wp-content/themes/$script', [(0, utils_1.hashStrings)(['content'])]],
+ ]) {
+ it(`get tokens for ${filter}`, () => {
+ const parsed = network_1.default.parse(filter, true);
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.getTokens()).to.eql(regexTokens);
+ }
+ });
+ }
+ });
+});
+function cosmetic(filter, expected) {
+ const parsed = cosmetic_1.default.parse(filter);
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.isNetworkFilter()).to.be.false;
+ (0, chai_1.expect)(parsed.isCosmeticFilter()).to.be.true;
+ const verbose = {
+ // Attributes
+ domains: parsed.domains,
+ selector: parsed.getSelector(),
+ style: parsed.getStyle(),
+ // Options
+ isClassSelector: parsed.isClassSelector(),
+ isExtended: parsed.isExtended(),
+ isHrefSelector: parsed.isHrefSelector(),
+ isHtmlFiltering: parsed.isHtmlFiltering(),
+ isIdSelector: parsed.isIdSelector(),
+ isRemove: parsed.isRemove(),
+ isScriptInject: parsed.isScriptInject(),
+ isUnhide: parsed.isUnhide(),
+ };
+ (0, chai_1.expect)(verbose).to.deep.include(expected);
+ }
+ else {
+ (0, chai_1.expect)(parsed).to.equal(expected);
+ }
+}
+const DEFAULT_COSMETIC_FILTER = {
+ // Attributes
+ selector: '',
+ style: cosmetic_1.DEFAULT_HIDDING_STYLE,
+ // Options
+ isClassSelector: false,
+ isExtended: false,
+ isHrefSelector: false,
+ isHtmlFiltering: false,
+ isIdSelector: false,
+ isRemove: false,
+ isScriptInject: false,
+ isUnhide: false,
+};
+describe('Cosmetic filters', () => {
+ describe('#toString', () => {
+ const checkToString = (line, expected, debug = false) => {
+ const parsed = cosmetic_1.default.parse(line, debug);
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.toString()).to.equal(expected);
+ }
+ };
+ ['##.selector'].forEach((line) => {
+ it(`pprint ${line}`, () => {
+ checkToString(line, line);
+ });
+ });
+ it('pprint with hostnames', () => {
+ checkToString('foo.com##+js(foo.js)', '<hostnames>##+js(foo.js)');
+ checkToString('foo.com##.selector', '<hostnames>##.selector');
+ checkToString('~foo.com##.selector', '<hostnames>##.selector');
+ checkToString('~foo.*##.selector', '<hostnames>##.selector');
+ checkToString('foo.*##.selector', '<hostnames>##.selector');
+ });
+ it('pprint with debug=true', () => {
+ checkToString('foo.com##.selector', 'foo.com##.selector', true);
+ });
+ });
+ describe('#parse', () => {
+ cosmetic('##iframe[src]', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { selector: 'iframe[src]' }));
+ for (const { attr, name, symbol } of [
+ { attr: 'isClassSelector', name: 'class', symbol: '.' },
+ { attr: 'isIdSelector', name: 'id', symbol: '#' },
+ ]) {
+ describe(`${name} selectors`, () => {
+ for (const domains of ['', 'foo.com', 'foo.*', '~foo.com,foo.*']) {
+ for (const unhide of [true, false]) {
+ it('simple', () => {
+ const selector = `${symbol}selector`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ cosmetic(filter, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { [attr]: true, isUnhide: unhide, selector }));
+ });
+ for (const invalidSeparator of ['~', ', ', ' ~ ', '+', '#', ']']) {
+ const selector = `${symbol}sele${invalidSeparator}ctor`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ it(`rejects ${filter}`, () => {
+ cosmetic(filter, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { [attr]: false, isUnhide: unhide, selector }));
+ });
+ }
+ // Accepted compound selectors
+ for (const compound of [
+ '[]',
+ ' > selector',
+ ' ~ selector',
+ ' + selector',
+ ' .selector',
+ ' #selector',
+ '.selector',
+ ]) {
+ const selector = `${symbol}selector${compound}`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ it(`detects compound ${filter}`, () => {
+ cosmetic(filter, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { [attr]: true, isUnhide: unhide, selector }));
+ });
+ }
+ }
+ }
+ });
+ }
+ describe('simple href selectors', () => {
+ for (const domains of ['', 'foo.com', 'foo.*', '~foo.com,foo.*']) {
+ for (const unhide of [true, false]) {
+ describe('rejects', () => {
+ for (const prefix of ['.class', '#id', 'selector']) {
+ for (const operator of ['~=', '|=', '$=']) {
+ const selector = `${prefix}[href${operator}"https://foo.com"]`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ it(filter, () => {
+ cosmetic(filter, {
+ isHrefSelector: false,
+ isUnhide: unhide,
+ selector,
+ });
+ });
+ }
+ }
+ });
+ for (const prefix of ['a', '']) {
+ for (const operator of ['=', '*=', '^=']) {
+ // Accepts only double quotes
+ {
+ const selector = `${prefix}[href${operator}"https://foo.com"]`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ it(`detects ${filter}`, () => {
+ cosmetic(filter, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { isHrefSelector: true, isUnhide: unhide, selector }));
+ });
+ }
+ // Rejects because of single quotes
+ {
+ const selector = `${prefix}[href${operator}'https://foo.com']`;
+ const filter = `${domains}${unhide ? '#@#' : '##'}${selector}`;
+ it(`rejects ${filter}`, () => {
+ cosmetic(filter, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { isHrefSelector: false, isUnhide: unhide, selector }));
+ });
+ }
+ }
+ }
+ }
+ }
+ });
+ });
+ it('parses hostnames', () => {
+ cosmetic('foo.com##selector', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, selector: 'selector' }));
+ cosmetic('foo.com,bar.io##selector', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com', 'bar.io']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, selector: 'selector' }));
+ cosmetic('foo.com,bar.io,baz.*##selector', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ entities: h(['baz']),
+ hostnames: h(['foo.com', 'bar.io']),
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, selector: 'selector' }));
+ cosmetic('~entity.*,foo.com,~bar.io,baz.*,~entity2.*##selector', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ entities: h(['baz']),
+ hostnames: h(['foo.com']),
+ notEntities: h(['entity', 'entity2']),
+ notHostnames: h(['bar.io']),
+ parts: undefined,
+ }, selector: 'selector' }));
+ });
+ it('parses unhide', () => {
+ cosmetic('foo.com#@#selector', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, isUnhide: true, selector: 'selector' }));
+ });
+ describe('+js()', () => {
+ it('parses script inject', () => {
+ cosmetic('foo.com##+js(script.js, argument)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, isScriptInject: true, selector: 'script.js, argument' }));
+ cosmetic('foo.com##+js(script.js, arg1, arg2, arg3)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, isScriptInject: true, selector: 'script.js, arg1, arg2, arg3' }));
+ });
+ it('rejects generic script inject', () => {
+ cosmetic('##+js(script.js, argument)', null);
+ cosmetic('~foo.com##+js(script.js, argument)', null);
+ cosmetic('~foo.*##+js(script.js, argument)', null);
+ });
+ it('rejects empty non-exception', () => {
+ cosmetic('##+js()', null);
+ cosmetic('foo.com##+js()', null);
+ cosmetic('~foo.com##+js()', null);
+ });
+ it('accept empty exception', () => {
+ cosmetic('#@#+js()', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { isScriptInject: true, selector: '', isUnhide: true }));
+ });
+ });
+ describe('parses remove filters', () => {
+ it('simple', () => {
+ cosmetic('example.com##.cls:remove()', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { selector: '.cls', isRemove: true, isExtended: true }));
+ });
+ it('extended', () => {
+ cosmetic('example.com##.cls:has-text(/Foo/i):remove()', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { selector: '.cls:has-text(/Foo/i)', isRemove: true, isExtended: true }));
+ });
+ });
+ describe('parses extended filters', () => {
+ for (const pseudo of [
+ '-abp-contains',
+ '-abp-has',
+ '-abp-properties',
+ 'if-not',
+ 'matches-css',
+ 'matches-css-after',
+ 'matches-css-before',
+ 'min-text-length',
+ 'nth-ancestor',
+ 'upward',
+ 'watch-attr',
+ 'watch-attrs',
+ 'xpath',
+ ]) {
+ it(`rejects unsupported: ${pseudo}`, () => {
+ cosmetic(`example.com##.cls:${pseudo}()`, null);
+ });
+ }
+ for (const pseudo of ['has', 'has-text', 'if']) {
+ it(`parse supported: ${pseudo}`, () => {
+ cosmetic(`example.com##.cls:${pseudo}()`, Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { isExtended: true, selector: `.cls:${pseudo}()`, domains: {
+ hostnames: h(['example.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ } }));
+ });
+ }
+ });
+ describe('parses html filtering', () => {
+ it('^script:has-text()', () => {
+ cosmetic('##^script:has-text(foo bar)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { isHtmlFiltering: true, selector: '^script:has-text(foo bar)' }));
+ });
+ it('with domains', () => {
+ cosmetic('foo.com##^script:has-text(foo bar)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, isHtmlFiltering: true, selector: '^script:has-text(foo bar)' }));
+ });
+ describe('get selector', () => {
+ const test = (rule, expected) => {
+ it(`${rule}`, () => {
+ const raw = `##^${rule}`;
+ const parsed = cosmetic_1.default.parse(raw);
+ if (expected === null) {
+ (0, chai_1.expect)(parsed).to.be.null;
+ }
+ else {
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.getExtendedSelector()).to.eql(expected);
+ }
+ }
+ });
+ };
+ // Fake filters for tests
+ test('script:has-text()', ['script', ['']]);
+ test('script:has-text(a)', ['script', ['a']]);
+ test('script:has-text(/a/)', ['script', ['/a/']]);
+ test('script:has-text(/a/i)', ['script', ['/a/i']]);
+ test('script:has-text(/a//i)', ['script', ['/a//i']]);
+ test('script:has-text(/a/i/)', ['script', ['/a/i/']]);
+ test('script:has-text(())', ['script', ['()']]);
+ test('script:has-text(((a))', ['script', ['((a)']]);
+ test('script:has-text((((()', ['script', ['((((']]);
+ // Invalid filters
+ test('script:has-text(foo):)', null);
+ test('script:has-text(foo):has-text)', null);
+ // Real filters
+ test("script:has-text('+'\\x)", ['script', ["'+'\\x"]]);
+ test('script:has-text(("0x)', ['script', ['("0x']]);
+ test('script:has-text((window);)', ['script', ['(window);']]);
+ test('script:has-text(,window\\);)', ['script', [',window\\);']]);
+ test('script:has-text(/addLinkToCopy/i)', ['script', ['/addLinkToCopy/i']]);
+ test('script:has-text(/i10C/i)', ['script', ['/i10C/i']]);
+ test('script:has-text(/i10C/)', ['script', ['/i10C/']]);
+ test('script:has-text(3f87b0eaddd)', ['script', ['3f87b0eaddd']]);
+ test('script:has-text(ADBLOCK)', ['script', ['ADBLOCK']]);
+ test('script:has-text(Inject=!)', ['script', ['Inject=!']]);
+ test('script:has-text(String.fromCodePoint)', ['script', ['String.fromCodePoint']]);
+ test('script:has-text(a.HTMLImageElement.prototype)', [
+ 'script',
+ ['a.HTMLImageElement.prototype'],
+ ]);
+ test('script:has-text(this[atob)', ['script', ['this[atob']]);
+ test('script:has-text(}(window);)', ['script', ['}(window);']]);
+ test('script:has-text(/^[wW]{1700,3000}$/):has-text(/(\\xdw){250}/)', [
+ 'script',
+ ['/^[wW]{1700,3000}$/', '/(\\xdw){250}/'],
+ ]);
+ // Compound
+ test('script:has-text(===):has-text(/[wW]{14000}/)', ['script', ['===', '/[wW]{14000}/']]);
+ });
+ });
+ it('parses :style', () => {
+ cosmetic('##foo :style(display: none)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { selector: 'foo ', style: 'display: none' }));
+ cosmetic('##foo > bar >baz:style(display: none)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { selector: 'foo > bar >baz', style: 'display: none' }));
+ cosmetic('foo.com,bar.de##foo > bar >baz:style(display: none)', Object.assign(Object.assign({}, DEFAULT_COSMETIC_FILTER), { domains: {
+ hostnames: h(['foo.com', 'bar.de']),
+ entities: undefined,
+ notHostnames: undefined,
+ notEntities: undefined,
+ parts: undefined,
+ }, selector: 'foo > bar >baz', style: 'display: none' }));
+ cosmetic('foo.com,bar.de###foo > bar >baz:styleTYPO(display: none)', null);
+ });
+ // TODO
+ // it('rejects invalid selectors', () => {
+ // const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
+ // Object.defineProperty(global, 'document', { value: dom.window.document, writable: true });
+ // expect(CosmeticFilter.parse('###.selector /invalid/')).to.be.null;
+ // });
+ describe('#getScript', () => {
+ const simpleScriptlet = cosmetic_1.default.parse('foo.com##+js(script.js, arg1, arg2, arg3)');
+ it('returns undefined if script does not exist', () => {
+ (0, chai_1.expect)(simpleScriptlet === null || simpleScriptlet === void 0 ? void 0 : simpleScriptlet.getScript(new Map())).to.be.undefined;
+ });
+ it('returns a script if one exists', () => {
+ (0, chai_1.expect)(simpleScriptlet === null || simpleScriptlet === void 0 ? void 0 : simpleScriptlet.getScript(new Map([['script.js', 'test']]))).to.equal('test');
+ });
+ context('with arguments', () => {
+ it('inject values', () => {
+ (0, chai_1.expect)(simpleScriptlet === null || simpleScriptlet === void 0 ? void 0 : simpleScriptlet.getScript(new Map([['script.js', '{{1}},{{2}},{{3}}']]))).to.equal('arg1,arg2,arg3');
+ });
+ it('escapes special characters', () => {
+ for (const character of [
+ '.',
+ '*',
+ '+',
+ '?',
+ '^',
+ '$',
+ '{',
+ '}',
+ '(',
+ ')',
+ '|',
+ '[',
+ ']',
+ '\\',
+ ]) {
+ const scriptlet = cosmetic_1.default.parse(`foo.com##+js(script.js, ${character})`);
+ (0, chai_1.expect)(scriptlet === null || scriptlet === void 0 ? void 0 : scriptlet.getScript(new Map([['script.js', '{{1}}']]))).to.equal(`\\${character}`);
+ }
+ });
+ it('handles complex cases', () => {
+ for (const example of [
+ [String.raw `'\(a\)'`, String.raw `\\\(a\\\)`],
+ [String.raw `foo\*`, String.raw `foo\\\*`],
+ ]) {
+ const scriptlet = cosmetic_1.default.parse(`foo.com##+js(script.js, ${example[0]})`);
+ (0, chai_1.expect)(scriptlet === null || scriptlet === void 0 ? void 0 : scriptlet.getScript(new Map([['script.js', '{{1}}']]))).to.equal(example[1]);
+ }
+ });
+ });
+ });
+ describe('#getTokens', () => {
+ function checkTokens(filter, tokens) {
+ const parsed = cosmetic_1.default.parse(filter);
+ (0, chai_1.expect)(parsed).not.to.be.null;
+ if (parsed !== null) {
+ (0, chai_1.expect)(parsed.getTokens()).to.eql(tokens);
+ }
+ }
+ // TODO - entities, ~entities, hostnames, ~hostnames
+ it('empty tokens if none available', () => {
+ checkTokens('#@#[foo]', [new Uint32Array(0)]);
+ });
+ it('no tokens from selector if unhide', () => {
+ checkTokens('#@#.selector', [new Uint32Array(0)]);
+ checkTokens('#@##class', [new Uint32Array(0)]);
+ checkTokens('#@#.selector', [new Uint32Array(0)]);
+ });
+ describe('tokenize simple selector', () => {
+ for (const kind of ['.', '#']) {
+ for (const compound of [
+ '',
+ '[]',
+ ' > selector',
+ ' ~ selector',
+ ' + selector',
+ ' .selector',
+ ' #selector',
+ '.selector',
+ ':not(foo)',
+ ]) {
+ const filter = `##${kind}selector1${compound}`;
+ it(filter, () => {
+ checkTokens(filter, [(0, utils_1.hashStrings)(['selector1'])]);
+ });
+ }
+ }
+ });
+ describe('tokenize href selector', () => {
+ for (const prefix of ['a', '']) {
+ it('tokenize href=', () => {
+ checkTokens(`##${prefix}[href="https://foo.com"]`, [
+ (0, utils_1.tokenize)('https://foo.com', false, false),
+ ]);
+ });
+ it('tokenize href*=', () => {
+ checkTokens(`##${prefix}[href*="https://foo.com"]`, [
+ (0, utils_1.tokenize)('https://foo.com', true, true),
+ ]);
+ });
+ it('tokenize href^=', () => {
+ checkTokens(`##${prefix}[href^="https://foo.com"]`, [
+ (0, utils_1.tokenize)('https://foo.com', false, true),
+ ]);
+ });
+ }
+ });
+ });
+});
+describe('Filters list', () => {
+ it('ignores comments', () => {
+ [
+ '# ||foo.com',
+ '# ',
+ '#',
+ '!',
+ '!!',
+ '! ',
+ '! ||foo.com',
+ '[Adblock] ||foo.com',
+ '[Adblock Plus 2.0] ||foo.com',
+ ].forEach((data) => {
+ (0, chai_1.expect)((0, lists_1.parseFilters)(data)).to.eql((0, lists_1.parseFilters)(''));
+ });
+ });
+ describe('multi-line filters', () => {
+ const lines = (content) => (0, lists_1.parseFilters)(content, { debug: true }).networkFilters.map((f) => f.toString());
+ it('single filter on two lines', () => {
+ (0, chai_1.expect)(lines(['*$3p,script, \\', ' domain=x.com|y.com'].join('\n'))).to.eql([
+ '*$3p,script,domain=x.com|y.com',
+ ]);
+ });
+ it('single filter on many lines', () => {
+ (0, chai_1.expect)(lines(['*$ \\', ' 3p, \\', ' script, \\', ' domain=x.com|y.com'].join('\n'))).to.eql(['*$3p,script,domain=x.com|y.com']);
+ });
+ it('handle leading and trailing spaces', () => {
+ (0, chai_1.expect)(lines([' \t*$ \\', ' 3p, \\', ' script, \\', ' domain=x.com|y.com \t '].join('\n'))).to.eql(['*$3p,script,domain=x.com|y.com']);
+ });
+ it('mixed with normal filters and comments', () => {
+ (0, chai_1.expect)(lines([
+ '||foo.com^',
+ ' \t*$ \\',
+ ' 3p, \\',
+ ' script, \\',
+ ' domain=x.com|y.com \t ',
+ '! comment',
+ '||bar.com^',
+ '|| \\',
+ ' baz. \\',
+ ' com^',
+ ].join('\n'))).to.eql(['||foo.com^', '*$3p,script,domain=x.com|y.com', '||bar.com^', '||baz.com^']);
+ });
+ });
+});
+describe('scriptlets arguments parsing', () => {
+ it('parses empty argument list', () => {
+ const filter = cosmetic_1.default.parse('foo.com#@#+js()');
+ (0, chai_1.expect)(filter).to.not.be.null;
+ (0, chai_1.expect)(filter === null || filter === void 0 ? void 0 : filter.isScriptInject()).to.be.true;
+ (0, chai_1.expect)(filter === null || filter === void 0 ? void 0 : filter.parseScript()).to.be.undefined;
+ });
+ it('parses name without args', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: [],
+ });
+ });
+ it('parses name with simple args', () => {
+ var _a;
+ for (const [scriptlet, expected] of [
+ ['acs, $, adb', { name: 'acs', args: ['$', 'adb'] }],
+ [
+ 'abort-current-script, document.createElement, break;case $.',
+ { name: 'abort-current-script', args: ['document.createElement', 'break;case $.'] },
+ ],
+ ['acs, $, /.fadeIn|.show(.?)/', { name: 'acs', args: ['$', '/.fadeIn|.show(.?)/'] }],
+ [
+ 'acis, document.createElement, /break;case $.|popunder/',
+ { name: 'acis', args: ['document.createElement', '/break;case $.|popunder/'] },
+ ],
+ ['acs, atob, -0x1', { name: 'acs', args: ['atob', '-0x1'] }],
+ ["acs, atob, 'shift'", { name: 'acs', args: ['atob', 'shift'] }],
+ ["acs, Date, ='\\x", { name: 'acs', args: ['Date', "='\\x"] }],
+ [
+ `acs, decodeURIComponent, "'shift'"`,
+ { name: 'acs', args: ['decodeURIComponent', `'shift'`] },
+ ],
+ [
+ `acs, document.getElementById, /\\$\\('body'\\)|\\$\\("body"\\)/`,
+ { name: 'acs', args: ['document.getElementById', `/\\$\\('body'\\)|\\$\\("body"\\)/`] },
+ ],
+ [
+ 'acs, document.getElementById, showModal, /^data:text\\/javascript/',
+ {
+ name: 'acs',
+ args: ['document.getElementById', 'showModal', '/^data:text\\/javascript/'],
+ },
+ ],
+ ['aeld, mousedown, !!{});', { name: 'aeld', args: ['mousedown', '!!{});'] }],
+ ]) {
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse(`foo.com##+js(${scriptlet})`)) === null || _a === void 0 ? void 0 : _a.parseScript(), scriptlet).to.eql(expected);
+ }
+ });
+ it('parses name with empty args', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name,, , foo, , bar)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['', '', 'foo', '', 'bar'],
+ });
+ });
+ it('removes wrapping quotes', () => {
+ var _a, _b;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, "a")')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['a'],
+ });
+ (0, chai_1.expect)((_b = cosmetic_1.default.parse("foo.com##+js(script-name, 'a')")) === null || _b === void 0 ? void 0 : _b.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['a'],
+ });
+ });
+ it('handles escaping of comas', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, foo \\,bar)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['foo \\,bar'],
+ });
+ });
+ describe('handles objects arguments', () => {
+ it('empty', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, {})')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['{}'],
+ });
+ });
+ it('single key', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, {foo: 42})')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['{foo: 42}'],
+ });
+ });
+ it('multiple keys', () => {
+ var _a, _b;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, {foo: 1, bar: 2})')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['{foo: 1, bar: 2}'],
+ });
+ (0, chai_1.expect)((_b = cosmetic_1.default.parse('foo.com##+js(aeld, { "type": "click", "pattern": "popMagic", "runAt": "idle" })')) === null || _b === void 0 ? void 0 : _b.parseScript()).to.eql({
+ name: 'aeld',
+ args: ['{ "type": "click", "pattern": "popMagic", "runAt": "idle" }'],
+ });
+ });
+ it('nested', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, {foo: 1, bar: 2, baz: {a: 1, b: 2}}, arg2,)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['{foo: 1, bar: 2, baz: {a: 1, b: 2}}', 'arg2', ''],
+ });
+ });
+ it('escaping', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, \\{foo: 1, bar: 2\\}, {baz: {a: 1, b: 2}})')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['\\{foo: 1', 'bar: 2\\}', '{baz: {a: 1, b: 2}}'],
+ });
+ });
+ it('nested quotes', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse(`foo.com##+js(script-name, {foo: "}", bar: '{'})`)) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: [`{foo: "}", bar: '{'}`],
+ });
+ });
+ });
+ describe('handles regexp arguments', () => {
+ it('empty', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, //)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['//'],
+ });
+ });
+ it('simple', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, /foo/)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['/foo/'],
+ });
+ });
+ it('complex', () => {
+ var _a;
+ for (const [scriptlet, expected] of [
+ [
+ 'script-name, {x, y',
+ {
+ name: 'script-name',
+ args: ['{x', 'y'],
+ },
+ ],
+ [
+ 'script-name, "x, y',
+ {
+ name: 'script-name',
+ args: ['"x', 'y'],
+ },
+ ],
+ [
+ "script-name, 'x, y",
+ {
+ name: 'script-name',
+ args: ["'x", 'y'],
+ },
+ ],
+ [
+ 'script-name, /x, y',
+ {
+ name: 'script-name',
+ args: ['/x', 'y'],
+ },
+ ],
+ [
+ 'xml-prune,a/b,///,,c',
+ {
+ name: 'xml-prune',
+ args: ['a/b', '///', '', 'c'],
+ },
+ ],
+ [
+ `xml-prune, xpath(//*[name()="MPD"]/@mediaPresentationDuration | //*[name()="Period"][.//*[name()="BaseURL" and contains(text()\\,'/ads-')]] | //*[name()="Period"]/@start), Period[id^="Ad"i], .mpd`,
+ {
+ name: 'xml-prune',
+ args: [
+ `xpath(//*[name()="MPD"]/@mediaPresentationDuration | //*[name()="Period"][.//*[name()="BaseURL" and contains(text()\\,'/ads-')]] | //*[name()="Period"]/@start)`,
+ 'Period[id^="Ad"i]',
+ '.mpd',
+ ],
+ },
+ ],
+ [
+ 'xml-prune,a/b,,c',
+ {
+ name: 'xml-prune',
+ args: ['a/b', '', 'c'],
+ },
+ ],
+ [
+ 'xml-prune, xpath(//*[name()="Period"][.//*[@value="Ad"]] | //*[name()="Period"]/@start), [value="Ad"], .mpd',
+ {
+ name: 'xml-prune',
+ args: [
+ 'xpath(//*[name()="Period"][.//*[@value="Ad"]] | //*[name()="Period"]/@start)',
+ '[value="Ad"]',
+ '.mpd',
+ ],
+ },
+ ],
+ [
+ 'acs, Math, /\\}\\s*\\(.*?\\b(self|this|window)\\b.*?\\)/',
+ {
+ name: 'acs',
+ args: ['Math', '/\\}\\s*\\(.*?\\b(self|this|window)\\b.*?\\)/'],
+ },
+ ],
+ [
+ 'aeld, click, /event_callback=function\\(\\){window\\.location=t\\.getAttribute\\("href"\\)/',
+ {
+ name: 'aeld',
+ args: [
+ 'click',
+ '/event_callback=function\\(\\){window\\.location=t\\.getAttribute\\("href"\\)/',
+ ],
+ },
+ ],
+ [
+ 'm3u-prune, /\\,ad\n.+?(?=#UPLYNK-SEGMENT)/gm, .m3u8',
+ {
+ name: 'm3u-prune',
+ args: ['/\\,ad\n.+?(?=#UPLYNK-SEGMENT)/gm', '.m3u8'],
+ },
+ ],
+ // Also works without escaping the coma
+ [
+ 'm3u-prune, /,ad\n.+?(?=#UPLYNK-SEGMENT)/gm, .m3u8',
+ {
+ name: 'm3u-prune',
+ args: ['/,ad\n.+?(?=#UPLYNK-SEGMENT)/gm', '.m3u8'],
+ },
+ ],
+ ]) {
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse(`foo.com##+js(${scriptlet})`)) === null || _a === void 0 ? void 0 : _a.parseScript(), scriptlet).to.eql(expected);
+ }
+ });
+ it('contains coma', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, /foo,bar/)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['/foo,bar/'],
+ });
+ });
+ it('escaping', () => {
+ var _a;
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse('foo.com##+js(script-name, \\/foo, bar\\/)')) === null || _a === void 0 ? void 0 : _a.parseScript()).to.eql({
+ name: 'script-name',
+ args: ['\\/foo', 'bar\\/'],
+ });
+ });
+ });
+ it('complex patterns', () => {
+ var _a;
+ for (const [scriptlet, expected] of [
+ [
+ 'trusted-replace-fetch-response, /\\"adPlacements.*?\\"\\}\\}\\}\\]\\,/, , player?key=',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"adPlacements.*?\\"\\}\\}\\}\\]\\,/', '', 'player?key='],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adPlacements.*?true.*?\\"\\}\\}\\}\\]\\,/, , url:player?key= method:/post/i',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: [
+ '/\\"adPlacements.*?true.*?\\"\\}\\}\\}\\]\\,/',
+ '',
+ 'url:player?key= method:/post/i',
+ ],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adPlacements.*?\\"\\}\\}\\}\\]\\,/, , url:player?key= method:/post/i bodyUsed:true',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: [
+ '/\\"adPlacements.*?\\"\\}\\}\\}\\]\\,/',
+ '',
+ 'url:player?key= method:/post/i bodyUsed:true',
+ ],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adSlots.*?\\}\\]\\}\\}\\]\\,/, , player?key=',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"adSlots.*?\\}\\]\\}\\}\\]\\,/', '', 'player?key='],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adSlots.*?true.*?\\}\\]\\}\\}\\]\\,/, , url:player?key= method:/post/i',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"adSlots.*?true.*?\\}\\]\\}\\}\\]\\,/', '', 'url:player?key= method:/post/i'],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adSlots.*?\\}\\]\\}\\}\\]\\,/, , url:player?key= method:/post/i',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"adSlots.*?\\}\\]\\}\\}\\]\\,/', '', 'url:player?key= method:/post/i'],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"adSlots.*?\\}\\]\\}\\}\\]\\,/, , url:player?key= method:/post/i bodyUsed:true',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: [
+ '/\\"adSlots.*?\\}\\]\\}\\}\\]\\,/',
+ '',
+ 'url:player?key= method:/post/i bodyUsed:true',
+ ],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"playerAds.*?\\}\\}\\]\\,/, , player?key=',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"playerAds.*?\\}\\}\\]\\,/', '', 'player?key='],
+ },
+ ],
+ [
+ 'trusted-replace-fetch-response, /\\"playerAds.*?true.*?\\}\\}\\]\\,/, , url:player?key= method:/post/i',
+ {
+ name: 'trusted-replace-fetch-response',
+ args: ['/\\"playerAds.*?true.*?\\}\\}\\]\\,/', '', 'url:player?key= method:/post/i'],
+ },
+ ],
+ ]) {
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse(`foo.com##+js(${scriptlet})`)) === null || _a === void 0 ? void 0 : _a.parseScript(), scriptlet).to.eql(expected);
+ }
+ });
+ it('unescapes escaped scriptlets', () => {
+ var _a;
+ for (const [scriptlet, expected] of [
+ [
+ String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject(["script-name, \\(a\\)"], ["script-name, \\u005C(a\\u005C)"]))),
+ {
+ name: 'script-name',
+ args: [String.raw `\(a\)`],
+ },
+ ],
+ [
+ String.raw(templateObject_2 || (templateObject_2 = __makeTemplateObject(["script-name, {\"a\":1,\"b\":2}"], ["script-name, {\"a\":1\\u002C\"b\":2}"]))),
+ {
+ name: 'script-name',
+ args: [String.raw `{"a":1,"b":2}`],
+ },
+ ],
+ ]) {
+ (0, chai_1.expect)((_a = cosmetic_1.default.parse(`foo.com##+js(${scriptlet})`)) === null || _a === void 0 ? void 0 : _a.parseScript(), scriptlet).to.eql(expected);
+ }
+ });
+});
+var templateObject_1, templateObject_2;
+//# sourceMappingURL=parsing.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js.map
new file mode 100644
index 0000000..4ef63b5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/parsing.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"parsing.test.js","sourceRoot":"","sources":["../../../test/parsing.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js
new file mode 100644
index 0000000..2f579e6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js
@@ -0,0 +1,208 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const punycode_1 = require("../src/punycode");
+describe('#punycode', () => {
+ const checkString = (hostname) => {
+ (0, chai_1.expect)((0, punycode_1.toUnicode)((0, punycode_1.toASCII)(hostname))).to.equal(hostname);
+ };
+ it('empty string', () => {
+ checkString('');
+ });
+ [
+ // ASCII hostnames
+ 'expogrim.com',
+ // Unicode hostnames from public suffix list
+ 'aéroport.ci',
+ 'comunicações.museum',
+ 'correios-e-telecomunicações.museum',
+ 'läns.museum',
+ 'åkrehamn.no',
+ 'ålgård.no',
+ 'brønnøysund.no',
+ 'drøbak.no',
+ 'florø.no',
+ 'hønefoss.no',
+ 'jørpeland.no',
+ 'langevåg.no',
+ 'mjøndalen.no',
+ 'mosjøen.no',
+ 'osøyro.no',
+ 'råholt.no',
+ 'sandnessjøen.no',
+ 'stjørdalshalsen.no',
+ 'åfjord.no',
+ 'ål.no',
+ 'ålesund.no',
+ 'áltá.no',
+ 'álaheadju.no',
+ 'åmli.no',
+ 'åmot.no',
+ 'andøy.no',
+ 'årdal.no',
+ 'ås.no',
+ 'åseral.no',
+ 'askøy.no',
+ 'åsnes.no',
+ 'aurskog-høland.no',
+ 'averøy.no',
+ 'bálát.no',
+ 'báhccavuotna.no',
+ 'bájddar.no',
+ 'báidár.no',
+ 'berlevåg.no',
+ 'bearalváhki.no',
+ 'bjarkøy.no',
+ 'bodø.no',
+ 'bådåddjå.no',
+ 'brønnøy.no',
+ 'bærum.no',
+ 'bø.telemark.no',
+ 'bø.nordland.no',
+ 'bievát.no',
+ 'bømlo.no',
+ 'båtsfjord.no',
+ 'báhcavuotna.no',
+ 'dyrøy.no',
+ 'dønna.no',
+ 'evenášši.no',
+ 'finnøy.no',
+ 'flå.no',
+ 'fræna.no',
+ 'frøya.no',
+ 'førde.no',
+ 'gáŋgaviika.no',
+ 'gildeskål.no',
+ 'gjøvik.no',
+ 'kråanghke.no',
+ 'hábmer.no',
+ 'hápmir.no',
+ 'hámmárfeasta.no',
+ 'ákŋoluokta.no',
+ 'herøy.møre-og-romsdal.no',
+ 'herøy.nordland.no',
+ 'hobøl.no',
+ 'holtålen.no',
+ 'hægebostad.no',
+ 'høyanger.no',
+ 'høylandet.no',
+ 'hå.no',
+ 'inderøy.no',
+ 'jølster.no',
+ 'kárášjohka.no',
+ 'gálsá.no',
+ 'karmøy.no',
+ 'klæbu.no',
+ 'kragerø.no',
+ 'krødsherad.no',
+ 'ráhkkerávju.no',
+ 'kvitsøy.no',
+ 'kvæfjord.no',
+ 'kvænangen.no',
+ 'návuotna.no',
+ 'kåfjord.no',
+ 'gáivuotna.no',
+ 'loabát.no',
+ 'lindås.no',
+ 'láhppi.no',
+ 'lurøy.no',
+ 'lærdal.no',
+ 'lødingen.no',
+ 'lørenskog.no',
+ 'løten.no',
+ 'måsøy.no',
+ 'muosát.no',
+ 'meløy.no',
+ 'meråker.no',
+ 'moåreke.no',
+ 'målselv.no',
+ 'málatvuopmi.no',
+ 'nååmesjevuemie.no',
+ 'unjárga.no',
+ 'davvenjárga.no',
+ 'ráisa.no',
+ 'nærøy.no',
+ 'nøtterøy.no',
+ 'øksnes.no',
+ 'oppegård.no',
+ 'ørland.no',
+ 'ørskog.no',
+ 'ørsta.no',
+ 'osterøy.no',
+ 'østre-toten.no',
+ 'øvre-eiker.no',
+ 'øyer.no',
+ 'øygarden.no',
+ 'øystre-slidre.no',
+ 'porsáŋgu.no',
+ 'radøy.no',
+ 'rennesøy.no',
+ 'risør.no',
+ 'rælingen.no',
+ 'rødøy.no',
+ 'rømskog.no',
+ 'røros.no',
+ 'røst.no',
+ 'røyken.no',
+ 'røyrvik.no',
+ 'råde.no',
+ 'sálát.no',
+ 'sálat.no',
+ 'sande.møre-og-romsdal.no',
+ 'sandøy.no',
+ 'skjervøy.no',
+ 'skiervá.no',
+ 'skjåk.no',
+ 'skånland.no',
+ 'skánit.no',
+ 'smøla.no',
+ 'snåsa.no',
+ 'snåase.no',
+ 'stjørdal.no',
+ 'søgne.no',
+ 'sømna.no',
+ 'søndre-land.no',
+ 'sør-aurdal.no',
+ 'sør-fron.no',
+ 'sør-odal.no',
+ 'sør-varanger.no',
+ 'mátta-várjjat.no',
+ 'sørfold.no',
+ 'sørreisa.no',
+ 'sørum.no',
+ 'tjøme.no',
+ 'tranøy.no',
+ 'tromsø.no',
+ 'træna.no',
+ 'trøgstad.no',
+ 'tysvær.no',
+ 'tønsberg.no',
+ 'vadsø.no',
+ 'čáhcesuolo.no',
+ 'vardø.no',
+ 'várggát.no',
+ 'vegårshei.no',
+ 'vestvågøy.no',
+ 'værøy.no',
+ 'vågan.no',
+ 'vågsøy.no',
+ 'vågå.no',
+ 'våler.østfold.no',
+ 'våler.hedmark.no',
+ 'vermögensberater',
+ 'vermögensberatung',
+ ].forEach((hostname) => {
+ it(hostname, () => {
+ checkString(hostname);
+ });
+ });
+});
+//# sourceMappingURL=punycode.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js.map
new file mode 100644
index 0000000..9b478bc
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/punycode.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"punycode.test.js","sourceRoot":"","sources":["../../../test/punycode.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js
new file mode 100644
index 0000000..d465acb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js
@@ -0,0 +1,250 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const request_1 = require("../src/request");
+describe('#Request', () => {
+ describe('#fromRawDetails', () => {
+ it('sets default type', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({})).to.deep.include({ type: 'main_frame' });
+ });
+ it('gets type from arguments', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ type: 'script' })).to.deep.include({ type: 'script' });
+ });
+ it('sets default url to empty', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({})).to.deep.include({
+ domain: '',
+ hostname: '',
+ url: '',
+ });
+ });
+ it('converts url to lower case', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'https://sub.FOO.cOm/bar' })).to.deep.include({
+ domain: 'foo.com',
+ hostname: 'sub.foo.com',
+ url: 'https://sub.foo.com/bar',
+ });
+ });
+ it('parses url', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'https://sub.foo.com/bar' })).to.deep.include({
+ domain: 'foo.com',
+ hostname: 'sub.foo.com',
+ url: 'https://sub.foo.com/bar',
+ });
+ });
+ it('does not parse url if hostname and domain provided', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ domain: 'PROVIDED DOMAIN',
+ hostname: 'PROVIDED HOSTNAME',
+ url: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ domain: 'PROVIDED DOMAIN',
+ hostname: 'PROVIDED HOSTNAME',
+ url: 'https://sub.foo.com/bar',
+ });
+ });
+ it('parses url if only hostname is provided', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ hostname: 'PROVIDED HOSTNAME',
+ url: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ domain: 'foo.com',
+ hostname: 'PROVIDED HOSTNAME',
+ url: 'https://sub.foo.com/bar',
+ });
+ });
+ it('parses url if only domain is provided', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ domain: 'PROVIDED DOMAIN',
+ url: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ domain: 'PROVIDED DOMAIN',
+ hostname: 'sub.foo.com',
+ url: 'https://sub.foo.com/bar',
+ });
+ });
+ it('sets default sourceUrl to empty', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({})).to.deep.include({
+ sourceHostnameHashes: new Uint32Array(0),
+ });
+ });
+ it('converts sourceUrl to lower case', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ sourceUrl: 'https://sub.FOO.cOm/bar' })).to.deep.include({
+ sourceHostnameHashes: (0, request_1.getHostnameHashesFromLabelsBackward)('sub.foo.com', 'foo.com'),
+ });
+ });
+ it('parses sourceUrl', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ sourceUrl: 'https://sub.foo.com/bar' })).to.deep.include({
+ sourceHostnameHashes: (0, request_1.getHostnameHashesFromLabelsBackward)('sub.foo.com', 'foo.com'),
+ });
+ });
+ it('does not parse sourceUrl if hostname and domain provided', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceDomain: 'provided.domain',
+ sourceHostname: 'hostname.provided.domain',
+ sourceUrl: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ sourceHostnameHashes: (0, request_1.getHostnameHashesFromLabelsBackward)('hostname.provided.domain', 'provided.domain'),
+ });
+ });
+ it('parses sourceUrl if only hostname is provided', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceHostname: 'hostname.provided.domain',
+ sourceUrl: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ sourceHostnameHashes: (0, request_1.getHostnameHashesFromLabelsBackward)('hostname.provided.domain', 'provided.domain'),
+ });
+ });
+ it('fallback to domain for hostname value', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceDomain: 'provided.domain',
+ sourceUrl: 'https://sub.foo.com/bar',
+ })).to.deep.include({
+ sourceHostnameHashes: (0, request_1.getHostnameHashesFromLabelsBackward)('provided.domain', 'provided.domain'),
+ });
+ });
+ it('overrides type for websocket requests', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'ws://foo.com' }).type).to.equal('websocket');
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'wss://foo.com' }).type).to.equal('websocket');
+ });
+ it('supports http protocol', () => {
+ const expected = {
+ isHttp: true,
+ isHttps: false,
+ isSupported: true,
+ };
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'http:///foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'http://foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'http:/foo.com' })).to.deep.include(expected);
+ });
+ it('supports https protocol', () => {
+ const expected = {
+ isHttp: false,
+ isHttps: true,
+ isSupported: true,
+ };
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'https:///foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'https://foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'https:/foo.com' })).to.deep.include(expected);
+ });
+ it('supports ws protocol', () => {
+ const expected = {
+ isHttp: false,
+ isHttps: false,
+ isSupported: true,
+ };
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'ws:///foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'ws://foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'ws:/foo.com' })).to.deep.include(expected);
+ });
+ it('supports wss protocol', () => {
+ const expected = {
+ isHttp: false,
+ isHttps: false,
+ isSupported: true,
+ };
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'wss:///foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'wss://foo.com' })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: 'wss:/foo.com' })).to.deep.include(expected);
+ });
+ it('handles data urls', () => {
+ for (const url of [
+ 'data:,Hello%2C%20World!',
+ 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D',
+ 'data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E',
+ 'data:text/html,<script>alert("hi");</script>',
+ ]) {
+ const cleanUrl = url.slice(0, url.indexOf(','));
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url })).to.deep.include({
+ isHttp: false,
+ isHttps: false,
+ isSupported: true,
+ url: cleanUrl,
+ });
+ }
+ });
+ it('detects unsupported protocols', () => {
+ const expected = {
+ isHttp: false,
+ isHttps: false,
+ isSupported: false,
+ };
+ for (const protocol of ['foobar', 'ip', 'ftp', 'git', 'ssh', 'smtp', 'pop3', 'imap']) {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: `${protocol}:///foo.com` })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: `${protocol}://foo.com` })).to.deep.include(expected);
+ (0, chai_1.expect)(request_1.default.fromRawDetails({ url: `${protocol}:/foo.com` })).to.deep.include(expected);
+ }
+ });
+ describe('finds partyness', () => {
+ it('considers as first-party if type is main_frame', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceUrl: 'https://sub1.sub2.bar.com',
+ url: 'https://foo.com',
+ })).to.deep.include({
+ isFirstParty: true,
+ isThirdParty: false,
+ });
+ });
+ it('correctly uses domains when available if type not main_frame', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ sourceUrl: 'https://foo.com',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: true,
+ isThirdParty: false,
+ });
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceUrl: 'https://sub1.sub2.foo.com',
+ url: 'https://foo.com',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: true,
+ isThirdParty: false,
+ });
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceUrl: 'https://sub1.sub2.bar.com',
+ url: 'https://foo.com',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: false,
+ isThirdParty: true,
+ });
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceUrl: 'https://localhost:4242/',
+ url: 'https://foo.com',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: false,
+ isThirdParty: true,
+ });
+ });
+ it('falls-back to first-party if no sourceUrl and type not main_frame', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ url: 'https://foo.com',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: true,
+ isThirdParty: false,
+ });
+ });
+ it('falls-back to first-party if no url and type not main_frame', () => {
+ (0, chai_1.expect)(request_1.default.fromRawDetails({
+ sourceUrl: 'null',
+ type: 'script',
+ })).to.deep.include({
+ isFirstParty: true,
+ isThirdParty: false,
+ });
+ });
+ });
+ });
+});
+//# sourceMappingURL=request.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js.map
new file mode 100644
index 0000000..a91ff2d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/request.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"request.test.js","sourceRoot":"","sources":["../../../test/request.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js
new file mode 100644
index 0000000..4890e33
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js
@@ -0,0 +1,76 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const utils_1 = require("./utils");
+const data_view_1 = require("../src/data-view");
+const resources_1 = require("../src/resources");
+describe('#Resources', () => {
+ describe('#serialize', () => {
+ const resources = resources_1.default.parse((0, utils_1.loadResources)(), { checksum: 'checksum' });
+ (0, chai_1.expect)(resources.checksum).to.equal('checksum');
+ const buffer = data_view_1.StaticDataView.allocate(2000000, { enableCompression: false });
+ resources.serialize(buffer);
+ buffer.seekZero();
+ (0, chai_1.expect)(resources_1.default.deserialize(buffer)).to.eql(resources);
+ });
+ describe('#parse', () => {
+ it('parses empty resources', () => {
+ const resources = resources_1.default.parse('', { checksum: 'checksum' });
+ (0, chai_1.expect)(resources.checksum).to.equal('checksum');
+ (0, chai_1.expect)(resources.js).to.eql(new Map());
+ (0, chai_1.expect)(resources.resources).to.eql(new Map());
+ });
+ it('parses one resource', () => {
+ const resources = resources_1.default.parse('foo application/javascript\ncontent', {
+ checksum: 'checksum',
+ });
+ (0, chai_1.expect)(resources.checksum).to.equal('checksum');
+ (0, chai_1.expect)(resources.js).to.eql(new Map([['foo', 'content']]));
+ (0, chai_1.expect)(resources.resources).to.eql(new Map([['foo', { contentType: 'application/javascript', body: 'content' }]]));
+ });
+ it('parses two resources', () => {
+ const resources = resources_1.default.parse(['foo application/javascript\ncontent1', 'pixel.png image/png;base64\ncontent2'].join('\n\n'), { checksum: 'checksum' });
+ (0, chai_1.expect)(resources.checksum).to.equal('checksum');
+ (0, chai_1.expect)(resources.js).to.eql(new Map([['foo', 'content1']]));
+ (0, chai_1.expect)(resources.resources).to.eql(new Map([
+ ['foo', { contentType: 'application/javascript', body: 'content1' }],
+ ['pixel.png', { contentType: 'image/png;base64', body: 'content2' }],
+ ]));
+ });
+ it('robust to weird format', () => {
+ const resources = resources_1.default.parse(`
+# Comment
+ # Comment 2
+foo application/javascript
+content1
+# Comment 3
+
+# Type missing
+pixel.png
+content
+
+# Content missing
+pixel.png image/png;base64
+
+# This one is good!
+pixel.png image/png;base64
+content2
+`, { checksum: 'checksum' });
+ (0, chai_1.expect)(resources.checksum).to.equal('checksum');
+ (0, chai_1.expect)(resources.js).to.eql(new Map([['foo', 'content1']]));
+ (0, chai_1.expect)(resources.resources).to.eql(new Map([
+ ['foo', { contentType: 'application/javascript', body: 'content1' }],
+ ['pixel.png', { contentType: 'image/png;base64', body: 'content2' }],
+ ]));
+ });
+ });
+});
+//# sourceMappingURL=resources.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js.map
new file mode 100644
index 0000000..d661217
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/resources.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"resources.test.js","sourceRoot":"","sources":["../../../test/resources.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js
new file mode 100644
index 0000000..0410326
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js
@@ -0,0 +1,237 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const config_1 = require("../src/config");
+const data_view_1 = require("../src/data-view");
+const optimizer_1 = require("../src/engine/optimizer");
+const reverse_index_1 = require("../src/engine/reverse-index");
+const cosmetic_1 = require("../src/filters/cosmetic");
+const network_1 = require("../src/filters/network");
+const lists_1 = require("../src/lists");
+const utils_1 = require("../src/utils");
+const utils_2 = require("./utils");
+describe('ReverseIndex', () => {
+ const { cosmeticFilters, networkFilters } = (0, lists_1.parseFilters)(utils_2.allLists, { debug: true });
+ [new config_1.default({ enableCompression: true }), new config_1.default({ enableCompression: false })].forEach((config) => {
+ describe(`compression = ${config.enableCompression}`, () => {
+ describe('#serialize', () => {
+ function testSerializeIndexImpl(filters, deserialize, optimize) {
+ const reverseIndex = new reverse_index_1.default({
+ config,
+ deserialize,
+ filters,
+ optimize,
+ });
+ // Serialize index
+ const buffer = data_view_1.StaticDataView.allocate(reverseIndex.getSerializedSize(), config);
+ reverseIndex.serialize(buffer);
+ // Make sure that we predicted serialized size properly
+ (0, chai_1.expect)(buffer.pos).to.equal(buffer.buffer.byteLength);
+ // Deserialize
+ buffer.seekZero();
+ const deserialized = reverse_index_1.default.deserialize(buffer, deserialize, optimize, config);
+ (0, chai_1.expect)(deserialized).to.eql(reverseIndex);
+ }
+ it('network (optimize = false)', () => {
+ testSerializeIndexImpl(networkFilters, network_1.default.deserialize, optimizer_1.noopOptimizeNetwork);
+ });
+ it('network (optimize = true)', () => {
+ testSerializeIndexImpl(networkFilters, network_1.default.deserialize, optimizer_1.optimizeNetwork);
+ });
+ it('cosmetic', () => {
+ testSerializeIndexImpl(cosmeticFilters, cosmetic_1.default.deserialize, optimizer_1.noopOptimizeCosmetic);
+ });
+ });
+ describe('#getFilters', () => {
+ it('network (optimize = false)', () => {
+ (0, chai_1.expect)(new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: networkFilters,
+ optimize: optimizer_1.noopOptimizeNetwork,
+ }).getFilters()).to.eql(networkFilters);
+ });
+ it('network (optimize = true)', () => {
+ (0, chai_1.expect)(new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: networkFilters,
+ optimize: optimizer_1.optimizeNetwork,
+ }).getFilters()).to.eql(networkFilters);
+ });
+ it('cosmetic', () => {
+ (0, chai_1.expect)(new reverse_index_1.default({
+ config,
+ deserialize: cosmetic_1.default.deserialize,
+ filters: cosmeticFilters,
+ optimize: optimizer_1.noopOptimizeCosmetic,
+ }).getFilters()).to.eql(cosmeticFilters);
+ });
+ });
+ for (const optimize of [optimizer_1.noopOptimizeNetwork, optimizer_1.optimizeNetwork]) {
+ describe(`optimize = ${optimize !== optimizer_1.noopOptimizeNetwork}`, () => {
+ it('#update', () => {
+ const reverseIndex = new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: (0, lists_1.parseFilters)('||foo.com', { loadCosmeticFilters: false, debug: true })
+ .networkFilters,
+ optimize,
+ });
+ // Expect our filter to be listed
+ let filters = reverseIndex.getFilters();
+ (0, chai_1.expect)(filters.map((f) => f.rawLine)).to.eql(['||foo.com']);
+ // Add one new filter
+ reverseIndex.update((0, lists_1.parseFilters)('||bar.com', { loadCosmeticFilters: false, debug: true })
+ .networkFilters, undefined);
+ filters = reverseIndex.getFilters();
+ (0, chai_1.expect)(filters.map((f) => f.rawLine)).to.eql(['||foo.com', '||bar.com']);
+ // Add a third filter and remove the two others
+ reverseIndex.update((0, lists_1.parseFilters)('||baz.com', { loadCosmeticFilters: false, debug: true })
+ .networkFilters, new Set(filters.map((f) => f.getId())));
+ filters = reverseIndex.getFilters();
+ (0, chai_1.expect)(filters.map((f) => f.rawLine)).to.eql(['||baz.com']);
+ // Update with no filters
+ reverseIndex.update([], new Set(reverseIndex.getFilters().map((f) => f.getId())));
+ (0, chai_1.expect)(reverseIndex.getFilters()).to.eql([]);
+ });
+ describe('#iterMatchingFilters', () => {
+ const emptyIndex = new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: [],
+ optimize,
+ });
+ const filters = `
+||foo.com
+/ads/tracker.js$image
+|woot|$redirect=noop.js
+ `;
+ const exampleIndex = new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: (0, lists_1.parseFilters)(filters, { loadCosmeticFilters: false, debug: true })
+ .networkFilters,
+ optimize,
+ });
+ it('works on empty index', () => {
+ let matches = 0;
+ const cb = (_) => {
+ matches += 1;
+ return true;
+ };
+ // No tokens
+ emptyIndex.iterMatchingFilters(new Uint32Array(0), cb);
+ (0, chai_1.expect)(matches).to.equal(0);
+ // Some tokens
+ emptyIndex.iterMatchingFilters((0, utils_1.tokenize)('foo bar baz', false, false), cb);
+ (0, chai_1.expect)(matches).to.equal(0);
+ });
+ it('handle no match', () => {
+ for (let i = 0; i < 100; i += 1) {
+ let matches = 0;
+ const cb = (_) => {
+ matches += 1;
+ return true;
+ };
+ // No tokens
+ exampleIndex.iterMatchingFilters(new Uint32Array([i]), cb);
+ (0, chai_1.expect)(matches).to.equal(0);
+ }
+ });
+ describe('finds matches', () => {
+ const matches = new Set();
+ let ret = true;
+ const cb = (f) => {
+ matches.add(f.rawLine);
+ return ret;
+ };
+ [
+ ['foo', ['||foo.com']],
+ ['com', []],
+ ['ads', ['/ads/tracker.js$image']],
+ ['foo.ads', ['||foo.com', '/ads/tracker.js$image']],
+ ['woot', ['|woot|$redirect=noop.js']],
+ ['https://bar.foo.com/ads/tracker.js', ['||foo.com', '/ads/tracker.js$image']],
+ ].forEach(([input, expected]) => {
+ describe(`token=${input}, expected=${JSON.stringify(expected)}`, () => {
+ it('get all matches', () => {
+ matches.clear();
+ ret = true; // iterate on all filters
+ exampleIndex.iterMatchingFilters((0, utils_1.tokenize)(input, false, false), cb);
+ (0, chai_1.expect)(matches).to.eql(new Set(expected));
+ });
+ it('check early termination', () => {
+ matches.clear();
+ ret = false; // early termination on first filter
+ exampleIndex.iterMatchingFilters((0, utils_1.tokenize)(input, false, false), cb);
+ (0, chai_1.expect)(matches.size).to.equal(expected.length === 0 ? 0 : 1);
+ });
+ });
+ });
+ });
+ it('stores filters without tokens in wildcard bucket', () => {
+ const index = new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: (0, lists_1.parseFilters)(`
+wildcard
+||foo.com
+ `, { loadCosmeticFilters: false, debug: true }).networkFilters,
+ optimize,
+ });
+ const matches = new Set();
+ const cb = (f) => {
+ matches.add(f.rawLine);
+ return true;
+ };
+ // Wildcard filter is always returned
+ [
+ ['foo', ['||foo.com', 'wildcard']],
+ ['com', ['wildcard']], // filter was indexed using 'foo' and not 'com'
+ ].forEach(([input, expected]) => {
+ // Get all matches
+ matches.clear();
+ index.iterMatchingFilters((0, utils_1.tokenize)(input, false, false), cb);
+ (0, chai_1.expect)(matches).to.eql(new Set(expected));
+ });
+ });
+ });
+ describe('#getTokens', () => {
+ it('no token if empty', () => {
+ (0, chai_1.expect)(new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: [],
+ optimize,
+ }).getTokens()).to.eql(new Uint32Array(0));
+ });
+ it('returns all indexing tokens', () => {
+ (0, chai_1.expect)(new reverse_index_1.default({
+ config,
+ deserialize: network_1.default.deserialize,
+ filters: (0, lists_1.parseFilters)(`
+/ads^
+/foo^
+-bar-
+ `).networkFilters,
+ optimize,
+ })
+ .getTokens()
+ .sort()).to.eql(new Uint32Array([(0, utils_1.fastHash)('ads'), (0, utils_1.fastHash)('foo'), (0, utils_1.fastHash)('bar')]).sort());
+ });
+ });
+ });
+ }
+ });
+ });
+});
+//# sourceMappingURL=reverse-index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js.map
new file mode 100644
index 0000000..7372143
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/reverse-index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"reverse-index.test.js","sourceRoot":"","sources":["../../../test/reverse-index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js
new file mode 100644
index 0000000..b200678
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js
@@ -0,0 +1,127 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const utils_1 = require("./utils");
+const config_1 = require("../src/config");
+const data_view_1 = require("../src/data-view");
+const engine_1 = require("../src/engine/engine");
+const cosmetic_1 = require("../src/filters/cosmetic");
+const network_1 = require("../src/filters/network");
+const lists_1 = require("../src/lists");
+describe('Serialization', () => {
+ const { cosmeticFilters, networkFilters } = (0, lists_1.parseFilters)(utils_1.allLists, new config_1.default({ debug: true }));
+ describe('Config', () => {
+ it('serializes with exact size', () => {
+ const config = new config_1.default();
+ const buffer = data_view_1.StaticDataView.allocate(config.getSerializedSize(), config);
+ config.serialize(buffer);
+ // Check size
+ (0, chai_1.expect)(buffer.slice()).to.have.lengthOf(config.getSerializedSize());
+ // Check deserialization
+ buffer.seekZero();
+ (0, chai_1.expect)(config_1.default.deserialize(buffer)).to.eql(config);
+ });
+ });
+ describe('filters', () => {
+ const buffer = data_view_1.StaticDataView.allocate(1000000, { enableCompression: false });
+ const checkFilterSerialization = (Filter, filter) => {
+ // Keep track of original ID to make sure it's preserved after lazy
+ // attributes are set and filter is serialized/deserialized.
+ const originalId = filter.getId();
+ // Serialize filter
+ buffer.seekZero();
+ filter.serialize(buffer);
+ // Reload filter
+ buffer.seekZero();
+ const deserialized = Filter.deserialize(buffer);
+ // @ts-ignore
+ (0, chai_1.expect)(deserialized.id).to.be.undefined;
+ (0, chai_1.expect)(deserialized.getId()).to.equal(originalId);
+ (0, chai_1.expect)(deserialized).to.eql(filter);
+ };
+ it('cosmetic', () => {
+ for (let i = 0; i < cosmeticFilters.length; i += 1) {
+ checkFilterSerialization(cosmetic_1.default, cosmeticFilters[i]);
+ }
+ });
+ it('network', () => {
+ for (let i = 0; i < networkFilters.length; i += 1) {
+ checkFilterSerialization(network_1.default, networkFilters[i]);
+ }
+ });
+ });
+ describe('Engine', () => {
+ it('fails with wrong version', () => {
+ const engine = engine_1.default.parse('||domain');
+ const serialized = engine.serialize();
+ const version = serialized[0];
+ serialized[0] = (serialized[0] + 1) % 256; // override version
+ (0, chai_1.expect)(() => {
+ engine_1.default.deserialize(serialized);
+ }).to.throw();
+ serialized[0] = version;
+ (0, chai_1.expect)(engine_1.default.deserialize(serialized)).to.eql(engine);
+ });
+ it('check integrity', () => {
+ const engine = engine_1.default.parse('||domain', { integrityCheck: true });
+ const serialized = engine.serialize();
+ for (let i = 0; i < serialized.length; i += 1) {
+ const value = serialized[i];
+ let randomValue = value;
+ while (randomValue === value) {
+ randomValue = Math.floor(Math.random() * 255);
+ }
+ serialized[i] = randomValue;
+ // Expect engine to throw
+ (0, chai_1.expect)(() => {
+ engine_1.default.deserialize(serialized);
+ }).to.throw();
+ serialized[i] = value;
+ }
+ (0, chai_1.expect)(engine_1.default.deserialize(serialized)).to.eql(engine);
+ });
+ it('disable integrity check', () => {
+ const engine = engine_1.default.parse('||domain', { integrityCheck: true });
+ const serialized = engine.serialize();
+ const end = serialized.length - 1;
+ const value = serialized[end];
+ serialized[end] += 1;
+ (0, chai_1.expect)(() => {
+ engine_1.default.deserialize(serialized);
+ }).to.throw();
+ serialized[end] = value;
+ (0, chai_1.expect)(engine_1.default.deserialize(serialized)).to.eql(engine);
+ });
+ it('handles full engine', () => {
+ const engine = new engine_1.default();
+ engine.updateResources((0, utils_1.loadResources)(), 'resources1');
+ engine.lists.set('list1', 'checksum');
+ engine.update({
+ newCosmeticFilters: cosmeticFilters,
+ newNetworkFilters: networkFilters,
+ });
+ const baseSerialized = engine.serialize();
+ let deserialized = engine_1.default.deserialize(baseSerialized);
+ (0, chai_1.expect)(deserialized).to.eql(engine);
+ let serialized = deserialized.serialize();
+ (0, chai_1.expect)((0, utils_1.typedArrayEqual)(serialized, baseSerialized)).to.be.true;
+ // Perform several deserializations in a row. Testing this is needed to
+ // make sure the low-level typed array manipulation do not corrupt the
+ // data.
+ for (let i = 0; i < 3; i += 1) {
+ deserialized = engine_1.default.deserialize(serialized);
+ serialized = deserialized.serialize();
+ (0, chai_1.expect)((0, utils_1.typedArrayEqual)(serialized, baseSerialized)).to.be.true;
+ }
+ });
+ });
+});
+//# sourceMappingURL=serialization.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js.map
new file mode 100644
index 0000000..3e5a9f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/serialization.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"serialization.test.js","sourceRoot":"","sources":["../../../test/serialization.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js
new file mode 100644
index 0000000..adbb6a1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js
@@ -0,0 +1,83 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typedArrayEqual = exports.typedArrayDiff = exports.getRawTrackerDB = exports.getNaughtyStrings = exports.loadResources = exports.allLists = exports.loadEasyListFilters = void 0;
+const fs = require("fs");
+const path = require("path");
+const zlib = require("zlib");
+const adblocker_1 = require("../adblocker");
+function loadEasyListFilters() {
+ return JSON.parse(fs.readFileSync(path.resolve(__dirname, 'data', 'easylist.json'), { encoding: 'utf-8' }));
+}
+exports.loadEasyListFilters = loadEasyListFilters;
+function readAsset(filepath) {
+ return fs.readFileSync(path.resolve(__dirname, '../', filepath), 'utf-8');
+}
+const PREFIX = 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';
+exports.allLists = (() => {
+ return adblocker_1.fullLists
+ .map((p) => path.join('assets', p.slice(PREFIX.length)))
+ .map((p) => readAsset(p))
+ .join('\n');
+})();
+function loadResources() {
+ return readAsset('assets/ublock-origin/resources.txt');
+}
+exports.loadResources = loadResources;
+function getNaughtyStrings() {
+ return fs.readFileSync(path.resolve(__dirname, 'data', 'blns.txt'), 'utf-8').split('\n');
+}
+exports.getNaughtyStrings = getNaughtyStrings;
+function getRawTrackerDB() {
+ const trackerdb = JSON.parse(zlib.unzipSync(fs.readFileSync(path.resolve(__dirname, 'data', 'trackerdb_20221213.json.gz'))).toString('utf-8'));
+ for (const [key, pattern] of Object.entries(trackerdb.patterns)) {
+ if (pattern !== null && typeof pattern === 'object') {
+ Object.assign(pattern, { key });
+ }
+ }
+ for (const [key, category] of Object.entries(trackerdb.categories)) {
+ if (category !== null && typeof category === 'object') {
+ Object.assign(category, { key });
+ }
+ }
+ for (const [key, organization] of Object.entries(trackerdb.organizations)) {
+ if (organization !== null && typeof organization === 'object') {
+ Object.assign(organization, { key });
+ }
+ }
+ return trackerdb;
+}
+exports.getRawTrackerDB = getRawTrackerDB;
+function typedArrayDiff(arr1, arr2) {
+ const differences = [];
+ if (arr1.byteLength !== arr2.byteLength) {
+ differences.push(`Diff (length): ${JSON.stringify({
+ arr1_length: arr1.byteLength,
+ arr2_length: arr2.byteLength,
+ })}`);
+ return differences;
+ }
+ for (let i = 0; i < arr1.byteLength; i += 1) {
+ if (arr1[i] !== arr2[i]) {
+ differences.push(`Diff (values): ${JSON.stringify({
+ arr1: arr1[i],
+ arr2: arr2[i],
+ i,
+ })}`);
+ break;
+ }
+ }
+ return differences;
+}
+exports.typedArrayDiff = typedArrayDiff;
+function typedArrayEqual(arr1, arr2) {
+ return typedArrayDiff(arr1, arr2).length === 0;
+}
+exports.typedArrayEqual = typedArrayEqual;
+//# sourceMappingURL=utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js.map
new file mode 100644
index 0000000..049d158
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../test/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js
new file mode 100644
index 0000000..4100df3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js
@@ -0,0 +1,213 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const tokens_buffer_1 = require("../src/tokens-buffer");
+const lists_1 = require("../src/lists");
+const utils_1 = require("../src/utils");
+const requests_1 = require("./data/requests");
+const utils_2 = require("./utils");
+const network_1 = require("../src/filters/network");
+function t(tokens) {
+ return new Uint32Array(tokens.map(utils_1.fastHash));
+}
+function checkCollisions(filters) {
+ const hashes = new Map();
+ for (const filter of filters) {
+ const id = filter.getId();
+ const found = hashes.get(id);
+ const raw = (0, network_1.normalizeRawFilterOptions)(filter.toString());
+ if (found !== undefined && raw !== found) {
+ throw new Error(`expected ${raw} to not collide, found ${found}`);
+ }
+ hashes.set(id, raw);
+ }
+}
+describe('utils.ts', () => {
+ describe('#normalizeRawFilterOptions', () => {
+ it('handles empty string', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('')).to.equal('');
+ });
+ it('handle empty selector', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('$css')).to.equal('$css');
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('$stylesheet')).to.equal('$css');
+ });
+ it('does nothing on normalized', () => {
+ for (const filter of ['/ads/', '/ads/$css', '/ads/$css,font']) {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)(filter), filter).to.equal(filter);
+ }
+ });
+ it('normalizes trailing wildcard', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('*$css')).to.equal('$css');
+ });
+ it('ignores options from selector', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('/ads/$first-party/still/selector$css')).to.equal('/ads/$first-party/still/selector$css');
+ });
+ it('returns lower-cased filter', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('/Ads/')).to.equal('/ads/');
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('/Ads/$CSS')).to.equal('/ads/$css');
+ });
+ it('removes $all option', () => {
+ (0, chai_1.expect)((0, network_1.normalizeRawFilterOptions)('/ads/$all')).to.equal('/ads/');
+ });
+ });
+ describe('#fastHash', () => {
+ it('does not produce collision on network filters', () => {
+ checkCollisions((0, lists_1.parseFilters)(utils_2.allLists, {
+ loadCosmeticFilters: false,
+ debug: true,
+ }).networkFilters);
+ });
+ it('does not produce collision on cosmetic filters', () => {
+ checkCollisions((0, lists_1.parseFilters)(utils_2.allLists, {
+ loadNetworkFilters: false,
+ debug: true,
+ }).cosmeticFilters);
+ });
+ it('does not produce collision on requests dataset', () => {
+ const networkFiltersFromRequests = [];
+ for (const { filters } of requests_1.default) {
+ for (const filter of filters) {
+ const parsed = network_1.default.parse(filter);
+ if (parsed === null) {
+ throw new Error(`Could not parse ${filter}`);
+ }
+ networkFiltersFromRequests.push(parsed);
+ }
+ }
+ checkCollisions(networkFiltersFromRequests);
+ });
+ it('returns HASH_SEED for empty string and non-strings', () => {
+ (0, chai_1.expect)((0, utils_1.fastHash)('')).to.equal(utils_1.HASH_SEED);
+ (0, chai_1.expect)((0, utils_1.fastHashBetween)('', 0, 0)).to.equal(utils_1.HASH_SEED);
+ // @ts-ignore
+ (0, chai_1.expect)((0, utils_1.fastHash)([])).to.equal(utils_1.HASH_SEED);
+ });
+ });
+ it('detects remaining space in buffer', () => {
+ const buffer = new tokens_buffer_1.TokensBuffer(1);
+ buffer.reset();
+ (0, utils_1.tokenizeInPlace)('/foo/baz/baz', false, false, buffer);
+ (0, chai_1.expect)(buffer.pos).to.equal(1);
+ buffer.reset();
+ (0, utils_1.tokenizeNoSkipInPlace)('/foo/baz/baz', buffer);
+ (0, chai_1.expect)(buffer.pos).to.equal(1);
+ buffer.reset();
+ (0, utils_1.tokenizeWithWildcardsInPlace)('/foo/baz/baz', false, false, buffer);
+ (0, chai_1.expect)(buffer.pos).to.equal(1);
+ });
+ it('#tokenizeWithWildcards', () => {
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('', true, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('', false, true)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('', true, true)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo.barƬ*', false, false)).to.eql(t(['foo']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo.barƬ*', false, true)).to.eql(t(['foo']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo.barƬ*', true, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo.barƬ*', true, true)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('*foo.barƬ', false, false)).to.eql(t(['barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('*foo.barƬ*', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('*foo*barƬ*', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo*barƬ*', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo*barƬ', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo**barƬ', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo/bar baz', false, false)).to.eql(t(['foo', 'bar', 'baz']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo/bar baz', true, false)).to.eql(t(['bar', 'baz']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo/bar baz', true, true)).to.eql(t(['bar']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo/bar baz', false, true)).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenizeWithWildcards)('foo////bar baz', false, true)).to.eql(t(['foo', 'bar']));
+ });
+ it('#tokenize', () => {
+ (0, chai_1.expect)((0, utils_1.tokenize)('', false, false)).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo', false, false)).to.eql(t(['foo']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo/bar', false, false)).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo-bar', false, false)).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo.bar', false, false)).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo.barƬ', false, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('*foo.barƬ', false, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('*foo*.barƬ', false, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('*foo*.barƬ', true, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo*.barƬ', false, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo.*barƬ', false, false)).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenize)('foo.barƬ*', false, false)).to.eql(t(['foo', 'barƬ']));
+ });
+ it('#tokenizeNoSkip', () => {
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('')).to.eql(t([]));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo')).to.eql(t(['foo']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo/bar')).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo-bar')).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo.bar')).to.eql(t(['foo', 'bar']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo.barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('*foo.barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('*foo*.barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('*foo*.barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo*.barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo.*barƬ')).to.eql(t(['foo', 'barƬ']));
+ (0, chai_1.expect)((0, utils_1.tokenizeNoSkip)('foo.barƬ*')).to.eql(t(['foo', 'barƬ']));
+ });
+ it('#hasUnicode', () => {
+ for (let i = 0; i < 127; i += 1) {
+ (0, chai_1.expect)((0, utils_1.hasUnicode)(`foo${String.fromCharCode(i)}`)).to.be.false;
+ }
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('。◕ ∀ ◕。)')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('`ィ(´∀`∩')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('__ロ(,_,*)')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('・( ̄∀ ̄)・:*:')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('゚・✿ヾ╲(。◕‿◕。)╱✿・゚')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)(',。・:*:・゜’( ☻ ω ☻ )。・:*:・゜’')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('(╯°□°)╯︵ ┻━┻)')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('(ノಥ益ಥ)ノ ┻━┻')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('┬─┬ノ( º _ ºノ)')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('( ͡° ͜ʖ ͡°)')).to.be.true;
+ (0, chai_1.expect)((0, utils_1.hasUnicode)('¯_(ツ)_/¯')).to.be.true;
+ });
+ it('#binLookup', () => {
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array(0), 42)).to.be.false;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([]), 42)).to.be.false;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([42]), 42)).to.be.true;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 42)).to.be.true;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 1)).to.be.true;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 3)).to.be.true;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 43)).to.be.false;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 0)).to.be.false;
+ (0, chai_1.expect)((0, utils_1.binLookup)(new Uint32Array([1, 2, 3, 4, 42]), 5)).to.be.false;
+ });
+ describe('#binSearch', () => {
+ it('returns -1 on empty array', () => {
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array(0), 42)).to.equal(-1);
+ });
+ it('handles array of one element', () => {
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([1]), 42)).to.equal(-1);
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([42]), 42)).to.equal(0);
+ });
+ it('handles array of two elements', () => {
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([0, 1]), 42)).to.equal(-1);
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([1, 42]), 42)).to.equal(1);
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([42, 1]), 42)).to.equal(0);
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array([42, 42]), 42)).not.to.equal(-1);
+ });
+ it('handles no match', () => {
+ (0, chai_1.expect)((0, utils_1.binSearch)(new Uint32Array(10000), 42)).to.equal(-1);
+ });
+ it('handles match on first element', () => {
+ const array = new Uint32Array(10000);
+ for (let i = 1; i < array.length; i += 1) {
+ array[i] = 1;
+ }
+ (0, chai_1.expect)((0, utils_1.binSearch)(array, 0)).to.equal(0);
+ });
+ it('handles match on last element', () => {
+ const array = new Uint32Array(10000);
+ array[array.length - 1] = 42;
+ (0, chai_1.expect)((0, utils_1.binSearch)(array, 42)).to.equal(array.length - 1);
+ });
+ });
+});
+//# sourceMappingURL=utils.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js.map
new file mode 100644
index 0000000..401cdae
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/test/utils.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../test/utils.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js
new file mode 100644
index 0000000..8af1e00
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const path_1 = require("path");
+(async () => {
+ const engineSourcePath = (0, path_1.resolve)(__dirname, (0, path_1.join)('..', 'src', 'engine', 'engine.ts'));
+ const engineSource = await fs_1.promises.readFile(engineSourcePath, 'utf-8');
+ await fs_1.promises.writeFile(engineSourcePath, engineSource.replace(/(^export const ENGINE_VERSION =\s+)(\d+)(;$)/m, (match, prefix, version, suffix, offset) => {
+ console.log('Match:', { match, prefix, version, suffix, offset });
+ const currentVersion = Number(version);
+ console.log('Current version:', currentVersion);
+ const nextVersion = currentVersion + 1;
+ console.log('Next version:', nextVersion);
+ return `${prefix}${nextVersion}${suffix}`;
+ }), 'utf-8');
+})();
+//# sourceMappingURL=auto-bump-engine-version.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js.map
new file mode 100644
index 0000000..c43766b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/auto-bump-engine-version.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"auto-bump-engine-version.js","sourceRoot":"","sources":["../../../tools/auto-bump-engine-version.ts"],"names":[],"mappings":";;AAAA,2BAAoC;AACpC,+BAAqC;AAErC,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,gBAAgB,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,IAAA,WAAI,EAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAElE,MAAM,aAAE,CAAC,SAAS,CAChB,gBAAgB,EAChB,YAAY,CAAC,OAAO,CAClB,+CAA+C,EAC/C,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAE1C,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,CAAC;IAC5C,CAAC,CACF,EACD,OAAO,CACR,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js
new file mode 100644
index 0000000..3da8e2b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js
@@ -0,0 +1,66 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("../test/utils");
+const adblocker_1 = require("../adblocker");
+(() => {
+ var _a, _b, _c;
+ const rawTrackerDB = (0, utils_1.getRawTrackerDB)();
+ // Measure creating engine from TrackerDB release
+ {
+ const times = [];
+ for (let i = 0; i < 1; i += 1) {
+ const t0 = Date.now();
+ adblocker_1.FiltersEngine.fromTrackerDB(rawTrackerDB);
+ const t1 = Date.now();
+ times.push(t1 - t0);
+ }
+ console.log('Create TrackerDB engine:', Math.min(...times), 'milliseconds');
+ }
+ // Measure serialization and deserialization
+ {
+ const buffer = new Uint8Array(2000000);
+ const serializationTimes = [];
+ const deserializationTimes = [];
+ for (let i = 0; i < 100; i += 1) {
+ const engine = adblocker_1.FiltersEngine.fromTrackerDB(rawTrackerDB);
+ const st0 = Date.now();
+ const serialized = engine.serialize(buffer);
+ const st1 = Date.now();
+ serializationTimes.push(st1 - st0);
+ const dt0 = Date.now();
+ adblocker_1.FiltersEngine.deserialize(serialized);
+ const dt1 = Date.now();
+ deserializationTimes.push(dt1 - dt0);
+ }
+ console.log('Serialize TrackerDB engine:', Math.min(...serializationTimes), 'milliseconds');
+ console.log('Deserialize TrackerDB engine:', Math.min(...deserializationTimes), 'milliseconds');
+ }
+ // Measure matching time
+ {
+ const matchingTimes = [];
+ const inputs = [];
+ for (const pattern of ((_b = (_a = adblocker_1.FiltersEngine.fromTrackerDB(rawTrackerDB)) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.getPatterns()) ||
+ []) {
+ for (const domain of pattern.domains) {
+ inputs.push(adblocker_1.NetworkFilter.parse(`||${domain}^`));
+ }
+ for (const filter of pattern.filters) {
+ inputs.push(adblocker_1.NetworkFilter.parse(filter));
+ }
+ }
+ for (let i = 0; i < 1; i += 1) {
+ const engine = adblocker_1.FiltersEngine.fromTrackerDB(rawTrackerDB);
+ const t0 = Date.now();
+ for (const input of inputs) {
+ if (!((_c = engine.metadata) === null || _c === void 0 ? void 0 : _c.fromFilter(input))) {
+ console.error('This should never happen!');
+ }
+ }
+ const t1 = Date.now();
+ matchingTimes.push(t1 - t0);
+ }
+ console.log('Matching against TrackerDB engine:', Math.min(...matchingTimes) / inputs.length, 'milliseconds per call to `fromFilter(...)`');
+ console.log(`Total to match all domains and filters from TrackerDB (${inputs.length}):`, Math.min(...matchingTimes), 'milliseconds');
+ }
+})();
+//# sourceMappingURL=bench-metadata.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js.map
new file mode 100644
index 0000000..9ccfb85
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/bench-metadata.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bench-metadata.js","sourceRoot":"","sources":["../../../tools/bench-metadata.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js
new file mode 100644
index 0000000..bbf4446
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js
@@ -0,0 +1,53 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const path_1 = require("path");
+const zlib_1 = require("zlib");
+const adblocker_1 = require("../adblocker");
+const PREFIX = 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';
+async function loadFromLocalAssets(lists) {
+ return (await Promise.all(lists
+ .map((path) => (0, path_1.join)(__dirname, '..', 'assets', path.slice(PREFIX.length)))
+ .map((path) => fs_1.promises.readFile(path, 'utf-8')))).join('\n');
+}
+function loadAdsLists() {
+ return loadFromLocalAssets(adblocker_1.adsLists);
+}
+function loadAdsAndTrackingLists() {
+ return loadFromLocalAssets(adblocker_1.adsAndTrackingLists);
+}
+function loadFullLists() {
+ return loadFromLocalAssets(adblocker_1.fullLists);
+}
+(async () => {
+ for (const [name, raw] of [
+ ['ads', await loadAdsLists()],
+ ['ads + trackers', await loadAdsAndTrackingLists()],
+ ['ads + trackers + annoyances', await loadFullLists()],
+ ]) {
+ for (const config of [
+ { loadNetworkFilters: true, loadCosmeticFilters: true },
+ { loadNetworkFilters: false, loadCosmeticFilters: true },
+ { loadNetworkFilters: true, loadCosmeticFilters: false },
+ ]) {
+ const engine = adblocker_1.FiltersEngine.parse(raw, Object.assign({ enableCompression: true }, config));
+ const { networkFilters, cosmeticFilters } = engine.getFilters();
+ console.log(`> ${name} (${networkFilters.length} network + ${cosmeticFilters.length} hide)`);
+ for (const [compression, compress] of [
+ ['raw', (b) => b],
+ ['gzip', zlib_1.gzipSync],
+ ['brotli', zlib_1.brotliCompressSync],
+ ]) {
+ console.log(' +', compression, compress(engine.serialize()).byteLength, 'bytes');
+ }
+ }
+ }
+})();
+//# sourceMappingURL=engine-size.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js.map
new file mode 100644
index 0000000..d1e46e6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/engine-size.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine-size.js","sourceRoot":"","sources":["../../../tools/engine-size.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,2BAAoC;AACpC,+BAA4B;AAC5B,+BAAoD;AAEpD,4CAAuF;AAEvF,MAAM,MAAM,GACV,wFAAwF,CAAC;AAE3F,KAAK,UAAU,mBAAmB,CAAC,KAAe;IAChD,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,KAAK;SACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;SACzE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC7C,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,mBAAmB,CAAC,oBAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,mBAAmB,CAAC,+BAAmB,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,mBAAmB,CAAC,qBAAS,CAAC,CAAC;AACxC,CAAC;AAED,CAAC,KAAK,IAAI,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI;QACxB,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,CAAC;QAC7B,CAAC,gBAAgB,EAAE,MAAM,uBAAuB,EAAE,CAAC;QACnD,CAAC,6BAA6B,EAAE,MAAM,aAAa,EAAE,CAAC;KACvD,EAAE;QACD,KAAK,MAAM,MAAM,IAAI;YACnB,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE;YACvD,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE;YACxD,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE;SACzD,EAAE;YACD,MAAM,MAAM,GAAG,yBAAa,CAAC,KAAK,CAAC,GAAG,kBAAI,iBAAiB,EAAE,IAAI,IAAK,MAAM,EAAG,CAAC;YAChF,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,cAAc,CAAC,MAAM,cAAc,eAAe,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC7F,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI;gBACpC,CAAC,KAAK,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC,MAAM,EAAE,eAAQ,CAAC;gBAClB,CAAC,QAAQ,EAAE,yBAAkB,CAAC;aACc,EAAE;gBAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aAClF;SACF;KACF;AACH,CAAC,CAAC,EAAE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js
new file mode 100644
index 0000000..8b543e6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js
@@ -0,0 +1,123 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const path_1 = require("path");
+const smaz_generate_1 = require("@remusao/smaz-generate");
+const smaz_1 = require("@remusao/smaz");
+const adblocker_1 = require("../adblocker");
+const PREFIX = 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';
+async function loadAllLists() {
+ return (await Promise.all(adblocker_1.fullLists
+ .map((path) => (0, path_1.join)(__dirname, '..', 'assets', path.slice(PREFIX.length)))
+ .map((path) => fs_1.promises.readFile(path, 'utf-8')))).join('\n');
+}
+async function getCosmeticFilters() {
+ return (0, adblocker_1.parseFilters)(await loadAllLists(), {
+ debug: true,
+ loadCosmeticFilters: true,
+ loadNetworkFilters: false,
+ enableHtmlFiltering: true,
+ }).cosmeticFilters;
+}
+async function getNetworkFilters() {
+ return (0, adblocker_1.parseFilters)(await loadAllLists(), {
+ debug: true,
+ loadCosmeticFilters: false,
+ loadNetworkFilters: true,
+ loadExtendedSelectors: true,
+ }).networkFilters;
+}
+async function getStrings(kind) {
+ switch (kind) {
+ case 'network-csp':
+ return (await getNetworkFilters())
+ .filter((filter) => filter.isUnicode() === false)
+ .map(({ csp }) => csp || '')
+ .filter((csp) => csp.length !== 0);
+ case 'network-redirect':
+ return (await getNetworkFilters())
+ .filter((filter) => filter.isUnicode() === false)
+ .map(({ redirect }) => redirect || '')
+ .filter((redirect) => redirect.length !== 0);
+ case 'network-filter':
+ return (await getNetworkFilters())
+ .filter((filter) => filter.isUnicode() === false)
+ .map(({ filter }) => filter || '')
+ .filter((filter) => filter.length !== 0);
+ case 'network-hostname':
+ return (await getNetworkFilters())
+ .filter((filter) => filter.isUnicode() === false)
+ .map(({ hostname }) => hostname || '')
+ .filter((hostname) => hostname.length !== 0);
+ case 'cosmetic-selector':
+ return (await getCosmeticFilters())
+ .filter((filter) => filter.isUnicode() === false)
+ .map(({ selector }) => selector || '')
+ .filter((selector) => selector.length !== 0);
+ case 'raw-cosmetic':
+ return (await getCosmeticFilters()).map((f) => f.toString()).filter((f) => !(0, adblocker_1.hasUnicode)(f));
+ case 'raw-network':
+ return (await getNetworkFilters()).map((f) => f.toString()).filter((f) => !(0, adblocker_1.hasUnicode)(f));
+ default:
+ throw new Error(`Unsupported codebook: ${kind}`);
+ }
+}
+function validateCodebook(codebook, strings) {
+ console.log('Validating codebook', codebook);
+ console.log(`Checking ${strings.length} strings...`);
+ const smaz = new smaz_1.Smaz(codebook);
+ let maxSize = 0;
+ let minSize = Number.MAX_SAFE_INTEGER;
+ let totalSize = 0;
+ let totalCompressed = 0;
+ for (const str of strings) {
+ const compressed = smaz.compress(str);
+ const original = smaz.decompress(compressed);
+ if (original !== str) {
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+ throw new Error(`Mismatch: ${str} vs. ${original} (compressed: ${compressed})`);
+ }
+ totalSize += str.length;
+ totalCompressed += compressed.length;
+ maxSize = Math.max(maxSize, str.length);
+ minSize = Math.min(minSize, str.length);
+ }
+ console.log('Codebook validated:', {
+ maxSize,
+ minSize,
+ totalSize,
+ totalCompressed,
+ compressionRatio: 100.0 * ((totalSize - totalCompressed) / totalSize),
+ });
+}
+async function generateCodebook(kind) {
+ const strings = await getStrings(kind);
+ console.log(`Generate codebook ${kind} using ${strings.length} strings.`);
+ const options = kind.startsWith('raw-') ? { maxNgram: 26 } : {};
+ const codebook = (0, smaz_generate_1.generate)(strings, options);
+ validateCodebook(codebook, strings);
+ return codebook;
+}
+(async () => {
+ const kind = process.argv[process.argv.length - 1];
+ const codebook = await generateCodebook(kind);
+ const output = (0, path_1.resolve)(__dirname, `../src/codebooks/${kind}.ts`);
+ console.log('Updating', output);
+ await fs_1.promises.writeFile(output, [
+ '/*!',
+ ' * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.',
+ ' *',
+ ' * This Source Code Form is subject to the terms of the Mozilla Public',
+ ' * License, v. 2.0. If a copy of the MPL was not distributed with this',
+ ' * file, You can obtain one at https://mozilla.org/MPL/2.0/.',
+ ' */',
+ '/* eslint-disable prettier/prettier */',
+ `export default ${JSON.stringify(codebook.sort((str1, str2) => {
+ if (str1.length !== str2.length) {
+ return str2.length - str1.length;
+ }
+ return str1.localeCompare(str2);
+ }), null, 2)};`,
+ ].join('\n'), 'utf-8');
+})();
+//# sourceMappingURL=generate_compression_codebooks.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js.map
new file mode 100644
index 0000000..bbddf8c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/generate_compression_codebooks.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"generate_compression_codebooks.js","sourceRoot":"","sources":["../../../tools/generate_compression_codebooks.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js
new file mode 100644
index 0000000..5bbb776
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js
@@ -0,0 +1,141 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const path_1 = require("path");
+const adblocker_1 = require("../adblocker");
+class Counter {
+ constructor() {
+ this.counter = new Map();
+ }
+ incr(key) {
+ this.counter.set(key, (this.counter.get(key) || 0) + 1);
+ }
+ get(key) {
+ return this.counter.get(key) || 0;
+ }
+ set(key, value) {
+ this.counter.set(key, value);
+ }
+ entries() {
+ return Array.from(this.counter.entries());
+ }
+}
+const PREFIX = 'https://raw.githubusercontent.com/cliqz-oss/adblocker/master/packages/adblocker/assets';
+async function loadAllLists() {
+ return (await Promise.all(adblocker_1.fullLists
+ .map((path) => (0, path_1.join)(__dirname, '..', 'assets', path.slice(PREFIX.length)))
+ .map((path) => fs_1.promises.readFile(path, 'utf-8')))).join('\n');
+}
+(async () => {
+ let numberOfFiltersSupported = 0;
+ let numberOfFiltersUnsupported = 0;
+ const unsupported = new Counter();
+ for (const line of (await loadAllLists()).split(/\s*[\r\n]+\s*/g)) {
+ switch ((0, adblocker_1.detectFilterType)(line)) {
+ case 1 /* FilterType.NETWORK */: {
+ // Filter is not supported as is, try to find out why.
+ if (adblocker_1.NetworkFilter.parse(line) === null) {
+ numberOfFiltersUnsupported += 1;
+ const optionStart = line.lastIndexOf('$');
+ // No option and not supported
+ if (optionStart === -1) {
+ unsupported.incr(line);
+ continue;
+ }
+ // Not supported even without options
+ if (adblocker_1.NetworkFilter.parse(line.slice(0, optionStart)) === null) {
+ unsupported.incr(line);
+ continue;
+ }
+ // Try to drop each option and check if one is causing the filter parsing
+ // failure. If we can't find one such option, we just report the full line
+ // as not being supported.
+ let found = false;
+ const options = line.slice(optionStart + 1).split(',');
+ for (const option of options) {
+ if (adblocker_1.NetworkFilter.parse(`${line.slice(0, optionStart)}$${option}`) === null) {
+ found = true;
+ unsupported.incr(option);
+ }
+ }
+ if (found === false) {
+ unsupported.incr(line);
+ }
+ }
+ else {
+ numberOfFiltersSupported += 1;
+ }
+ break;
+ }
+ case 2 /* FilterType.COSMETIC */: {
+ // Filter is not supported as is, try to find out why.
+ if (adblocker_1.CosmeticFilter.parse(line) === null) {
+ numberOfFiltersUnsupported += 1;
+ // Most likely the issue is one or more procedural filters so we will
+ // try to identify all of them and strip them one by one from the raw
+ // line. Each time we strip an operator, we check if the filter can be
+ // parsed.
+ let indexOfColon = line.indexOf(':');
+ let strippedFilter = line;
+ let found = false;
+ while (indexOfColon !== -1) {
+ // Detect something of the form: :<operator>(
+ const indexOfParenthesis = strippedFilter.indexOf('(', indexOfColon);
+ if (indexOfParenthesis !== -1) {
+ // Make sure 'operator' looks valid.
+ const operator = strippedFilter.slice(indexOfColon, indexOfParenthesis);
+ if (/^:[a-z-]+$/.test(operator)) {
+ const filterWithoutOperator = `${strippedFilter.slice(0, indexOfColon)}${strippedFilter.slice(indexOfParenthesis)}`;
+ unsupported.incr(operator);
+ if (adblocker_1.CosmeticFilter.parse(filterWithoutOperator) !== null) {
+ found = true;
+ break;
+ }
+ strippedFilter = filterWithoutOperator;
+ }
+ }
+ indexOfColon = strippedFilter.indexOf(':', indexOfColon + 1);
+ }
+ if (found === false) {
+ unsupported.incr(line);
+ }
+ }
+ else {
+ numberOfFiltersSupported += 1;
+ }
+ break;
+ }
+ default: {
+ if (line.length !== 0 &&
+ line.startsWith('!') === false &&
+ line.startsWith('[Adblock') === false) {
+ numberOfFiltersUnsupported += 1;
+ const indexOfSharp = line.indexOf('#');
+ if (indexOfSharp !== -1 && line.startsWith('#?#', indexOfSharp)) {
+ unsupported.incr('#?#');
+ }
+ else {
+ unsupported.incr(line);
+ }
+ }
+ break;
+ }
+ }
+ }
+ for (const [name, count] of unsupported.entries().sort(([, c1], [, c2]) => c2 - c1)) {
+ console.log(`+ ${name} = ${count}`);
+ }
+ console.log({
+ numberOfFiltersSupported,
+ numberOfFiltersUnsupported,
+ percentage: 100 - 100.0 * (numberOfFiltersUnsupported / numberOfFiltersSupported),
+ });
+})();
+//# sourceMappingURL=priorities.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js.map
new file mode 100644
index 0000000..6affb5c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/priorities.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"priorities.js","sourceRoot":"","sources":["../../../tools/priorities.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js
new file mode 100644
index 0000000..2a3ac22
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js
@@ -0,0 +1,345 @@
+"use strict";
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * This script can be used to stress-test the adblocker and validate our filter
+ * builder at the same time. In a nutshell, it will download all the supported
+ * lists (available on CDN), as well as all the possible diffs from one version
+ * to the next for each list then perform the following:
+ *
+ * 1. check: FiltersEngine can be initialized from list
+ * 2. check: FiltersEngine can be updated with diff
+ * 3. check: serialized version of FiltersEngine is byte-identical after update
+ * 4. check: serialized versions can be de-serialized into the same FiltersEngine
+ * 5. check: no ID collisions for filters
+ */
+const axios_1 = require("axios");
+const zlib_1 = require("zlib");
+const adblocker_1 = require("../adblocker");
+const utils_1 = require("../test/utils");
+/**
+ * Convert `option` into its normalized version, if any. Otherwise return the
+ * option un-changed. For example `stylesheet` will be normalized to `css`.
+ * This particular helper could eventually be included in the adblocker library
+ * directly but it is not yet clear if the expected performance overhead is
+ * worth it.
+ *
+ * This transformation is needed so that we can actually detect diffs. In some
+ * cases, filters are simply migrated to new option: 'foo$stylesheet' to
+ * 'foo$css'. This is conceptually the exact same filter but the original
+ * string is different so the FiltersEngine before and after update would
+ * contain the same filters except in `debug` mode where the rawLine of this
+ * particular filter would not match.
+ */
+function replacer(option) {
+ switch (option) {
+ case 'third-party':
+ return '3p';
+ case 'first-party':
+ return '1p';
+ case 'object-subrequest':
+ return 'object';
+ case 'stylesheet':
+ return 'css';
+ case 'subdocument':
+ return 'frame';
+ case 'xmlhttprequest':
+ return 'xhr';
+ case 'document':
+ return 'doc';
+ default:
+ return 'option';
+ }
+}
+/**
+ * Normalize a raw filter by replacing options with their canonical forms. For
+ * example `||foo.com$stylesheet,first-party,xhr` would be normalized to
+ * `||foo.com$css,1p,xhr`.
+ */
+const REGEX = /third-party|first-party|object-subrequest|stylesheet|subdocument|xmlhttprequest|document/g;
+function normalizeFilters(rawFilter) {
+ if (rawFilter.startsWith('|http*://$')) {
+ rawFilter = rawFilter.slice(9);
+ }
+ if (rawFilter.includes('object,object')) {
+ rawFilter = rawFilter.replace('object,object', 'object');
+ }
+ const indexOfOptions = rawFilter.lastIndexOf('$');
+ if (indexOfOptions === -1) {
+ return rawFilter;
+ }
+ REGEX.lastIndex = indexOfOptions;
+ return rawFilter.replace(REGEX, replacer);
+}
+/**
+ * Global config used for all `FiltersEngine`. This allows to change options
+ * globally without having to change all used configs.
+ */
+const ENGINE_CONFIG = new adblocker_1.Config({
+ debug: true,
+});
+/**
+ * Make sure instances of CosmeticFilter and NetworkFilter from strings in
+ * `filters` do not yield any IDs collision. In otherwise, check that there are
+ * not any two filters from `filters` with the same ID.
+ */
+function checkIdCollisions(filters) {
+ const collisions = [];
+ const ids = new Map();
+ for (const line of Array.from(filters)) {
+ const filter = (0, adblocker_1.parseFilter)(line);
+ if (filter !== null) {
+ const id = filter.getId();
+ if (ids.has(id)) {
+ collisions.push(`${line} collides with ${ids.get(id)}`);
+ }
+ else {
+ ids.set(id, line);
+ }
+ }
+ }
+ return collisions;
+}
+/**
+ * Given two sets of filters (in raw string form), return a list of differences
+ * between them (i.e.: filters in one set but not the other).
+ */
+function filtersDiff(name1, filters1, name2, filters2) {
+ const differences = [];
+ for (const f of Array.from(filters1)) {
+ if (!filters2.has(f)) {
+ differences.push(`Filter in ${name1} but not ${name2}: ${f}`);
+ }
+ }
+ for (const f of Array.from(filters2)) {
+ if (!filters1.has(f)) {
+ differences.push(`Filter in ${name2} but not ${name1}: ${f}`);
+ }
+ }
+ return differences;
+}
+async function getMeta(url) {
+ const meta = (await axios_1.default.get(url)).data;
+ if (typeof meta === 'string') {
+ const buffer = Buffer.from((await axios_1.default.get(url, {
+ responseType: 'arraybuffer',
+ })).data);
+ return JSON.parse((0, zlib_1.brotliDecompressSync)(buffer).toString('utf-8'));
+ }
+ return meta;
+}
+/**
+ * Return the CDN URL of a specific revision `rev` (a hash) of subscription `list` (e.g. 'easylist').
+ */
+function urlOfRevision(list, rev) {
+ return `https://cdn.cliqz.com/adblocker/resources/${list}/${rev}/list.txt`;
+}
+/**
+ * Fetch a list from CDN (given its URL). Apart from performing the fetching,
+ * we also take care of detecting if the list was compressed using brotli
+ * (which was the case before; then we switched to gzip for broader
+ * compatibility).
+ */
+const REVISIONS_CACHE = new Map();
+async function getRevision(url) {
+ const cached = REVISIONS_CACHE.get(url);
+ if (cached !== undefined) {
+ return cached;
+ }
+ let data = (await axios_1.default.get(url)).data;
+ if (!data.startsWith('[Ad')) {
+ const buffer = Buffer.from((await axios_1.default.get(url, {
+ responseType: 'arraybuffer',
+ })).data);
+ try {
+ data = (0, zlib_1.brotliDecompressSync)(buffer).toString('utf-8');
+ }
+ catch (ex) {
+ // Data is probably already decompressed
+ }
+ }
+ REVISIONS_CACHE.set(url, data);
+ return data;
+}
+/**
+ * Return a set of filters (in their raw string form) from raw list. Also takes
+ * care of normalizing options (e.g.: `stylesheet` -> `css`).
+ */
+function getFiltersFromList(list) {
+ return new Set(Array.from((0, adblocker_1.getLinesWithFilters)(list, ENGINE_CONFIG)).map(normalizeFilters));
+}
+/**
+ * Return set of filters (in their raw string form) from a `FiltersEngine` instance.
+ */
+function getFiltersFromEngine(engine) {
+ const { networkFilters, cosmeticFilters } = engine.getFilters();
+ return new Set([
+ ...networkFilters.map(({ rawLine }) => normalizeFilters(rawLine)),
+ ...cosmeticFilters.map(({ rawLine }) => normalizeFilters(rawLine)),
+ ]);
+}
+/**
+ * Return a serialized version of the `FiltersEngine` instance initialized from
+ * `list`. Takes care of caching engines initialized from the same list and
+ * return a copy of the serialized version to make sure no mutation is
+ * possible.
+ */
+const ENGINES_CACHE = new Map();
+function getEngineFromList(list) {
+ const cached = ENGINES_CACHE.get(list);
+ if (cached !== undefined) {
+ return cached.slice();
+ }
+ // Create FiltersEngine instance
+ const engine = new adblocker_1.FiltersEngine({ config: ENGINE_CONFIG });
+ engine.updateFromDiff({
+ added: Array.from(getFiltersFromList(list)),
+ });
+ const serialized = engine.serialize();
+ // Cache for next time
+ ENGINES_CACHE.set(list, serialized);
+ return serialized.slice();
+}
+/**
+ * Fetch all versions of subscription `list` as well as all the available
+ * updates (i.e.: diffs) from CDN. These will then be used to make sure all
+ * updates are valid and that FiltersEngine can always be updated from them.
+ */
+async function collectTestCases(list) {
+ const cases = [];
+ const meta = await getMeta(`https://cdn.cliqz.com/adblocker/resources/${list}/metadata.json`);
+ const revisions = new Set();
+ // Append current revision (the most recent one)
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
+ const previousRevisions = [...meta.revisions];
+ console.log('revisions', previousRevisions);
+ // Skip the first one which will not have any previous rev
+ for (let i = 1; i < previousRevisions.length; i += 1) {
+ const currentRevision = previousRevisions[i];
+ revisions.add(currentRevision);
+ for (let j = Math.max(i - 7, 0); j < i; j += 1) {
+ const previousRevision = previousRevisions[j];
+ revisions.add(previousRevision);
+ cases.push({
+ currentRevision,
+ previousRevision,
+ });
+ }
+ }
+ // Fetch revisions
+ console.log('fetch...');
+ for (const revision of revisions) {
+ console.log(' ~', revision);
+ await getRevision(urlOfRevision(list, revision));
+ }
+ console.log('done fetching!');
+ const testCases = [];
+ for (const { previousRevision, currentRevision } of cases) {
+ const previousList = REVISIONS_CACHE.get(urlOfRevision(list, previousRevision));
+ const currentList = REVISIONS_CACHE.get(urlOfRevision(list, currentRevision));
+ if (previousList !== undefined && currentList !== undefined) {
+ testCases.push({
+ currentList,
+ currentRevision,
+ previousList,
+ previousRevision,
+ });
+ }
+ }
+ return testCases;
+}
+/**
+ * Start stress-test!
+ */
+async function run() {
+ for (const list of [
+ 'cliqz-filters',
+ 'easylist',
+ 'easyprivacy',
+ 'plowe-0',
+ 'ublock-abuse',
+ 'ublock-badware',
+ 'ublock-filters',
+ 'ublock-privacy',
+ 'ublock-unbreak',
+ 'whotracksme-filters',
+ ]) {
+ console.log(`> ${list}`);
+ const testCases = await collectTestCases(list);
+ console.log('?', testCases);
+ REVISIONS_CACHE.clear(); // free memory
+ for (const { previousRevision, currentRevision, currentList, previousList } of testCases) {
+ console.log(` + ${previousRevision} => ${currentRevision}`);
+ // Generate diff between two versions
+ let diff = (0, adblocker_1.generateDiff)(previousList, currentList, ENGINE_CONFIG);
+ diff = {
+ added: diff.added.map(normalizeFilters),
+ removed: diff.removed.map(normalizeFilters),
+ };
+ // No update?
+ if (diff.added.length === 0 && diff.removed.length === 0) {
+ console.log('Diff is empty, skipping...');
+ continue;
+ }
+ // Check that previous rev and current rev do not yield the same Engine
+ const currentEngineSerialized = getEngineFromList(currentList);
+ const previousEngineSerialized = getEngineFromList(previousList);
+ const previousEngine = adblocker_1.FiltersEngine.deserialize(previousEngineSerialized);
+ if ((0, utils_1.typedArrayEqual)(currentEngineSerialized, previousEngineSerialized)) {
+ console.log(JSON.stringify(diff, null, 2));
+ throw new Error('Expected engines to not be equal');
+ }
+ // Update `previousEngine` with diff and expect to find `currentEngine`
+ const updated = previousEngine.updateFromDiff(diff);
+ if (updated === false) {
+ console.log(JSON.stringify(diff, null, 2));
+ throw new Error('Expected engine to have been updated');
+ }
+ // Check filters are the same
+ const filtersFromList = getFiltersFromList(currentList);
+ const collisions = checkIdCollisions(filtersFromList);
+ if (collisions.length !== 0) {
+ console.log('Found ID collisions');
+ for (const collision of collisions) {
+ console.log(collision);
+ }
+ }
+ const filtersFromCurrentEngine = getFiltersFromEngine(adblocker_1.FiltersEngine.deserialize(currentEngineSerialized));
+ const filtersFromUpdatedEngine = getFiltersFromEngine(previousEngine);
+ const diff1 = filtersDiff('fromList', filtersFromList, 'fromFull', filtersFromCurrentEngine);
+ if (diff1.length !== 0) {
+ console.log('Found discrepancy in filters');
+ for (const difference of diff1) {
+ console.log(difference);
+ }
+ continue; // TODO - ignore other checks?
+ }
+ const diff2 = filtersDiff('fromList', filtersFromList, 'fromUpdated', filtersFromUpdatedEngine);
+ if (diff2.length !== 0) {
+ console.log('Found discrepancy in filters');
+ for (const difference of diff2) {
+ console.log(difference);
+ }
+ continue; // TODO - ignore other checks?
+ }
+ const updatedEngineSerialized = previousEngine.serialize();
+ if ((0, utils_1.typedArrayEqual)(updatedEngineSerialized, currentEngineSerialized) === false) {
+ throw new Error('Expected serialized engines to be equal');
+ }
+ // Make sure we can re-serialize on top of updated engine
+ const reSerialized = adblocker_1.FiltersEngine.deserialize(updatedEngineSerialized).serialize();
+ if ((0, utils_1.typedArrayEqual)(reSerialized, currentEngineSerialized) === false) {
+ throw new Error('Expected re-serialized engines to be equal');
+ }
+ }
+ ENGINES_CACHE.clear();
+ }
+}
+run();
+//# sourceMappingURL=stress-test-engine-update.js.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js.map b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js.map
new file mode 100644
index 0000000..3b1ad40
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tools/stress-test-engine-update.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stress-test-engine-update.js","sourceRoot":"","sources":["../../../tools/stress-test-engine-update.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@cliqz/adblocker/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..af0d6cf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../src/compact-set.ts","../../../../node_modules/@remusao/smaz/dist/types/index.d.ts","../../src/codebooks/cosmetic-selector.ts","../../src/codebooks/network-csp.ts","../../src/codebooks/network-filter.ts","../../src/codebooks/network-hostname.ts","../../src/codebooks/network-redirect.ts","../../src/codebooks/raw-network.ts","../../src/codebooks/raw-cosmetic.ts","../../src/compression.ts","../../src/crc32.ts","../../src/punycode.ts","../../src/data-view.ts","../../src/config.ts","../../src/encoding.ts","../../src/queue-microtask.ts","../../src/events.ts","../../src/fetch.ts","../../src/html-filtering.ts","../../../adblocker-extended-selectors/dist/types/src/types.d.ts","../../../adblocker-extended-selectors/dist/types/src/parse.d.ts","../../../adblocker-extended-selectors/dist/types/src/eval.d.ts","../../../adblocker-extended-selectors/dist/types/src/extended.d.ts","../../../adblocker-extended-selectors/dist/types/adblocker.d.ts","../../../../node_modules/@remusao/guess-url-type/dist/types/index.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/interface.d.ts","../../../../node_modules/tldts-core/dist/types/src/options.d.ts","../../../../node_modules/tldts-core/dist/types/src/factory.d.ts","../../../../node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts","../../../../node_modules/tldts-core/dist/types/index.d.ts","../../../../node_modules/tldts-experimental/dist/types/index.d.ts","../../src/tokens-buffer.ts","../../src/utils.ts","../../src/request.ts","../../src/engine/domains.ts","../../src/filters/interface.ts","../../src/filters/cosmetic.ts","../../src/filters/network.ts","../../src/lists.ts","../../../../node_modules/@remusao/small/dist/types/src/flv.d.ts","../../../../node_modules/@remusao/small/dist/types/src/gif.d.ts","../../../../node_modules/@remusao/small/dist/types/src/html.d.ts","../../../../node_modules/@remusao/small/dist/types/src/ico.d.ts","../../../../node_modules/@remusao/small/dist/types/src/jpeg.d.ts","../../../../node_modules/@remusao/small/dist/types/src/javascript.d.ts","../../../../node_modules/@remusao/small/dist/types/src/json.d.ts","../../../../node_modules/@remusao/small/dist/types/src/mp3.d.ts","../../../../node_modules/@remusao/small/dist/types/src/mp4.d.ts","../../../../node_modules/@remusao/small/dist/types/src/pdf.d.ts","../../../../node_modules/@remusao/small/dist/types/src/png.d.ts","../../../../node_modules/@remusao/small/dist/types/src/svg.d.ts","../../../../node_modules/@remusao/small/dist/types/src/txt.d.ts","../../../../node_modules/@remusao/small/dist/types/src/wav.d.ts","../../../../node_modules/@remusao/small/dist/types/src/webm.d.ts","../../../../node_modules/@remusao/small/dist/types/src/webp.d.ts","../../../../node_modules/@remusao/small/dist/types/src/wmv.d.ts","../../../../node_modules/@remusao/small/dist/types/index.d.ts","../../src/resources.ts","../../../adblocker-content/dist/types/adblocker.d.ts","../../src/filters/dsl.ts","../../src/engine/optimizer.ts","../../src/engine/reverse-index.ts","../../src/engine/bucket/filters.ts","../../src/engine/bucket/cosmetic.ts","../../src/engine/bucket/network.ts","../../src/engine/map.ts","../../src/engine/metadata/categories.ts","../../src/engine/metadata/organizations.ts","../../src/engine/metadata/patterns.ts","../../src/engine/metadata.ts","../../src/engine/engine.ts","../../tools/auto-bump-engine-version.ts","../../adblocker.ts","../../test/utils.ts","../../tools/bench-metadata.ts","../../tools/engine-size.ts","../../../../node_modules/@remusao/counter/dist/types/index.d.ts","../../../../node_modules/@remusao/smaz-generate/dist/types/index.d.ts","../../tools/generate_compression_codebooks.ts","../../tools/priorities.ts","../../../../node_modules/axios/index.d.ts","../../tools/stress-test-engine-update.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../test/compact-set.test.ts","../../test/data-view.test.ts","../../../../node_modules/@types/chai-as-promised/index.d.ts","../../test/fetch.test.ts","../../test/filters-size-estimation.test.ts","../../test/html-filtering.test.ts","../../test/lists.test.ts","../../test/data/requests.ts","../../test/matching.test.ts","../../test/optimizer.test.ts","../../test/parsing.test.ts","../../test/punycode.test.ts","../../test/request.test.ts","../../test/resources.test.ts","../../test/reverse-index.test.ts","../../test/serialization.test.ts","../../test/utils.test.ts","../../test/engine/engine.test.ts","../../test/engine/metadata.test.ts","../../test/engine/bucket/filters.test.ts","../../../../node_modules/@types/benchmark/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/har-format/index.d.ts","../../../../node_modules/@types/chrome/har-format/index.d.ts","../../../../node_modules/@types/chrome/chrome-cast/index.d.ts","../../../../node_modules/@types/filewriter/index.d.ts","../../../../node_modules/@types/filesystem/index.d.ts","../../../../node_modules/@types/chrome/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/firefox-webext-browser/index.d.ts","../../../../node_modules/parse5/dist/common/html.d.ts","../../../../node_modules/parse5/dist/common/token.d.ts","../../../../node_modules/parse5/dist/common/error-codes.d.ts","../../../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../../node_modules/parse5/dist/tokenizer/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../../node_modules/parse5/dist/parser/index.d.ts","../../../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../../../node_modules/parse5/dist/serializer/index.d.ts","../../../../node_modules/parse5/dist/common/foreign-content.d.ts","../../../../node_modules/parse5/dist/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/jsdom/base.d.ts","../../../../node_modules/@types/jsdom/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900",{"version":"2e6ba1f384f67becb1ee392014ddb2705ba89c2582c6a91e8d6aff79802c7d33","signature":"a4b0ca759fb7088819ad8606fcb6085346116bfee143ff3ad63e6938adae456f"},"28f88f7c33b670d94afd4a65fa5af7fdbd38e8c32d3000e06cbb7a8f9a3bab82",{"version":"13a8bee2006169d0ba9aef58fd1c5a12420646f5ef7335366f041ddf74a29938","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"4ae1177a936903ced25e47c494998c2bf1ef4fae356db321c8426bb83e92a716","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"4e686d6587e6ce4f9926130dd8701c79a10aec3f0f7fce978aabf682da8e7aa3","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"fb129ebbc4aaabbd811dde40fb3d16d5e675b68d646761f7958b4d4beba02d12","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"837bc79da123656bc3432370f8e0d85284fc58854769aef640e88e409058b268","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"915f12697614f624a003b35c35d2806f6992577d4cbf71c7adb12c6944ed6871","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"2f888a7032094f227e1e936bb67c6a150f88597e6880889895ec9386a0261624","signature":"419dcbfb19a8617287d1de1523501c089dc378c823892b27d9cc3b2328a88ca4"},{"version":"426bb25d61c845b0cca730915c6a8fbb1b4598c3ffe8119d65ccba261e29ed0d","signature":"618da36d858f0dd4d457a34f62e0ba4e7b2764617976636b6489ce39f4ddfc64"},{"version":"7f93d7e6aa9849453f39a2c34c1b96f12817d8eb361892f8923870b8a0b8fe87","signature":"e83eeb3a7453b43d8f8464259734775c2842b2e4e4a0040903aa5858cc956a84"},{"version":"d89b8fcbc72d5fc7317e39393d07e1f80a7a523ac36fd921794117c3aa443d00","signature":"a4d3dd198a6168ef54cb3c5e465732807adb15187e00c6c1a3d0e36e1da89fbf"},{"version":"3b5d9bf9c2320aae71e7ee810ec7306092b7cbe50539ed6880fe5e88165e7ac2","signature":"e0e6737c0ce3083935d30bcd22d4b8af2b6fe72f2696beab397dc77fdd2b16aa"},{"version":"edaf3aae131437dbfc392ada08c27e2f4597f6c6119304c840b090a00969b921","signature":"b2a7a50de31ffe5a4390b3d2bcf99e6e81ccfece35354a6912681a42e1cac48b"},{"version":"5c031fe15969e3d2546c84f4bbd9878141f660ae7928f401f7920772c81b91e9","signature":"cbcb382febe1e6d4b073daf940cbc05daae10a05e342fe7be1949a40fc60a36b"},{"version":"5b69c764851cda87c07f23013a0db6d726f2bc560182b2c5c48025e90e58cc6d","signature":"6c093ea7f74dc7c266f4b4625ee0fbc70e00c9d5367748ab4baee0615b297357"},{"version":"e37a8dcf24cf70140da0e2b798f14432c93efa30b722361afd76cd42f118bc7c","signature":"8bd37f7f08b62741bf88faf6849f99def812a8c91aa66e3b50e38ec07a39bd4c"},{"version":"3c52935872f4e97c83f869b240469a7e496e6cca6524ff2f546aa2827dea21ff","signature":"429e3e4e842bef7d5e4d45500b28c8c2a5ea9c68a957712243c1752cb14f7f41"},{"version":"85410100845263d8e3d4208a75ef8398325a8358aab5b821310463ae4370ee1f","signature":"0eb47a3e571a0841e865f1888f6a4a179a997e265d4703276698dc5afe49c240"},"385968e42e19f0e2ada1ed248ed2cb9b5a14dc66a8c578f1c8d0c91e6c5c7585","a4aee4e95f148c9c5ff5b3810bc577c7a94e51c1e1a794d60a872864f9eac079","77a6fc59f061f70e4513f6f60a9e4780ab7b6f7e494fc6296bbbaa02495b7a5b","b0cebdcd5074fc136f11503a7908ccdf899da42eb7ca3b75ac1d7bfc8cf586e2","d966ee96be07d5f140c4b63841758bd2d14b30022a1fe79d45f7164c990e44fb","5e1e3ff19ef45a1293ee30151e64d4abf8f6fdb0a2461ab80a7022ae093805ec","863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc","4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a","45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7","899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941","5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d","5de310f85a2c8f027298730a918cdd1806092870d86e082720cbc8c23fb5bad3",{"version":"930e131dc29380b7ea67b6d2a87d8e0d3c67b58b6ceefb5e44db9c4eae6ce34f","signature":"6bdc48c8bf4abf522a9e2743a19e0d52f68daabfd66d5e9b583b2e9acc94f23e"},{"version":"c995df8f6d29733a2ba0ffe5a6bd9d5e5edde32dbd960df13a0a47a7405a4b31","signature":"8dbfc689648d2a052fc129d7743a7f82d7cf6011babcd6df7af0b65149a27173"},{"version":"802ae4e476a8787f1d59c27bef0b2a9cdf94ea3f7a7a4ddab35959f48b7a0932","signature":"5ac84442e5a39f0a57cddd42bbd66ac478f379540b87a4cf0db46e86fe1d87a7"},{"version":"f17a57f0defc5e3995232f513cd3f2618d8bc5e064c085c4890892519e0a3268","signature":"dbeee582c2a52b3a349b2840c9a128a7854fb3fbe05b5f83cccd851192bc5c3d"},{"version":"99cd5f782d4f96452ee9cf280a3aaf85f7b9441f6b5067419ac7541db5067b12","signature":"d8597736df18af240ff776133e4919808445d9dc5cc1a80a1b8a6886884740d3"},{"version":"fcfe7480a415cd62673cee74453b1e1a9d1acf43b204ad6153e419009c83718b","signature":"d121fe39fb9afa2677d7054ca1f32d2c1282a723d04fe48f6a453edf44df4f44"},{"version":"6f1702286a60cafc9f9f2a5fdfc6c4c10f2d88b3269e1936fa950ee78de5aff7","signature":"a4efcdcdc9072a6a3cb21dc15b168c37e27a132a9740845e7f0b086a91144fca"},{"version":"cee713f11c5c8cee70ff0cd11636c1ca5e8e40f7a8d79e5b25035e719aa636b8","signature":"b36d70f516d598332594843aea4c1c8163e820caa1814c64cf22459f374862bf"},"f313a98d09da91de078b7d3933810c5a2de46d43a850a2c34ba9fb2e64c31d5b","91b0b099e364b546badc17f12ba1c733522d815c488cbfa288be38091286eabd","dcef8fe876c8d916eda9a9ab8c1dfa4ed7be752f11a80c158fbb3b3ba2d3c15d","ee3c73d7ca2190102eb4de8c3c037994201c9166d2dd137a76b02e4b8696d158","e70ba6b86cdb9ec76484dbec5596c4f7e3c1d8e546bdc8b40d81468dbb523650","9fdb36b3e77f4493a21cfacff0a89b51e60531dc17e98512cb60261f430b537e","a0f1ac31335bbb955e7c56ea45fe545932558c538f4987d1d0b3024f619eefd8","39008295c4b12d96d30563960012d345fae486446a697fbe8178aaef2b3822da","dd8f5a8fe8df5a42c0dd0111a6cd4e502dd5aa35c6276ca323728f041f8dade6","ec6361de88ef7a7826122002596d89d70fb490555e51665e6fa646ef23cab7f0","b9f6117eedd8693155f2fce7ae05d907f090421b305445bbcecb7c6097233f47","96420f79a7a548cece1ffe872929aa5a5f53ae4b6ae609730900ca243ab9d6c2","8b78b88cacfc5fe02ca0756e6ff07454ea70b2cf024d25bf9ee6197cd8df01d9","58fe07c18ffb14e01597105eff6e3fea4356a0dedf91e4fee93eba215059c1dc","32bedbd66f64fff458f4a4aa6bc0a56b4de7e276139fd38236d455612fff437b","60cfd8e7b86939186f6fb12db00bb2f864c856ef67d50ebf235e014abf19eca9","822b8e401d008cf212dcfee9d46ad744cc06238d68ebc6faec857a7d95128b2f","cce89b990ff2b3753dc81af0e793f6623e543dd8f999273379518986f961516d",{"version":"52fcca6016e75daf139e35e9c7ec22ad0dcab5c600dcb3efc7a6012cdca327f8","signature":"b4c0e3ab949262e9c29bcc2fdbf7c6f3ad49e38ad16591d4595ce6ad9b8a1696"},"e63ee0eae662a3bf7b0ab60491a0e14456767572c9c3b08c2af989494e0f90f5",{"version":"ef5c2b980591eb955c559a9a5d0ea1109cf980c315391741992375091dd5e8ac","signature":"37f60a2d9377c7fd7fcf09cca46592e01c5eee07cf3e9be21578759f8fbc482e"},{"version":"2f7b3a566759cfe39f9df59b0a23ef1afa8136ff305f3d32d595e8ffc50ebaec","signature":"6a1a15756cf83fbb6d113290bac408dd30edee69d3ef07faf7f4a1a520bcd915"},{"version":"c9b41b1233fc82d075a7fbcc9c38e3c908455553b26dd1cc9f5b905dca8a69c8","signature":"2743e0253f64452f059868823461a1f0ef8af28363af0861adc874c0814737c5"},{"version":"8b238013dba5c0c9eb6d8af2942d834e30d6a999df94c0a26923e971639dd3dc","signature":"22b5724c25bd9566185ff22883c147c16499581bec943e375e7b46a11595ee00"},{"version":"9694f1b864ec99bd0f1026652169bd95c643dc31147d22b4840244c69ae34e21","signature":"5c9c59ce79c5c9bca344e74fd2b7d44f83d65ef471fb5495794259aae3f0d77a"},{"version":"95374535e6c68312a51f40f6e8361a2425e7c667b94764ef46c5c5ab06eefb4b","signature":"d49b411fb57c78789536e4905821b2db9b462b40ee1010c7446ffdc7d643bffa"},{"version":"6935298944d70e95be5edf5894eff9a5f974962bd206d00b7af21d118db0239c","signature":"3acaad96234248f01cc61fc90ff2cffe4dcbace901489cb4d74fe049c1337916"},{"version":"816679e6d0b6a8ceff68eff7704184036e21d56ec9a6613f29dc18a11d96706b","signature":"28e0c1d633485f7aefad1131444ac028ed3aef56d81b290eb056af5cf44e4401"},{"version":"6dd2f3c6ced4dffe4335477a5def0703a90320278ff881407ced66797091464f","signature":"2e9f23889a6def36c6772831baca9e70f760cb1bd095c5d0cdc0687f50960781"},{"version":"dba9b6421e879888a45d169c5d60911f1da0f085155c90c9e2680e7e45ed9260","signature":"20c55860fd1e116fbb3716d71aa94a8aa68c274093cbb85ef08c327bdd8a6fca"},{"version":"a7f9ff057ecec6d82aeae0f2fea2fc70c7bdd7f39859803c4fa1e5e75f0fbfba","signature":"67e0ea43565acc65f5f76996524d8f1cdc7e173742199ed994496f7f727a5b0f"},{"version":"1d48aa3f2242ff72afde7430cae38451aa9ce8d6ed5d50036b329e1f866b5549","signature":"1964c0f2a99d8df6e546fd618e46438e7b76d58c276696a0636298f7617380e4"},{"version":"b8973651d7f25f2f32f6f4dbe54b05258b1bbb99feba830753e7e68940f02458","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"45ed04b820b82caa404c8381769a098f8222b914bdbb20dcca16473851a57374","signature":"22e6cb6e003230acbeaa3a3f3d124d6bcb95783451d7242cf384a31f976f3857"},{"version":"4a1d0eb7c06c25467d2727eb3f77e642fb90b834fb883fa9c890d7f92b28b169","signature":"931fd8be9b97edd2488edb4db867dd8d6c1ec78b8ea2856eb76887568919e52c"},{"version":"3a5fb617df11e33d2fb61520ff5f5d51db43710e6e1a151e3e99eacb8293097b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"76cc1517d9c1694a2455eebf48398dec54b191b769ef62646851a6bbe4c4ffc3","signature":"5d1f5b6f831fa249d3c193a51357b21ecc55ab70973c930912c62866fd3b59ca"},"87ae1092911e6e03193189db80c6c64a6270737f522484d125489a2b9ffb8f1a","b7668b8ddb66891a7d25cd5dc8d6ce5de1c1550ecfbeda3509ae48b2bb88eaac",{"version":"04115ebc85f57bee50a6ac120a8f081b8b24670b00f71778a77eb6ae97831b17","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"10c172e913085b061c9cbfb3e5bc6e6e0e6dc23e160af47c30d3b641f3fae26e","signature":"5d1f5b6f831fa249d3c193a51357b21ecc55ab70973c930912c62866fd3b59ca"},"df23705fd32cee6822fc57b5eb5ca88dba0552aae08c4eeff02acde07ea2bf28",{"version":"5ba848f0bfcc7cf7f96d82604e5cf14b03e6ce3361445e58082629931c253651","signature":"5d1f5b6f831fa249d3c193a51357b21ecc55ab70973c930912c62866fd3b59ca"},{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},{"version":"8d469adb857756ca48ff2ad49f92ed918339f63bce5652e6699655bdb67c62bc","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"6ef0a91461ef738523616f2c4d8c9f7670ab64c188675ed43fe59147d33bed17","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},{"version":"fec634132276fc1bbb28818df13b56ce515e6b18ed5ed56d5c056167f7dc8ed0","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"09c09c44fa0704e6d16e9d4b2c8046075e859b7de7635c2e3e9e4123baae2920","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"8b46353b8e9ad815436fed59ffa90b25c07464973773f375400e906ffd2bc8e4","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"403516527954cfc747980bd51fce67435a8b4687722162fc334ed463f174e6e8","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"ee3751ab36c3b2cb2ec7d53c044f52f2af47a48afc9e5af6b3ea622f6e4e28d3","signature":"a093ec9994839a111a701b22c421277de835c612b6578af1c746b4c2ea88e681"},{"version":"1585ab7c3d48476b2996c8533d1ed41181a3f48c07a225e5b8f1c2ec9173280b","signature":"cc96b1a8397dd8599c162a1b37c8fa19e4b61afdeb8e6b1f4bed13ab0f8b0d92","affectsGlobalScope":true},{"version":"cdbf44779ef19099593a27c6915be6c0053f15a54429eb4585b6b98a3a414a8d","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"a7fa5038f66af62d44f2d0322bb0b799eb34de971a5c446d749117dad6ee382b","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"911c8719f039c1afad6918932aa0e0fe40c97b80e38d518c1e6a4b0a327fafb1","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"a46f6c323ef0c4c5c3682cc84dfe5720f36694bee61a7cb6f831123922fec823","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"295b7f666b00f5ec61e710d6232ee0bdd05b610e890939b181f4d413069e49d2","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"d856137abce94f0ba7ec4bdd57de9478766fc25ae6e11d8d437b0681b3fe6edf","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"e94b15a97e991d5e3f06d5486a1aad80181ca1eec05c5c88b4ad62899a8978b6","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"2ece0877b340319f60319b25b1c5cab28763b6acfb4b687ecd151a6d6acbbca2","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"bbbcb2f95ac530121d6b589e2688905fd7f3ca512b8787da081b83e764da3883","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"de448d38f9622eab097d45d5c5597147733058403e12c00c7c5b71e79325c9b2","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},{"version":"cd109b43ba8d83ea71186c4703c92529b3916077bb1cf2159f5dc3a15d2b3226","signature":"a21552ef1e866cdbea9e94d82f7405da91bec8aa4951c630fa2774b4e0b64de2"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","adda9e3915c6bf15e360356a41d950881a51dbe44f9a6088155836b040820663","b4855526ac5a822d6e0005e4b62ee49c599bf89897e4109135283d660e60291c","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","d70119390aece1794bf4988f10ea750d13455f5286977d35027d43dd2e9841cf",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"91f8b5abcdff8f9ecb9656b9852878718416fb7700b2c4fad8331e5b97c080bb","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"f49fb15c4aa06b65b0dce4db4584bfd8a9f74644baef1511b404dc95be34af00","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","052e96ffe5376a3f7ead67f6893e021b68babb71c4683a203f7dae0226fcf5a7","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","b58a196dd8634c1e39b123fd029ca4b9f21a2ab601453bd5cb152cc593786a8b",{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true},{"version":"1da3494573331c3f36cee4479ea34c3f56638f9ded0e7922fe51e0dd14d0a1c6","affectsGlobalScope":true},{"version":"9c3955ebd80a7e44d4c4d4e2d066dfba56ef41275655fd56957bbdf94a42c761","affectsGlobalScope":true},{"version":"ebf080e19449aa8f2bb82a6be7e24caded33d502b3ad397f9c60d6b7d855565c","affectsGlobalScope":true},{"version":"e4e4cfe0654d599532b6b45dd630c0045557150894559c8ee3f043f395cd1bac","affectsGlobalScope":true},"5ae76b5a59f2f787e9eb2d4f1a066ceb4505a52bf8fe77ac321d791ef2e72000","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db",{"version":"c0861e65d49dd0b7ee4042f0981fa6a72a8c22f3ffdd1803d05c9089cf38f2ab","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","54fe5f476c5049c39e5b58927d98b96aad0f18a9fd3e21b51fb3ee812631c8c0","318c82cc1e13da55e8c60d7e1bdc422a0679d675ad048b6d5022a47f57d23e3f",{"version":"e7c65ee7dba756bff86366e52db2e56fe4e651f93b1cad693f589e60bf8b1ac1","affectsGlobalScope":true},"dd89872dd0647dfd63665f3d525c06d114310a2f7a5a9277e5982a152b31be2b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","55e103448f452988dbdf65e293607c77fb91a967744bad2a72f1a36765e7e88d","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","3865ef9eb6900d3efa27d96edf3576bd52fe57c2ff3247daf00f575d32626719","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","ee1fb501d38eaafa8099e00bd1fc7014ccc99bee616c660f605ae3559324793d",{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[51,[53,69],[82,89],108,[110,126],129,130,132,135,136,[138,154]],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"alwaysStrict":true,"composite":true,"declaration":true,"declarationDir":"../types","declarationMap":true,"emitDeclarationOnly":false,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":99,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":4,"useUnknownInCatchVariables":true},"fileIdsList":[[235],[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,235],[127,235],[205,208,234,235,242,243,244,245],[133,235],[235,247],[235,248,249,251],[235,250],[205,235,237,242,269,270,272],[235,271],[205,235,242],[156,235],[192,235],[193,198,226,235],[194,205,206,213,223,234,235],[194,195,205,213,235],[196,235],[197,198,206,214,235],[198,223,231,235],[199,201,205,213,235],[200,235],[201,202,235],[205,235],[203,205,235],[192,205,235],[205,206,207,223,234,235],[205,206,207,220,223,226,235],[190,235,239],[201,205,208,213,223,234,235],[205,206,208,209,213,223,231,234,235],[208,210,223,231,234,235],[156,157,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[205,211,235],[212,234,235,239],[201,205,213,223,235],[214,235],[215,235],[192,216,235],[217,233,235,239],[218,235],[219,235],[205,220,221,235],[220,222,235,237],[193,205,223,224,225,226,235],[193,223,225,235],[223,224,235],[226,235],[227,235],[192,223,235],[205,229,230,235],[229,230,235],[198,213,223,231,235],[232,235],[213,233,235],[193,208,219,234,235],[198,235],[223,235,236],[212,235,237],[235,238],[193,198,205,207,216,223,234,235,237,239],[223,235,240],[208,223,235,242],[235,280,319],[235,280,304,319],[235,319],[235,280],[235,280,305,319],[235,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318],[235,305,319],[133,235,321],[235,320],[205,223,235,242],[235,258],[235,257,258],[235,257],[235,257,258,259,261,262,265,266,267,268],[235,258,262],[235,257,258,259,261,262,263,264],[235,257,262],[235,262,266],[235,258,259,260],[235,259],[235,257,258,262],[76,77,78,79,235],[76,77,235],[76,235],[80,235],[167,171,234,235],[167,223,234,235],[162,235],[164,167,231,234,235],[213,231,235],[235,242],[162,235,242],[164,167,213,234,235],[159,160,163,166,193,205,223,234,235],[159,165,235],[163,167,193,226,234,235,242],[193,235,242],[183,193,235,242],[161,162,235,242],[167,235],[161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,235],[167,174,175,235],[165,167,175,176,235],[166,235],[159,162,167,235],[167,171,175,176,235],[171,235],[165,167,170,234,235],[159,164,165,167,171,174,235],[193,223,235],[162,167,183,193,235,239,242],[74,235],[70,71,72,73,235],[70,235],[50,64,65,68,69,83,84,87,88,89,108,112,121,235],[50,235],[50,52,53,54,55,56,57,58,59,235],[50,63,235],[50,60,61,62,235],[50,51,63,64,83,84,87,109,111,112,113,235],[50,63,64,86,235],[50,63,64,84,88,111,112,113,235],[50,62,63,83,84,235],[50,63,64,67,68,69,84,87,88,89,108,109,110,114,115,120,235],[50,63,112,235],[50,63,88,116,117,118,119,235],[50,63,83,116,235],[50,63,88,116,235],[50,83,85,87,88,235],[50,66,235],[50,63,69,74,83,84,85,86,235],[50,62,63,82,83,84,85,86,235],[50,64,83,87,88,235],[50,63,75,81,82,83,235],[50,63,107,235],[50,82,235],[50,51,133,134,235],[50,63,124,133,134,235],[50,64,87,88,89,113,124,133,134,235],[50,81,84,88,108,121,124,133,134,142,235],[50,63,83,84,88,116,117,118,119,120,121,124,133,134,235],[50,68,133,134,137,235],[50,63,86,87,88,89,124,133,134,235],[50,69,133,134,235],[50,89,133,134,235],[50,81,84,87,88,89,133,134,142,235],[50,88,111,133,134,235],[50,69,83,84,87,88,89,133,134,235],[50,62,133,134,235],[50,84,133,134,235],[50,63,108,124,133,134,235],[50,63,64,83,86,87,88,89,111,112,124,133,134,235],[50,63,64,86,87,88,89,121,124,133,134,235],[50,82,83,86,88,89,124,133,134,142,235],[50,123,206,215,235,240],[50,206,215,235],[50,123,124,235],[50,52,123,128,206,215,235],[50,123,206,215,235],[50,123,124,131,235,240],[64,65,68,69,83,84,87,88,89,108,112,121],[52],[63],[60],[63,64,87,109,112,113],[63,64,86],[63,64,84,88,112,113],[64,67,68,69,84,87,88,89,108,109,114,115,120],[63,88,116,117,118,119],[63,116],[87,88],[63,69,74,85,86],[63,84,85,86],[64,87,88],[82],[134],[84,134]],"referencedMap":[[127,1],[75,1],[107,2],[90,1],[91,1],[92,1],[93,1],[95,1],[94,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[102,1],[103,1],[104,1],[105,1],[106,1],[128,3],[52,1],[155,1],[246,4],[137,5],[133,1],[249,1],[248,6],[252,7],[253,1],[254,1],[255,1],[251,8],[250,1],[256,1],[247,1],[244,1],[271,9],[272,10],[273,1],[274,11],[275,1],[276,1],[134,1],[156,12],[157,12],[192,13],[193,14],[194,15],[195,16],[196,17],[197,18],[198,19],[199,20],[200,21],[201,22],[202,22],[204,23],[203,24],[205,25],[206,26],[207,27],[191,28],[241,1],[208,29],[209,30],[210,31],[242,32],[211,33],[212,34],[213,35],[214,36],[215,37],[216,38],[217,39],[218,40],[219,41],[220,42],[221,42],[222,43],[223,44],[225,45],[224,46],[226,47],[227,48],[228,49],[229,50],[230,51],[231,52],[232,53],[233,54],[234,55],[235,56],[236,57],[237,58],[238,59],[239,60],[240,61],[277,1],[278,1],[279,1],[245,62],[304,63],[305,64],[280,65],[283,65],[302,63],[303,63],[293,63],[292,66],[290,63],[285,63],[298,63],[296,63],[300,63],[284,63],[297,63],[301,63],[286,63],[287,63],[299,63],[281,63],[288,63],[289,63],[291,63],[295,63],[306,67],[294,63],[282,63],[319,68],[318,1],[313,67],[315,69],[314,67],[307,67],[308,67],[310,67],[312,67],[316,69],[317,69],[309,69],[311,69],[322,70],[321,71],[320,1],[270,1],[323,72],[131,1],[158,1],[243,23],[259,73],[268,74],[257,1],[258,75],[269,76],[264,77],[265,78],[263,79],[267,80],[261,81],[260,82],[266,83],[262,74],[80,84],[78,85],[79,86],[76,1],[77,1],[81,87],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[174,88],[181,89],[173,88],[188,90],[165,91],[164,92],[187,93],[182,94],[185,95],[167,96],[166,97],[162,98],[161,99],[184,100],[163,101],[168,102],[169,1],[172,102],[159,1],[190,103],[189,102],[176,104],[177,105],[179,106],[175,107],[178,108],[183,93],[170,109],[171,110],[180,111],[160,112],[186,113],[109,114],[74,115],[72,116],[73,1],[71,116],[70,1],[123,117],[53,118],[54,118],[55,118],[56,118],[57,118],[59,118],[58,118],[51,118],[60,119],[64,120],[61,118],[63,121],[65,118],[114,122],[113,123],[115,124],[85,125],[121,126],[116,127],[120,128],[117,129],[118,129],[119,130],[111,131],[112,123],[67,132],[68,118],[87,133],[110,118],[86,120],[88,134],[69,118],[89,135],[62,118],[66,118],[84,136],[108,137],[82,118],[83,138],[135,139],[136,140],[142,118],[154,141],[152,142],[153,143],[138,144],[139,145],[140,146],[141,147],[143,148],[144,149],[145,150],[146,151],[147,152],[148,153],[149,154],[150,155],[151,156],[124,157],[122,158],[125,159],[126,157],[129,160],[130,161],[132,162]],"exportedModulesMap":[[127,1],[75,1],[107,2],[90,1],[91,1],[92,1],[93,1],[95,1],[94,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[102,1],[103,1],[104,1],[105,1],[106,1],[128,3],[52,1],[155,1],[246,4],[137,5],[133,1],[249,1],[248,6],[252,7],[253,1],[254,1],[255,1],[251,8],[250,1],[256,1],[247,1],[244,1],[271,9],[272,10],[273,1],[274,11],[275,1],[276,1],[134,1],[156,12],[157,12],[192,13],[193,14],[194,15],[195,16],[196,17],[197,18],[198,19],[199,20],[200,21],[201,22],[202,22],[204,23],[203,24],[205,25],[206,26],[207,27],[191,28],[241,1],[208,29],[209,30],[210,31],[242,32],[211,33],[212,34],[213,35],[214,36],[215,37],[216,38],[217,39],[218,40],[219,41],[220,42],[221,42],[222,43],[223,44],[225,45],[224,46],[226,47],[227,48],[228,49],[229,50],[230,51],[231,52],[232,53],[233,54],[234,55],[235,56],[236,57],[237,58],[238,59],[239,60],[240,61],[277,1],[278,1],[279,1],[245,62],[304,63],[305,64],[280,65],[283,65],[302,63],[303,63],[293,63],[292,66],[290,63],[285,63],[298,63],[296,63],[300,63],[284,63],[297,63],[301,63],[286,63],[287,63],[299,63],[281,63],[288,63],[289,63],[291,63],[295,63],[306,67],[294,63],[282,63],[319,68],[318,1],[313,67],[315,69],[314,67],[307,67],[308,67],[310,67],[312,67],[316,69],[317,69],[309,69],[311,69],[322,70],[321,71],[320,1],[270,1],[323,72],[131,1],[158,1],[243,23],[259,73],[268,74],[257,1],[258,75],[269,76],[264,77],[265,78],[263,79],[267,80],[261,81],[260,82],[266,83],[262,74],[80,84],[78,85],[79,86],[76,1],[77,1],[81,87],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[174,88],[181,89],[173,88],[188,90],[165,91],[164,92],[187,93],[182,94],[185,95],[167,96],[166,97],[162,98],[161,99],[184,100],[163,101],[168,102],[169,1],[172,102],[159,1],[190,103],[189,102],[176,104],[177,105],[179,106],[175,107],[178,108],[183,93],[170,109],[171,110],[180,111],[160,112],[186,113],[109,114],[74,115],[72,116],[73,1],[71,116],[70,1],[123,163],[60,164],[64,165],[63,166],[114,167],[113,168],[115,169],[85,165],[121,170],[116,165],[120,171],[117,172],[118,172],[119,172],[111,173],[112,168],[87,174],[86,165],[88,175],[89,176],[108,165],[83,177],[135,178],[136,178],[154,178],[152,178],[153,178],[138,178],[139,178],[140,178],[141,178],[143,179],[144,178],[145,178],[146,178],[147,178],[148,178],[149,178],[150,178],[151,178]],"semanticDiagnosticsPerFile":[127,75,107,90,91,92,93,95,94,96,97,98,99,100,101,102,103,104,105,106,128,52,155,246,137,133,249,248,252,253,254,255,251,250,256,247,244,271,272,273,274,275,276,134,156,157,192,193,194,195,196,197,198,199,200,201,202,204,203,205,206,207,191,241,208,209,210,242,211,212,213,214,215,216,217,218,219,220,221,222,223,225,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,277,278,279,245,304,305,280,283,302,303,293,292,290,285,298,296,300,284,297,301,286,287,299,281,288,289,291,295,306,294,282,319,318,313,315,314,307,308,310,312,316,317,309,311,322,321,320,270,323,131,158,243,259,268,257,258,269,264,265,263,267,261,260,266,262,80,78,79,76,77,81,50,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,174,181,173,188,165,164,187,182,185,167,166,162,161,184,163,168,169,172,159,190,189,176,177,179,175,178,183,170,171,180,160,186,109,74,72,73,71,70,123,53,54,55,56,57,59,58,51,60,64,61,63,65,114,113,115,85,121,116,120,117,118,119,111,112,67,68,87,110,86,88,69,89,62,66,84,108,82,83,135,136,142,154,152,153,138,139,140,141,143,144,145,146,147,148,149,150,151,124,122,125,126,129,130,132],"latestChangedDtsFile":"../types/test/engine/bucket/filters.test.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts
new file mode 100644
index 0000000..7063544
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts
@@ -0,0 +1,20 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export { default as FiltersEngine, ENGINE_VERSION, BlockingResponse } from './src/engine/engine';
+export { default as ReverseIndex } from './src/engine/reverse-index';
+export { default as Request, makeRequest, RequestType, WebRequestType, ElectronRequestType, PuppeteerRequestType, getHostnameHashesFromLabelsBackward, PlaywrightRequestType, } from './src/request';
+export { default as CosmeticFilter } from './src/filters/cosmetic';
+export { default as NetworkFilter } from './src/filters/network';
+export { FilterType, IListDiff, IRawDiff, detectFilterType, f, generateDiff, getLinesWithFilters, mergeDiffs, parseFilter, parseFilters, } from './src/lists';
+export * from './src/fetch';
+export { tokenizeNoSkip as tokenize, hasUnicode } from './src/utils';
+export { isUTF8 } from './src/encoding';
+export { default as Config } from './src/config';
+export { default as Resources } from './src/resources';
+export { HTMLSelector, default as StreamingHtmlFilter } from './src/html-filtering';
+//# sourceMappingURL=adblocker.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts.map
new file mode 100644
index 0000000..743cc55
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/adblocker.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"adblocker.d.ts","sourceRoot":"","sources":["../../adblocker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,WAAW,EACX,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mCAAmC,EACnC,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,CAAC,EACD,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts
new file mode 100644
index 0000000..1fe5d04
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=cosmetic-selector.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts.map
new file mode 100644
index 0000000..3cd78b1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/cosmetic-selector.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic-selector.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/cosmetic-selector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA+PE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts
new file mode 100644
index 0000000..736221c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=network-csp.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts.map
new file mode 100644
index 0000000..6e25847
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-csp.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-csp.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/network-csp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBAsGE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts
new file mode 100644
index 0000000..de01d72
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=network-filter.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts.map
new file mode 100644
index 0000000..713424c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-filter.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-filter.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/network-filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA+PE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts
new file mode 100644
index 0000000..b9b37f6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=network-hostname.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts.map
new file mode 100644
index 0000000..b2e37a8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-hostname.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-hostname.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/network-hostname.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA+PE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts
new file mode 100644
index 0000000..6304051
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=network-redirect.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts.map
new file mode 100644
index 0000000..2c61799
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/network-redirect.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network-redirect.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/network-redirect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA8EE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts
new file mode 100644
index 0000000..8ad4ec6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=raw-cosmetic.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts.map
new file mode 100644
index 0000000..7bc26df
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-cosmetic.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"raw-cosmetic.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/raw-cosmetic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA+PE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts
new file mode 100644
index 0000000..633df61
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts
@@ -0,0 +1,10 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: string[];
+export default _default;
+//# sourceMappingURL=raw-network.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts.map
new file mode 100644
index 0000000..ea25de7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/codebooks/raw-network.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"raw-network.d.ts","sourceRoot":"","sources":["../../../../src/codebooks/raw-network.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAEH,wBA+PE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts
new file mode 100644
index 0000000..7c22296
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts
@@ -0,0 +1,12 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export declare function compactTokens(tokens: Uint32Array): Uint32Array;
+export declare function hasEmptyIntersection(s1: Uint32Array, s2: Uint32Array): boolean;
+export declare function concatTypedArrays(arrays: Uint32Array[]): Uint32Array;
+export declare function mergeCompactSets(arrays: Uint32Array[]): Uint32Array;
+//# sourceMappingURL=compact-set.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts.map
new file mode 100644
index 0000000..83730db
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/compact-set.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"compact-set.d.ts","sourceRoot":"","sources":["../../../src/compact-set.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAU9D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAa9E;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAwBpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAEnE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts
new file mode 100644
index 0000000..d70934e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts
@@ -0,0 +1,18 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { Smaz } from '@remusao/smaz';
+export default class Compression {
+ readonly cosmeticSelector: Smaz;
+ readonly networkCSP: Smaz;
+ readonly networkRedirect: Smaz;
+ readonly networkHostname: Smaz;
+ readonly networkFilter: Smaz;
+ readonly networkRaw: Smaz;
+ readonly cosmeticRaw: Smaz;
+}
+//# sourceMappingURL=compression.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts.map
new file mode 100644
index 0000000..df70149
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/compression.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../../src/compression.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,SAAgB,gBAAgB,EAAE,IAAI,CAAsC;IAC5E,SAAgB,UAAU,EAAE,IAAI,CAAgC;IAChE,SAAgB,eAAe,EAAE,IAAI,CAAqC;IAC1E,SAAgB,eAAe,EAAE,IAAI,CAAqC;IAC1E,SAAgB,aAAa,EAAE,IAAI,CAAmC;IACtE,SAAgB,UAAU,EAAE,IAAI,CAAgC;IAChE,SAAgB,WAAW,EAAE,IAAI,CAAiC;CACnE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts
new file mode 100644
index 0000000..84fc924
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts
@@ -0,0 +1,30 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { StaticDataView } from './data-view';
+export default class Config {
+ static deserialize(buffer: StaticDataView): Config;
+ readonly debug: boolean;
+ readonly enableCompression: boolean;
+ readonly enableHtmlFiltering: boolean;
+ readonly enableInMemoryCache: boolean;
+ readonly enableMutationObserver: boolean;
+ readonly enableOptimizations: boolean;
+ readonly enablePushInjectionsOnNavigationEvents: boolean;
+ readonly guessRequestTypeFromUrl: boolean;
+ readonly integrityCheck: boolean;
+ readonly loadCSPFilters: boolean;
+ readonly loadCosmeticFilters: boolean;
+ readonly loadExceptionFilters: boolean;
+ readonly loadExtendedSelectors: boolean;
+ readonly loadGenericCosmeticsFilters: boolean;
+ readonly loadNetworkFilters: boolean;
+ constructor({ debug, enableCompression, enableHtmlFiltering, enableInMemoryCache, enableMutationObserver, enableOptimizations, enablePushInjectionsOnNavigationEvents, guessRequestTypeFromUrl, integrityCheck, loadCSPFilters, loadCosmeticFilters, loadExceptionFilters, loadExtendedSelectors, loadGenericCosmeticsFilters, loadNetworkFilters, }?: Partial<Config>);
+ getSerializedSize(): number;
+ serialize(buffer: StaticDataView): void;
+}
+//# sourceMappingURL=config.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts.map
new file mode 100644
index 0000000..d845a14
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/config.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,MAAM;WACX,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAoBzD,SAAgB,KAAK,EAAE,OAAO,CAAC;IAC/B,SAAgB,iBAAiB,EAAE,OAAO,CAAC;IAC3C,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,sBAAsB,EAAE,OAAO,CAAC;IAChD,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,sCAAsC,EAAE,OAAO,CAAC;IAChE,SAAgB,uBAAuB,EAAE,OAAO,CAAC;IACjD,SAAgB,cAAc,EAAE,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,CAAC;IACxC,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAC9C,SAAgB,qBAAqB,EAAE,OAAO,CAAC;IAC/C,SAAgB,2BAA2B,EAAE,OAAO,CAAC;IACrD,SAAgB,kBAAkB,EAAE,OAAO,CAAC;gBAEhC,EACV,KAAa,EACb,iBAAyB,EACzB,mBAA2B,EAC3B,mBAA0B,EAC1B,sBAA6B,EAC7B,mBAA0B,EAC1B,sCAA6C,EAC7C,uBAA+B,EAC/B,cAAqB,EACrB,cAAqB,EACrB,mBAA0B,EAC1B,oBAA2B,EAC3B,qBAA6B,EAC7B,2BAAkC,EAClC,kBAAyB,GAC1B,GAAE,OAAO,CAAC,MAAM,CAAM;IAkBhB,iBAAiB,IAAI,MAAM;IAM3B,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAiB/C"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts
new file mode 100644
index 0000000..fc1919b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts
@@ -0,0 +1,2 @@
+export default function crc32(buf: Uint8Array, start: number, end: number): number;
+//# sourceMappingURL=crc32.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts.map
new file mode 100644
index 0000000..0c98e32
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/crc32.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"crc32.d.ts","sourceRoot":"","sources":["../../../src/crc32.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBjF"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts
new file mode 100644
index 0000000..0795cb4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts
@@ -0,0 +1,146 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import Compression from './compression';
+interface IDataViewOptions {
+ enableCompression: boolean;
+}
+export declare const EMPTY_UINT8_ARRAY: Uint8Array;
+export declare const EMPTY_UINT32_ARRAY: Uint32Array;
+/**
+ * Return size of of a serialized byte value.
+ */
+export declare function sizeOfByte(): number;
+/**
+ * Return size of of a serialized boolean value.
+ */
+export declare function sizeOfBool(): number;
+/**
+ * Return number of bytes needed to serialize `length`.
+ */
+export declare function sizeOfLength(length: number): number;
+/**
+ * Return number of bytes needed to serialize `array` Uint8Array typed array.
+ *
+ * WARNING: this only returns the correct size if `align` is `false`.
+ */
+export declare function sizeOfBytes(array: Uint8Array, align: boolean): number;
+/**
+ * Return number of bytes needed to serialize `array` Uint8Array typed array.
+ *
+ * WARNING: this only returns the correct size if `align` is `false`.
+ */
+export declare function sizeOfBytesWithLength(length: number, align: boolean): number;
+/**
+ * Return number of bytes needed to serialize `str` ASCII string.
+ */
+export declare function sizeOfASCII(str: string): number;
+/**
+ * Return number of bytes needed to serialize `str` UTF8 string.
+ */
+export declare function sizeOfUTF8(str: string): number;
+/**
+ * Return number of bytes needed to serialize `array`.
+ */
+export declare function sizeOfUint32Array(array: Uint32Array): number;
+export declare function sizeOfNetworkRedirect(str: string, compression: boolean): number;
+export declare function sizeOfNetworkHostname(str: string, compression: boolean): number;
+export declare function sizeOfNetworkCSP(str: string, compression: boolean): number;
+export declare function sizeOfNetworkFilter(str: string, compression: boolean): number;
+export declare function sizeOfCosmeticSelector(str: string, compression: boolean): number;
+export declare function sizeOfRawNetwork(str: string, compression: boolean): number;
+export declare function sizeOfRawCosmetic(str: string, compression: boolean): number;
+/**
+ * This abstraction allows to serialize efficiently low-level values of types:
+ * string, uint8, uint16, uint32, etc. while hiding the complexity of managing
+ * the current offset and growing. It should always be instantiated with a
+ * big-enough length because this will not allow for resizing. To allow
+ * deciding the required total size, function estimating the size needed to
+ * store different primitive values are exposes as static methods.
+ *
+ * This class is also more efficient than the built-in `DataView`.
+ *
+ * The way this is used in practice is that you write pairs of function to
+ * serialize and deserialize a given structure/class (with code being pretty
+ * symetrical). In the serializer you `pushX` values, and in the deserializer
+ * you use `getX` functions to get back the values.
+ */
+export declare class StaticDataView {
+ /**
+ * Create an empty (i.e.: size = 0) StaticDataView.
+ */
+ static empty(options: IDataViewOptions): StaticDataView;
+ /**
+ * Instantiate a StaticDataView instance from `array` of type Uint8Array.
+ */
+ static fromUint8Array(array: Uint8Array, options: IDataViewOptions): StaticDataView;
+ /**
+ * Instantiate a StaticDataView with given `capacity` number of bytes.
+ */
+ static allocate(capacity: number, options: IDataViewOptions): StaticDataView;
+ pos: number;
+ buffer: Uint8Array;
+ compression: Compression | undefined;
+ constructor(buffer: Uint8Array, { enableCompression }: IDataViewOptions);
+ enableCompression(): void;
+ checksum(): number;
+ dataAvailable(): boolean;
+ setPos(pos: number): void;
+ getPos(): number;
+ seekZero(): void;
+ slice(): Uint8Array;
+ subarray(): Uint8Array;
+ /**
+ * Make sure that `this.pos` is aligned on a multiple of 4.
+ */
+ align4(): void;
+ set(buffer: Uint8Array): void;
+ pushBool(bool: boolean): void;
+ getBool(): boolean;
+ setByte(pos: number, byte: number): void;
+ pushByte(octet: number): void;
+ getByte(): number;
+ pushBytes(bytes: Uint8Array, align?: boolean): void;
+ getBytes(align?: boolean): Uint8Array;
+ /**
+ * Allows row access to the internal buffer through a Uint32Array acting like
+ * a view. This is used for super fast writing/reading of large chunks of
+ * Uint32 numbers in the byte array.
+ */
+ getUint32ArrayView(desiredSize: number): Uint32Array;
+ pushUint8(uint8: number): void;
+ getUint8(): number;
+ pushUint16(uint16: number): void;
+ getUint16(): number;
+ pushUint32(uint32: number): void;
+ getUint32(): number;
+ pushUint32Array(arr: Uint32Array): void;
+ getUint32Array(): Uint32Array;
+ pushUTF8(raw: string): void;
+ getUTF8(): string;
+ pushASCII(str: string): void;
+ getASCII(): string;
+ pushNetworkRedirect(str: string): void;
+ getNetworkRedirect(): string;
+ pushNetworkHostname(str: string): void;
+ getNetworkHostname(): string;
+ pushNetworkCSP(str: string): void;
+ getNetworkCSP(): string;
+ pushNetworkFilter(str: string): void;
+ getNetworkFilter(): string;
+ pushCosmeticSelector(str: string): void;
+ getCosmeticSelector(): string;
+ pushRawCosmetic(str: string): void;
+ getRawCosmetic(): string;
+ pushRawNetwork(str: string): void;
+ getRawNetwork(): string;
+ private checkSize;
+ pushLength(length: number): void;
+ getLength(): number;
+}
+export {};
+//# sourceMappingURL=data-view.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts.map
new file mode 100644
index 0000000..097a7c9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/data-view.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"data-view.d.ts","sourceRoot":"","sources":["../../../src/data-view.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts
new file mode 100644
index 0000000..bf3f030
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export declare function isUTF8(bytes: Uint8Array): boolean;
+//# sourceMappingURL=encoding.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts.map
new file mode 100644
index 0000000..f459bb6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/encoding.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0DH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAmBjD"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts
new file mode 100644
index 0000000..bc1167b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts
@@ -0,0 +1,91 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import type { IMessageFromBackground } from '@cliqz/adblocker-content';
+import Config from '../../config';
+import { StaticDataView } from '../../data-view';
+import CosmeticFilter from '../../filters/cosmetic';
+import ReverseIndex from '../reverse-index';
+import FiltersContainer from './filters';
+/**
+ * Given a list of CSS selectors, create a valid stylesheet ready to be
+ * injected in the page. This also takes care to no create rules with too many
+ * selectors for Chrome, see: https://crbug.com/804179
+ */
+export declare function createStylesheet(rules: string[], style: string): string;
+/**
+ * Efficient container for CosmeticFilter instances. Allows to quickly
+ * retrieved scripts and stylesheets to inject in pages for a specific
+ * hostname/domain.
+ */
+export default class CosmeticFilterBucket {
+ static deserialize(buffer: StaticDataView, config: Config): CosmeticFilterBucket;
+ genericRules: FiltersContainer<CosmeticFilter>;
+ classesIndex: ReverseIndex<CosmeticFilter>;
+ hostnameIndex: ReverseIndex<CosmeticFilter>;
+ hrefsIndex: ReverseIndex<CosmeticFilter>;
+ htmlIndex: ReverseIndex<CosmeticFilter>;
+ idsIndex: ReverseIndex<CosmeticFilter>;
+ unhideIndex: ReverseIndex<CosmeticFilter>;
+ baseStylesheet: string | null;
+ extraGenericRules: CosmeticFilter[] | null;
+ constructor({ filters, config }: {
+ filters?: CosmeticFilter[];
+ config: Config;
+ });
+ getFilters(): CosmeticFilter[];
+ update(newFilters: CosmeticFilter[], removedFilters: Set<number> | undefined, config: Config): void;
+ getSerializedSize(): number;
+ serialize(buffer: StaticDataView): void;
+ getHtmlRules({ domain, hostname, }: {
+ domain: string;
+ hostname: string;
+ }): CosmeticFilter[];
+ /**
+ * Request cosmetics and scripts to inject in a page.
+ */
+ getCosmeticsFilters({ domain, hostname, classes, hrefs, ids, allowGenericHides, allowSpecificHides, getBaseRules, getInjectionRules, getExtendedRules, getRulesFromDOM, getRulesFromHostname, }: {
+ domain: string;
+ hostname: string;
+ classes: string[] | undefined;
+ hrefs: string[] | undefined;
+ ids: string[] | undefined;
+ allowGenericHides: boolean;
+ allowSpecificHides: boolean;
+ getBaseRules?: boolean;
+ getInjectionRules?: boolean;
+ getExtendedRules?: boolean;
+ getRulesFromDOM?: boolean;
+ getRulesFromHostname?: boolean;
+ }): {
+ injections: CosmeticFilter[];
+ extended: IMessageFromBackground['extended'];
+ stylesheet: string;
+ };
+ /**
+ * Return the list of filters which can potentially be un-hidden by another
+ * rule currently contained in the cosmetic bucket.
+ */
+ private getGenericRules;
+ /**
+ * The base stylesheet is made of generic filters (not specific to any
+ * hostname) which cannot be hidden (i.e.: there is currently no rule which
+ * might hide their selector). This means that it will never change and is
+ * the same for all sites. We generate it once and re-use it any-time we want
+ * to inject it.
+ */
+ private getBaseStylesheet;
+ /**
+ * This is used to lazily generate both the list of generic rules which can
+ * *potentially be un-hidden* (i.e.: there exists at least one unhide rule
+ * for the selector) and a stylesheet containing all selectors which cannot
+ * be un-hidden. Since this list will not change between updates we can
+ * generate once and use many times.
+ */
+ private lazyPopulateGenericRulesCache;
+}
+//# sourceMappingURL=cosmetic.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts.map
new file mode 100644
index 0000000..1f7f4e4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/cosmetic.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic.d.ts","sourceRoot":"","sources":["../../../../../src/engine/bucket/cosmetic.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts
new file mode 100644
index 0000000..e1aa0e4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts
@@ -0,0 +1,35 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import Config from '../../config';
+import { StaticDataView } from '../../data-view';
+import IFilter from '../../filters/interface';
+/**
+ * Generic filters container (for both CosmeticFilter and NetworkFilter
+ * instances). This abstracts away some of the logic to serialize/lazy-load
+ * lists of filters (which is useful for things like generic cosmetic filters
+ * or $badfilter).
+ */
+export default class FiltersContainer<T extends IFilter> {
+ static deserialize<T extends IFilter>(buffer: StaticDataView, deserialize: (view: StaticDataView) => T, config: Config): FiltersContainer<T>;
+ filters: Uint8Array;
+ private readonly deserialize;
+ private readonly config;
+ constructor({ config, deserialize, filters, }: {
+ config: Config;
+ deserialize: (view: StaticDataView) => T;
+ filters: T[];
+ });
+ /**
+ * Update filters based on `newFilters` and `removedFilters`.
+ */
+ update(newFilters: T[], removedFilters: Set<number> | undefined): void;
+ getSerializedSize(): number;
+ serialize(buffer: StaticDataView): void;
+ getFilters(): T[];
+}
+//# sourceMappingURL=filters.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts.map
new file mode 100644
index 0000000..7c349f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/filters.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../../src/engine/bucket/filters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAe,MAAM,iBAAiB,CAAC;AAC9D,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAO9C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB,CAAC,CAAC,SAAS,OAAO;WACvC,WAAW,CAAC,CAAC,SAAS,OAAO,EACzC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,EACxC,MAAM,EAAE,MAAM,GACb,gBAAgB,CAAC,CAAC,CAAC;IAOf,OAAO,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAG1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,EACV,MAAM,EACN,WAAW,EACX,OAAO,GACR,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,EAAE,CAAC;KACd;IAUD;;OAEG;IACI,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI;IAmEtE,iBAAiB,IAAI,MAAM;IAI3B,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIvC,UAAU,IAAI,CAAC,EAAE;CAgBzB"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts
new file mode 100644
index 0000000..66779ff
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts
@@ -0,0 +1,37 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import Config from '../../config';
+import { StaticDataView } from '../../data-view';
+import NetworkFilter from '../../filters/network';
+import Request from '../../request';
+import ReverseIndex from '../reverse-index';
+import FiltersContainer from './filters';
+/**
+ * Accelerating data structure for network filters matching.
+ */
+export default class NetworkFilterBucket {
+ static deserialize(buffer: StaticDataView, config: Config): NetworkFilterBucket;
+ index: ReverseIndex<NetworkFilter>;
+ badFilters: FiltersContainer<NetworkFilter>;
+ private badFiltersIds;
+ constructor({ filters, config }: {
+ filters?: NetworkFilter[];
+ config: Config;
+ });
+ getFilters(): NetworkFilter[];
+ update(newFilters: NetworkFilter[], removedFilters: Set<number> | undefined): void;
+ getSerializedSize(): number;
+ serialize(buffer: StaticDataView): void;
+ matchAll(request: Request): NetworkFilter[];
+ match(request: Request): NetworkFilter | undefined;
+ /**
+ * Given a matching filter, check if it is disabled by a $badfilter
+ */
+ private isFilterDisabled;
+}
+//# sourceMappingURL=network.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts.map
new file mode 100644
index 0000000..fb1f93e
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/bucket/network.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../../src/engine/bucket/network.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,OAAO,MAAM,eAAe,CAAC;AAEpC,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;WACxB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAe/E,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IAMnC,UAAU,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAInD,OAAO,CAAC,aAAa,CAAqB;gBAE9B,EAAE,OAAY,EAAE,MAAM,EAAE,EAAE;QAAE,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAoB5E,UAAU,IAAI,aAAa,EAAE;IAK7B,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI;IAgBlF,iBAAiB,IAAI,MAAM;IAI3B,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAKvC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE;IAa3C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS;IAczD;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuBzB"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts
new file mode 100644
index 0000000..717c0e7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts
@@ -0,0 +1,29 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { StaticDataView } from '../data-view';
+export declare class Domains {
+ static parse(parts: string[], debug?: boolean): Domains | undefined;
+ static deserialize(buffer: StaticDataView): Domains;
+ readonly entities: Uint32Array | undefined;
+ readonly hostnames: Uint32Array | undefined;
+ readonly notEntities: Uint32Array | undefined;
+ readonly notHostnames: Uint32Array | undefined;
+ readonly parts: string | undefined;
+ constructor({ entities, hostnames, notEntities, notHostnames, parts, }: {
+ entities: Uint32Array | undefined;
+ hostnames: Uint32Array | undefined;
+ notEntities: Uint32Array | undefined;
+ notHostnames: Uint32Array | undefined;
+ parts: string | undefined;
+ });
+ updateId(hash: number): number;
+ serialize(buffer: StaticDataView): void;
+ getSerializedSize(): number;
+ match(hostnameHashes: Uint32Array, entityHashes: Uint32Array): boolean;
+}
+//# sourceMappingURL=domains.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts.map
new file mode 100644
index 0000000..b7bc245
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/domains.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../../src/engine/domains.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,cAAc,EAAiC,MAAM,cAAc,CAAC;AAG7E,qBAAa,OAAO;WACJ,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,GAAG,SAAS;WAmDnE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;IAc1D,SAAgB,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAClD,SAAgB,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IAGnD,SAAgB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrD,SAAgB,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;IAGtD,SAAgB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE9B,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,GACN,EAAE;QACD,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;QAClC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;QACnC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;QACrC,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;QACtC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B;IAaM,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA8B9B,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAoCvC,iBAAiB,IAAI,MAAM;IA0B3B,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,GAAG,OAAO;CA0C9E"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts
new file mode 100644
index 0000000..1439245
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts
@@ -0,0 +1,175 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import type { IMessageFromBackground } from '@cliqz/adblocker-content';
+import Config from '../config';
+import { EventEmitter } from '../events';
+import { Fetch } from '../fetch';
+import { HTMLSelector } from '../html-filtering';
+import CosmeticFilter from '../filters/cosmetic';
+import NetworkFilter from '../filters/network';
+import { IListDiff, IRawDiff } from '../lists';
+import Request from '../request';
+import Resources from '../resources';
+import CosmeticFilterBucket from './bucket/cosmetic';
+import NetworkFilterBucket from './bucket/network';
+import { Metadata, IPatternLookupResult } from './metadata';
+export declare const ENGINE_VERSION = 619;
+export interface BlockingResponse {
+ match: boolean;
+ redirect: undefined | {
+ body: string;
+ contentType: string;
+ dataUrl: string;
+ };
+ exception: NetworkFilter | undefined;
+ filter: NetworkFilter | undefined;
+ metadata: IPatternLookupResult[] | undefined;
+}
+export interface Caching {
+ path: string;
+ read: (path: string) => Promise<Uint8Array>;
+ write: (path: string, buffer: Uint8Array) => Promise<void>;
+}
+export default class FilterEngine extends EventEmitter<'csp-injected' | 'html-filtered' | 'request-allowed' | 'request-blocked' | 'request-redirected' | 'request-whitelisted' | 'script-injected' | 'style-injected'> {
+ private static fromCached;
+ static empty<T extends FilterEngine>(this: new (...args: any[]) => T, config?: Partial<Config>): T;
+ /**
+ * Create an instance of `FiltersEngine` (or subclass like `ElectronBlocker`,
+ * etc.), from the list of subscriptions provided as argument (e.g.:
+ * EasyList).
+ *
+ * Lists are fetched using the instance of `fetch` provided as a first
+ * argument. Optionally resources.txt and config can be provided.
+ */
+ static fromLists<T extends typeof FilterEngine>(this: T, fetch: Fetch, urls: string[], config?: Partial<Config>, caching?: Caching): Promise<InstanceType<T>>;
+ /**
+ * Initialize blocker of *ads only*.
+ *
+ * Attempt to initialize a blocking engine using a pre-built version served
+ * from Cliqz's CDN. If this fails (e.g.: if no pre-built engine is available
+ * for this version of the library), then falls-back to using `fromLists(...)`
+ * method with the same subscriptions.
+ */
+ static fromPrebuiltAdsOnly<T extends typeof FilterEngine>(this: T, fetchImpl?: Fetch, caching?: Caching): Promise<InstanceType<T>>;
+ /**
+ * Same as `fromPrebuiltAdsOnly(...)` but also contains rules to block
+ * tracking (i.e.: using extra lists such as EasyPrivacy and more).
+ */
+ static fromPrebuiltAdsAndTracking<T extends typeof FilterEngine>(this: T, fetchImpl?: Fetch, caching?: Caching): Promise<InstanceType<T>>;
+ /**
+ * Same as `fromPrebuiltAdsAndTracking(...)` but also contains annoyances
+ * rules to block things like cookie notices.
+ */
+ static fromPrebuiltFull<T extends typeof FilterEngine>(this: T, fetchImpl?: Fetch, caching?: Caching): Promise<InstanceType<T>>;
+ static fromTrackerDB<T extends typeof FilterEngine>(this: T, rawJsonDump: any, options?: Partial<Config>): InstanceType<T>;
+ static parse<T extends FilterEngine>(this: new (...args: any[]) => T, filters: string, options?: Partial<Config>): T;
+ static deserialize<T extends FilterEngine>(this: new (...args: any[]) => T, serialized: Uint8Array): T;
+ lists: Map<string, string>;
+ csp: NetworkFilterBucket;
+ hideExceptions: NetworkFilterBucket;
+ exceptions: NetworkFilterBucket;
+ importants: NetworkFilterBucket;
+ redirects: NetworkFilterBucket;
+ filters: NetworkFilterBucket;
+ cosmetics: CosmeticFilterBucket;
+ metadata: Metadata | undefined;
+ resources: Resources;
+ readonly config: Config;
+ constructor({ cosmeticFilters, networkFilters, config, lists, }?: {
+ cosmeticFilters?: CosmeticFilter[];
+ networkFilters?: NetworkFilter[];
+ lists?: Map<string, string>;
+ config?: Partial<Config>;
+ });
+ /**
+ * Estimate the number of bytes needed to serialize this instance of
+ * `FiltersEngine` using the `serialize(...)` method. It is used internally
+ * by `serialize(...)` to allocate a buffer of the right size and you should
+ * not have to call it yourself most of the time.
+ *
+ * There are cases where we cannot estimate statically the exact size of the
+ * resulting buffer (due to alignement which needs to be performed); this
+ * method will return a safe estimate which will always be at least equal to
+ * the real number of bytes needed, or bigger (usually of a few bytes only:
+ * ~20 bytes is to be expected).
+ */
+ getSerializedSize(): number;
+ /**
+ * Creates a binary representation of the full engine. It can be stored
+ * on-disk for faster loading of the adblocker. The `deserialize` static
+ * method of Engine can be used to restore the engine.
+ */
+ serialize(array?: Uint8Array): Uint8Array;
+ /**
+ * Update engine with new filters or resources.
+ */
+ loadedLists(): string[];
+ hasList(name: string, checksum: string): boolean;
+ /**
+ * Update engine with `resources.txt` content.
+ */
+ updateResources(data: string, checksum: string): boolean;
+ getFilters(): {
+ networkFilters: NetworkFilter[];
+ cosmeticFilters: CosmeticFilter[];
+ };
+ /**
+ * Update engine with new filters as well as optionally removed filters.
+ */
+ update({ newNetworkFilters, newCosmeticFilters, removedCosmeticFilters, removedNetworkFilters, }: Partial<IListDiff>): boolean;
+ updateFromDiff({ added, removed }: Partial<IRawDiff>): boolean;
+ /**
+ * Return a list of HTML filtering rules.
+ */
+ getHtmlFilters({ url, hostname, domain, }: {
+ url: string;
+ hostname: string;
+ domain: string | null | undefined;
+ }): HTMLSelector[];
+ /**
+ * Given `hostname` and `domain` of a page (or frame), return the list of
+ * styles and scripts to inject in the page.
+ */
+ getCosmeticsFilters({ url, hostname, domain, classes, hrefs, ids, getBaseRules, getInjectionRules, getExtendedRules, getRulesFromDOM, getRulesFromHostname, }: {
+ url: string;
+ hostname: string;
+ domain: string | null | undefined;
+ classes?: string[] | undefined;
+ hrefs?: string[] | undefined;
+ ids?: string[] | undefined;
+ getBaseRules?: boolean;
+ getInjectionRules?: boolean;
+ getExtendedRules?: boolean;
+ getRulesFromDOM?: boolean;
+ getRulesFromHostname?: boolean;
+ }): IMessageFromBackground;
+ /**
+ * Given a `request`, return all matching network filters found in the engine.
+ */
+ matchAll(request: Request): Set<NetworkFilter>;
+ /**
+ * Given a "main_frame" request, check if some content security policies
+ * should be injected in the page.
+ */
+ getCSPDirectives(request: Request): string | undefined;
+ /**
+ * Decide if a network request (usually from WebRequest API) should be
+ * blocked, redirected or allowed.
+ */
+ match(request: Request, withMetadata?: boolean | undefined): BlockingResponse;
+ getPatternMetadata(request: Request, { getDomainMetadata }?: {
+ getDomainMetadata?: boolean | undefined;
+ }): IPatternLookupResult[];
+ blockScripts(): this;
+ blockImages(): this;
+ blockMedias(): this;
+ blockFrames(): this;
+ blockFonts(): this;
+ blockStyles(): this;
+}
+//# sourceMappingURL=engine.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts.map
new file mode 100644
index 0000000..02a5dbb
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/engine.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/engine/engine.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts
new file mode 100644
index 0000000..c5610a9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts
@@ -0,0 +1,43 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { StaticDataView } from '../data-view';
+/**
+ * This is a simpler version of reverse-index data structure which implements
+ * a simple Map-like class, backed by compact typed arrays. This means that
+ * the structure can be serialized to a typed array very quickly and loaded
+ * back instantly.
+ */
+export declare class CompactMap<T> {
+ static deserialize<T>(buffer: StaticDataView, deserialize: (view: StaticDataView) => T): CompactMap<T>;
+ private readonly cache;
+ private bucketsIndex;
+ private tokensLookupIndex;
+ private valuesIndexStart;
+ private numberOfValues;
+ private view;
+ private readonly deserializeValue;
+ constructor({ serialize, deserialize, getKeys, getSerializedSize, values, }: {
+ serialize: (value: T, view: StaticDataView) => void;
+ deserialize: (view: StaticDataView) => T;
+ getKeys: (value: T) => number[];
+ getSerializedSize: (value: T) => number;
+ values: T[];
+ });
+ private updateInternals;
+ getValues(): T[];
+ /**
+ * Estimate the number of bytes needed to serialize this instance of `Map`.
+ */
+ getSerializedSize(): number;
+ /**
+ * Dump this index to `buffer`.
+ */
+ serialize(buffer: StaticDataView): void;
+ get(key: number): T[];
+}
+//# sourceMappingURL=map.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts.map
new file mode 100644
index 0000000..4b0ea2a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/map.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../src/engine/map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAmC,MAAM,cAAc,CAAC;AAK/E;;;;;GAKG;AACH,qBAAa,UAAU,CAAC,CAAC;WACT,WAAW,CAAC,CAAC,EACzB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,GACvC,UAAU,CAAC,CAAC,CAAC;IAwChB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IAErD,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,IAAI,CAAiB;IAE7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;gBAEnD,EACV,SAAS,EACT,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,MAAM,GACP,EAAE;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;QACpD,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;QAChC,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;QACxC,MAAM,EAAE,CAAC,EAAE,CAAC;KACb;IAwGD,OAAO,CAAC,eAAe;IAsBhB,SAAS,IAAI,CAAC,EAAE;IAmBvB;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAKlC;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IASvC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;CAiD7B"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts
new file mode 100644
index 0000000..60bd62d
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts
@@ -0,0 +1,52 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { CompactMap } from './map';
+import { StaticDataView } from '../data-view';
+import NetworkFilter from '../filters/network';
+import { ICategory } from './metadata/categories';
+import { IOrganization } from './metadata/organizations';
+import { IPattern } from './metadata/patterns';
+export interface IPatternLookupResult {
+ pattern: IPattern;
+ organization: IOrganization | null;
+ category: ICategory | null;
+}
+export declare class Metadata {
+ static deserialize(buffer: StaticDataView): Metadata;
+ organizations: CompactMap<IOrganization>;
+ categories: CompactMap<ICategory>;
+ patterns: CompactMap<IPattern>;
+ constructor(rawTrackerDB: any);
+ getCategories(): ICategory[];
+ getOrganizations(): IOrganization[];
+ getPatterns(): IPattern[];
+ /**
+ * Estimate the total serialized size of this Metadata instance.
+ */
+ getSerializedSize(): number;
+ /**
+ * Serialize this instance of Metadata into `view`
+ */
+ serialize(buffer: StaticDataView): void;
+ /**
+ * Given an instance of NetworkFilter, retrieve pattern, organization and
+ * category information.
+ */
+ fromFilter(filter: NetworkFilter): IPatternLookupResult[];
+ /**
+ * Given a domain, retrieve pattern, organization and category information.
+ */
+ fromDomain(domain: string): IPatternLookupResult[];
+ /**
+ * Given an `id` from filter, retrieve using the NetworkFilter.getId() method,
+ * lookup associated patterns (including organization and category) in an
+ * efficient way.
+ */
+ fromId(id: number): IPatternLookupResult[];
+}
+//# sourceMappingURL=metadata.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts.map
new file mode 100644
index 0000000..0504709
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../src/engine/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,SAAS,EAKV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EAKd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,QAAQ,EAIT,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,QAAQ,CAAC;IAClB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;CAC5B;AAWD,qBAAa,QAAQ;WACL,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ;IAQpD,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAE1B,YAAY,EAAE,GAAG;IAkEtB,aAAa,IAAI,SAAS,EAAE;IAI5B,gBAAgB,IAAI,aAAa,EAAE;IAInC,WAAW,IAAI,QAAQ,EAAE;IAIhC;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAQlC;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAM9C;;;OAGG;IACI,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,oBAAoB,EAAE;IAIhE;;OAEG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAmBzD;;;;OAIG;IACI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,EAAE;CAgBlD"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts
new file mode 100644
index 0000000..349a5bd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts
@@ -0,0 +1,24 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { CompactMap } from '../map';
+import { StaticDataView } from '../../data-view';
+export interface ICategory {
+ key: string;
+ name: string;
+ color: string;
+ description: string;
+}
+export declare function isValid(category: any): category is ICategory;
+export declare function getKey(category: {
+ key: string;
+}): number;
+export declare function getSerializedSize(category: ICategory): number;
+export declare function serialize(category: ICategory, view: StaticDataView): void;
+export declare function deserialize(view: StaticDataView): ICategory;
+export declare function createMap(categories: ICategory[]): CompactMap<ICategory>;
+//# sourceMappingURL=categories.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts.map
new file mode 100644
index 0000000..4c62808
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/categories.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../../../src/engine/metadata/categories.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,IAAI,SAAS,CA4B5D;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAExD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,CAO7D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,QAKlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAO3D;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAQxE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts
new file mode 100644
index 0000000..5aa60cf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts
@@ -0,0 +1,33 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { CompactMap } from '../map';
+import { StaticDataView } from '../../data-view';
+export interface IOrganization {
+ key: string;
+ name: string;
+ description: string | null;
+ website_url: string | null;
+ country: string | null;
+ privacy_policy_url: string | null;
+ privacy_contact: string | null;
+ ghostery_id: string | null;
+}
+/**
+ * This function takes an object representing an organization from TrackerDB
+ * dump and validates its shape. The result is the same object, but strongly
+ * typed.
+ */
+export declare function isValid(organization: any): organization is IOrganization;
+export declare function getKey(organization: {
+ key: string;
+}): number;
+export declare function getSerializedSize(organization: IOrganization): number;
+export declare function serialize(organization: IOrganization, view: StaticDataView): void;
+export declare function deserialize(view: StaticDataView): IOrganization;
+export declare function createMap(organizations: IOrganization[]): CompactMap<IOrganization>;
+//# sourceMappingURL=organizations.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts.map
new file mode 100644
index 0000000..012a6ee
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/organizations.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../../../../src/engine/metadata/organizations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,YAAY,EAAE,GAAG,GAAG,YAAY,IAAI,aAAa,CAqDxE;AAED,wBAAgB,MAAM,CAAC,YAAY,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,CAWrE;AAED,wBAAgB,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,QAS1E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAW/D;AAED,wBAAgB,SAAS,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,CAQnF"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts
new file mode 100644
index 0000000..6f1fb25
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts
@@ -0,0 +1,31 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { CompactMap } from '../map';
+import { StaticDataView } from '../../data-view';
+export interface IPattern {
+ readonly key: string;
+ readonly name: string;
+ readonly category: string;
+ readonly organization: string | null;
+ readonly alias: string | null;
+ readonly website_url: string | null;
+ readonly ghostery_id: string | null;
+ readonly domains: string[];
+ readonly filters: string[];
+}
+/**
+ * This function takes an object representing a pattern from TrackerDB dump
+ * and validates its shape. The result is the same object, but strongly typed.
+ */
+export declare function isValid(pattern: any): pattern is IPattern;
+export declare function getKeys(pattern: IPattern): number[];
+export declare function getSerializedSize(pattern: IPattern): number;
+export declare function serialize(pattern: IPattern, view: StaticDataView): void;
+export declare function deserialize(view: StaticDataView): IPattern;
+export declare function createMap(patterns: IPattern[]): CompactMap<IPattern>;
+//# sourceMappingURL=patterns.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts.map
new file mode 100644
index 0000000..d507815
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/metadata/patterns.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../../src/engine/metadata/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAA4B,MAAM,iBAAiB,CAAC;AAG3E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,QAAQ,CAqDzD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,EAAE,CAkBnD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAsB3D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,QAkBhE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAgC1D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAQpE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts
new file mode 100644
index 0000000..3b69754
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts
@@ -0,0 +1,19 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import CosmeticFilter from '../filters/cosmetic';
+import NetworkFilter from '../filters/network';
+/**
+ * Optimizer which returns the list of original filters.
+ */
+export declare function noopOptimizeNetwork(filters: NetworkFilter[]): NetworkFilter[];
+export declare function noopOptimizeCosmetic(filters: CosmeticFilter[]): CosmeticFilter[];
+/**
+ * Fusion a set of `filters` by applying optimizations sequentially.
+ */
+export declare function optimizeNetwork(filters: NetworkFilter[]): NetworkFilter[];
+//# sourceMappingURL=optimizer.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts.map
new file mode 100644
index 0000000..f26bdbd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/optimizer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"optimizer.d.ts","sourceRoot":"","sources":["../../../../src/engine/optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,aAAsC,MAAM,oBAAoB,CAAC;AA2KxE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAE7E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAEhF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAuBzE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts
new file mode 100644
index 0000000..197cb2b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts
@@ -0,0 +1,119 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import Config from '../config';
+import { StaticDataView } from '../data-view';
+import IFilter from '../filters/interface';
+export declare function nextPow2(v: number): number;
+/**
+ * The ReverseIndex is an accelerating data structure which allows finding a
+ * subset of the filters given a list of tokens seen in a URL. It is the core
+ * of the adblocker's matching capabilities and speed.
+ *
+ * It has mainly two caracteristics:
+ * 1. It is very compact and is able to load fast.
+ * 2. It is *very fast* in finding potential candidates.
+ *
+ * Conceptually, the reverse index dispatches filters in "buckets" (an array of
+ * one or more filters). Filters living in the same bucket are guaranteed to
+ * share at least one of their tokens (appearing in the pattern). For example:
+ *
+ * - Bucket 1 (ads):
+ * - /ads.js
+ * - /script/ads/tracking.js
+ * - /ads/
+ * - Bucket 2 (tracking)
+ * - /tracking.js
+ * - ||tracking.com/cdn
+ *
+ * We see that filters in "Bucket 1" are indexed using the token "ads" and
+ * "Bucket 2" using token "tracking".
+ *
+ * This property allows to quickly discard most of the filters when we match a
+ * URL. To achieve this, the URL is tokenized in the same way filters are
+ * tokenized and for each token, we check if there are some filters available.
+ *
+ * For example:
+ *
+ * URL "https://tracking.com/" has the following tokens: "https", "tracking"
+ * and "com". We immediatly see that we only check the two filters in the
+ * "tracking" bucket since they are the only ones having a common token with
+ * the URL.
+ *
+ * How do we pick the token for each filter?
+ * =========================================
+ *
+ * Each filter is only indexed *once*, which means that we need to pick one of
+ * the tokens appearing in the pattern. We choose the token such that each
+ * filter is indexed using the token which was the *least seen* globally. In
+ * other words, we pick the most discriminative token for each filter. This is
+ * done using the following algorithm:
+ * 1. Tokenize all the filters which will be stored in the index
+ * 2. Compute a histogram of frequency of each token (globally)
+ * 3. Select the best token for each filter (lowest frequency)
+ */
+export default class ReverseIndex<T extends IFilter> {
+ static deserialize<T extends IFilter>(buffer: StaticDataView, deserialize: (view: StaticDataView) => T, optimize: (filters: T[]) => T[], config: Config): ReverseIndex<T>;
+ private bucketsIndex;
+ private filtersIndexStart;
+ private numberOfFilters;
+ private tokensLookupIndex;
+ private view;
+ private readonly cache;
+ private readonly deserializeFilter;
+ private readonly optimize;
+ private readonly config;
+ constructor({ deserialize, filters, optimize, config, }: {
+ deserialize: (view: StaticDataView) => T;
+ filters: T[];
+ optimize: (filters: T[]) => T[];
+ config: Config;
+ });
+ /**
+ * Load all filters from this index in memory (i.e.: deserialize them from
+ * the byte array into NetworkFilter or CosmeticFilter instances). This is
+ * mostly useful for debugging or testing purposes.
+ */
+ getFilters(): T[];
+ /**
+ * Return an array of all the tokens currently used as keys of the "buckets index".
+ */
+ getTokens(): Uint32Array;
+ /**
+ * Estimate the number of bytes needed to serialize this instance of `ReverseIndex`.
+ */
+ getSerializedSize(): number;
+ /**
+ * Dump this index to `buffer`.
+ */
+ serialize(buffer: StaticDataView): void;
+ /**
+ * Iterate on all filters found in buckets associated with the given list of
+ * tokens. The callback is called on each of them. Early termination can be
+ * achieved if the callback returns `false`.
+ *
+ * This will not check if each filter returned would match a given request but
+ * is instead used as a list of potential candidates (much smaller than the
+ * total set of filters; typically between 5 and 10 filters will be checked).
+ */
+ iterMatchingFilters(tokens: Uint32Array, cb: (f: T) => boolean): void;
+ /**
+ * Re-create the internal data-structure of the reverse index *in-place*. It
+ * needs to be called with a list of new filters and optionally a list of ids
+ * (as returned by either NetworkFilter.getId() or CosmeticFilter.getId())
+ * which need to be removed from the index.
+ */
+ update(newFilters: T[], removedFilters: Set<number> | undefined): void;
+ private updateInternals;
+ /**
+ * If a bucket exists for the given token, call the callback on each filter
+ * found inside. An early termination mechanism is built-in, to stop iterating
+ * as soon as `false` is returned from the callback.
+ */
+ private iterBucket;
+}
+//# sourceMappingURL=reverse-index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts.map
new file mode 100644
index 0000000..856418b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/engine/reverse-index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"reverse-index.d.ts","sourceRoot":"","sources":["../../../../src/engine/reverse-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAmC,MAAM,cAAc,CAAC;AAC/E,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAG3C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS1C;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC,SAAS,OAAO;WACnC,WAAW,CAAC,CAAC,SAAS,OAAO,EACzC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,EACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAC/B,MAAM,EAAE,MAAM,GACb,YAAY,CAAC,CAAC,CAAC;IAgElB,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,IAAI,CAAiB;IAM7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAQ3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAShE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,EACV,WAAW,EACX,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;KAChB;IAWD;;;;OAIG;IACI,UAAU,IAAI,CAAC,EAAE;IAmBxB;;OAEG;IACI,SAAS,IAAI,WAAW;IAU/B;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAKlC;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAS9C;;;;;;;;OAQG;IACI,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI;IAiB5E;;;;;OAKG;IACI,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI;IAuL7E,OAAO,CAAC,eAAe;IAsBvB;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAoFnB"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts
new file mode 100644
index 0000000..84423ef
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts
@@ -0,0 +1,40 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/**
+ * Type of an event listener (i.e.: callback). It accepts arbitrary arguments
+ * and is not expected to return any result.
+ */
+type EventListener = (...args: any[]) => void;
+/**
+ * Simple and efficient `EventEmitter` abstraction (following conventions from
+ * Node.js) allowing partially typed event emitting. The set of event names is
+ * specified as a type parameter while instantiating the event emitter.
+ */
+export declare class EventEmitter<EventNames> {
+ private onceListeners;
+ private onListeners;
+ /**
+ * Register an event listener for `event`.
+ */
+ on(event: EventNames, callback: EventListener): void;
+ /**
+ * Register an event listener for `event`; but only listen to first instance
+ * of this event. The listener is automatically deleted afterwards.
+ */
+ once(event: EventNames, callback: EventListener): void;
+ /**
+ * Remove `callback` from list of listeners for `event`.
+ */
+ unsubscribe(event: EventNames, callback: EventListener): void;
+ /**
+ * Emit an event. Call all registered listeners to this event.
+ */
+ emit(event: EventNames, ...args: any[]): void;
+}
+export {};
+//# sourceMappingURL=events.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts.map
new file mode 100644
index 0000000..3dd69a6
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/events.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAsE9C;;;;GAIG;AACH,qBAAa,YAAY,CAAC,UAAU;IAClC,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,WAAW,CAAyC;IAE5D;;OAEG;IACI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI3D;;;OAGG;IACI,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI7D;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKpE;;OAEG;IACI,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAMrD"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts
new file mode 100644
index 0000000..1616253
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts
@@ -0,0 +1,34 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+interface FetchResponse {
+ text: () => Promise<string>;
+ arrayBuffer: () => Promise<ArrayBuffer>;
+ json: () => Promise<any>;
+}
+export type Fetch = (url: string) => Promise<FetchResponse>;
+/**
+ * Built-in fetch helpers can be used to initialize the adblocker from
+ * pre-built presets or raw lists (fetched from multiple sources). In case of
+ * failure (e.g. timeout), the whole process of initialization fails. Timeouts
+ * are not so uncommon, and retrying to fetch usually succeeds.
+ */
+export declare function fetchWithRetry(fetch: Fetch, url: string): Promise<FetchResponse>;
+export declare const adsLists: string[];
+export declare const adsAndTrackingLists: string[];
+export declare const fullLists: string[];
+/**
+ * Fetch latest version of enabledByDefault blocking lists.
+ */
+export declare function fetchLists(fetch: Fetch, urls: string[]): Promise<string[]>;
+/**
+ * Fetch latest version of uBlock Origin's resources, used to inject scripts in
+ * the page or redirect request to data URLs.
+ */
+export declare function fetchResources(fetch: Fetch): Promise<string>;
+export {};
+//# sourceMappingURL=fetch.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts.map
new file mode 100644
index 0000000..fc8ae29
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/fetch.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBhF;AASD,eAAO,MAAM,QAAQ,UAapB,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,eAAO,MAAM,SAAS,UAAqE,CAAC;AAE5F;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5D"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts
new file mode 100644
index 0000000..fcf6a59
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts
@@ -0,0 +1,99 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { AST } from '@cliqz/adblocker-extended-selectors';
+import { Domains } from '../engine/domains';
+import { StaticDataView } from '../data-view';
+import IFilter from './interface';
+import { HTMLSelector } from '../html-filtering';
+export declare const DEFAULT_HIDDING_STYLE: string;
+/***************************************************************************
+ * Cosmetic filters parsing
+ * ************************************************************************ */
+export default class CosmeticFilter implements IFilter {
+ /**
+ * Given a line that we know contains a cosmetic filter, create a CosmeticFiler
+ * instance out of it. This function should be *very* efficient, as it will be
+ * used to parse tens of thousands of lines.
+ */
+ static parse(line: string, debug?: boolean): CosmeticFilter | null;
+ /**
+ * Deserialize cosmetic filters. The code accessing the buffer should be
+ * symetrical to the one in `serializeCosmeticFilter`.
+ */
+ static deserialize(buffer: StaticDataView): CosmeticFilter;
+ readonly mask: number;
+ readonly selector: string;
+ readonly domains: Domains | undefined;
+ readonly style: string | undefined;
+ readonly rawLine: string | undefined;
+ private id;
+ constructor({ mask, selector, domains, rawLine, style, }: {
+ mask: number;
+ domains: Domains | undefined;
+ rawLine: string | undefined;
+ selector: string;
+ style: string | undefined;
+ });
+ isCosmeticFilter(): boolean;
+ isNetworkFilter(): boolean;
+ /**
+ * The format of a cosmetic filter is:
+ *
+ * | mask | selector length | selector... | hostnames length | hostnames...
+ * 32 16 16
+ *
+ * The header (mask) is 32 bits, then we have a total of 32 bits to store the
+ * length of `selector` and `hostnames` (16 bits each).
+ *
+ * Improvements similar to the onces mentioned in `serializeNetworkFilters`
+ * could be applied here, to get a more compact representation.
+ */
+ serialize(buffer: StaticDataView): void;
+ /**
+ * Return an estimation of the size (in bytes) needed to persist this filter
+ * in a DataView. This does not need to be 100% accurate but should be an
+ * upper-bound. It should also be as fast as possible.
+ */
+ getSerializedSize(compression: boolean): number;
+ /**
+ * Create a more human-readable version of this filter. It is mainly used for
+ * debugging purpose, as it will expand the values stored in the bit mask.
+ */
+ toString(): string;
+ match(hostname: string, domain: string): boolean;
+ /**
+ * Get tokens for this filter. It can be indexed multiple times if multiple
+ * hostnames are specified (e.g.: host1,host2##.selector).
+ */
+ getTokens(): Uint32Array[];
+ parseScript(): {
+ name: string;
+ args: string[];
+ } | undefined;
+ getScript(js: Map<string, string>): string | undefined;
+ hasHostnameConstraint(): boolean;
+ getId(): number;
+ hasCustomStyle(): boolean;
+ getStyle(): string;
+ getStyleAttributeHash(): string;
+ getSelector(): string;
+ getSelectorAST(): AST | undefined;
+ getExtendedSelector(): HTMLSelector | undefined;
+ isExtended(): boolean;
+ isRemove(): boolean;
+ isUnhide(): boolean;
+ isScriptInject(): boolean;
+ isCSS(): boolean;
+ isIdSelector(): boolean;
+ isClassSelector(): boolean;
+ isHrefSelector(): boolean;
+ isUnicode(): boolean;
+ isHtmlFiltering(): boolean;
+ isGenericHide(): boolean;
+}
+//# sourceMappingURL=cosmetic.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts.map
new file mode 100644
index 0000000..84b4094
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/cosmetic.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"cosmetic.d.ts","sourceRoot":"","sources":["../../../../src/filters/cosmetic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,GAAG,EAIJ,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAEL,cAAc,EAKf,MAAM,cAAc,CAAC;AActB,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAG9E,eAAO,MAAM,qBAAqB,EAAE,MAAoC,CAAC;AAoIzE;;8EAE8E;AAE9E,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,OAAO;IACpD;;;;OAIG;WACW,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,cAAc,GAAG,IAAI;IAuLhF;;;OAGG;WACW,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc;IAoBjE,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC,SAAgB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAE7C,SAAgB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,SAAgB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5C,OAAO,CAAC,EAAE,CAAqB;gBAEnB,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,GACN,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B;IAUM,gBAAgB,IAAI,OAAO;IAI3B,eAAe,IAAI,OAAO;IAIjC;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAiC9C;;;;OAIG;IACI,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM;IAwBtD;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAgClB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IA4BvD;;;OAGG;IACI,SAAS,IAAI,WAAW,EAAE;IAyG1B,WAAW,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS;IA6F3D,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS;IAsBtD,qBAAqB,IAAI,OAAO;IAIhC,KAAK,IAAI,MAAM;IAOf,cAAc,IAAI,OAAO;IAIzB,QAAQ,IAAI,MAAM;IAIlB,qBAAqB,IAAI,MAAM;IAI/B,WAAW,IAAI,MAAM;IAIrB,cAAc,IAAI,GAAG,GAAG,SAAS;IAIjC,mBAAmB,IAAI,YAAY,GAAG,SAAS;IAI/C,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,QAAQ,IAAI,OAAO;IAInB,cAAc,IAAI,OAAO;IAIzB,KAAK,IAAI,OAAO;IAIhB,YAAY,IAAI,OAAO;IAIvB,eAAe,IAAI,OAAO;IAI1B,cAAc,IAAI,OAAO;IAIzB,SAAS,IAAI,OAAO;IAIpB,eAAe,IAAI,OAAO;IAU1B,aAAa,IAAI,OAAO;CAGhC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts
new file mode 100644
index 0000000..1e4eee5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts
@@ -0,0 +1,33 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare class HidingBuilder {
+}
+declare class NetworkBuilder {
+ private options;
+ private prefix;
+ private infix;
+ private suffix;
+ private redirect;
+ private blockRequestsWithType;
+ images(): NetworkBuilder;
+ scripts(): NetworkBuilder;
+ frames(): NetworkBuilder;
+ fonts(): NetworkBuilder;
+ medias(): NetworkBuilder;
+ styles(): NetworkBuilder;
+ redirectTo(redirect: string): NetworkBuilder;
+ urlContains(infix: string): NetworkBuilder;
+ urlStartsWith(prefix: string): NetworkBuilder;
+ urlEndsWith(suffix: string): NetworkBuilder;
+ withHostname(hostname: string): NetworkBuilder;
+ toString(): string;
+}
+export declare function block(): NetworkBuilder;
+export declare function hide(): HidingBuilder;
+export {};
+//# sourceMappingURL=dsl.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts.map
new file mode 100644
index 0000000..51dc059
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/dsl.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../../src/filters/dsl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAM,aAAa;CAAG;AAItB,cAAM,cAAc;IAClB,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAiC;IAE/C,OAAO,CAAC,QAAQ,CAAiC;IAEjD,OAAO,CAAC,qBAAqB;IAStB,MAAM,IAAI,cAAc;IAIxB,OAAO,IAAI,cAAc;IAIzB,MAAM,IAAI,cAAc;IAIxB,KAAK,IAAI,cAAc;IAIvB,MAAM,IAAI,cAAc;IAIxB,MAAM,IAAI,cAAc;IAIxB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAQ5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAQ1C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAQ7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAQ3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAQ9C,QAAQ,IAAI,MAAM;CA6B1B;AAED,wBAAgB,KAAK,IAAI,cAAc,CAEtC;AAED,wBAAgB,IAAI,IAAI,aAAa,CAEpC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts
new file mode 100644
index 0000000..c66d947
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts
@@ -0,0 +1,16 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { StaticDataView } from '../data-view';
+export default interface IFilter {
+ mask: number;
+ getId: () => number;
+ getTokens: () => Uint32Array[];
+ serialize: (buffer: StaticDataView) => void;
+ getSerializedSize(compression: boolean): number;
+}
+//# sourceMappingURL=interface.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts.map
new file mode 100644
index 0000000..a87f049
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/interface.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/filters/interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,OAAO,WAAW,OAAO;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;CACjD"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts
new file mode 100644
index 0000000..1de64b4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts
@@ -0,0 +1,182 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { Domains } from '../engine/domains';
+import { StaticDataView } from '../data-view';
+import Request, { RequestType } from '../request';
+import IFilter from './interface';
+export declare function normalizeRawFilterOptions(rawFilter: string): string;
+/**
+ * Masks used to store options of network filters in a bitmask.
+ */
+export declare const enum NETWORK_FILTER_MASK {
+ fromDocument = 1,
+ fromFont = 2,
+ fromHttp = 4,
+ fromHttps = 8,
+ fromImage = 16,
+ fromMedia = 32,
+ fromObject = 64,
+ fromOther = 128,
+ fromPing = 256,
+ fromScript = 512,
+ fromStylesheet = 1024,
+ fromSubdocument = 2048,
+ fromWebsocket = 4096,
+ fromXmlHttpRequest = 8192,
+ firstParty = 16384,
+ thirdParty = 32768,
+ isBadFilter = 131072,
+ isCSP = 262144,
+ isGenericHide = 524288,
+ isImportant = 1048576,
+ isSpecificHide = 2097152,
+ isFullRegex = 4194304,
+ isRegex = 8388608,
+ isUnicode = 16777216,
+ isLeftAnchor = 33554432,
+ isRightAnchor = 67108864,
+ isException = 134217728,
+ isHostnameAnchor = 268435456,
+ isRedirectRule = 536870912
+}
+export default class NetworkFilter implements IFilter {
+ static parse(line: string, debug?: boolean): NetworkFilter | null;
+ /**
+ * Deserialize network filters. The code accessing the buffer should be
+ * symetrical to the one in `serializeNetworkFilter`.
+ */
+ static deserialize(buffer: StaticDataView): NetworkFilter;
+ readonly csp: string | undefined;
+ readonly filter: string | undefined;
+ readonly hostname: string | undefined;
+ readonly mask: number;
+ readonly domains: Domains | undefined;
+ readonly denyallow: Domains | undefined;
+ readonly redirect: string | undefined;
+ readonly rawLine: string | undefined;
+ id: number | undefined;
+ regex: RegExp | undefined;
+ constructor({ csp, filter, hostname, mask, domains, denyallow, rawLine, redirect, regex, }: {
+ csp: string | undefined;
+ filter: string | undefined;
+ hostname: string | undefined;
+ mask: number;
+ domains: Domains | undefined;
+ denyallow: Domains | undefined;
+ rawLine: string | undefined;
+ redirect: string | undefined;
+ regex: RegExp | undefined;
+ });
+ isCosmeticFilter(): boolean;
+ isNetworkFilter(): boolean;
+ match(request: Request): boolean;
+ /**
+ * To allow for a more compact representation of network filters, the
+ * representation is composed of a mandatory header, and some optional
+ *
+ * Header:
+ * =======
+ *
+ * | opt | mask
+ * 8 32
+ *
+ * For an empty filter having no pattern, hostname, the minimum size is: 42 bits.
+ *
+ * Then for each optional part (filter, hostname optDomains, optNotDomains,
+ * redirect), it takes 16 bits for the length of the string + the length of the
+ * string in bytes.
+ *
+ * The optional parts are written in order of there number of occurrence in the
+ * filter list used by the adblocker. The most common being `hostname`, then
+ * `filter`, `optDomains`, `optNotDomains`, `redirect`.
+ *
+ * Example:
+ * ========
+ *
+ * @@||cliqz.com would result in a serialized version:
+ *
+ * | 1 | mask | 9 | c | l | i | q | z | . | c | o | m (16 bytes)
+ *
+ * In this case, the serialized version is actually bigger than the original
+ * filter, but faster to deserialize. In the future, we could optimize the
+ * representation to compact small filters better.
+ *
+ * Ideas:
+ * * variable length encoding for the mask (if not option, take max 1 byte).
+ * * first byte could contain the mask as well if small enough.
+ * * when packing ascii string, store several of them in each byte.
+ */
+ serialize(buffer: StaticDataView): void;
+ getSerializedSize(compression: boolean): number;
+ /**
+ * Tries to recreate the original representation of the filter (adblock
+ * syntax) from the internal representation. If `rawLine` is set (when filters
+ * are parsed in `debug` mode for example), then it is returned directly.
+ * Otherwise, we try to stick as closely as possible to the original form;
+ * there are things which cannot be recovered though, like domains options
+ * of which only hashes are stored.
+ */
+ toString(): string;
+ getIdWithoutBadFilter(): number;
+ getId(): number;
+ hasFilter(): boolean;
+ hasDomains(): boolean;
+ getMask(): number;
+ getCptMask(): number;
+ isRedirect(): boolean;
+ isRedirectRule(): boolean;
+ getRedirect(): string;
+ hasHostname(): boolean;
+ getHostname(): string;
+ getFilter(): string;
+ getRegex(): RegExp;
+ getTokens(): Uint32Array[];
+ /**
+ * Check if this filter should apply to a request with this content type.
+ */
+ isCptAllowed(cpt: RequestType): boolean;
+ isException(): boolean;
+ isHostnameAnchor(): boolean;
+ isRightAnchor(): boolean;
+ isLeftAnchor(): boolean;
+ isImportant(): boolean;
+ isFullRegex(): boolean;
+ isRegex(): boolean;
+ isPlain(): boolean;
+ isCSP(): boolean;
+ isElemHide(): boolean;
+ isSpecificHide(): boolean;
+ isGenericHide(): boolean;
+ isBadFilter(): boolean;
+ isUnicode(): boolean;
+ fromAny(): boolean;
+ thirdParty(): boolean;
+ firstParty(): boolean;
+ fromImage(): boolean;
+ fromMedia(): boolean;
+ fromObject(): boolean;
+ fromOther(): boolean;
+ fromPing(): boolean;
+ fromScript(): boolean;
+ fromStylesheet(): boolean;
+ fromDocument(): boolean;
+ fromSubdocument(): boolean;
+ fromWebsocket(): boolean;
+ fromHttp(): boolean;
+ fromHttps(): boolean;
+ fromXmlHttpRequest(): boolean;
+ fromFont(): boolean;
+}
+/**
+ * Handle hostname anchored filters, given 'hostname' from ||hostname and
+ * request's hostname, check if there is a match. This is tricky because
+ * filters authors rely and different assumptions. We can have prefix of suffix
+ * matches of anchor.
+ */
+export declare function isAnchoredByHostname(filterHostname: string, hostname: string, isFollowedByWildcard: boolean): boolean;
+//# sourceMappingURL=network.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts.map
new file mode 100644
index 0000000..d923bdf
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/filters/network.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/filters/network.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts
new file mode 100644
index 0000000..2a62026
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts
@@ -0,0 +1,23 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export type HTMLSelector = readonly ['script', readonly string[]];
+export declare function extractHTMLSelectorFromRule(rule: string): HTMLSelector | undefined;
+export declare function extractTagsFromHtml(html: string, tag: string): [[number, string][], string, string];
+type Patterns = readonly [readonly string[], readonly RegExp[]][];
+export declare function extractSelectorsFromRules(filter: HTMLSelector[]): Patterns;
+export declare function selectTagsToRemove(patterns: Patterns, tags: [number, string][]): [number, string][];
+export declare function removeTagsFromHtml(html: string, toRemove: [number, string][]): string;
+export default class StreamingHtmlFilter {
+ private buffer;
+ private readonly patterns;
+ constructor(selectors: HTMLSelector[]);
+ flush(): string;
+ write(chunk: string): string;
+}
+export {};
+//# sourceMappingURL=html-filtering.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts.map
new file mode 100644
index 0000000..1b9db15
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/html-filtering.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"html-filtering.d.ts","sourceRoot":"","sources":["../../../src/html-filtering.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;AAElE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CA0ClF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAyEtC;AAED,KAAK,QAAQ,GAAG,SAAS,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;AAElE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAyB1E;AA2BD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GACvB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAapB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAYrF;AAED,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,SAAS,EAAE,YAAY,EAAE;IAK9B,KAAK,IAAI,MAAM;IAIf,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CA0BpC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts
new file mode 100644
index 0000000..0df1521
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts
@@ -0,0 +1,56 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import Config from './config';
+import CosmeticFilter from './filters/cosmetic';
+import NetworkFilter from './filters/network';
+export declare const enum FilterType {
+ NOT_SUPPORTED = 0,
+ NETWORK = 1,
+ COSMETIC = 2
+}
+/**
+ * Given a single line (string), checks if this would likely be a cosmetic
+ * filter, a network filter or something that is not supported. This check is
+ * performed before calling a more specific parser to create an instance of
+ * `NetworkFilter` or `CosmeticFilter`.
+ */
+export declare function detectFilterType(line: string): FilterType;
+export declare function parseFilter(filter: string): NetworkFilter | CosmeticFilter | null;
+export declare function f(strings: TemplateStringsArray): NetworkFilter | CosmeticFilter | null;
+export declare function parseFilters(list: string, config?: Partial<Config>): {
+ networkFilters: NetworkFilter[];
+ cosmeticFilters: CosmeticFilter[];
+};
+export interface IListDiff {
+ newNetworkFilters: NetworkFilter[];
+ newCosmeticFilters: CosmeticFilter[];
+ removedCosmeticFilters: number[];
+ removedNetworkFilters: number[];
+}
+export interface IRawDiff {
+ added: string[];
+ removed: string[];
+}
+/**
+ * Helper used to return a set of lines as strings where each line is
+ * guaranteed to be a valid filter (i.e.: comments, empty lines and
+ * un-supported filters are dropped).
+ */
+export declare function getLinesWithFilters(list: string, config?: Partial<Config>): Set<string>;
+/**
+ * Given two versions of the same subscription (e.g.: EasyList) as a string,
+ * generate a raw diff (i.e.: a list of filters added and filters removed, in
+ * their raw string form).
+ */
+export declare function generateDiff(prevRevision: string, newRevision: string, config?: Partial<Config>): IRawDiff;
+/**
+ * Merge several raw diffs into one, taking care of accumulating added and
+ * removed filters, even if several diffs add/remove the same ones.
+ */
+export declare function mergeDiffs(diffs: Partial<IRawDiff>[]): IRawDiff;
+//# sourceMappingURL=lists.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts.map
new file mode 100644
index 0000000..01f2c75
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/lists.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../../src/lists.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAG9C,0BAAkB,UAAU;IAC1B,aAAa,IAAI;IACjB,OAAO,IAAI;IACX,QAAQ,IAAI;CACb;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA4FzD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,IAAI,CAUjF;AAED,wBAAgB,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,GAAG,cAAc,GAAG,IAAI,CAEtF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,OAAO,CAAC,MAAM,CAAgB,GACrC;IAAE,cAAc,EAAE,aAAa,EAAE,CAAC;IAAC,eAAe,EAAE,cAAc,EAAE,CAAA;CAAE,CAiExE;AAQD,MAAM,WAAW,SAAS;IACxB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,OAAO,CAAC,MAAM,CAAgB,GACrC,GAAG,CAAC,MAAM,CAAC,CAOb;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,OAAO,CAAC,MAAM,CAAgB,GACrC,QAAQ,CA2BV;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CA4B/D"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts
new file mode 100644
index 0000000..596c969
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts
@@ -0,0 +1,69 @@
+/*!
+ * Copyright Mathias Bynens <https://mathiasbynens.be/>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+/**
+ * Converts a Punycode string of ASCII-only symbols to a string of Unicode
+ * symbols.
+ * @memberOf punycode
+ * @param {String} input The Punycode string of ASCII-only symbols.
+ * @returns {String} The resulting string of Unicode symbols.
+ */
+export declare function decode(input: string): string;
+/**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ * @memberOf punycode
+ * @param {String} input The string of Unicode symbols.
+ * @returns {String} The resulting Punycode string of ASCII-only symbols.
+ */
+export declare function encode(str: string): string;
+/**
+ * Converts a Punycode string representing a domain name or an email address
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
+ * it doesn't matter if you call it on a string that has already been
+ * converted to Unicode.
+ * @memberOf punycode
+ * @param {String} input The Punycoded domain name or email address to
+ * convert to Unicode.
+ * @returns {String} The Unicode representation of the given Punycode
+ * string.
+ */
+export declare function toUnicode(input: string): string;
+/**
+ * Converts a Unicode string representing a domain name or an email address to
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
+ * i.e. it doesn't matter if you call it with a domain that's already in
+ * ASCII.
+ * @memberOf punycode
+ * @param {String} input The domain name or email address to convert, as a
+ * Unicode string.
+ * @returns {String} The Punycode representation of the given domain name or
+ * email address.
+ */
+export declare function toASCII(input: string): string;
+/**
+ * A string representing the current Punycode.js version number.
+ * @memberOf punycode
+ * @type String
+ */
+export declare const version = "2.1.0";
+//# sourceMappingURL=punycode.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts.map
new file mode 100644
index 0000000..688d4f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/punycode.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"punycode.d.ts","sourceRoot":"","sources":["../../../src/punycode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAwIH;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8E5C;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqF1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts
new file mode 100644
index 0000000..f388939
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts
@@ -0,0 +1,11 @@
+/**
+ * The MIT License (MIT)
+ *
+ * Copyright (c) Feross Aboukhadijeh
+ *
+ * Originally from: https://github.com/feross/queue-microtask
+ */
+type Callback = () => void;
+export declare const queueMicrotask: (cb: Callback) => void;
+export {};
+//# sourceMappingURL=queue-microtask.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts.map
new file mode 100644
index 0000000..a05a1a1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/queue-microtask.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"queue-microtask.d.ts","sourceRoot":"","sources":["../../../src/queue-microtask.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,eAAO,MAAM,cAAc,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAStC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts
new file mode 100644
index 0000000..1d345f7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts
@@ -0,0 +1,84 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/// <reference types="chrome" />
+/// <reference types="firefox-webext-browser" />
+export type ElectronRequestType = 'mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other';
+export type PuppeteerRequestType = 'cspviolationreport' | 'document' | 'eventsource' | 'fetch' | 'font' | 'image' | 'manifest' | 'media' | 'other' | 'prefetch' | 'preflight' | 'script' | 'signedexchange' | 'stylesheet' | 'texttrack' | 'websocket' | 'xhr';
+export type PlaywrightRequestType = 'document' | 'eventsource' | 'fetch' | 'font' | 'image' | 'manifest' | 'media' | 'other' | 'script' | 'stylesheet' | 'texttrack' | 'websocket' | 'xhr';
+export type WebRequestTypeChrome = chrome.webRequest.ResourceType;
+export type WebRequestTypeFirefox = browser.webRequest.ResourceType;
+export type WebRequestType = WebRequestTypeChrome | WebRequestTypeFirefox;
+export type RequestType = WebRequestType | ElectronRequestType | PuppeteerRequestType | PlaywrightRequestType;
+export declare const NORMALIZED_TYPE_TOKEN: {
+ [s in RequestType]: number;
+};
+export declare function hashHostnameBackward(hostname: string): number;
+export declare function getHashesFromLabelsBackward(hostname: string, end: number, startOfDomain: number): Uint32Array;
+/**
+ * Given a hostname and its domain, return the hostname without the public
+ * suffix. We know that the domain, with one less label on the left, will be a
+ * the public suffix; and from there we know which trailing portion of
+ * `hostname` we should remove.
+ */
+export declare function getHostnameWithoutPublicSuffix(hostname: string, domain: string): string | null;
+export declare function getEntityHashesFromLabelsBackward(hostname: string, domain: string): Uint32Array;
+export declare function getHostnameHashesFromLabelsBackward(hostname: string, domain: string): Uint32Array;
+export interface RequestInitialization {
+ requestId: string;
+ tabId: number;
+ url: string;
+ hostname: string;
+ domain: string;
+ sourceUrl: string;
+ sourceHostname: string;
+ sourceDomain: string;
+ type: RequestType;
+ _originalRequestDetails: any | undefined;
+}
+export default class Request {
+ /**
+ * Create an instance of `Request` from raw request details.
+ */
+ static fromRawDetails({ requestId, tabId, url, hostname, domain, sourceUrl, sourceHostname, sourceDomain, type, _originalRequestDetails, }: Partial<RequestInitialization>): Request;
+ readonly _originalRequestDetails: any | undefined;
+ type: RequestType;
+ readonly isHttp: boolean;
+ readonly isHttps: boolean;
+ readonly isSupported: boolean;
+ readonly isFirstParty: boolean;
+ readonly isThirdParty: boolean;
+ readonly id: string;
+ readonly tabId: number;
+ readonly url: string;
+ readonly hostname: string;
+ readonly domain: string;
+ readonly sourceHostnameHashes: Uint32Array;
+ readonly sourceEntityHashes: Uint32Array;
+ private tokens;
+ private hostnameHashes;
+ private entityHashes;
+ constructor({ requestId, tabId, type, domain, hostname, url, sourceDomain, sourceHostname, _originalRequestDetails, }: RequestInitialization);
+ getHostnameHashes(): Uint32Array;
+ getEntityHashes(): Uint32Array;
+ getTokens(): Uint32Array;
+ isMainFrame(): boolean;
+ isSubFrame(): boolean;
+ /**
+ * Calling this method will attempt to guess the type of a request based on
+ * information found in `url` only. This can be useful to try and fine-tune
+ * the type of a Request when it is not otherwise available or if it was
+ * inferred as 'other'.
+ */
+ guessTypeOfRequest(): RequestType;
+}
+/**
+ * Kept for backward compatibility. The recommended way is to call
+ * `Request.fromRawDetails` directly.
+ */
+export declare function makeRequest(details: Partial<RequestInitialization>): Request;
+//# sourceMappingURL=request.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts.map
new file mode 100644
index 0000000..9ed75e5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/request.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/request.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts
new file mode 100644
index 0000000..4b08c24
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts
@@ -0,0 +1,34 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { StaticDataView } from './data-view';
+interface Resource {
+ contentType: string;
+ body: string;
+}
+/**
+ * Abstraction on top of resources.txt used for redirections as well as script
+ * injections. It contains logic to parse, serialize and get resources by name
+ * for use in the engine.
+ */
+export default class Resources {
+ static deserialize(buffer: StaticDataView): Resources;
+ static parse(data: string, { checksum }: {
+ checksum: string;
+ }): Resources;
+ readonly checksum: string;
+ readonly js: Map<string, string>;
+ readonly resources: Map<string, Resource>;
+ constructor({ checksum, js, resources }?: Partial<Resources>);
+ getResource(name: string): Resource & {
+ dataUrl: string;
+ };
+ getSerializedSize(): number;
+ serialize(buffer: StaticDataView): void;
+}
+export {};
+//# sourceMappingURL=resources.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts.map
new file mode 100644
index 0000000..935f4a2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/resources.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/resources.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC;AAYtE,UAAU,QAAQ;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;WACd,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS;WA4B9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAuDhF,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAgB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAErC,EAAE,QAAa,EAAE,EAAc,EAAE,SAAqB,EAAE,GAAE,OAAO,CAAC,SAAS,CAAM;IAMtF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAazD,iBAAiB,IAAI,MAAM;IAU3B,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAY/C"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts
new file mode 100644
index 0000000..6b49f8b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts
@@ -0,0 +1,26 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+/**
+ * Thin abstraction around a Uint32Array which allows to push tokens
+ * whithout caring for the offset. It is used as a way to avoid multiple
+ * allocations while calling tokenization (mostly beneficitial for
+ * `NetworkFilter.getTokens()`).
+ */
+export declare class TokensBuffer {
+ private readonly buffer;
+ pos: number;
+ constructor(size: number);
+ reset(): void;
+ slice(): Uint32Array;
+ push(token: number): void;
+ empty(): boolean;
+ full(): boolean;
+ remaining(): number;
+}
+export declare const TOKENS_BUFFER: TokensBuffer;
+//# sourceMappingURL=tokens-buffer.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts.map
new file mode 100644
index 0000000..c903dc7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/tokens-buffer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"tokens-buffer.d.ts","sourceRoot":"","sources":["../../../src/tokens-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAC9B,GAAG,EAAE,MAAM,CAAK;gBAEX,IAAI,EAAE,MAAM;IAIjB,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,WAAW;IAIpB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB,KAAK,IAAI,OAAO;IAIhB,IAAI,IAAI,OAAO;IAIf,SAAS,IAAI,MAAM;CAG3B;AAED,eAAO,MAAM,aAAa,cAAyB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts
new file mode 100644
index 0000000..7797cf1
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts
@@ -0,0 +1,34 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import { TokensBuffer } from './tokens-buffer';
+export declare const HASH_SEED = 7877;
+/***************************************************************************
+ * Bitwise helpers
+ * ************************************************************************* */
+export declare function bitCount(n: number): number;
+export declare function getBit(n: number, mask: number): boolean;
+export declare function setBit(n: number, mask: number): number;
+export declare function clearBit(n: number, mask: number): number;
+export declare function fastHashBetween(str: string, begin: number, end: number): number;
+export declare function fastHash(str: string): number;
+export declare function hashStrings(strings: string[]): Uint32Array;
+export declare function fastStartsWith(haystack: string, needle: string): boolean;
+export declare function fastStartsWithFrom(haystack: string, needle: string, start: number): boolean;
+export declare function isDigit(ch: number): boolean;
+export declare function isAlpha(ch: number): boolean;
+export declare function tokenizeWithWildcardsInPlace(pattern: string, skipFirstToken: boolean, skipLastToken: boolean, buffer: TokensBuffer): void;
+export declare function tokenizeInPlace(pattern: string, skipFirstToken: boolean, skipLastToken: boolean, buffer: TokensBuffer): void;
+export declare function tokenizeNoSkipInPlace(pattern: string, buffer: TokensBuffer): void;
+export declare function tokenizeNoSkip(pattern: string): Uint32Array;
+export declare function tokenizeWithWildcards(pattern: string, skipFirstToken: boolean, skipLastToken: boolean): Uint32Array;
+export declare function tokenize(pattern: string, skipFirstToken: boolean, skipLastToken: boolean): Uint32Array;
+export declare function tokenizeRegexInPlace(selector: string, tokens: TokensBuffer): void;
+export declare function binSearch(arr: Uint32Array, elt: number): number;
+export declare function binLookup(arr: Uint32Array, elt: number): boolean;
+export declare function hasUnicode(str: string): boolean;
+//# sourceMappingURL=utils.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts.map
new file mode 100644
index 0000000..259cdf9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/src/utils.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAE9D,eAAO,MAAM,SAAS,OAAO,CAAC;AAE9B;;+EAE+E;AAG/E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ/E;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU5C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAO1D;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAaxE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAa3F;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAI3C;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAM3C;AAoCD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,YAAY,GACnB,IAAI,CA6CN;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,YAAY,GACnB,IAAI,CAkCN;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA0BjF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAI3D;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,GACrB,WAAW,CAIb;AAED,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,OAAO,GACrB,WAAW,CAIb;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAsFjF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts
new file mode 100644
index 0000000..eced7b0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=compact-set.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts.map
new file mode 100644
index 0000000..c9116b9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/compact-set.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"compact-set.test.d.ts","sourceRoot":"","sources":["../../../test/compact-set.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts
new file mode 100644
index 0000000..b664f46
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=data-view.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts.map
new file mode 100644
index 0000000..8695c7f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/data-view.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"data-view.test.d.ts","sourceRoot":"","sources":["../../../test/data-view.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts
new file mode 100644
index 0000000..667fc16
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts
@@ -0,0 +1,22 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+declare const _default: ({
+ filters: string[];
+ sourceUrl: string;
+ type: string;
+ url: string;
+ check?: never;
+} | {
+ check: boolean;
+ filters: string[];
+ sourceUrl: string;
+ type: string;
+ url: string;
+})[];
+export default _default;
+//# sourceMappingURL=requests.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts.map
new file mode 100644
index 0000000..4068ed5
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/data/requests.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../../test/data/requests.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;;;;;;;;;;;;;AAEH,wBAornDE"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts
new file mode 100644
index 0000000..25342d9
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=filters.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts.map
new file mode 100644
index 0000000..968db5c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/bucket/filters.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters.test.d.ts","sourceRoot":"","sources":["../../../../../test/engine/bucket/filters.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts
new file mode 100644
index 0000000..dd24cb4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=engine.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts.map
new file mode 100644
index 0000000..c43c721
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/engine.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine.test.d.ts","sourceRoot":"","sources":["../../../../test/engine/engine.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts
new file mode 100644
index 0000000..c89b5dc
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=metadata.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts.map
new file mode 100644
index 0000000..668a3a4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/engine/metadata.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"metadata.test.d.ts","sourceRoot":"","sources":["../../../../test/engine/metadata.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts
new file mode 100644
index 0000000..af0d995
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=fetch.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts.map
new file mode 100644
index 0000000..1f7f14b
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/fetch.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"fetch.test.d.ts","sourceRoot":"","sources":["../../../test/fetch.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts
new file mode 100644
index 0000000..db2a472
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=filters-size-estimation.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts.map
new file mode 100644
index 0000000..79857f2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/filters-size-estimation.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"filters-size-estimation.test.d.ts","sourceRoot":"","sources":["../../../test/filters-size-estimation.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts
new file mode 100644
index 0000000..1992892
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=html-filtering.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts.map
new file mode 100644
index 0000000..15575a7
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/html-filtering.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"html-filtering.test.d.ts","sourceRoot":"","sources":["../../../test/html-filtering.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts
new file mode 100644
index 0000000..b510f64
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=lists.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts.map
new file mode 100644
index 0000000..b8659db
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/lists.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"lists.test.d.ts","sourceRoot":"","sources":["../../../test/lists.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts
new file mode 100644
index 0000000..9732c45
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts
@@ -0,0 +1,18 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+import { RequestInitialization } from '../src/request';
+declare global {
+ namespace Chai {
+ interface Assertion {
+ matchRequest(req: Partial<RequestInitialization>): Assertion;
+ matchHostname(hostname: string): Assertion;
+ }
+ }
+}
+//# sourceMappingURL=matching.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts.map
new file mode 100644
index 0000000..c42f31c
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/matching.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"matching.test.d.ts","sourceRoot":"","sources":["../../../test/matching.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC;AAQf,OAAgB,EACd,qBAAqB,EAKtB,MAAM,gBAAgB,CAAC;AAsCxB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,SAAS;YACjB,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;YAC7D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;SAC5C;KACF;CACF"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts
new file mode 100644
index 0000000..90fd6e2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=optimizer.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts.map
new file mode 100644
index 0000000..e7de2d8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/optimizer.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"optimizer.test.d.ts","sourceRoot":"","sources":["../../../test/optimizer.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts
new file mode 100644
index 0000000..91bbf03
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=parsing.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts.map
new file mode 100644
index 0000000..2ea2538
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/parsing.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"parsing.test.d.ts","sourceRoot":"","sources":["../../../test/parsing.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts
new file mode 100644
index 0000000..cf88674
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=punycode.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts.map
new file mode 100644
index 0000000..da5977f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/punycode.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"punycode.test.d.ts","sourceRoot":"","sources":["../../../test/punycode.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts
new file mode 100644
index 0000000..6c75dfa
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=request.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts.map
new file mode 100644
index 0000000..fce7fb3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/request.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"request.test.d.ts","sourceRoot":"","sources":["../../../test/request.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts
new file mode 100644
index 0000000..70b1e21
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=resources.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts.map
new file mode 100644
index 0000000..668ce62
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/resources.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"resources.test.d.ts","sourceRoot":"","sources":["../../../test/resources.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts
new file mode 100644
index 0000000..f36b6d0
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=reverse-index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts.map
new file mode 100644
index 0000000..a21cd15
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/reverse-index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"reverse-index.test.d.ts","sourceRoot":"","sources":["../../../test/reverse-index.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts
new file mode 100644
index 0000000..8f2d4de
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=serialization.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts.map
new file mode 100644
index 0000000..94a0a44
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/serialization.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"serialization.test.d.ts","sourceRoot":"","sources":["../../../test/serialization.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts
new file mode 100644
index 0000000..cc79f8a
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts
@@ -0,0 +1,15 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export declare function loadEasyListFilters(): string[];
+export declare const allLists: string;
+export declare function loadResources(): string;
+export declare function getNaughtyStrings(): string[];
+export declare function getRawTrackerDB(): any;
+export declare function typedArrayDiff(arr1: Uint8Array, arr2: Uint8Array): string[];
+export declare function typedArrayEqual(arr1: Uint8Array, arr2: Uint8Array): boolean;
+//# sourceMappingURL=utils.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts.map
new file mode 100644
index 0000000..979a4ba
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAI9C;AASD,eAAO,MAAM,QAAQ,QAKjB,CAAC;AAEL,wBAAgB,aAAa,WAE5B;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAED,wBAAgB,eAAe,IAAI,GAAG,CA0BrC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CA0B3E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3E"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts
new file mode 100644
index 0000000..abd92e4
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+import 'mocha';
+//# sourceMappingURL=utils.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts.map
new file mode 100644
index 0000000..93c73f8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/test/utils.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../test/utils.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts
new file mode 100644
index 0000000..8af3952
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=auto-bump-engine-version.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts.map
new file mode 100644
index 0000000..6f4bf39
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/auto-bump-engine-version.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"auto-bump-engine-version.d.ts","sourceRoot":"","sources":["../../../tools/auto-bump-engine-version.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts
new file mode 100644
index 0000000..e949b01
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=bench-metadata.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts.map
new file mode 100644
index 0000000..585ef15
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/bench-metadata.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"bench-metadata.d.ts","sourceRoot":"","sources":["../../../tools/bench-metadata.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts
new file mode 100644
index 0000000..0dc4a30
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export {};
+//# sourceMappingURL=engine-size.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts.map
new file mode 100644
index 0000000..4400a56
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/engine-size.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"engine-size.d.ts","sourceRoot":"","sources":["../../../tools/engine-size.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts
new file mode 100644
index 0000000..ea9c4c8
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=generate_compression_codebooks.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts.map
new file mode 100644
index 0000000..31a842f
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/generate_compression_codebooks.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"generate_compression_codebooks.d.ts","sourceRoot":"","sources":["../../../tools/generate_compression_codebooks.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts
new file mode 100644
index 0000000..710a4a2
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export {};
+//# sourceMappingURL=priorities.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts.map
new file mode 100644
index 0000000..ddb6ca3
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/priorities.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"priorities.d.ts","sourceRoot":"","sources":["../../../tools/priorities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts b/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts
new file mode 100644
index 0000000..eb1a0aa
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts
@@ -0,0 +1,9 @@
+/*!
+ * Copyright (c) 2017-present Cliqz GmbH. All rights reserved.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+export {};
+//# sourceMappingURL=stress-test-engine-update.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts.map b/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts.map
new file mode 100644
index 0000000..971b038
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/dist/types/tools/stress-test-engine-update.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"stress-test-engine-update.d.ts","sourceRoot":"","sources":["../../../tools/stress-test-engine-update.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"} \ No newline at end of file
diff --git a/client/node_modules/@cliqz/adblocker/package.json b/client/node_modules/@cliqz/adblocker/package.json
new file mode 100644
index 0000000..c75c9cd
--- /dev/null
+++ b/client/node_modules/@cliqz/adblocker/package.json
@@ -0,0 +1,113 @@
+{
+ "name": "@cliqz/adblocker",
+ "version": "1.26.12",
+ "description": "Cliqz adblocker library",
+ "author": {
+ "name": "Cliqz"
+ },
+ "homepage": "https://github.com/cliqz-oss/adblocker#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/adblocker.js",
+ "module": "dist/es6/adblocker.js",
+ "types": "dist/types/adblocker.d.ts",
+ "files": [
+ "LICENSE",
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/cliqz-oss/adblocker.git",
+ "directory": "packages/adblocker"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "eslint src tools adblocker.ts",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json && rollup --config ./rollup.config.ts --configPlugin typescript",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha --config ../../.mocharc.js",
+ "dev": "mocha --config ../../.mocharc.js --watch",
+ "bench-metadata": "ts-node --project ./tools/tsconfig.json ./tools/bench-metadata.ts",
+ "bump-internal-engine-version": "ts-node --project ./tools/tsconfig.json ./tools/auto-bump-engine-version.ts",
+ "generate-codebooks": "concurrently -n build: \"yarn:codebook-*\" && yarn bump-internal-engine-version",
+ "codebook-network-csp": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- network-csp",
+ "codebook-network-redirect": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- network-redirect",
+ "codebook-network-filter": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- network-filter",
+ "codebook-network-hostname": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- network-hostname",
+ "codebook-cosmetic-selector": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- cosmetic-selector",
+ "codebook-raw-network": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- raw-network",
+ "codebook-raw-cosmetic": "ts-node --project ./tools/tsconfig.json ./tools/generate_compression_codebooks.ts -- raw-cosmetic"
+ },
+ "bugs": {
+ "url": "https://github.com/cliqz-oss/adblocker/issues"
+ },
+ "contributors": [
+ {
+ "name": "Rémi Berson",
+ "email": "remi@cliqz.com"
+ },
+ {
+ "name": "Zhonghao Yu",
+ "email": "zhonghao@cliqz.com"
+ },
+ {
+ "name": "Krzysztof Jan Modras",
+ "email": "chrmod@chrmod.net"
+ },
+ {
+ "name": "Raymond Hill",
+ "email": "gorhill@users.noreply.github.com"
+ },
+ {
+ "name": "Eleni",
+ "email": "eleni@cliqz.com"
+ },
+ {
+ "name": "ecnmst",
+ "email": "ecnmst@users.noreply.github.com"
+ },
+ {
+ "name": "Asif",
+ "email": "arshadasif0312@gmail.com"
+ },
+ {
+ "name": "Anton Lazarev",
+ "email": "antonok35@gmail.com"
+ }
+ ],
+ "devDependencies": {
+ "@remusao/smaz-generate": "^1.9.1",
+ "@rollup/plugin-node-resolve": "^15.2.1",
+ "@rollup/plugin-typescript": "^11.1.3",
+ "@types/chai": "^4.3.6",
+ "@types/chai-as-promised": "^7.1.6",
+ "@types/mocha": "^10.0.1",
+ "@types/node": "^20.6.2",
+ "chai": "^4.3.8",
+ "chai-as-promised": "^7.1.1",
+ "concurrently": "^8.2.1",
+ "eslint": "^8.49.0",
+ "mocha": "^10.2.0",
+ "nyc": "^15.1.0",
+ "rimraf": "^5.0.1",
+ "rollup": "^4.0.2",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "rollup-plugin-terser": "^7.0.2",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.2.2"
+ },
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12",
+ "@cliqz/adblocker-extended-selectors": "^1.26.12",
+ "@remusao/guess-url-type": "^1.2.1",
+ "@remusao/small": "^1.2.1",
+ "@remusao/smaz": "^1.9.1",
+ "@types/chrome": "^0.0.248",
+ "@types/firefox-webext-browser": "^111.0.2",
+ "tldts-experimental": "^6.0.14"
+ },
+ "gitHead": "c4df10bc5ba2498ac5f1670c4a829709da7380e7"
+}
diff --git a/client/node_modules/@electron/get/LICENSE b/client/node_modules/@electron/get/LICENSE
new file mode 100644
index 0000000..dc1402e
--- /dev/null
+++ b/client/node_modules/@electron/get/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Contributors to the Electron project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/@electron/get/README.md b/client/node_modules/@electron/get/README.md
new file mode 100644
index 0000000..dce88ce
--- /dev/null
+++ b/client/node_modules/@electron/get/README.md
@@ -0,0 +1,138 @@
+# @electron/get
+
+> Download Electron release artifacts
+
+[![CircleCI](https://circleci.com/gh/electron/get.svg?style=shield)](https://circleci.com/gh/electron/get)
+[![NPM package](https://img.shields.io/npm/v/@electron/get)](https://npm.im/@electron/get)
+
+## Usage
+
+### Simple: Downloading an Electron Binary ZIP
+
+```typescript
+import { download } from '@electron/get';
+
+// NB: Use this syntax within an async function, Node does not have support for
+// top-level await as of Node 12.
+const zipFilePath = await download('4.0.4');
+```
+
+### Advanced: Downloading a macOS Electron Symbol File
+
+
+```typescript
+import { downloadArtifact } from '@electron/get';
+
+// NB: Use this syntax within an async function, Node does not have support for
+// top-level await as of Node 12.
+const zipFilePath = await downloadArtifact({
+ version: '4.0.4',
+ platform: 'darwin',
+ artifactName: 'electron',
+ artifactSuffix: 'symbols',
+ arch: 'x64',
+});
+```
+
+### Specifying a mirror
+
+To specify another location to download Electron assets from, the following options are
+available:
+
+* `mirrorOptions` Object
+ * `mirror` String (optional) - The base URL of the mirror to download from.
+ * `nightlyMirror` String (optional) - The Electron nightly-specific mirror URL.
+ * `customDir` String (optional) - The name of the directory to download from, often scoped by version number.
+ * `customFilename` String (optional) - The name of the asset to download.
+ * `resolveAssetURL` Function (optional) - A function allowing customization of the url used to download the asset.
+
+Anatomy of a download URL, in terms of `mirrorOptions`:
+
+```
+https://github.com/electron/electron/releases/download/v4.0.4/electron-v4.0.4-linux-x64.zip
+| | | |
+------------------------------------------------------- -----------------------------
+ | |
+ mirror / nightlyMirror | | customFilename
+ ------
+ ||
+ customDir
+```
+
+Example:
+
+```typescript
+import { download } from '@electron/get';
+
+const zipFilePath = await download('4.0.4', {
+ mirrorOptions: {
+ mirror: 'https://mirror.example.com/electron/',
+ customDir: 'custom',
+ customFilename: 'unofficial-electron-linux.zip'
+ }
+});
+// Will download from https://mirror.example.com/electron/custom/unofficial-electron-linux.zip
+
+const nightlyZipFilePath = await download('8.0.0-nightly.20190901', {
+ mirrorOptions: {
+ nightlyMirror: 'https://nightly.example.com/',
+ customDir: 'nightlies',
+ customFilename: 'nightly-linux.zip'
+ }
+});
+// Will download from https://nightly.example.com/nightlies/nightly-linux.zip
+```
+
+`customDir` can have the placeholder `{{ version }}`, which will be replaced by the version
+specified (without the leading `v`). For example:
+
+```javascript
+const zipFilePath = await download('4.0.4', {
+ mirrorOptions: {
+ mirror: 'https://mirror.example.com/electron/',
+ customDir: 'version-{{ version }}',
+ platform: 'linux',
+ arch: 'x64'
+ }
+});
+// Will download from https://mirror.example.com/electron/version-4.0.4/electron-v4.0.4-linux-x64.zip
+```
+
+#### Using environment variables for mirror options
+Mirror options can also be specified via the following environment variables:
+* `ELECTRON_CUSTOM_DIR` - Specifies the custom directory to download from.
+* `ELECTRON_CUSTOM_FILENAME` - Specifies the custom file name to download.
+* `ELECTRON_MIRROR` - Specifies the URL of the server to download from if the version is not a nightly version.
+* `ELECTRON_NIGHTLY_MIRROR` - Specifies the URL of the server to download from if the version is a nightly version.
+
+### Overriding the version downloaded
+
+The version downloaded can be overriden by setting the `ELECTRON_CUSTOM_VERSION` environment variable.
+Setting this environment variable will override the version passed in to `download` or `downloadArtifact`.
+
+## How It Works
+
+This module downloads Electron to a known place on your system and caches it
+so that future requests for that asset can be returned instantly. The cache
+locations are:
+
+* Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+* MacOS: `~/Library/Caches/electron/`
+* Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+
+By default, the module uses [`got`](https://github.com/sindresorhus/got) as the
+downloader. As a result, you can use the same [options](https://github.com/sindresorhus/got#options)
+via `downloadOptions`.
+
+### Progress Bar
+
+By default, a progress bar is shown when downloading an artifact for more than 30 seconds. To
+disable, set the `ELECTRON_GET_NO_PROGRESS` environment variable to any non-empty value, or set
+`quiet` to `true` in `downloadOptions`. If you need to monitor progress yourself via the API, set
+`getProgressCallback` in `downloadOptions`, which has the same function signature as `got`'s
+[`downloadProgress` event callback](https://github.com/sindresorhus/got#ondownloadprogress-progress).
+
+### Proxies
+
+Downstream packages should utilize the `initializeProxy` function to add HTTP(S) proxy support. If
+the environment variable `ELECTRON_GET_USE_PROXY` is set, it is called automatically.
diff --git a/client/node_modules/@electron/get/dist/cjs/Cache.d.ts b/client/node_modules/@electron/get/dist/cjs/Cache.d.ts
new file mode 100644
index 0000000..626001a
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Cache.d.ts
@@ -0,0 +1,8 @@
+export declare class Cache {
+ private cacheRoot;
+ constructor(cacheRoot?: string);
+ static getCacheDirectory(downloadUrl: string): string;
+ getCachePath(downloadUrl: string, fileName: string): string;
+ getPathForFileInCache(url: string, fileName: string): Promise<string | null>;
+ putFileInCache(url: string, currentPath: string, fileName: string): Promise<string>;
+}
diff --git a/client/node_modules/@electron/get/dist/cjs/Cache.js b/client/node_modules/@electron/get/dist/cjs/Cache.js
new file mode 100644
index 0000000..b8cd197
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Cache.js
@@ -0,0 +1,60 @@
+"use strict";
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug_1 = require("debug");
+const env_paths_1 = require("env-paths");
+const fs = require("fs-extra");
+const path = require("path");
+const url = require("url");
+const crypto = require("crypto");
+const d = debug_1.default('@electron/get:cache');
+const defaultCacheRoot = env_paths_1.default('electron', {
+ suffix: '',
+}).cache;
+class Cache {
+ constructor(cacheRoot = defaultCacheRoot) {
+ this.cacheRoot = cacheRoot;
+ }
+ static getCacheDirectory(downloadUrl) {
+ const parsedDownloadUrl = url.parse(downloadUrl);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { search, hash, pathname } = parsedDownloadUrl, rest = __rest(parsedDownloadUrl, ["search", "hash", "pathname"]);
+ const strippedUrl = url.format(Object.assign(Object.assign({}, rest), { pathname: path.dirname(pathname || 'electron') }));
+ return crypto
+ .createHash('sha256')
+ .update(strippedUrl)
+ .digest('hex');
+ }
+ getCachePath(downloadUrl, fileName) {
+ return path.resolve(this.cacheRoot, Cache.getCacheDirectory(downloadUrl), fileName);
+ }
+ async getPathForFileInCache(url, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ if (await fs.pathExists(cachePath)) {
+ return cachePath;
+ }
+ return null;
+ }
+ async putFileInCache(url, currentPath, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ d(`Moving ${currentPath} to ${cachePath}`);
+ if (await fs.pathExists(cachePath)) {
+ d('* Replacing existing file');
+ await fs.remove(cachePath);
+ }
+ await fs.move(currentPath, cachePath);
+ return cachePath;
+ }
+}
+exports.Cache = Cache;
+//# sourceMappingURL=Cache.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/Cache.js.map b/client/node_modules/@electron/get/dist/cjs/Cache.js.map
new file mode 100644
index 0000000..ec54c24
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iCAA0B;AAC1B,yCAAiC;AACjC,+BAA+B;AAC/B,6BAA6B;AAC7B,2BAA2B;AAC3B,iCAAiC;AAEjC,MAAM,CAAC,GAAG,eAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC,MAAM,gBAAgB,GAAG,mBAAQ,CAAC,UAAU,EAAE;IAC5C,MAAM,EAAE,EAAE;CACX,CAAC,CAAC,KAAK,CAAC;AAET,MAAa,KAAK;IAChB,YAAoB,YAAY,gBAAgB;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAE7C,MAAM,CAAC,iBAAiB,CAAC,WAAmB;QACjD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAc,iBAAiB,EAA7B,gEAA6B,CAAC;QAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,iCAAM,IAAI,KAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAG,CAAC;QAE5F,OAAO,MAAM;aACV,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,GAAW,EAAE,QAAgB;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,UAAU,WAAW,OAAO,SAAS,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5B;QAED,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxCD,sBAwCC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/Downloader.d.ts b/client/node_modules/@electron/get/dist/cjs/Downloader.d.ts
new file mode 100644
index 0000000..8e5e40e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Downloader.d.ts
@@ -0,0 +1,3 @@
+export interface Downloader<T> {
+ download(url: string, targetFilePath: string, options: T): Promise<void>;
+}
diff --git a/client/node_modules/@electron/get/dist/cjs/Downloader.js b/client/node_modules/@electron/get/dist/cjs/Downloader.js
new file mode 100644
index 0000000..5940840
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Downloader.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=Downloader.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/Downloader.js.map b/client/node_modules/@electron/get/dist/cjs/Downloader.js.map
new file mode 100644
index 0000000..c6199d5
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/Downloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/Downloader.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts b/client/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts
new file mode 100644
index 0000000..6494756
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts
@@ -0,0 +1,21 @@
+import { Progress as GotProgress, Options as GotOptions } from 'got';
+import { Downloader } from './Downloader';
+/**
+ * See [`got#options`](https://github.com/sindresorhus/got#options) for possible keys/values.
+ */
+export declare type GotDownloaderOptions = (GotOptions & {
+ isStream?: true;
+}) & {
+ /**
+ * if defined, triggers every time `got`'s `downloadProgress` event callback is triggered.
+ */
+ getProgressCallback?: (progress: GotProgress) => Promise<void>;
+ /**
+ * if `true`, disables the console progress bar (setting the `ELECTRON_GET_NO_PROGRESS`
+ * environment variable to a non-empty value also does this).
+ */
+ quiet?: boolean;
+};
+export declare class GotDownloader implements Downloader<GotDownloaderOptions> {
+ download(url: string, targetFilePath: string, options?: GotDownloaderOptions): Promise<void>;
+}
diff --git a/client/node_modules/@electron/get/dist/cjs/GotDownloader.js b/client/node_modules/@electron/get/dist/cjs/GotDownloader.js
new file mode 100644
index 0000000..ddbab14
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/GotDownloader.js
@@ -0,0 +1,76 @@
+"use strict";
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("fs-extra");
+const got_1 = require("got");
+const path = require("path");
+const ProgressBar = require("progress");
+const PROGRESS_BAR_DELAY_IN_SECONDS = 30;
+class GotDownloader {
+ async download(url, targetFilePath, options) {
+ if (!options) {
+ options = {};
+ }
+ const { quiet, getProgressCallback } = options, gotOptions = __rest(options, ["quiet", "getProgressCallback"]);
+ let downloadCompleted = false;
+ let bar;
+ let progressPercent;
+ let timeout = undefined;
+ await fs.mkdirp(path.dirname(targetFilePath));
+ const writeStream = fs.createWriteStream(targetFilePath);
+ if (!quiet || !process.env.ELECTRON_GET_NO_PROGRESS) {
+ const start = new Date();
+ timeout = setTimeout(() => {
+ if (!downloadCompleted) {
+ bar = new ProgressBar(`Downloading ${path.basename(url)}: [:bar] :percent ETA: :eta seconds `, {
+ curr: progressPercent,
+ total: 100,
+ });
+ // https://github.com/visionmedia/node-progress/issues/159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ bar.start = start;
+ }
+ }, PROGRESS_BAR_DELAY_IN_SECONDS * 1000);
+ }
+ await new Promise((resolve, reject) => {
+ const downloadStream = got_1.default.stream(url, gotOptions);
+ downloadStream.on('downloadProgress', async (progress) => {
+ progressPercent = progress.percent;
+ if (bar) {
+ bar.update(progress.percent);
+ }
+ if (getProgressCallback) {
+ await getProgressCallback(progress);
+ }
+ });
+ downloadStream.on('error', error => {
+ if (error instanceof got_1.HTTPError && error.response.statusCode === 404) {
+ error.message += ` for ${error.response.url}`;
+ }
+ if (writeStream.destroy) {
+ writeStream.destroy(error);
+ }
+ reject(error);
+ });
+ writeStream.on('error', error => reject(error));
+ writeStream.on('close', () => resolve());
+ downloadStream.pipe(writeStream);
+ });
+ downloadCompleted = true;
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ }
+}
+exports.GotDownloader = GotDownloader;
+//# sourceMappingURL=GotDownloader.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/GotDownloader.js.map b/client/node_modules/@electron/get/dist/cjs/GotDownloader.js.map
new file mode 100644
index 0000000..d5cb566
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/GotDownloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GotDownloader.js","sourceRoot":"","sources":["../../src/GotDownloader.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,6BAAqF;AACrF,6BAA6B;AAC7B,wCAAwC;AAIxC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAiBzC,MAAa,aAAa;IACxB,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,cAAsB,EACtB,OAA8B;QAE9B,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAE,CAAC;SACd;QACD,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAoB,OAAO,EAAzB,8DAAyB,CAAC;QAC9D,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,GAA4B,CAAC;QACjC,IAAI,eAAuB,CAAC;QAC5B,IAAI,OAAO,GAA+B,SAAS,CAAC;QACpD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,GAAG,GAAG,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,EACvE;wBACE,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE,GAAG;qBACX,CACF,CAAC;oBACF,0DAA0D;oBAC1D,8DAA8D;oBAC7D,GAAW,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC5B;YACH,CAAC,EAAE,6BAA6B,GAAG,IAAI,CAAC,CAAC;SAC1C;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,cAAc,GAAG,aAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACnD,cAAc,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;gBACrD,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;gBACnC,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAC9B;gBACD,IAAI,mBAAmB,EAAE;oBACvB,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjC,IAAI,KAAK,YAAY,eAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;oBACnE,KAAK,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;iBAC/C;gBACD,IAAI,WAAW,CAAC,OAAO,EAAE;oBACvB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBAED,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAEzC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,iBAAiB,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;SACvB;IACH,CAAC;CACF;AAlED,sCAkEC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts b/client/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts
new file mode 100644
index 0000000..e03c96e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts
@@ -0,0 +1,4 @@
+import { ElectronArtifactDetails } from './types';
+export declare function getArtifactFileName(details: ElectronArtifactDetails): string;
+export declare function getArtifactRemoteURL(details: ElectronArtifactDetails): Promise<string>;
+export declare function getArtifactVersion(details: ElectronArtifactDetails): string;
diff --git a/client/node_modules/@electron/get/dist/cjs/artifact-utils.js b/client/node_modules/@electron/get/dist/cjs/artifact-utils.js
new file mode 100644
index 0000000..5766965
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/artifact-utils.js
@@ -0,0 +1,66 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("./utils");
+const BASE_URL = 'https://github.com/electron/electron/releases/download/';
+const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
+function getArtifactFileName(details) {
+ utils_1.ensureIsTruthyString(details, 'artifactName');
+ if (details.isGeneric) {
+ return details.artifactName;
+ }
+ utils_1.ensureIsTruthyString(details, 'arch');
+ utils_1.ensureIsTruthyString(details, 'platform');
+ utils_1.ensureIsTruthyString(details, 'version');
+ return `${[
+ details.artifactName,
+ details.version,
+ details.platform,
+ details.arch,
+ ...(details.artifactSuffix ? [details.artifactSuffix] : []),
+ ].join('-')}.zip`;
+}
+exports.getArtifactFileName = getArtifactFileName;
+function mirrorVar(name, options, defaultValue) {
+ // Convert camelCase to camel_case for env var reading
+ const snakeName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
+ return (
+ // .npmrc
+ process.env[`npm_config_electron_${name.toLowerCase()}`] ||
+ process.env[`NPM_CONFIG_ELECTRON_${snakeName.toUpperCase()}`] ||
+ process.env[`npm_config_electron_${snakeName}`] ||
+ // package.json
+ process.env[`npm_package_config_electron_${name}`] ||
+ process.env[`npm_package_config_electron_${snakeName.toLowerCase()}`] ||
+ // env
+ process.env[`ELECTRON_${snakeName.toUpperCase()}`] ||
+ options[name] ||
+ defaultValue);
+}
+async function getArtifactRemoteURL(details) {
+ const opts = details.mirrorOptions || {};
+ let base = mirrorVar('mirror', opts, BASE_URL);
+ if (details.version.includes('nightly')) {
+ const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
+ if (nightlyDeprecated) {
+ base = nightlyDeprecated;
+ console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
+ }
+ else {
+ base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
+ }
+ }
+ const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
+ const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
+ // Allow customized download URL resolution.
+ if (opts.resolveAssetURL) {
+ const url = await opts.resolveAssetURL(details);
+ return url;
+ }
+ return `${base}${path}/${file}`;
+}
+exports.getArtifactRemoteURL = getArtifactRemoteURL;
+function getArtifactVersion(details) {
+ return utils_1.normalizeVersion(mirrorVar('customVersion', details.mirrorOptions || {}, details.version));
+}
+exports.getArtifactVersion = getArtifactVersion;
+//# sourceMappingURL=artifact-utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/artifact-utils.js.map b/client/node_modules/@electron/get/dist/cjs/artifact-utils.js.map
new file mode 100644
index 0000000..bafa6f2
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/artifact-utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"artifact-utils.js","sourceRoot":"","sources":["../../src/artifact-utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts
new file mode 100644
index 0000000..f7f09b2
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts
@@ -0,0 +1,3 @@
+import { DownloadOptions } from './types';
+import { Downloader } from './Downloader';
+export declare function getDownloaderForSystem(): Promise<Downloader<DownloadOptions>>;
diff --git a/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js
new file mode 100644
index 0000000..52a51d3
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+async function getDownloaderForSystem() {
+ // TODO: Resolve the downloader or default to GotDownloader
+ // Current thoughts are a dot-file traversal for something like
+ // ".electron.downloader" which would be a text file with the name of the
+ // npm module to import() and use as the downloader
+ const { GotDownloader } = await Promise.resolve().then(() => require('./GotDownloader'));
+ return new GotDownloader();
+}
+exports.getDownloaderForSystem = getDownloaderForSystem;
+//# sourceMappingURL=downloader-resolver.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map
new file mode 100644
index 0000000..586f565
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"downloader-resolver.js","sourceRoot":"","sources":["../../src/downloader-resolver.ts"],"names":[],"mappings":";;AAGO,KAAK,UAAU,sBAAsB;IAC1C,2DAA2D;IAC3D,+DAA+D;IAC/D,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,EAAE,aAAa,EAAE,GAAG,2CAAa,iBAAiB,EAAC,CAAC;IAC1D,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC;AAPD,wDAOC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/index.d.ts b/client/node_modules/@electron/get/dist/cjs/index.d.ts
new file mode 100644
index 0000000..93e709e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/index.d.ts
@@ -0,0 +1,18 @@
+import { ElectronDownloadRequestOptions, ElectronPlatformArtifactDetailsWithDefaults } from './types';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+export * from './types';
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export declare function downloadArtifact(_artifactDetails: ElectronPlatformArtifactDetailsWithDefaults): Promise<string>;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export declare function download(version: string, options?: ElectronDownloadRequestOptions): Promise<string>;
diff --git a/client/node_modules/@electron/get/dist/cjs/index.js b/client/node_modules/@electron/get/dist/cjs/index.js
new file mode 100644
index 0000000..86954a5
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/index.js
@@ -0,0 +1,140 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug_1 = require("debug");
+const fs = require("fs-extra");
+const path = require("path");
+const semver = require("semver");
+const sumchecker = require("sumchecker");
+const artifact_utils_1 = require("./artifact-utils");
+const Cache_1 = require("./Cache");
+const downloader_resolver_1 = require("./downloader-resolver");
+const proxy_1 = require("./proxy");
+const utils_1 = require("./utils");
+var utils_2 = require("./utils");
+exports.getHostArch = utils_2.getHostArch;
+var proxy_2 = require("./proxy");
+exports.initializeProxy = proxy_2.initializeProxy;
+const d = debug_1.default('@electron/get:index');
+if (process.env.ELECTRON_GET_USE_PROXY) {
+ proxy_1.initializeProxy();
+}
+async function validateArtifact(artifactDetails, downloadedAssetPath, _downloadArtifact) {
+ return await utils_1.withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ // Don't try to verify the hash of the hash file itself
+ // and for older versions that don't have a SHASUMS256.txt
+ if (!artifactDetails.artifactName.startsWith('SHASUMS256') &&
+ !artifactDetails.unsafelyDisableChecksums &&
+ semver.gte(artifactDetails.version, '1.3.2')) {
+ let shasumPath;
+ const checksums = artifactDetails.checksums;
+ if (checksums) {
+ shasumPath = path.resolve(tempFolder, 'SHASUMS256.txt');
+ const fileNames = Object.keys(checksums);
+ if (fileNames.length === 0) {
+ throw new Error('Provided "checksums" object is empty, cannot generate a valid SHASUMS256.txt');
+ }
+ const generatedChecksums = fileNames
+ .map(fileName => `${checksums[fileName]} *${fileName}`)
+ .join('\n');
+ await fs.writeFile(shasumPath, generatedChecksums);
+ }
+ else {
+ shasumPath = await _downloadArtifact({
+ isGeneric: true,
+ version: artifactDetails.version,
+ artifactName: 'SHASUMS256.txt',
+ force: artifactDetails.force,
+ downloadOptions: artifactDetails.downloadOptions,
+ cacheRoot: artifactDetails.cacheRoot,
+ downloader: artifactDetails.downloader,
+ mirrorOptions: artifactDetails.mirrorOptions,
+ });
+ }
+ // For versions 1.3.2 - 1.3.4, need to overwrite the `defaultTextEncoding` option:
+ // https://github.com/electron/electron/pull/6676#discussion_r75332120
+ if (semver.satisfies(artifactDetails.version, '1.3.2 - 1.3.4')) {
+ const validatorOptions = {};
+ validatorOptions.defaultTextEncoding = 'binary';
+ const checker = new sumchecker.ChecksumValidator('sha256', shasumPath, validatorOptions);
+ await checker.validate(path.dirname(downloadedAssetPath), path.basename(downloadedAssetPath));
+ }
+ else {
+ await sumchecker('sha256', shasumPath, path.dirname(downloadedAssetPath), [
+ path.basename(downloadedAssetPath),
+ ]);
+ }
+ }
+ });
+}
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+async function downloadArtifact(_artifactDetails) {
+ const artifactDetails = Object.assign({}, _artifactDetails);
+ if (!_artifactDetails.isGeneric) {
+ const platformArtifactDetails = artifactDetails;
+ if (!platformArtifactDetails.platform) {
+ d('No platform found, defaulting to the host platform');
+ platformArtifactDetails.platform = process.platform;
+ }
+ if (platformArtifactDetails.arch) {
+ platformArtifactDetails.arch = utils_1.getNodeArch(platformArtifactDetails.arch);
+ }
+ else {
+ d('No arch found, defaulting to the host arch');
+ platformArtifactDetails.arch = utils_1.getHostArch();
+ }
+ }
+ utils_1.ensureIsTruthyString(artifactDetails, 'version');
+ artifactDetails.version = artifact_utils_1.getArtifactVersion(artifactDetails);
+ const fileName = artifact_utils_1.getArtifactFileName(artifactDetails);
+ const url = await artifact_utils_1.getArtifactRemoteURL(artifactDetails);
+ const cache = new Cache_1.Cache(artifactDetails.cacheRoot);
+ // Do not check if the file exists in the cache when force === true
+ if (!artifactDetails.force) {
+ d(`Checking the cache (${artifactDetails.cacheRoot}) for ${fileName} (${url})`);
+ const cachedPath = await cache.getPathForFileInCache(url, fileName);
+ if (cachedPath === null) {
+ d('Cache miss');
+ }
+ else {
+ d('Cache hit');
+ try {
+ await validateArtifact(artifactDetails, cachedPath, downloadArtifact);
+ return cachedPath;
+ }
+ catch (err) {
+ d("Artifact in cache didn't match checksums", err);
+ d('falling back to re-download');
+ }
+ }
+ }
+ if (!artifactDetails.isGeneric &&
+ utils_1.isOfficialLinuxIA32Download(artifactDetails.platform, artifactDetails.arch, artifactDetails.version, artifactDetails.mirrorOptions)) {
+ console.warn('Official Linux/ia32 support is deprecated.');
+ console.warn('For more info: https://electronjs.org/blog/linux-32bit-support');
+ }
+ return await utils_1.withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ const tempDownloadPath = path.resolve(tempFolder, artifact_utils_1.getArtifactFileName(artifactDetails));
+ const downloader = artifactDetails.downloader || (await downloader_resolver_1.getDownloaderForSystem());
+ d(`Downloading ${url} to ${tempDownloadPath} with options: ${JSON.stringify(artifactDetails.downloadOptions)}`);
+ await downloader.download(url, tempDownloadPath, artifactDetails.downloadOptions);
+ await validateArtifact(artifactDetails, tempDownloadPath, downloadArtifact);
+ return await cache.putFileInCache(url, tempDownloadPath, fileName);
+ });
+}
+exports.downloadArtifact = downloadArtifact;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+function download(version, options) {
+ return downloadArtifact(Object.assign(Object.assign({}, options), { version, platform: process.platform, arch: process.arch, artifactName: 'electron' }));
+}
+exports.download = download;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/index.js.map b/client/node_modules/@electron/get/dist/cjs/index.js.map
new file mode 100644
index 0000000..73c4a53
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/proxy.d.ts b/client/node_modules/@electron/get/dist/cjs/proxy.d.ts
new file mode 100644
index 0000000..df3e16a
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/proxy.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export declare function initializeProxy(): void;
diff --git a/client/node_modules/@electron/get/dist/cjs/proxy.js b/client/node_modules/@electron/get/dist/cjs/proxy.js
new file mode 100644
index 0000000..09c99b5
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/proxy.js
@@ -0,0 +1,27 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug = require("debug");
+const utils_1 = require("./utils");
+const d = debug('@electron/get:proxy');
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+function initializeProxy() {
+ try {
+ // See: https://github.com/electron/get/pull/214#discussion_r798845713
+ const env = utils_1.getEnv('GLOBAL_AGENT_');
+ utils_1.setEnv('GLOBAL_AGENT_HTTP_PROXY', env('HTTP_PROXY'));
+ utils_1.setEnv('GLOBAL_AGENT_HTTPS_PROXY', env('HTTPS_PROXY'));
+ utils_1.setEnv('GLOBAL_AGENT_NO_PROXY', env('NO_PROXY'));
+ /**
+ * TODO: replace global-agent with a hpagent. @BlackHole1
+ * https://github.com/sindresorhus/got/blob/HEAD/documentation/tips.md#proxying
+ */
+ require('global-agent').bootstrap();
+ }
+ catch (e) {
+ d('Could not load either proxy modules, built-in proxy support not available:', e);
+ }
+}
+exports.initializeProxy = initializeProxy;
+//# sourceMappingURL=proxy.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/proxy.js.map b/client/node_modules/@electron/get/dist/cjs/proxy.js.map
new file mode 100644
index 0000000..d909824
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/proxy.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,mCAAyC;AAEzC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAgB,eAAe;IAC7B,IAAI;QACF,sEAAsE;QACtE,MAAM,GAAG,GAAG,cAAM,CAAC,eAAe,CAAC,CAAC;QAEpC,cAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,cAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,cAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjD;;;WAGG;QACH,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;KACrC;IAAC,OAAO,CAAC,EAAE;QACV,CAAC,CAAC,4EAA4E,EAAE,CAAC,CAAC,CAAC;KACpF;AACH,CAAC;AAjBD,0CAiBC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/types.d.ts b/client/node_modules/@electron/get/dist/cjs/types.d.ts
new file mode 100644
index 0000000..a8284bb
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/types.d.ts
@@ -0,0 +1,129 @@
+import { Downloader } from './Downloader';
+export declare type DownloadOptions = any;
+export interface MirrorOptions {
+ /**
+ * DEPRECATED - see nightlyMirror.
+ */
+ nightly_mirror?: string;
+ /**
+ * The Electron nightly-specific mirror URL.
+ */
+ nightlyMirror?: string;
+ /**
+ * The base URL of the mirror to download from,
+ * e.g https://github.com/electron/electron/releases/download
+ */
+ mirror?: string;
+ /**
+ * The name of the directory to download from,
+ * often scoped by version number e.g 'v4.0.4'
+ */
+ customDir?: string;
+ /**
+ * The name of the asset to download,
+ * e.g 'electron-v4.0.4-linux-x64.zip'
+ */
+ customFilename?: string;
+ /**
+ * The version of the asset to download,
+ * e.g '4.0.4'
+ */
+ customVersion?: string;
+ /**
+ * A function allowing customization of the url returned
+ * from getArtifactRemoteURL().
+ */
+ resolveAssetURL?: (opts: DownloadOptions) => Promise<string>;
+}
+export interface ElectronDownloadRequest {
+ /**
+ * The version of Electron associated with the artifact.
+ */
+ version: string;
+ /**
+ * The type of artifact. For example:
+ * * `electron`
+ * * `ffmpeg`
+ */
+ artifactName: string;
+}
+export interface ElectronDownloadRequestOptions {
+ /**
+ * Whether to download an artifact regardless of whether it's in the cache directory.
+ *
+ * Defaults to `false`.
+ */
+ force?: boolean;
+ /**
+ * When set to `true`, disables checking that the artifact download completed successfully
+ * with the correct payload.
+ *
+ * Defaults to `false`.
+ */
+ unsafelyDisableChecksums?: boolean;
+ /**
+ * Provides checksums for the artifact as strings.
+ * Can be used if you already know the checksums of the Electron artifact
+ * you are downloading and want to skip the checksum file download
+ * without skipping the checksum validation.
+ *
+ * This should be an object whose keys are the file names of the artifacts and
+ * the values are their respective SHA256 checksums.
+ */
+ checksums?: Record<string, string>;
+ /**
+ * The directory that caches Electron artifact downloads.
+ *
+ * The default value is dependent upon the host platform:
+ *
+ * * Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+ * * MacOS: `~/Library/Caches/electron/`
+ * * Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+ */
+ cacheRoot?: string;
+ /**
+ * Options passed to the downloader module.
+ */
+ downloadOptions?: DownloadOptions;
+ /**
+ * Options related to specifying an artifact mirror.
+ */
+ mirrorOptions?: MirrorOptions;
+ /**
+ * The custom [[Downloader]] class used to download artifacts. Defaults to the
+ * built-in [[GotDownloader]].
+ */
+ downloader?: Downloader<DownloadOptions>;
+ /**
+ * A temporary directory for downloads.
+ * It is used before artifacts are put into cache.
+ */
+ tempDirectory?: string;
+}
+export declare type ElectronPlatformArtifactDetails = {
+ /**
+ * The target artifact platform. These are Node-style platform names, for example:
+ * * `win32`
+ * * `darwin`
+ * * `linux`
+ */
+ platform: string;
+ /**
+ * The target artifact architecture. These are Node-style architecture names, for example:
+ * * `ia32`
+ * * `x64`
+ * * `armv7l`
+ */
+ arch: string;
+ artifactSuffix?: string;
+ isGeneric?: false;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronGenericArtifactDetails = {
+ isGeneric: true;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronArtifactDetails = ElectronPlatformArtifactDetails | ElectronGenericArtifactDetails;
+export declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
+export declare type ElectronPlatformArtifactDetailsWithDefaults = (Omit<ElectronPlatformArtifactDetails, 'platform' | 'arch'> & {
+ platform?: string;
+ arch?: string;
+}) | ElectronGenericArtifactDetails;
diff --git a/client/node_modules/@electron/get/dist/cjs/types.js b/client/node_modules/@electron/get/dist/cjs/types.js
new file mode 100644
index 0000000..11e638d
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/types.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/types.js.map b/client/node_modules/@electron/get/dist/cjs/types.js.map
new file mode 100644
index 0000000..7b5fff8
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/utils.d.ts b/client/node_modules/@electron/get/dist/cjs/utils.d.ts
new file mode 100644
index 0000000..3cc40c1
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/utils.d.ts
@@ -0,0 +1,25 @@
+export declare function withTempDirectoryIn<T>(parentDirectory: string | undefined, fn: (directory: string) => Promise<T>): Promise<T>;
+export declare function withTempDirectory<T>(fn: (directory: string) => Promise<T>): Promise<T>;
+export declare function normalizeVersion(version: string): string;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export declare function uname(): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export declare function getNodeArch(arch: string): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export declare function getHostArch(): string;
+export declare function ensureIsTruthyString<T, K extends keyof T>(obj: T, key: K): void;
+export declare function isOfficialLinuxIA32Download(platform: string, arch: string, version: string, mirrorOptions?: object): boolean;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export declare function getEnv(prefix?: string): (name: string) => string | undefined;
+export declare function setEnv(key: string, value: string | undefined): void;
diff --git a/client/node_modules/@electron/get/dist/cjs/utils.js b/client/node_modules/@electron/get/dist/cjs/utils.js
new file mode 100644
index 0000000..4806842
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/utils.js
@@ -0,0 +1,107 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const childProcess = require("child_process");
+const fs = require("fs-extra");
+const os = require("os");
+const path = require("path");
+async function useAndRemoveDirectory(directory, fn) {
+ let result;
+ try {
+ result = await fn(directory);
+ }
+ finally {
+ await fs.remove(directory);
+ }
+ return result;
+}
+async function withTempDirectoryIn(parentDirectory = os.tmpdir(), fn) {
+ const tempDirectoryPrefix = 'electron-download-';
+ const tempDirectory = await fs.mkdtemp(path.resolve(parentDirectory, tempDirectoryPrefix));
+ return useAndRemoveDirectory(tempDirectory, fn);
+}
+exports.withTempDirectoryIn = withTempDirectoryIn;
+async function withTempDirectory(fn) {
+ return withTempDirectoryIn(undefined, fn);
+}
+exports.withTempDirectory = withTempDirectory;
+function normalizeVersion(version) {
+ if (!version.startsWith('v')) {
+ return `v${version}`;
+ }
+ return version;
+}
+exports.normalizeVersion = normalizeVersion;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+function uname() {
+ return childProcess
+ .execSync('uname -m')
+ .toString()
+ .trim();
+}
+exports.uname = uname;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+function getNodeArch(arch) {
+ if (arch === 'arm') {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ switch (process.config.variables.arm_version) {
+ case '6':
+ return uname();
+ case '7':
+ default:
+ return 'armv7l';
+ }
+ }
+ return arch;
+}
+exports.getNodeArch = getNodeArch;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+function getHostArch() {
+ return getNodeArch(process.arch);
+}
+exports.getHostArch = getHostArch;
+function ensureIsTruthyString(obj, key) {
+ if (!obj[key] || typeof obj[key] !== 'string') {
+ throw new Error(`Expected property "${key}" to be provided as a string but it was not`);
+ }
+}
+exports.ensureIsTruthyString = ensureIsTruthyString;
+function isOfficialLinuxIA32Download(platform, arch, version, mirrorOptions) {
+ return (platform === 'linux' &&
+ arch === 'ia32' &&
+ Number(version.slice(1).split('.')[0]) >= 4 &&
+ typeof mirrorOptions === 'undefined');
+}
+exports.isOfficialLinuxIA32Download = isOfficialLinuxIA32Download;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+function getEnv(prefix = '') {
+ const envsLowerCase = {};
+ for (const envKey in process.env) {
+ envsLowerCase[envKey.toLowerCase()] = process.env[envKey];
+ }
+ return (name) => {
+ return (envsLowerCase[`${prefix}${name}`.toLowerCase()] ||
+ envsLowerCase[name.toLowerCase()] ||
+ undefined);
+ };
+}
+exports.getEnv = getEnv;
+function setEnv(key, value) {
+ // The `void` operator always returns `undefined`.
+ // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
+ if (value !== void 0) {
+ process.env[key] = value;
+ }
+}
+exports.setEnv = setEnv;
+//# sourceMappingURL=utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/cjs/utils.js.map b/client/node_modules/@electron/get/dist/cjs/utils.js.map
new file mode 100644
index 0000000..5add151
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/cjs/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/Cache.d.ts b/client/node_modules/@electron/get/dist/esm/Cache.d.ts
new file mode 100644
index 0000000..626001a
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Cache.d.ts
@@ -0,0 +1,8 @@
+export declare class Cache {
+ private cacheRoot;
+ constructor(cacheRoot?: string);
+ static getCacheDirectory(downloadUrl: string): string;
+ getCachePath(downloadUrl: string, fileName: string): string;
+ getPathForFileInCache(url: string, fileName: string): Promise<string | null>;
+ putFileInCache(url: string, currentPath: string, fileName: string): Promise<string>;
+}
diff --git a/client/node_modules/@electron/get/dist/esm/Cache.js b/client/node_modules/@electron/get/dist/esm/Cache.js
new file mode 100644
index 0000000..4801010
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Cache.js
@@ -0,0 +1,57 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import debug from 'debug';
+import envPaths from 'env-paths';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as url from 'url';
+import * as crypto from 'crypto';
+const d = debug('@electron/get:cache');
+const defaultCacheRoot = envPaths('electron', {
+ suffix: '',
+}).cache;
+export class Cache {
+ constructor(cacheRoot = defaultCacheRoot) {
+ this.cacheRoot = cacheRoot;
+ }
+ static getCacheDirectory(downloadUrl) {
+ const parsedDownloadUrl = url.parse(downloadUrl);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { search, hash, pathname } = parsedDownloadUrl, rest = __rest(parsedDownloadUrl, ["search", "hash", "pathname"]);
+ const strippedUrl = url.format(Object.assign(Object.assign({}, rest), { pathname: path.dirname(pathname || 'electron') }));
+ return crypto
+ .createHash('sha256')
+ .update(strippedUrl)
+ .digest('hex');
+ }
+ getCachePath(downloadUrl, fileName) {
+ return path.resolve(this.cacheRoot, Cache.getCacheDirectory(downloadUrl), fileName);
+ }
+ async getPathForFileInCache(url, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ if (await fs.pathExists(cachePath)) {
+ return cachePath;
+ }
+ return null;
+ }
+ async putFileInCache(url, currentPath, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ d(`Moving ${currentPath} to ${cachePath}`);
+ if (await fs.pathExists(cachePath)) {
+ d('* Replacing existing file');
+ await fs.remove(cachePath);
+ }
+ await fs.move(currentPath, cachePath);
+ return cachePath;
+ }
+}
+//# sourceMappingURL=Cache.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/Cache.js.map b/client/node_modules/@electron/get/dist/esm/Cache.js.map
new file mode 100644
index 0000000..943403b
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE;IAC5C,MAAM,EAAE,EAAE;CACX,CAAC,CAAC,KAAK,CAAC;AAET,MAAM,OAAO,KAAK;IAChB,YAAoB,YAAY,gBAAgB;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAE7C,MAAM,CAAC,iBAAiB,CAAC,WAAmB;QACjD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAc,iBAAiB,EAA7B,gEAA6B,CAAC;QAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,iCAAM,IAAI,KAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAG,CAAC;QAE5F,OAAO,MAAM;aACV,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,GAAW,EAAE,QAAgB;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,UAAU,WAAW,OAAO,SAAS,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5B;QAED,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/Downloader.d.ts b/client/node_modules/@electron/get/dist/esm/Downloader.d.ts
new file mode 100644
index 0000000..8e5e40e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Downloader.d.ts
@@ -0,0 +1,3 @@
+export interface Downloader<T> {
+ download(url: string, targetFilePath: string, options: T): Promise<void>;
+}
diff --git a/client/node_modules/@electron/get/dist/esm/Downloader.js b/client/node_modules/@electron/get/dist/esm/Downloader.js
new file mode 100644
index 0000000..6ff5866
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Downloader.js
@@ -0,0 +1 @@
+//# sourceMappingURL=Downloader.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/Downloader.js.map b/client/node_modules/@electron/get/dist/esm/Downloader.js.map
new file mode 100644
index 0000000..c6199d5
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/Downloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/Downloader.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/GotDownloader.d.ts b/client/node_modules/@electron/get/dist/esm/GotDownloader.d.ts
new file mode 100644
index 0000000..6494756
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/GotDownloader.d.ts
@@ -0,0 +1,21 @@
+import { Progress as GotProgress, Options as GotOptions } from 'got';
+import { Downloader } from './Downloader';
+/**
+ * See [`got#options`](https://github.com/sindresorhus/got#options) for possible keys/values.
+ */
+export declare type GotDownloaderOptions = (GotOptions & {
+ isStream?: true;
+}) & {
+ /**
+ * if defined, triggers every time `got`'s `downloadProgress` event callback is triggered.
+ */
+ getProgressCallback?: (progress: GotProgress) => Promise<void>;
+ /**
+ * if `true`, disables the console progress bar (setting the `ELECTRON_GET_NO_PROGRESS`
+ * environment variable to a non-empty value also does this).
+ */
+ quiet?: boolean;
+};
+export declare class GotDownloader implements Downloader<GotDownloaderOptions> {
+ download(url: string, targetFilePath: string, options?: GotDownloaderOptions): Promise<void>;
+}
diff --git a/client/node_modules/@electron/get/dist/esm/GotDownloader.js b/client/node_modules/@electron/get/dist/esm/GotDownloader.js
new file mode 100644
index 0000000..921bbeb
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/GotDownloader.js
@@ -0,0 +1,73 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import * as fs from 'fs-extra';
+import got, { HTTPError } from 'got';
+import * as path from 'path';
+import * as ProgressBar from 'progress';
+const PROGRESS_BAR_DELAY_IN_SECONDS = 30;
+export class GotDownloader {
+ async download(url, targetFilePath, options) {
+ if (!options) {
+ options = {};
+ }
+ const { quiet, getProgressCallback } = options, gotOptions = __rest(options, ["quiet", "getProgressCallback"]);
+ let downloadCompleted = false;
+ let bar;
+ let progressPercent;
+ let timeout = undefined;
+ await fs.mkdirp(path.dirname(targetFilePath));
+ const writeStream = fs.createWriteStream(targetFilePath);
+ if (!quiet || !process.env.ELECTRON_GET_NO_PROGRESS) {
+ const start = new Date();
+ timeout = setTimeout(() => {
+ if (!downloadCompleted) {
+ bar = new ProgressBar(`Downloading ${path.basename(url)}: [:bar] :percent ETA: :eta seconds `, {
+ curr: progressPercent,
+ total: 100,
+ });
+ // https://github.com/visionmedia/node-progress/issues/159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ bar.start = start;
+ }
+ }, PROGRESS_BAR_DELAY_IN_SECONDS * 1000);
+ }
+ await new Promise((resolve, reject) => {
+ const downloadStream = got.stream(url, gotOptions);
+ downloadStream.on('downloadProgress', async (progress) => {
+ progressPercent = progress.percent;
+ if (bar) {
+ bar.update(progress.percent);
+ }
+ if (getProgressCallback) {
+ await getProgressCallback(progress);
+ }
+ });
+ downloadStream.on('error', error => {
+ if (error instanceof HTTPError && error.response.statusCode === 404) {
+ error.message += ` for ${error.response.url}`;
+ }
+ if (writeStream.destroy) {
+ writeStream.destroy(error);
+ }
+ reject(error);
+ });
+ writeStream.on('error', error => reject(error));
+ writeStream.on('close', () => resolve());
+ downloadStream.pipe(writeStream);
+ });
+ downloadCompleted = true;
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ }
+}
+//# sourceMappingURL=GotDownloader.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/GotDownloader.js.map b/client/node_modules/@electron/get/dist/esm/GotDownloader.js.map
new file mode 100644
index 0000000..4117388
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/GotDownloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GotDownloader.js","sourceRoot":"","sources":["../../src/GotDownloader.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/artifact-utils.d.ts b/client/node_modules/@electron/get/dist/esm/artifact-utils.d.ts
new file mode 100644
index 0000000..e03c96e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/artifact-utils.d.ts
@@ -0,0 +1,4 @@
+import { ElectronArtifactDetails } from './types';
+export declare function getArtifactFileName(details: ElectronArtifactDetails): string;
+export declare function getArtifactRemoteURL(details: ElectronArtifactDetails): Promise<string>;
+export declare function getArtifactVersion(details: ElectronArtifactDetails): string;
diff --git a/client/node_modules/@electron/get/dist/esm/artifact-utils.js b/client/node_modules/@electron/get/dist/esm/artifact-utils.js
new file mode 100644
index 0000000..8dc1433
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/artifact-utils.js
@@ -0,0 +1,61 @@
+import { ensureIsTruthyString, normalizeVersion } from './utils';
+const BASE_URL = 'https://github.com/electron/electron/releases/download/';
+const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
+export function getArtifactFileName(details) {
+ ensureIsTruthyString(details, 'artifactName');
+ if (details.isGeneric) {
+ return details.artifactName;
+ }
+ ensureIsTruthyString(details, 'arch');
+ ensureIsTruthyString(details, 'platform');
+ ensureIsTruthyString(details, 'version');
+ return `${[
+ details.artifactName,
+ details.version,
+ details.platform,
+ details.arch,
+ ...(details.artifactSuffix ? [details.artifactSuffix] : []),
+ ].join('-')}.zip`;
+}
+function mirrorVar(name, options, defaultValue) {
+ // Convert camelCase to camel_case for env var reading
+ const snakeName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
+ return (
+ // .npmrc
+ process.env[`npm_config_electron_${name.toLowerCase()}`] ||
+ process.env[`NPM_CONFIG_ELECTRON_${snakeName.toUpperCase()}`] ||
+ process.env[`npm_config_electron_${snakeName}`] ||
+ // package.json
+ process.env[`npm_package_config_electron_${name}`] ||
+ process.env[`npm_package_config_electron_${snakeName.toLowerCase()}`] ||
+ // env
+ process.env[`ELECTRON_${snakeName.toUpperCase()}`] ||
+ options[name] ||
+ defaultValue);
+}
+export async function getArtifactRemoteURL(details) {
+ const opts = details.mirrorOptions || {};
+ let base = mirrorVar('mirror', opts, BASE_URL);
+ if (details.version.includes('nightly')) {
+ const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
+ if (nightlyDeprecated) {
+ base = nightlyDeprecated;
+ console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
+ }
+ else {
+ base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
+ }
+ }
+ const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
+ const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
+ // Allow customized download URL resolution.
+ if (opts.resolveAssetURL) {
+ const url = await opts.resolveAssetURL(details);
+ return url;
+ }
+ return `${base}${path}/${file}`;
+}
+export function getArtifactVersion(details) {
+ return normalizeVersion(mirrorVar('customVersion', details.mirrorOptions || {}, details.version));
+}
+//# sourceMappingURL=artifact-utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/artifact-utils.js.map b/client/node_modules/@electron/get/dist/esm/artifact-utils.js.map
new file mode 100644
index 0000000..bfaaf9c
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/artifact-utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"artifact-utils.js","sourceRoot":"","sources":["../../src/artifact-utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts b/client/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts
new file mode 100644
index 0000000..f7f09b2
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts
@@ -0,0 +1,3 @@
+import { DownloadOptions } from './types';
+import { Downloader } from './Downloader';
+export declare function getDownloaderForSystem(): Promise<Downloader<DownloadOptions>>;
diff --git a/client/node_modules/@electron/get/dist/esm/downloader-resolver.js b/client/node_modules/@electron/get/dist/esm/downloader-resolver.js
new file mode 100644
index 0000000..5a87c3c
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/downloader-resolver.js
@@ -0,0 +1,9 @@
+export async function getDownloaderForSystem() {
+ // TODO: Resolve the downloader or default to GotDownloader
+ // Current thoughts are a dot-file traversal for something like
+ // ".electron.downloader" which would be a text file with the name of the
+ // npm module to import() and use as the downloader
+ const { GotDownloader } = await import('./GotDownloader');
+ return new GotDownloader();
+}
+//# sourceMappingURL=downloader-resolver.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/downloader-resolver.js.map b/client/node_modules/@electron/get/dist/esm/downloader-resolver.js.map
new file mode 100644
index 0000000..201069b
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/downloader-resolver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"downloader-resolver.js","sourceRoot":"","sources":["../../src/downloader-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,2DAA2D;IAC3D,+DAA+D;IAC/D,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/index.d.ts b/client/node_modules/@electron/get/dist/esm/index.d.ts
new file mode 100644
index 0000000..93e709e
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/index.d.ts
@@ -0,0 +1,18 @@
+import { ElectronDownloadRequestOptions, ElectronPlatformArtifactDetailsWithDefaults } from './types';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+export * from './types';
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export declare function downloadArtifact(_artifactDetails: ElectronPlatformArtifactDetailsWithDefaults): Promise<string>;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export declare function download(version: string, options?: ElectronDownloadRequestOptions): Promise<string>;
diff --git a/client/node_modules/@electron/get/dist/esm/index.js b/client/node_modules/@electron/get/dist/esm/index.js
new file mode 100644
index 0000000..b87f564
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/index.js
@@ -0,0 +1,134 @@
+import debug from 'debug';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as semver from 'semver';
+import * as sumchecker from 'sumchecker';
+import { getArtifactFileName, getArtifactRemoteURL, getArtifactVersion } from './artifact-utils';
+import { Cache } from './Cache';
+import { getDownloaderForSystem } from './downloader-resolver';
+import { initializeProxy } from './proxy';
+import { withTempDirectoryIn, getHostArch, getNodeArch, ensureIsTruthyString, isOfficialLinuxIA32Download, } from './utils';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+const d = debug('@electron/get:index');
+if (process.env.ELECTRON_GET_USE_PROXY) {
+ initializeProxy();
+}
+async function validateArtifact(artifactDetails, downloadedAssetPath, _downloadArtifact) {
+ return await withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ // Don't try to verify the hash of the hash file itself
+ // and for older versions that don't have a SHASUMS256.txt
+ if (!artifactDetails.artifactName.startsWith('SHASUMS256') &&
+ !artifactDetails.unsafelyDisableChecksums &&
+ semver.gte(artifactDetails.version, '1.3.2')) {
+ let shasumPath;
+ const checksums = artifactDetails.checksums;
+ if (checksums) {
+ shasumPath = path.resolve(tempFolder, 'SHASUMS256.txt');
+ const fileNames = Object.keys(checksums);
+ if (fileNames.length === 0) {
+ throw new Error('Provided "checksums" object is empty, cannot generate a valid SHASUMS256.txt');
+ }
+ const generatedChecksums = fileNames
+ .map(fileName => `${checksums[fileName]} *${fileName}`)
+ .join('\n');
+ await fs.writeFile(shasumPath, generatedChecksums);
+ }
+ else {
+ shasumPath = await _downloadArtifact({
+ isGeneric: true,
+ version: artifactDetails.version,
+ artifactName: 'SHASUMS256.txt',
+ force: artifactDetails.force,
+ downloadOptions: artifactDetails.downloadOptions,
+ cacheRoot: artifactDetails.cacheRoot,
+ downloader: artifactDetails.downloader,
+ mirrorOptions: artifactDetails.mirrorOptions,
+ });
+ }
+ // For versions 1.3.2 - 1.3.4, need to overwrite the `defaultTextEncoding` option:
+ // https://github.com/electron/electron/pull/6676#discussion_r75332120
+ if (semver.satisfies(artifactDetails.version, '1.3.2 - 1.3.4')) {
+ const validatorOptions = {};
+ validatorOptions.defaultTextEncoding = 'binary';
+ const checker = new sumchecker.ChecksumValidator('sha256', shasumPath, validatorOptions);
+ await checker.validate(path.dirname(downloadedAssetPath), path.basename(downloadedAssetPath));
+ }
+ else {
+ await sumchecker('sha256', shasumPath, path.dirname(downloadedAssetPath), [
+ path.basename(downloadedAssetPath),
+ ]);
+ }
+ }
+ });
+}
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export async function downloadArtifact(_artifactDetails) {
+ const artifactDetails = Object.assign({}, _artifactDetails);
+ if (!_artifactDetails.isGeneric) {
+ const platformArtifactDetails = artifactDetails;
+ if (!platformArtifactDetails.platform) {
+ d('No platform found, defaulting to the host platform');
+ platformArtifactDetails.platform = process.platform;
+ }
+ if (platformArtifactDetails.arch) {
+ platformArtifactDetails.arch = getNodeArch(platformArtifactDetails.arch);
+ }
+ else {
+ d('No arch found, defaulting to the host arch');
+ platformArtifactDetails.arch = getHostArch();
+ }
+ }
+ ensureIsTruthyString(artifactDetails, 'version');
+ artifactDetails.version = getArtifactVersion(artifactDetails);
+ const fileName = getArtifactFileName(artifactDetails);
+ const url = await getArtifactRemoteURL(artifactDetails);
+ const cache = new Cache(artifactDetails.cacheRoot);
+ // Do not check if the file exists in the cache when force === true
+ if (!artifactDetails.force) {
+ d(`Checking the cache (${artifactDetails.cacheRoot}) for ${fileName} (${url})`);
+ const cachedPath = await cache.getPathForFileInCache(url, fileName);
+ if (cachedPath === null) {
+ d('Cache miss');
+ }
+ else {
+ d('Cache hit');
+ try {
+ await validateArtifact(artifactDetails, cachedPath, downloadArtifact);
+ return cachedPath;
+ }
+ catch (err) {
+ d("Artifact in cache didn't match checksums", err);
+ d('falling back to re-download');
+ }
+ }
+ }
+ if (!artifactDetails.isGeneric &&
+ isOfficialLinuxIA32Download(artifactDetails.platform, artifactDetails.arch, artifactDetails.version, artifactDetails.mirrorOptions)) {
+ console.warn('Official Linux/ia32 support is deprecated.');
+ console.warn('For more info: https://electronjs.org/blog/linux-32bit-support');
+ }
+ return await withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ const tempDownloadPath = path.resolve(tempFolder, getArtifactFileName(artifactDetails));
+ const downloader = artifactDetails.downloader || (await getDownloaderForSystem());
+ d(`Downloading ${url} to ${tempDownloadPath} with options: ${JSON.stringify(artifactDetails.downloadOptions)}`);
+ await downloader.download(url, tempDownloadPath, artifactDetails.downloadOptions);
+ await validateArtifact(artifactDetails, tempDownloadPath, downloadArtifact);
+ return await cache.putFileInCache(url, tempDownloadPath, fileName);
+ });
+}
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export function download(version, options) {
+ return downloadArtifact(Object.assign(Object.assign({}, options), { version, platform: process.platform, arch: process.arch, artifactName: 'electron' }));
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/index.js.map b/client/node_modules/@electron/get/dist/esm/index.js.map
new file mode 100644
index 0000000..8dd8053
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAOjG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAE5B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;IACtC,eAAe,EAAE,CAAC;CACnB;AAMD,KAAK,UAAU,gBAAgB,CAC7B,eAAwC,EACxC,mBAA2B,EAC3B,iBAAqC;IAErC,OAAO,MAAM,mBAAmB,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;QACjF,uDAAuD;QACvD,0DAA0D;QAC1D,IACE,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;YACtD,CAAC,eAAe,CAAC,wBAAwB;YACzC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAC5C;YACA,IAAI,UAAkB,CAAC;YACvB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;YAC5C,IAAI,SAAS,EAAE;gBACb,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAa,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;iBACH;gBACD,MAAM,kBAAkB,GAAG,SAAS;qBACjC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;qBACtD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;aACpD;iBAAM;gBACL,UAAU,GAAG,MAAM,iBAAiB,CAAC;oBACnC,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,YAAY,EAAE,gBAAgB;oBAC9B,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,eAAe,EAAE,eAAe,CAAC,eAAe;oBAChD,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,UAAU,EAAE,eAAe,CAAC,UAAU;oBACtC,aAAa,EAAE,eAAe,CAAC,aAAa;iBAC7C,CAAC,CAAC;aACJ;YAED,kFAAkF;YAClF,sEAAsE;YACtE,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE;gBAC9D,MAAM,gBAAgB,GAA+B,EAAE,CAAC;gBACxD,gBAAgB,CAAC,mBAAmB,GAAG,QAAQ,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;gBACzF,MAAM,OAAO,CAAC,QAAQ,CACpB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EACjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CACnC,CAAC;aACH;iBAAM;gBACL,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;oBACxE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;iBACnC,CAAC,CAAC;aACJ;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,gBAA6D;IAE7D,MAAM,eAAe,qBACf,gBAA4C,CACjD,CAAC;IACF,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,MAAM,uBAAuB,GAAG,eAAkD,CAAC;QACnF,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;YACrC,CAAC,CAAC,oDAAoD,CAAC,CAAC;YACxD,uBAAuB,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;SACrD;QACD,IAAI,uBAAuB,CAAC,IAAI,EAAE;YAChC,uBAAuB,CAAC,IAAI,GAAG,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SAC1E;aAAM;YACL,CAAC,CAAC,4CAA4C,CAAC,CAAC;YAChD,uBAAuB,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;SAC9C;KACF;IACD,oBAAoB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAEjD,eAAe,CAAC,OAAO,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAEnD,mEAAmE;IACnE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAC1B,CAAC,CAAC,uBAAuB,eAAe,CAAC,SAAS,SAAS,QAAQ,KAAK,GAAG,GAAG,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEpE,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,CAAC,CAAC,YAAY,CAAC,CAAC;SACjB;aAAM;YACL,CAAC,CAAC,WAAW,CAAC,CAAC;YACf,IAAI;gBACF,MAAM,gBAAgB,CAAC,eAAe,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;gBAEtE,OAAO,UAAU,CAAC;aACnB;YAAC,OAAO,GAAG,EAAE;gBACZ,CAAC,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;gBACnD,CAAC,CAAC,6BAA6B,CAAC,CAAC;aAClC;SACF;KACF;IAED,IACE,CAAC,eAAe,CAAC,SAAS;QAC1B,2BAA2B,CACzB,eAAe,CAAC,QAAQ,EACxB,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,aAAa,CAC9B,EACD;QACA,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;KAChF;IAED,OAAO,MAAM,mBAAmB,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;QACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;QAExF,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,IAAI,CAAC,MAAM,sBAAsB,EAAE,CAAC,CAAC;QAClF,CAAC,CACC,eAAe,GAAG,OAAO,gBAAgB,kBAAkB,IAAI,CAAC,SAAS,CACvE,eAAe,CAAC,eAAe,CAChC,EAAE,CACJ,CAAC;QACF,MAAM,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;QAElF,MAAM,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAE5E,OAAO,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,OAAe,EACf,OAAwC;IAExC,OAAO,gBAAgB,iCAClB,OAAO,KACV,OAAO,EACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,YAAY,EAAE,UAAU,IACxB,CAAC;AACL,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/proxy.d.ts b/client/node_modules/@electron/get/dist/esm/proxy.d.ts
new file mode 100644
index 0000000..df3e16a
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/proxy.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export declare function initializeProxy(): void;
diff --git a/client/node_modules/@electron/get/dist/esm/proxy.js b/client/node_modules/@electron/get/dist/esm/proxy.js
new file mode 100644
index 0000000..c6336c1
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/proxy.js
@@ -0,0 +1,24 @@
+import * as debug from 'debug';
+import { getEnv, setEnv } from './utils';
+const d = debug('@electron/get:proxy');
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export function initializeProxy() {
+ try {
+ // See: https://github.com/electron/get/pull/214#discussion_r798845713
+ const env = getEnv('GLOBAL_AGENT_');
+ setEnv('GLOBAL_AGENT_HTTP_PROXY', env('HTTP_PROXY'));
+ setEnv('GLOBAL_AGENT_HTTPS_PROXY', env('HTTPS_PROXY'));
+ setEnv('GLOBAL_AGENT_NO_PROXY', env('NO_PROXY'));
+ /**
+ * TODO: replace global-agent with a hpagent. @BlackHole1
+ * https://github.com/sindresorhus/got/blob/HEAD/documentation/tips.md#proxying
+ */
+ require('global-agent').bootstrap();
+ }
+ catch (e) {
+ d('Could not load either proxy modules, built-in proxy support not available:', e);
+ }
+}
+//# sourceMappingURL=proxy.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/proxy.js.map b/client/node_modules/@electron/get/dist/esm/proxy.js.map
new file mode 100644
index 0000000..8c2f2d7
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/proxy.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI;QACF,sEAAsE;QACtE,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAEpC,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjD;;;WAGG;QACH,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;KACrC;IAAC,OAAO,CAAC,EAAE;QACV,CAAC,CAAC,4EAA4E,EAAE,CAAC,CAAC,CAAC;KACpF;AACH,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/types.d.ts b/client/node_modules/@electron/get/dist/esm/types.d.ts
new file mode 100644
index 0000000..a8284bb
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/types.d.ts
@@ -0,0 +1,129 @@
+import { Downloader } from './Downloader';
+export declare type DownloadOptions = any;
+export interface MirrorOptions {
+ /**
+ * DEPRECATED - see nightlyMirror.
+ */
+ nightly_mirror?: string;
+ /**
+ * The Electron nightly-specific mirror URL.
+ */
+ nightlyMirror?: string;
+ /**
+ * The base URL of the mirror to download from,
+ * e.g https://github.com/electron/electron/releases/download
+ */
+ mirror?: string;
+ /**
+ * The name of the directory to download from,
+ * often scoped by version number e.g 'v4.0.4'
+ */
+ customDir?: string;
+ /**
+ * The name of the asset to download,
+ * e.g 'electron-v4.0.4-linux-x64.zip'
+ */
+ customFilename?: string;
+ /**
+ * The version of the asset to download,
+ * e.g '4.0.4'
+ */
+ customVersion?: string;
+ /**
+ * A function allowing customization of the url returned
+ * from getArtifactRemoteURL().
+ */
+ resolveAssetURL?: (opts: DownloadOptions) => Promise<string>;
+}
+export interface ElectronDownloadRequest {
+ /**
+ * The version of Electron associated with the artifact.
+ */
+ version: string;
+ /**
+ * The type of artifact. For example:
+ * * `electron`
+ * * `ffmpeg`
+ */
+ artifactName: string;
+}
+export interface ElectronDownloadRequestOptions {
+ /**
+ * Whether to download an artifact regardless of whether it's in the cache directory.
+ *
+ * Defaults to `false`.
+ */
+ force?: boolean;
+ /**
+ * When set to `true`, disables checking that the artifact download completed successfully
+ * with the correct payload.
+ *
+ * Defaults to `false`.
+ */
+ unsafelyDisableChecksums?: boolean;
+ /**
+ * Provides checksums for the artifact as strings.
+ * Can be used if you already know the checksums of the Electron artifact
+ * you are downloading and want to skip the checksum file download
+ * without skipping the checksum validation.
+ *
+ * This should be an object whose keys are the file names of the artifacts and
+ * the values are their respective SHA256 checksums.
+ */
+ checksums?: Record<string, string>;
+ /**
+ * The directory that caches Electron artifact downloads.
+ *
+ * The default value is dependent upon the host platform:
+ *
+ * * Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+ * * MacOS: `~/Library/Caches/electron/`
+ * * Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+ */
+ cacheRoot?: string;
+ /**
+ * Options passed to the downloader module.
+ */
+ downloadOptions?: DownloadOptions;
+ /**
+ * Options related to specifying an artifact mirror.
+ */
+ mirrorOptions?: MirrorOptions;
+ /**
+ * The custom [[Downloader]] class used to download artifacts. Defaults to the
+ * built-in [[GotDownloader]].
+ */
+ downloader?: Downloader<DownloadOptions>;
+ /**
+ * A temporary directory for downloads.
+ * It is used before artifacts are put into cache.
+ */
+ tempDirectory?: string;
+}
+export declare type ElectronPlatformArtifactDetails = {
+ /**
+ * The target artifact platform. These are Node-style platform names, for example:
+ * * `win32`
+ * * `darwin`
+ * * `linux`
+ */
+ platform: string;
+ /**
+ * The target artifact architecture. These are Node-style architecture names, for example:
+ * * `ia32`
+ * * `x64`
+ * * `armv7l`
+ */
+ arch: string;
+ artifactSuffix?: string;
+ isGeneric?: false;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronGenericArtifactDetails = {
+ isGeneric: true;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronArtifactDetails = ElectronPlatformArtifactDetails | ElectronGenericArtifactDetails;
+export declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
+export declare type ElectronPlatformArtifactDetailsWithDefaults = (Omit<ElectronPlatformArtifactDetails, 'platform' | 'arch'> & {
+ platform?: string;
+ arch?: string;
+}) | ElectronGenericArtifactDetails;
diff --git a/client/node_modules/@electron/get/dist/esm/types.js b/client/node_modules/@electron/get/dist/esm/types.js
new file mode 100644
index 0000000..5b2306a
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/types.js
@@ -0,0 +1 @@
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/types.js.map b/client/node_modules/@electron/get/dist/esm/types.js.map
new file mode 100644
index 0000000..7b5fff8
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/utils.d.ts b/client/node_modules/@electron/get/dist/esm/utils.d.ts
new file mode 100644
index 0000000..3cc40c1
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/utils.d.ts
@@ -0,0 +1,25 @@
+export declare function withTempDirectoryIn<T>(parentDirectory: string | undefined, fn: (directory: string) => Promise<T>): Promise<T>;
+export declare function withTempDirectory<T>(fn: (directory: string) => Promise<T>): Promise<T>;
+export declare function normalizeVersion(version: string): string;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export declare function uname(): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export declare function getNodeArch(arch: string): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export declare function getHostArch(): string;
+export declare function ensureIsTruthyString<T, K extends keyof T>(obj: T, key: K): void;
+export declare function isOfficialLinuxIA32Download(platform: string, arch: string, version: string, mirrorOptions?: object): boolean;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export declare function getEnv(prefix?: string): (name: string) => string | undefined;
+export declare function setEnv(key: string, value: string | undefined): void;
diff --git a/client/node_modules/@electron/get/dist/esm/utils.js b/client/node_modules/@electron/get/dist/esm/utils.js
new file mode 100644
index 0000000..575ea86
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/utils.js
@@ -0,0 +1,95 @@
+import * as childProcess from 'child_process';
+import * as fs from 'fs-extra';
+import * as os from 'os';
+import * as path from 'path';
+async function useAndRemoveDirectory(directory, fn) {
+ let result;
+ try {
+ result = await fn(directory);
+ }
+ finally {
+ await fs.remove(directory);
+ }
+ return result;
+}
+export async function withTempDirectoryIn(parentDirectory = os.tmpdir(), fn) {
+ const tempDirectoryPrefix = 'electron-download-';
+ const tempDirectory = await fs.mkdtemp(path.resolve(parentDirectory, tempDirectoryPrefix));
+ return useAndRemoveDirectory(tempDirectory, fn);
+}
+export async function withTempDirectory(fn) {
+ return withTempDirectoryIn(undefined, fn);
+}
+export function normalizeVersion(version) {
+ if (!version.startsWith('v')) {
+ return `v${version}`;
+ }
+ return version;
+}
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export function uname() {
+ return childProcess
+ .execSync('uname -m')
+ .toString()
+ .trim();
+}
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export function getNodeArch(arch) {
+ if (arch === 'arm') {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ switch (process.config.variables.arm_version) {
+ case '6':
+ return uname();
+ case '7':
+ default:
+ return 'armv7l';
+ }
+ }
+ return arch;
+}
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export function getHostArch() {
+ return getNodeArch(process.arch);
+}
+export function ensureIsTruthyString(obj, key) {
+ if (!obj[key] || typeof obj[key] !== 'string') {
+ throw new Error(`Expected property "${key}" to be provided as a string but it was not`);
+ }
+}
+export function isOfficialLinuxIA32Download(platform, arch, version, mirrorOptions) {
+ return (platform === 'linux' &&
+ arch === 'ia32' &&
+ Number(version.slice(1).split('.')[0]) >= 4 &&
+ typeof mirrorOptions === 'undefined');
+}
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export function getEnv(prefix = '') {
+ const envsLowerCase = {};
+ for (const envKey in process.env) {
+ envsLowerCase[envKey.toLowerCase()] = process.env[envKey];
+ }
+ return (name) => {
+ return (envsLowerCase[`${prefix}${name}`.toLowerCase()] ||
+ envsLowerCase[name.toLowerCase()] ||
+ undefined);
+ };
+}
+export function setEnv(key, value) {
+ // The `void` operator always returns `undefined`.
+ // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
+ if (value !== void 0) {
+ process.env[key] = value;
+ }
+}
+//# sourceMappingURL=utils.js.map \ No newline at end of file
diff --git a/client/node_modules/@electron/get/dist/esm/utils.js.map b/client/node_modules/@electron/get/dist/esm/utils.js.map
new file mode 100644
index 0000000..6c65992
--- /dev/null
+++ b/client/node_modules/@electron/get/dist/esm/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@electron/get/package.json b/client/node_modules/@electron/get/package.json
new file mode 100644
index 0000000..10e4609
--- /dev/null
+++ b/client/node_modules/@electron/get/package.json
@@ -0,0 +1,100 @@
+{
+ "name": "@electron/get",
+ "version": "2.0.3",
+ "description": "Utility for downloading artifacts from different versions of Electron",
+ "main": "dist/cjs/index.js",
+ "module": "dist/esm/index.js",
+ "repository": "https://github.com/electron/get",
+ "author": "Samuel Attard",
+ "license": "MIT",
+ "scripts": {
+ "build": "tsc && tsc -p tsconfig.esm.json",
+ "build:docs": "typedoc --out docs",
+ "eslint": "eslint --ext .ts src test",
+ "jest": "jest --coverage",
+ "lint": "npm run prettier && npm run eslint",
+ "prettier": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
+ "prepublishOnly": "npm run build",
+ "test": "npm run lint && npm run jest",
+ "test:nonetwork": "npm run lint && npm run jest -- --testPathIgnorePatterns network.spec"
+ },
+ "files": [
+ "dist/*",
+ "README.md"
+ ],
+ "engines": {
+ "node": ">=12"
+ },
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "devDependencies": {
+ "@continuous-auth/semantic-release-npm": "^3.0.0",
+ "@types/debug": "^4.1.4",
+ "@types/fs-extra": "^8.0.0",
+ "@types/jest": "^24.0.13",
+ "@types/node": "^12.20.55",
+ "@types/progress": "^2.0.3",
+ "@types/semver": "^6.2.0",
+ "@typescript-eslint/eslint-plugin": "^2.34.0",
+ "@typescript-eslint/parser": "^2.34.0",
+ "eslint": "^6.8.0",
+ "eslint-config-prettier": "^6.15.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-jest": "< 24.0.0",
+ "husky": "^2.3.0",
+ "jest": "^24.8.0",
+ "lint-staged": "^8.1.7",
+ "prettier": "^1.17.1",
+ "ts-jest": "^24.0.0",
+ "typedoc": "^0.17.2",
+ "typescript": "^3.8.0"
+ },
+ "eslintConfig": {
+ "parser": "@typescript-eslint/parser",
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:jest/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:import/typescript",
+ "prettier",
+ "prettier/@typescript-eslint"
+ ]
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.ts": [
+ "eslint --fix",
+ "prettier --write",
+ "git add"
+ ]
+ },
+ "keywords": [
+ "electron",
+ "download",
+ "prebuild",
+ "get",
+ "artifact",
+ "release"
+ ],
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ },
+ "resolutions": {
+ "eslint/inquirer": "< 7.3.0",
+ "**/@typescript-eslint/typescript-estree/semver": "^6.3.0"
+ }
+}
diff --git a/client/node_modules/@remusao/guess-url-type/CHANGELOG.md b/client/node_modules/@remusao/guess-url-type/CHANGELOG.md
new file mode 100644
index 0000000..73a6078
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/CHANGELOG.md
@@ -0,0 +1,59 @@
+# v1.2.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump ts-node from 8.10.2 to 9.0.0 [#260](https://github.com/remusao/mono/pull/260) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.2.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.1.2 (Tue Apr 07 2020)
+
+#### :nail_care: Polish
+
+- Fine-tune url type detection [#116](https://github.com/remusao/mono/pull/116) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.1.1 (Tue Apr 07 2020)
+
+#### :bug: Bug Fix
+
+- Add tests and fix guess-url-type [#115](https://github.com/remusao/mono/pull/115) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.1.0 (Mon Apr 06 2020)
+
+#### :rocket: New Feature
+
+- Add 'guess-url-type' package [#110](https://github.com/remusao/mono/pull/110) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/LICENSE b/client/node_modules/@remusao/guess-url-type/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/guess-url-type/README.md b/client/node_modules/@remusao/guess-url-type/README.md
new file mode 100644
index 0000000..1829d49
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/README.md
@@ -0,0 +1,3 @@
+# `@remusao/guess-url-type`
+
+> Guess type of resource based on its URL
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js
new file mode 100644
index 0000000..787e8f6
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js
@@ -0,0 +1,66 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const documents_1 = require("./src/extensions/documents");
+const fonts_1 = require("./src/extensions/fonts");
+const images_1 = require("./src/extensions/images");
+const medias_1 = require("./src/extensions/medias");
+const scripts_1 = require("./src/extensions/scripts");
+const stylesheets_1 = require("./src/extensions/stylesheets");
+const extname_1 = require("./src/extname");
+function getRequestType(url) {
+ const ext = extname_1.extname(url);
+ // Images
+ if (images_1.EXTENSIONS.has(ext) ||
+ url.startsWith('data:image/') ||
+ url.startsWith('https://frog.wix.com/bt')) {
+ return 'image';
+ }
+ // Medias
+ if (medias_1.EXTENSIONS.has(ext) ||
+ url.startsWith('data:audio/') ||
+ url.startsWith('data:video/')) {
+ return 'media';
+ }
+ // Stylesheets
+ if (stylesheets_1.EXTENSIONS.has(ext) || url.startsWith('data:text/css')) {
+ return 'stylesheet';
+ }
+ // Scripts
+ if (scripts_1.EXTENSIONS.has(ext) ||
+ (url.startsWith('data:') &&
+ (url.startsWith('data:application/ecmascript') ||
+ url.startsWith('data:application/javascript') ||
+ url.startsWith('data:application/x-ecmascript') ||
+ url.startsWith('data:application/x-javascript') ||
+ url.startsWith('data:text/ecmascript') ||
+ url.startsWith('data:text/javascript') ||
+ url.startsWith('data:text/javascript1.0') ||
+ url.startsWith('data:text/javascript1.1') ||
+ url.startsWith('data:text/javascript1.2') ||
+ url.startsWith('data:text/javascript1.3') ||
+ url.startsWith('data:text/javascript1.4') ||
+ url.startsWith('data:text/javascript1.5') ||
+ url.startsWith('data:text/jscript') ||
+ url.startsWith('data:text/livescript') ||
+ url.startsWith('data:text/x-ecmascript') ||
+ url.startsWith('data:text/x-javascript'))) ||
+ url.startsWith('https://maps.googleapis.com/maps/api/js') ||
+ url.startsWith('https://www.googletagmanager.com/gtag/js')) {
+ return 'script';
+ }
+ // Documents
+ if (documents_1.EXTENSIONS.has(ext) ||
+ url.startsWith('data:text/html') ||
+ url.startsWith('data:application/xhtml') ||
+ url.startsWith('https://www.youtube.com/embed/') ||
+ url.startsWith('https://www.google.com/gen_204')) {
+ return 'document';
+ }
+ // Fonts
+ if (fonts_1.EXTENSIONS.has(ext) || url.startsWith('data:font/')) {
+ return 'font';
+ }
+ return 'other';
+}
+exports.default = getRequestType;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js.map
new file mode 100644
index 0000000..db55d40
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;AAAA,0DAA+E;AAC/E,kDAAuE;AACvE,oDAAyE;AACzE,oDAAyE;AACzE,sDAA2E;AAC3E,8DAA8E;AAE9E,2CAAwC;AAWxC,SAAwB,cAAc,CAAC,GAAW;IAChD,MAAM,GAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,CAAC;IAEzB,SAAS;IACT,IACE,mBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;QAC7B,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,EACzC;QACA,OAAO,OAAO,CAAC;KAChB;IAED,SAAS;IACT,IACE,mBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;QAC7B,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B;QACA,OAAO,OAAO,CAAC;KAChB;IAED,cAAc;IACd,IAAI,wBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QAChE,OAAO,YAAY,CAAC;KACrB;IAED,UAAU;IACV,IACE,oBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,CAAC,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC;gBAC5C,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC;gBAC7C,GAAG,CAAC,UAAU,CAAC,+BAA+B,CAAC;gBAC/C,GAAG,CAAC,UAAU,CAAC,+BAA+B,CAAC;gBAC/C,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;gBACtC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;gBACtC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACzC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBACnC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;gBACtC,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC;gBACxC,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,UAAU,CAAC,yCAAyC,CAAC;QACzD,GAAG,CAAC,UAAU,CAAC,0CAA0C,CAAC,EAC1D;QACA,OAAO,QAAQ,CAAC;KACjB;IAED,YAAY;IACZ,IACE,sBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5B,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAChC,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACxC,GAAG,CAAC,UAAU,CAAC,gCAAgC,CAAC;QAChD,GAAG,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAChD;QACA,OAAO,UAAU,CAAC;KACnB;IAED,QAAQ;IACR,IAAI,kBAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC5D,OAAO,MAAM,CAAC;KACf;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AArED,iCAqEC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js
new file mode 100644
index 0000000..671b91f
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set(['htm', 'html', 'xhtml']);
+//# sourceMappingURL=documents.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js.map
new file mode 100644
index 0000000..f4c8458
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/documents.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../../src/extensions/documents.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js
new file mode 100644
index 0000000..6e9b205
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set([
+ 'eot',
+ 'otf',
+ 'sfnt',
+ 'ttf',
+ 'woff',
+ 'woff2',
+]);
+//# sourceMappingURL=fonts.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js.map
new file mode 100644
index 0000000..22a04d9
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/fonts.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../../src/extensions/fonts.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;CACR,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js
new file mode 100644
index 0000000..b5fe999
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js
@@ -0,0 +1,35 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set([
+ 'apng',
+ 'bmp',
+ 'cur',
+ 'dib',
+ 'eps',
+ 'gif',
+ 'heic',
+ 'heif',
+ 'ico',
+ 'j2k',
+ 'jfi',
+ 'jfif',
+ 'jif',
+ 'jp2',
+ 'jpe',
+ 'jpeg',
+ 'jpf',
+ 'jpg',
+ 'jpm',
+ 'jpx',
+ 'mj2',
+ 'pjp',
+ 'pjpeg',
+ 'png',
+ 'svg',
+ 'svgz',
+ 'tif',
+ 'tiff',
+ 'webp',
+]);
+//# sourceMappingURL=images.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js.map
new file mode 100644
index 0000000..89bb7f5
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/images.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"images.js","sourceRoot":"","sources":["../../../../src/extensions/images.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;CACP,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js
new file mode 100644
index 0000000..8e4e8a3
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set([
+ 'avi',
+ 'flv',
+ 'mp3',
+ 'mp4',
+ 'ogg',
+ 'wav',
+ 'weba',
+ 'webm',
+ 'wmv',
+]);
+//# sourceMappingURL=medias.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js.map
new file mode 100644
index 0000000..55b097b
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/medias.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"medias.js","sourceRoot":"","sources":["../../../../src/extensions/medias.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js
new file mode 100644
index 0000000..6ad9db7
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set(['js', 'ts', 'jsx', 'esm']);
+//# sourceMappingURL=scripts.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js.map
new file mode 100644
index 0000000..a968f4d
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/scripts.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/extensions/scripts.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js
new file mode 100644
index 0000000..df0a91f
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EXTENSIONS = void 0;
+exports.EXTENSIONS = new Set(['css', 'scss']);
+//# sourceMappingURL=stylesheets.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js.map
new file mode 100644
index 0000000..ca23692
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extensions/stylesheets.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stylesheets.js","sourceRoot":"","sources":["../../../../src/extensions/stylesheets.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js
new file mode 100644
index 0000000..c459a8d
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.extname = void 0;
+function extname(url) {
+ let endOfPath = url.length;
+ // Check for fragment
+ const indexOfFragment = url.indexOf('#');
+ if (indexOfFragment !== -1) {
+ endOfPath = indexOfFragment;
+ }
+ const indexOfQuery = url.indexOf('?');
+ if (indexOfQuery !== -1 && indexOfQuery < endOfPath) {
+ endOfPath = indexOfQuery;
+ }
+ let startOfExt = endOfPath - 1;
+ let code = 0;
+ for (; startOfExt >= 0; startOfExt -= 1) {
+ code = url.charCodeAt(startOfExt);
+ if (((code >= 65 && code <= 90) ||
+ (code >= 97 && code <= 122) ||
+ (code >= 48 && code <= 57)) === false) {
+ break;
+ }
+ }
+ if (code !== 46 || startOfExt < 0 || endOfPath - startOfExt >= 10) {
+ return '';
+ }
+ return url.slice(startOfExt + 1, endOfPath);
+}
+exports.extname = extname;
+//# sourceMappingURL=extname.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js.map
new file mode 100644
index 0000000..1f7d1c4
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/src/extname.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extname.js","sourceRoot":"","sources":["../../../src/extname.ts"],"names":[],"mappings":";;;AAAA,SAAgB,OAAO,CAAC,GAAW;IACjC,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;IAE3B,qBAAqB;IACrB,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;QAC1B,SAAS,GAAG,eAAe,CAAC;KAC7B;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,SAAS,EAAE;QACnD,SAAS,GAAG,YAAY,CAAC;KAC1B;IAED,IAAI,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,UAAU,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE;QACvC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClC,IACE,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC;YAC3B,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,KAAK,EACvC;YACA,MAAM;SACP;KACF;IAED,IAAI,IAAI,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,UAAU,IAAI,EAAE,EAAE;QACjE,OAAO,EAAE,CAAC;KACX;IAED,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAhCD,0BAgCC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js b/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js
new file mode 100644
index 0000000..db234ca
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js
@@ -0,0 +1,102 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const documents_1 = require("../src/extensions/documents");
+const fonts_1 = require("../src/extensions/fonts");
+const images_1 = require("../src/extensions/images");
+const medias_1 = require("../src/extensions/medias");
+const scripts_1 = require("../src/extensions/scripts");
+const stylesheets_1 = require("../src/extensions/stylesheets");
+const extname_1 = require("../src/extname");
+const index_1 = __importDefault(require("../index"));
+describe('@remusao/guess-url-type', () => {
+ describe('#extname', () => {
+ it('returns empty string if no extension', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo')).to.equal('');
+ });
+ it('returns simple extension', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo.js')).to.equal('js');
+ });
+ it('ignores fragment', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo.js#fragment')).to.equal('js');
+ });
+ it('ignores query', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo.js?query')).to.equal('js');
+ });
+ it('ignores query and fragment', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo.js?query#fragment')).to.equal('js');
+ });
+ it('ignores too long extension', () => {
+ chai_1.expect(extname_1.extname('https://example.com/foo.aaaaaaaaaaa')).to.equal('');
+ });
+ });
+ for (const [type, extensions] of [
+ ['document', documents_1.EXTENSIONS],
+ ['font', fonts_1.EXTENSIONS],
+ ['image', images_1.EXTENSIONS],
+ ['media', medias_1.EXTENSIONS],
+ ['script', scripts_1.EXTENSIONS],
+ ['stylesheet', stylesheets_1.EXTENSIONS],
+ ]) {
+ describe(`detects ${type} based on extension`, () => {
+ for (const ext of extensions) {
+ it(`${ext}`, () => {
+ chai_1.expect(index_1.default(`https://example.com/file.${ext}`)).to.equal(type);
+ chai_1.expect(index_1.default(`https://example.com/file.${ext}?query=42`)).to.equal(type);
+ chai_1.expect(index_1.default(`https://example.com/file.${ext}?query=42#fragment`)).to.equal(type);
+ });
+ }
+ });
+ }
+ describe('falls-back to other', () => {
+ it('when extension is unknown', () => {
+ chai_1.expect(index_1.default('https://example.com/file.unknown')).to.equal('other');
+ });
+ it('when there is no extension', () => {
+ chai_1.expect(index_1.default('https://example.com/file')).to.equal('other');
+ });
+ });
+ describe('data:', () => {
+ for (const [type, mime] of [
+ ['document', 'application/xhtml'],
+ ['document', 'application/xhtml+xml'],
+ ['document', 'text/html'],
+ ['font', 'font/woff'],
+ ['image', 'image/png'],
+ ['media', 'audio/mpeg'],
+ ['media', 'audio/vorbis'],
+ ['media', 'video/mp4'],
+ ['other', 'application/octet-stream'],
+ ['other', 'application/pdf'],
+ ['other', 'model/vml'],
+ ['other', 'text/plain'],
+ ['script', 'application/ecmascript'],
+ ['script', 'application/javascript'],
+ ['script', 'application/x-ecmascript'],
+ ['script', 'application/x-javascript'],
+ ['script', 'text/ecmascript'],
+ ['script', 'text/javascript'],
+ ['script', 'text/javascript1.0'],
+ ['script', 'text/javascript1.1'],
+ ['script', 'text/javascript1.2'],
+ ['script', 'text/javascript1.3'],
+ ['script', 'text/javascript1.4'],
+ ['script', 'text/javascript1.5'],
+ ['script', 'text/jscript'],
+ ['script', 'text/livescript'],
+ ['script', 'text/x-ecmascript'],
+ ['script', 'text/x-javascript'],
+ ['stylesheet', 'text/css'],
+ ]) {
+ it(`detect ${type} for MIME ${mime}`, () => {
+ chai_1.expect(index_1.default(`data:${mime},foo`)).to.equal(type);
+ chai_1.expect(index_1.default(`data:${mime};base64,foo`)).to.equal(type);
+ });
+ }
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js.map b/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js.map
new file mode 100644
index 0000000..20cfc9b
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/test/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../test/index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/guess-url-type/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..c5c96af
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,1044 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/documents.ts": {
+ "version": "475cf31e2956bfa6f6aa2e083461edf59070a8ec1158c861c8d79f9f2d589719",
+ "signature": "93b54ab5ca5bc551e2710878060aaae889d16e53536dad92dc29b98f83a095ee",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/fonts.ts": {
+ "version": "68854df3bf1d05116600bd896881398ada544aca66dcf8ba80b4439c9329b0f3",
+ "signature": "00386b11eb804a20a185efd6e1b540158bb4ca98df081416d6434a32e729b780",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/images.ts": {
+ "version": "40d4ef9777ff5be72aae1acd6045495fc1613687ccf38a637ae673bf06c5e8e6",
+ "signature": "b33e99ec79f715c7806f1527748839438da3f1a477bf3420904e9f0c5a63a084",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/medias.ts": {
+ "version": "b6943003514fdda1dd1b0412c00a95596891a0d928bc59b87a2852c773463912",
+ "signature": "aac8904614a57bda7e42dc808c087f6c09519b409fd2cd19ad0b12ac01da296e",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/scripts.ts": {
+ "version": "d25e7f77f607842cb5f4e5c4975078e08b1819af90ec1e2f14c43ac4ebfc913f",
+ "signature": "2a2525838883a91eb7900be7f1add953c44c009e7e28cd65b00e1506e3f343ea",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/stylesheets.ts": {
+ "version": "729f9c8f18f628aed3d64546be2162e5b50bb76a7ec33002f866de0819b3e69a",
+ "signature": "14e15f7ca62b0e86e8f8bb99f4a4bdd3715bffb75288f5ab09f9d754a5b5b6eb",
+ "affectsGlobalScope": false
+ },
+ "../../src/extname.ts": {
+ "version": "fb13c850df412849c6ea2e2a4dbb1ad820e93402260d7c263dc0adceec25c621",
+ "signature": "3dfec704893b0f33aa647686b50e11c1fa39bf2d49f21e24a4e6483ae1efcd49",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "7a4dc0536a01df1d156f49d9c46f51add11a1f0efd2cc4dd814281124ac4378c",
+ "signature": "e2ff5c2dd1b3310e39e74aa54d3a476d29724fd7712a8caa867caff68f37fcaf",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../test/index.test.ts": {
+ "version": "c2c0d3ef1b7535f95894e9d8efbc4cac2dca8942e672aff729dd277f4e4f3b3d",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts"
+ ],
+ "../../test/index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts",
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../test/index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.ts",
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts",
+ "../../test/index.test.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/index.js b/client/node_modules/@remusao/guess-url-type/dist/es6/index.js
new file mode 100644
index 0000000..edb102b
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/index.js
@@ -0,0 +1,63 @@
+import { EXTENSIONS as DOCUMENT_EXTENSIONS } from './src/extensions/documents';
+import { EXTENSIONS as FONT_EXTENSIONS } from './src/extensions/fonts';
+import { EXTENSIONS as IMAGE_EXTENSIONS } from './src/extensions/images';
+import { EXTENSIONS as MEDIA_EXTENSIONS } from './src/extensions/medias';
+import { EXTENSIONS as SCRIPT_EXTENSIONS } from './src/extensions/scripts';
+import { EXTENSIONS as STYLE_EXTENSIONS } from './src/extensions/stylesheets';
+import { extname } from './src/extname';
+export default function getRequestType(url) {
+ const ext = extname(url);
+ // Images
+ if (IMAGE_EXTENSIONS.has(ext) ||
+ url.startsWith('data:image/') ||
+ url.startsWith('https://frog.wix.com/bt')) {
+ return 'image';
+ }
+ // Medias
+ if (MEDIA_EXTENSIONS.has(ext) ||
+ url.startsWith('data:audio/') ||
+ url.startsWith('data:video/')) {
+ return 'media';
+ }
+ // Stylesheets
+ if (STYLE_EXTENSIONS.has(ext) || url.startsWith('data:text/css')) {
+ return 'stylesheet';
+ }
+ // Scripts
+ if (SCRIPT_EXTENSIONS.has(ext) ||
+ (url.startsWith('data:') &&
+ (url.startsWith('data:application/ecmascript') ||
+ url.startsWith('data:application/javascript') ||
+ url.startsWith('data:application/x-ecmascript') ||
+ url.startsWith('data:application/x-javascript') ||
+ url.startsWith('data:text/ecmascript') ||
+ url.startsWith('data:text/javascript') ||
+ url.startsWith('data:text/javascript1.0') ||
+ url.startsWith('data:text/javascript1.1') ||
+ url.startsWith('data:text/javascript1.2') ||
+ url.startsWith('data:text/javascript1.3') ||
+ url.startsWith('data:text/javascript1.4') ||
+ url.startsWith('data:text/javascript1.5') ||
+ url.startsWith('data:text/jscript') ||
+ url.startsWith('data:text/livescript') ||
+ url.startsWith('data:text/x-ecmascript') ||
+ url.startsWith('data:text/x-javascript'))) ||
+ url.startsWith('https://maps.googleapis.com/maps/api/js') ||
+ url.startsWith('https://www.googletagmanager.com/gtag/js')) {
+ return 'script';
+ }
+ // Documents
+ if (DOCUMENT_EXTENSIONS.has(ext) ||
+ url.startsWith('data:text/html') ||
+ url.startsWith('data:application/xhtml') ||
+ url.startsWith('https://www.youtube.com/embed/') ||
+ url.startsWith('https://www.google.com/gen_204')) {
+ return 'document';
+ }
+ // Fonts
+ if (FONT_EXTENSIONS.has(ext) || url.startsWith('data:font/')) {
+ return 'font';
+ }
+ return 'other';
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/index.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/index.js.map
new file mode 100644
index 0000000..1ed5006
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js
new file mode 100644
index 0000000..2dfb2f3
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js
@@ -0,0 +1,2 @@
+export const EXTENSIONS = new Set(['htm', 'html', 'xhtml']);
+//# sourceMappingURL=documents.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js.map
new file mode 100644
index 0000000..cc56963
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/documents.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../../src/extensions/documents.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js
new file mode 100644
index 0000000..a57920e
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js
@@ -0,0 +1,9 @@
+export const EXTENSIONS = new Set([
+ 'eot',
+ 'otf',
+ 'sfnt',
+ 'ttf',
+ 'woff',
+ 'woff2',
+]);
+//# sourceMappingURL=fonts.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js.map
new file mode 100644
index 0000000..4189836
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/fonts.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../../src/extensions/fonts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;CACR,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js
new file mode 100644
index 0000000..c93ae4c
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js
@@ -0,0 +1,32 @@
+export const EXTENSIONS = new Set([
+ 'apng',
+ 'bmp',
+ 'cur',
+ 'dib',
+ 'eps',
+ 'gif',
+ 'heic',
+ 'heif',
+ 'ico',
+ 'j2k',
+ 'jfi',
+ 'jfif',
+ 'jif',
+ 'jp2',
+ 'jpe',
+ 'jpeg',
+ 'jpf',
+ 'jpg',
+ 'jpm',
+ 'jpx',
+ 'mj2',
+ 'pjp',
+ 'pjpeg',
+ 'png',
+ 'svg',
+ 'svgz',
+ 'tif',
+ 'tiff',
+ 'webp',
+]);
+//# sourceMappingURL=images.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js.map
new file mode 100644
index 0000000..3cb9d0a
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/images.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"images.js","sourceRoot":"","sources":["../../../../src/extensions/images.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;CACP,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js
new file mode 100644
index 0000000..0d71846
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js
@@ -0,0 +1,12 @@
+export const EXTENSIONS = new Set([
+ 'avi',
+ 'flv',
+ 'mp3',
+ 'mp4',
+ 'ogg',
+ 'wav',
+ 'weba',
+ 'webm',
+ 'wmv',
+]);
+//# sourceMappingURL=medias.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js.map
new file mode 100644
index 0000000..bdebfdd
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/medias.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"medias.js","sourceRoot":"","sources":["../../../../src/extensions/medias.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js
new file mode 100644
index 0000000..a1dfd06
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js
@@ -0,0 +1,2 @@
+export const EXTENSIONS = new Set(['js', 'ts', 'jsx', 'esm']);
+//# sourceMappingURL=scripts.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js.map
new file mode 100644
index 0000000..8bcbfab
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/scripts.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/extensions/scripts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js
new file mode 100644
index 0000000..bd129fe
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js
@@ -0,0 +1,2 @@
+export const EXTENSIONS = new Set(['css', 'scss']);
+//# sourceMappingURL=stylesheets.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js.map
new file mode 100644
index 0000000..5687fbe
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extensions/stylesheets.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stylesheets.js","sourceRoot":"","sources":["../../../../src/extensions/stylesheets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js
new file mode 100644
index 0000000..3f651e2
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js
@@ -0,0 +1,27 @@
+export function extname(url) {
+ let endOfPath = url.length;
+ // Check for fragment
+ const indexOfFragment = url.indexOf('#');
+ if (indexOfFragment !== -1) {
+ endOfPath = indexOfFragment;
+ }
+ const indexOfQuery = url.indexOf('?');
+ if (indexOfQuery !== -1 && indexOfQuery < endOfPath) {
+ endOfPath = indexOfQuery;
+ }
+ let startOfExt = endOfPath - 1;
+ let code = 0;
+ for (; startOfExt >= 0; startOfExt -= 1) {
+ code = url.charCodeAt(startOfExt);
+ if (((code >= 65 && code <= 90) ||
+ (code >= 97 && code <= 122) ||
+ (code >= 48 && code <= 57)) === false) {
+ break;
+ }
+ }
+ if (code !== 46 || startOfExt < 0 || endOfPath - startOfExt >= 10) {
+ return '';
+ }
+ return url.slice(startOfExt + 1, endOfPath);
+}
+//# sourceMappingURL=extname.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js.map
new file mode 100644
index 0000000..8d89c0c
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/src/extname.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extname.js","sourceRoot":"","sources":["../../../src/extname.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;IAE3B,qBAAqB;IACrB,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;QAC1B,SAAS,GAAG,eAAe,CAAC;KAC7B;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,SAAS,EAAE;QACnD,SAAS,GAAG,YAAY,CAAC;KAC1B;IAED,IAAI,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,UAAU,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE;QACvC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClC,IACE,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC;YAC3B,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,KAAK,EACvC;YACA,MAAM;SACP;KACF;IAED,IAAI,IAAI,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,UAAU,IAAI,EAAE,EAAE;QACjE,OAAO,EAAE,CAAC;KACX;IAED,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js b/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js
new file mode 100644
index 0000000..25c0d29
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js
@@ -0,0 +1,97 @@
+import { expect } from 'chai';
+import 'mocha';
+import { EXTENSIONS as DOCUMENT_EXTENSIONS } from '../src/extensions/documents';
+import { EXTENSIONS as FONT_EXTENSIONS } from '../src/extensions/fonts';
+import { EXTENSIONS as IMAGE_EXTENSIONS } from '../src/extensions/images';
+import { EXTENSIONS as MEDIA_EXTENSIONS } from '../src/extensions/medias';
+import { EXTENSIONS as SCRIPT_EXTENSIONS } from '../src/extensions/scripts';
+import { EXTENSIONS as STYLE_EXTENSIONS } from '../src/extensions/stylesheets';
+import { extname } from '../src/extname';
+import guessRequestType from '../index';
+describe('@remusao/guess-url-type', () => {
+ describe('#extname', () => {
+ it('returns empty string if no extension', () => {
+ expect(extname('https://example.com/foo')).to.equal('');
+ });
+ it('returns simple extension', () => {
+ expect(extname('https://example.com/foo.js')).to.equal('js');
+ });
+ it('ignores fragment', () => {
+ expect(extname('https://example.com/foo.js#fragment')).to.equal('js');
+ });
+ it('ignores query', () => {
+ expect(extname('https://example.com/foo.js?query')).to.equal('js');
+ });
+ it('ignores query and fragment', () => {
+ expect(extname('https://example.com/foo.js?query#fragment')).to.equal('js');
+ });
+ it('ignores too long extension', () => {
+ expect(extname('https://example.com/foo.aaaaaaaaaaa')).to.equal('');
+ });
+ });
+ for (const [type, extensions] of [
+ ['document', DOCUMENT_EXTENSIONS],
+ ['font', FONT_EXTENSIONS],
+ ['image', IMAGE_EXTENSIONS],
+ ['media', MEDIA_EXTENSIONS],
+ ['script', SCRIPT_EXTENSIONS],
+ ['stylesheet', STYLE_EXTENSIONS],
+ ]) {
+ describe(`detects ${type} based on extension`, () => {
+ for (const ext of extensions) {
+ it(`${ext}`, () => {
+ expect(guessRequestType(`https://example.com/file.${ext}`)).to.equal(type);
+ expect(guessRequestType(`https://example.com/file.${ext}?query=42`)).to.equal(type);
+ expect(guessRequestType(`https://example.com/file.${ext}?query=42#fragment`)).to.equal(type);
+ });
+ }
+ });
+ }
+ describe('falls-back to other', () => {
+ it('when extension is unknown', () => {
+ expect(guessRequestType('https://example.com/file.unknown')).to.equal('other');
+ });
+ it('when there is no extension', () => {
+ expect(guessRequestType('https://example.com/file')).to.equal('other');
+ });
+ });
+ describe('data:', () => {
+ for (const [type, mime] of [
+ ['document', 'application/xhtml'],
+ ['document', 'application/xhtml+xml'],
+ ['document', 'text/html'],
+ ['font', 'font/woff'],
+ ['image', 'image/png'],
+ ['media', 'audio/mpeg'],
+ ['media', 'audio/vorbis'],
+ ['media', 'video/mp4'],
+ ['other', 'application/octet-stream'],
+ ['other', 'application/pdf'],
+ ['other', 'model/vml'],
+ ['other', 'text/plain'],
+ ['script', 'application/ecmascript'],
+ ['script', 'application/javascript'],
+ ['script', 'application/x-ecmascript'],
+ ['script', 'application/x-javascript'],
+ ['script', 'text/ecmascript'],
+ ['script', 'text/javascript'],
+ ['script', 'text/javascript1.0'],
+ ['script', 'text/javascript1.1'],
+ ['script', 'text/javascript1.2'],
+ ['script', 'text/javascript1.3'],
+ ['script', 'text/javascript1.4'],
+ ['script', 'text/javascript1.5'],
+ ['script', 'text/jscript'],
+ ['script', 'text/livescript'],
+ ['script', 'text/x-ecmascript'],
+ ['script', 'text/x-javascript'],
+ ['stylesheet', 'text/css'],
+ ]) {
+ it(`detect ${type} for MIME ${mime}`, () => {
+ expect(guessRequestType(`data:${mime},foo`)).to.equal(type);
+ expect(guessRequestType(`data:${mime};base64,foo`)).to.equal(type);
+ });
+ }
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js.map b/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js.map
new file mode 100644
index 0000000..3245a7a
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/test/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../test/index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/guess-url-type/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..7393dab
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,1045 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/documents.ts": {
+ "version": "475cf31e2956bfa6f6aa2e083461edf59070a8ec1158c861c8d79f9f2d589719",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/fonts.ts": {
+ "version": "68854df3bf1d05116600bd896881398ada544aca66dcf8ba80b4439c9329b0f3",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/images.ts": {
+ "version": "40d4ef9777ff5be72aae1acd6045495fc1613687ccf38a637ae673bf06c5e8e6",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/medias.ts": {
+ "version": "b6943003514fdda1dd1b0412c00a95596891a0d928bc59b87a2852c773463912",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/scripts.ts": {
+ "version": "d25e7f77f607842cb5f4e5c4975078e08b1819af90ec1e2f14c43ac4ebfc913f",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extensions/stylesheets.ts": {
+ "version": "729f9c8f18f628aed3d64546be2162e5b50bb76a7ec33002f866de0819b3e69a",
+ "signature": "775bbad42113dc962ed35d9773771923e6103841ee33c8faedbdcf26d1814f91",
+ "affectsGlobalScope": false
+ },
+ "../../src/extname.ts": {
+ "version": "fb13c850df412849c6ea2e2a4dbb1ad820e93402260d7c263dc0adceec25c621",
+ "signature": "52ec58f1345a0356462ab9c395fefc51ea1f43d628217995378f5b9fb10c60a1",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "7a4dc0536a01df1d156f49d9c46f51add11a1f0efd2cc4dd814281124ac4378c",
+ "signature": "5e1e3ff19ef45a1293ee30151e64d4abf8f6fdb0a2461ab80a7022ae093805ec",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../test/index.test.ts": {
+ "version": "c2c0d3ef1b7535f95894e9d8efbc4cac2dca8942e672aff729dd277f4e4f3b3d",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts"
+ ],
+ "../../test/index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts",
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../test/index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.ts",
+ "../../src/extensions/documents.ts",
+ "../../src/extensions/fonts.ts",
+ "../../src/extensions/images.ts",
+ "../../src/extensions/medias.ts",
+ "../../src/extensions/scripts.ts",
+ "../../src/extensions/stylesheets.ts",
+ "../../src/extname.ts",
+ "../../test/index.test.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts
new file mode 100644
index 0000000..1f21aa3
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts
@@ -0,0 +1,3 @@
+export declare type RequestType = 'stylesheet' | 'font' | 'document' | 'image' | 'media' | 'other' | 'script';
+export default function getRequestType(url: string): RequestType;
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts.map
new file mode 100644
index 0000000..417553c
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AASA,oBAAY,WAAW,GACnB,YAAY,GACZ,MAAM,GACN,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAqE/D"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts
new file mode 100644
index 0000000..4c24e0f
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=documents.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts.map
new file mode 100644
index 0000000..e6d4c3c
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/documents.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../src/extensions/documents.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAAoC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts
new file mode 100644
index 0000000..955de91
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=fonts.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts.map
new file mode 100644
index 0000000..13a89f2
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/fonts.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../../../src/extensions/fonts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAOrB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts
new file mode 100644
index 0000000..ea500d5
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=images.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts.map
new file mode 100644
index 0000000..48c86ab
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/images.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../../src/extensions/images.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aA8BrB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts
new file mode 100644
index 0000000..b86c9bf
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=medias.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts.map
new file mode 100644
index 0000000..b19b768
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/medias.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"medias.d.ts","sourceRoot":"","sources":["../../../../src/extensions/medias.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAUrB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts
new file mode 100644
index 0000000..c69ee29
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=scripts.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts.map
new file mode 100644
index 0000000..5ec0c6b
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/scripts.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../../../src/extensions/scripts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAAsC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts
new file mode 100644
index 0000000..01d43f5
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts
@@ -0,0 +1,2 @@
+export declare const EXTENSIONS: Set<string>;
+//# sourceMappingURL=stylesheets.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts.map
new file mode 100644
index 0000000..1040122
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extensions/stylesheets.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"stylesheets.d.ts","sourceRoot":"","sources":["../../../../src/extensions/stylesheets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAA2B,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts
new file mode 100644
index 0000000..89cb254
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts
@@ -0,0 +1,2 @@
+export declare function extname(url: string): string;
+//# sourceMappingURL=extname.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts.map
new file mode 100644
index 0000000..073d180
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/src/extname.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"extname.d.ts","sourceRoot":"","sources":["../../../src/extname.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgC3C"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts b/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts.map b/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts.map
new file mode 100644
index 0000000..12f0b15
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/dist/types/test/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../test/index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/guess-url-type/package.json b/client/node_modules/@remusao/guess-url-type/package.json
new file mode 100644
index 0000000..cef9b7c
--- /dev/null
+++ b/client/node_modules/@remusao/guess-url-type/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@remusao/guess-url-type",
+ "version": "1.2.1",
+ "description": "Guess type of resource based on its URL",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/guess-url-type"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha --config ../../.mocharc.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "ts-node": "^9.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@remusao/small/CHANGELOG.md b/client/node_modules/@remusao/small/CHANGELOG.md
new file mode 100644
index 0000000..5d5c18b
--- /dev/null
+++ b/client/node_modules/@remusao/small/CHANGELOG.md
@@ -0,0 +1,58 @@
+# v1.2.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.2.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.1.2 (Mon Apr 06 2020)
+
+#### :nail_care: Polish
+
+- Add more aliases and plain txt mime [#111](https://github.com/remusao/mono/pull/111) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.1.1 (Mon Apr 06 2020)
+
+#### :nail_care: Polish
+
+- Remove avi resources as it is too big [#108](https://github.com/remusao/mono/pull/108) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.1.0 (Fri Apr 03 2020)
+
+#### :rocket: New Feature
+
+- Add 'small' package [#99](https://github.com/remusao/mono/pull/99) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/LICENSE b/client/node_modules/@remusao/small/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/small/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/small/README.md b/client/node_modules/@remusao/small/README.md
new file mode 100644
index 0000000..4203339
--- /dev/null
+++ b/client/node_modules/@remusao/small/README.md
@@ -0,0 +1,21 @@
+# `@remusao/small`
+
+> Return smallest valid content of different types
+
+Based on the work from: https://github.com/mathiasbynens/small/
+
+## Usage
+
+```javascript
+const { getResourceForMime, getDataUrlForMime } = require('@remusao/small');
+
+console.log(getResourceForMime('mp3'));
+// {
+// contentType: 'audio/mpeg;base64',
+// aliases: [ 'audio/mpeg', '.mp3', 'mp3' ],
+// body: '/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
+// }
+
+console.log(getDataUrlForMime('mp3'));
+// audio/mpeg;base64,/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+```
diff --git a/client/node_modules/@remusao/small/dist/cjs/index.js b/client/node_modules/@remusao/small/dist/cjs/index.js
new file mode 100644
index 0000000..6aa8436
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/index.js
@@ -0,0 +1,167 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.wmv = exports.webp = exports.webm = exports.wav = exports.txt = exports.svg = exports.png = exports.pdf = exports.mp4 = exports.mp3 = exports.json = exports.js = exports.jpg = exports.ico = exports.html = exports.gif = exports.flv = exports.getDataUrlForMime = exports.getResourceForMime = exports.hasResourceForMime = exports.getFallbackBlobResource = exports.getFallbackTextResource = void 0;
+const flv_1 = __importDefault(require("./src/flv"));
+exports.flv = flv_1.default;
+const gif_1 = __importDefault(require("./src/gif"));
+exports.gif = gif_1.default;
+const html_1 = __importDefault(require("./src/html"));
+exports.html = html_1.default;
+const ico_1 = __importDefault(require("./src/ico"));
+exports.ico = ico_1.default;
+const jpeg_1 = __importDefault(require("./src/jpeg"));
+exports.jpg = jpeg_1.default;
+const javascript_1 = __importDefault(require("./src/javascript"));
+exports.js = javascript_1.default;
+const json_1 = __importDefault(require("./src/json"));
+exports.json = json_1.default;
+const mp3_1 = __importDefault(require("./src/mp3"));
+exports.mp3 = mp3_1.default;
+const mp4_1 = __importDefault(require("./src/mp4"));
+exports.mp4 = mp4_1.default;
+const pdf_1 = __importDefault(require("./src/pdf"));
+exports.pdf = pdf_1.default;
+const png_1 = __importDefault(require("./src/png"));
+exports.png = png_1.default;
+const svg_1 = __importDefault(require("./src/svg"));
+exports.svg = svg_1.default;
+const txt_1 = __importDefault(require("./src/txt"));
+exports.txt = txt_1.default;
+const wav_1 = __importDefault(require("./src/wav"));
+exports.wav = wav_1.default;
+const webm_1 = __importDefault(require("./src/webm"));
+exports.webm = webm_1.default;
+const webp_1 = __importDefault(require("./src/webp"));
+exports.webp = webp_1.default;
+const wmv_1 = __importDefault(require("./src/wmv"));
+exports.wmv = wmv_1.default;
+// List of mime types:
+// - [ ] .aac AAC audio audio/aac
+// - [ ] .abw AbiWord document application/x-abiword
+// - [ ] .arc Archive document (multiple files embedded) application/x-freearc
+// - [ ] .avi AVI: Audio Video Interleave video/x-msvideo
+// - [ ] .azw Amazon Kindle eBook format application/vnd.amazon.ebook
+// - [ ] .bin Any kind of binary data application/octet-stream
+// - [ ] .bmp Windows OS/2 Bitmap Graphics image/bmp
+// - [ ] .bz BZip archive application/x-bzip
+// - [ ] .bz2 BZip2 archive application/x-bzip2
+// - [ ] .csh C-Shell script application/x-csh
+// - [ ] .css Cascading Style Sheets (CSS) text/css
+// - [ ] .csv Comma-separated values (CSV) text/csv
+// - [ ] .doc Microsoft Word application/msword
+// - [ ] .docx Microsoft Word (OpenXML) application/vnd.openxmlformats-officedocument.wordprocessingml.document
+// - [ ] .eot MS Embedded OpenType fonts application/vnd.ms-fontobject
+// - [ ] .epub Electronic publication (EPUB) application/epub+zip
+// - [ ] .gz GZip Compressed Archive application/gzip
+// - [x] .gif Graphics Interchange Format (GIF) image/gif
+// - [x] .htm, .html HyperText Markup Language (HTML) text/html
+// - [x] .ico Icon format image/vnd.microsoft.icon
+// - [ ] .ics iCalendar format text/calendar
+// - [ ] .jar Java Archive (JAR) application/java-archive
+// - [x] .jpeg, .jpg JPEG images image/jpeg
+// - [x] .js JavaScript text/javascript
+// - [x] .json JSON format application/json
+// - [ ] .jsonld JSON-LD format application/ld+json
+// - [ ] .mid
+// - [ ] .midi Musical Instrument Digital Interface (MIDI) audio/midi audio/x-midi
+// - [ ] .mjs JavaScript module text/javascript
+// - [x] .mp3 MP3 audio audio/mpeg
+// - [ ] .mpeg MPEG Video video/mpeg
+// - [ ] .mpkg Apple Installer Package application/vnd.apple.installer+xml
+// - [ ] .odp OpenDocument presentation document application/vnd.oasis.opendocument.presentation
+// - [ ] .ods OpenDocument spreadsheet document application/vnd.oasis.opendocument.spreadsheet
+// - [ ] .odt OpenDocument text document application/vnd.oasis.opendocument.text
+// - [ ] .oga OGG audio audio/ogg
+// - [ ] .ogv OGG video video/ogg
+// - [ ] .ogx OGG application/ogg
+// - [ ] .opus Opus audio audio/opus
+// - [ ] .otf OpenType font font/otf
+// - [x] .png Portable Network Graphics image/png
+// - [x] .pdf Adobe Portable Document Format (PDF) application/pdf
+// - [ ] .php Hypertext Preprocessor (Personal Home Page) application/php
+// - [ ] .ppt Microsoft PowerPoint application/vnd.ms-powerpoint
+// - [ ] .pptx Microsoft PowerPoint (OpenXML) application/vnd.openxmlformats-officedocument.presentationml.presentation
+// - [ ] .rar RAR archive application/vnd.rar
+// - [ ] .rtf Rich Text Format (RTF) application/rtf
+// - [ ] .sh Bourne shell script application/x-sh
+// - [x] .svg Scalable Vector Graphics (SVG) image/svg+xml
+// - [ ] .swf Small web format (SWF) or Adobe Flash document application/x-shockwave-flash
+// - [ ] .tar Tape Archive (TAR) application/x-tar
+// - [ ] .tif
+// - [ ] .tiff Tagged Image File Format (TIFF) image/tiff
+// - [ ] .ts MPEG transport stream video/mp2t
+// - [ ] .ttf TrueType Font font/ttf
+// - [ ] .txt Text, (generally ASCII or ISO 8859-n) text/plain
+// - [ ] .vsd Microsoft Visio application/vnd.visio
+// - [x] .wav Waveform Audio Format audio/wav
+// - [ ] .weba WEBM audio audio/webm
+// - [x] .webm WEBM video video/webm
+// - [x] .webp WEBP image image/webp
+// - [ ] .woff Web Open Font Format (WOFF) font/woff
+// - [ ] .woff2 Web Open Font Format (WOFF) font/woff2
+// - [ ] .xhtml XHTML application/xhtml+xml
+// - [ ] .xls Microsoft Excel application/vnd.ms-excel
+// - [ ] .xlsx Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+// - [ ] .xml XML application/xml if not readable from casual users (RFC 3023, section 3)
+// - [ ] text/xml if readable from casual users (RFC 3023, section 3)
+// - [ ] .xul XUL application/vnd.mozilla.xul+xml
+// - [ ] .zip ZIP archive application/zip
+// - [ ] .3gp 3GPP audio/video container video/3gpp, audio/3gpp if it doesn't contain video
+// - [ ] .3g2 3GPP2 audio/video container video/3gpp2, audio/3gpp2 if it doesn't contain video
+// - [ ] .7z 7-zip archive application/x-7z-compressed
+const MIME_TO_RESOURCE = (() => {
+ const resources = {};
+ for (const fake of [
+ flv_1.default,
+ gif_1.default,
+ html_1.default,
+ ico_1.default,
+ jpeg_1.default,
+ javascript_1.default,
+ json_1.default,
+ mp3_1.default,
+ mp4_1.default,
+ pdf_1.default,
+ png_1.default,
+ svg_1.default,
+ txt_1.default,
+ wav_1.default,
+ webm_1.default,
+ webp_1.default,
+ wmv_1.default,
+ ]) {
+ for (const alias of fake.aliases) {
+ resources[alias] = fake;
+ }
+ }
+ return resources;
+})();
+function getFallbackTextResource() {
+ return txt_1.default;
+}
+exports.getFallbackTextResource = getFallbackTextResource;
+function getFallbackBlobResource() {
+ return {
+ contentType: 'application/octet-stream;base64',
+ aliases: ['application/octet-stream'],
+ body: 'Cg==',
+ };
+}
+exports.getFallbackBlobResource = getFallbackBlobResource;
+function hasResourceForMime(mime) {
+ return MIME_TO_RESOURCE[mime] !== undefined;
+}
+exports.hasResourceForMime = hasResourceForMime;
+function getResourceForMime(mime) {
+ return MIME_TO_RESOURCE[mime] || getFallbackTextResource();
+}
+exports.getResourceForMime = getResourceForMime;
+function getDataUrlForMime(mime) {
+ const { contentType, body } = getResourceForMime(mime);
+ return `data:${contentType},${body}`;
+}
+exports.getDataUrlForMime = getDataUrlForMime;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/index.js.map b/client/node_modules/@remusao/small/dist/cjs/index.js.map
new file mode 100644
index 0000000..a06742d
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/index.test.js b/client/node_modules/@remusao/small/dist/cjs/index.test.js
new file mode 100644
index 0000000..4386b2d
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/index.test.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+// import { expect } from 'chai';
+require("mocha");
+// import { compress, decompress, getCompressedSize } from './index';
+describe('@remusao/small', () => {
+ // TODO
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/index.test.js.map b/client/node_modules/@remusao/small/dist/cjs/index.test.js.map
new file mode 100644
index 0000000..9e22c80
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AACjC,iBAAe;AAEf,qEAAqE;AAErE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,OAAO;AACT,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/flv.js b/client/node_modules/@remusao/small/dist/cjs/src/flv.js
new file mode 100644
index 0000000..85faadf
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/flv.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'video/flv';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.flv',
+ 'flv',
+ ],
+ body: 'RkxWAQEAAAAJAAAAABIAALgAAAAAAAAAAgAKb25NZXRhRGF0YQgAAAAIAAhkdXJhdGlvbgAAAAAAAAAAAAAFd2lkdGgAP/AAAAAAAAAABmhlaWdodAA/8AAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAaGoAAAAAAAAJZnJhbWVyYXRlAEBZAAAAAAAAAAx2aWRlb2NvZGVjaWQAQAAAAAAAAAAAB2VuY29kZXICAA1MYXZmNTcuNDEuMTAwAAhmaWxlc2l6ZQBAaoAAAAAAAAAACQAAAMM=',
+};
+//# sourceMappingURL=flv.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/flv.js.map b/client/node_modules/@remusao/small/dist/cjs/src/flv.js.map
new file mode 100644
index 0000000..5051ec8
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/flv.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"flv.js","sourceRoot":"","sources":["../../../src/flv.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8RAA8R;CACrS,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/gif.js b/client/node_modules/@remusao/small/dist/cjs/src/gif.js
new file mode 100644
index 0000000..d7f4423
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/gif.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/gif';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.gif',
+ 'gif',
+ ],
+ body: 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
+};
+//# sourceMappingURL=gif.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/gif.js.map b/client/node_modules/@remusao/small/dist/cjs/src/gif.js.map
new file mode 100644
index 0000000..041e580
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/gif.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"gif.js","sourceRoot":"","sources":["../../../src/gif.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,0DAA0D;CACjE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/html.js b/client/node_modules/@remusao/small/dist/cjs/src/html.js
new file mode 100644
index 0000000..acab963
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/html.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'text/html';
+exports.default = {
+ contentType: exports.CONTENT_TYPE,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.html',
+ 'html',
+ '.htm',
+ 'htm',
+ 'noopframe',
+ 'noop.html',
+ ],
+ body: '<!DOCTYPE html>',
+};
+//# sourceMappingURL=html.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/html.js.map b/client/node_modules/@remusao/small/dist/cjs/src/html.js.map
new file mode 100644
index 0000000..abffd13
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/html.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/html.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,oBAAY;IACzB,OAAO,EAAE;QACP,oBAAY;QACZ,OAAO;QACP,MAAM;QACN,MAAM;QACN,KAAK;QACL,WAAW;QACX,WAAW;KACZ;IACD,IAAI,EAAE,iBAAiB;CACxB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/ico.js b/client/node_modules/@remusao/small/dist/cjs/src/ico.js
new file mode 100644
index 0000000..c5c94c2
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/ico.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/vnd.microsoft.icon';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.ico',
+ 'ico',
+ ],
+ body: 'AAABAAEAAQEAAAEAGAAwAAAAFgAAACgAAAABAAAAAgAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAA==',
+};
+//# sourceMappingURL=ico.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/ico.js.map b/client/node_modules/@remusao/small/dist/cjs/src/ico.js.map
new file mode 100644
index 0000000..8897bad
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/ico.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ico.js","sourceRoot":"","sources":["../../../src/ico.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAEvD,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,kGAAkG;CACzG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/javascript.js b/client/node_modules/@remusao/small/dist/cjs/src/javascript.js
new file mode 100644
index 0000000..261127f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/javascript.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'application/javascript';
+exports.default = {
+ contentType: exports.CONTENT_TYPE,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.js',
+ 'js',
+ 'javascript',
+ '.jsx',
+ 'jsx',
+ 'typescript',
+ '.ts',
+ 'ts',
+ 'noop.js',
+ 'noopjs',
+ ],
+ body: '',
+};
+//# sourceMappingURL=javascript.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/javascript.js.map b/client/node_modules/@remusao/small/dist/cjs/src/javascript.js.map
new file mode 100644
index 0000000..420ad1b
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/javascript.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/javascript.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,wBAAwB,CAAC;AAErD,kBAAe;IACb,WAAW,EAAE,oBAAY;IACzB,OAAO,EAAE;QACP,oBAAY;QACZ,KAAK;QACL,IAAI;QACJ,YAAY;QACZ,MAAM;QACN,KAAK;QACL,YAAY;QACZ,KAAK;QACL,IAAI;QACJ,SAAS;QACT,QAAQ;KACT;IACD,IAAI,EAAE,EAAE;CACT,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js b/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js
new file mode 100644
index 0000000..5089741
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/jpeg';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.jpg',
+ 'jpg',
+ '.jpeg',
+ 'jpeg',
+ ],
+ body: '/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k=',
+};
+//# sourceMappingURL=jpeg.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js.map b/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js.map
new file mode 100644
index 0000000..9fbc435
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/jpeg.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"jpeg.js","sourceRoot":"","sources":["../../../src/jpeg.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;QACL,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,kJAAkJ;CACzJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/json.js b/client/node_modules/@remusao/small/dist/cjs/src/json.js
new file mode 100644
index 0000000..f8600c1
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/json.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'application/json';
+exports.default = {
+ contentType: exports.CONTENT_TYPE,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.json',
+ 'json',
+ ],
+ body: '0',
+};
+//# sourceMappingURL=json.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/json.js.map b/client/node_modules/@remusao/small/dist/cjs/src/json.js.map
new file mode 100644
index 0000000..a9cf7c1
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/json.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/json.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,kBAAkB,CAAC;AAE/C,kBAAe;IACb,WAAW,EAAE,oBAAY;IACzB,OAAO,EAAE;QACP,oBAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,GAAG;CACV,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/mp3.js b/client/node_modules/@remusao/small/dist/cjs/src/mp3.js
new file mode 100644
index 0000000..7e53721
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/mp3.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'audio/mpeg';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.mp3',
+ 'mp3',
+ 'noop-0.1s.mp3',
+ 'noopmp3-0.1s',
+ ],
+ body: '/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
+};
+//# sourceMappingURL=mp3.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/mp3.js.map b/client/node_modules/@remusao/small/dist/cjs/src/mp3.js.map
new file mode 100644
index 0000000..edf8518
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/mp3.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp3.js","sourceRoot":"","sources":["../../../src/mp3.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;QACL,eAAe;QACf,cAAc;KACf;IACD,IAAI,EAAE,kGAAkG;CACzG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/mp4.js b/client/node_modules/@remusao/small/dist/cjs/src/mp4.js
new file mode 100644
index 0000000..b1dd26a
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/mp4.js
@@ -0,0 +1,25 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const CONTENT_TYPE = 'video/mp4';
+exports.default = {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.mp4',
+ 'mp4',
+ '.m4a',
+ 'm4a',
+ '.m4p',
+ 'm4p',
+ '.m4b',
+ 'm4b',
+ '.m4r',
+ 'm4r',
+ '.m4v',
+ 'm4v',
+ 'noop-1s.mp4',
+ 'noopmp4-1s',
+ ],
+ body: 'AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE=',
+};
+//# sourceMappingURL=mp4.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/mp4.js.map b/client/node_modules/@remusao/small/dist/cjs/src/mp4.js.map
new file mode 100644
index 0000000..60686ee
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/mp4.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp4.js","sourceRoot":"","sources":["../../../src/mp4.ts"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,WAAW,CAAC;AAGjC,kBAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,aAAa;QACb,YAAY;KACb;IACD,IAAI,EAAE,08DAA08D;CACj9D,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/pdf.js b/client/node_modules/@remusao/small/dist/cjs/src/pdf.js
new file mode 100644
index 0000000..5b38f6e
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/pdf.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'application/pdf';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.pdf',
+ 'pdf',
+ ],
+ body: 'JVBERi0xLgoxIDAgb2JqPDwvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqPDwvS2lkc1szIDAgUl0vQ291bnQgMT4+ZW5kb2JqCjMgMCBvYmo8PC9QYXJlbnQgMiAwIFI+PmVuZG9iagp0cmFpbGVyIDw8L1Jvb3QgMSAwIFI+Pg==',
+};
+//# sourceMappingURL=pdf.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/pdf.js.map b/client/node_modules/@remusao/small/dist/cjs/src/pdf.js.map
new file mode 100644
index 0000000..3888045
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/pdf.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/pdf.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,iBAAiB,CAAC;AAE9C,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,kLAAkL;CACzL,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/png.js b/client/node_modules/@remusao/small/dist/cjs/src/png.js
new file mode 100644
index 0000000..3dbd9cc
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/png.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/png';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.png',
+ 'png',
+ ],
+ body: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==',
+};
+//# sourceMappingURL=png.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/png.js.map b/client/node_modules/@remusao/small/dist/cjs/src/png.js.map
new file mode 100644
index 0000000..07bb5f7
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/png.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"png.js","sourceRoot":"","sources":["../../../src/png.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8FAA8F;CACrG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/svg.js b/client/node_modules/@remusao/small/dist/cjs/src/svg.js
new file mode 100644
index 0000000..83d71da
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/svg.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/svg+xml';
+exports.default = {
+ contentType: exports.CONTENT_TYPE,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.svg',
+ 'svg',
+ ],
+ body: 'https://raw.githubusercontent.com/mathiasbynens/small/master/svg.svg',
+};
+//# sourceMappingURL=svg.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/svg.js.map b/client/node_modules/@remusao/small/dist/cjs/src/svg.js.map
new file mode 100644
index 0000000..d40aac2
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/svg.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/svg.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C,kBAAe;IACb,WAAW,EAAE,oBAAY;IACzB,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,sEAAsE;CAC7E,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/txt.js b/client/node_modules/@remusao/small/dist/cjs/src/txt.js
new file mode 100644
index 0000000..caa53cf
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/txt.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'text/plain';
+exports.default = {
+ contentType: exports.CONTENT_TYPE,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.txt',
+ 'txt',
+ 'text',
+ 'nooptext',
+ 'noop.txt',
+ ],
+ body: '',
+};
+//# sourceMappingURL=txt.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/txt.js.map b/client/node_modules/@remusao/small/dist/cjs/src/txt.js.map
new file mode 100644
index 0000000..d595e0f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/txt.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"txt.js","sourceRoot":"","sources":["../../../src/txt.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,kBAAe;IACb,WAAW,EAAE,oBAAY;IACzB,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;QACL,MAAM;QACN,UAAU;QACV,UAAU;KACX;IACD,IAAI,EAAE,EAAE;CACT,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/wav.js b/client/node_modules/@remusao/small/dist/cjs/src/wav.js
new file mode 100644
index 0000000..d44af7a
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/wav.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'audio/wav';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.wav',
+ 'wav',
+ ],
+ body: 'UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=',
+};
+//# sourceMappingURL=wav.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/wav.js.map b/client/node_modules/@remusao/small/dist/cjs/src/wav.js.map
new file mode 100644
index 0000000..0534429
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/wav.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"wav.js","sourceRoot":"","sources":["../../../src/wav.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8DAA8D;CACrE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/webm.js b/client/node_modules/@remusao/small/dist/cjs/src/webm.js
new file mode 100644
index 0000000..22423d9
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/webm.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'video/webm';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.webm',
+ 'webm',
+ ],
+ body: 'GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=',
+};
+//# sourceMappingURL=webm.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/webm.js.map b/client/node_modules/@remusao/small/dist/cjs/src/webm.js.map
new file mode 100644
index 0000000..3669f9c
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/webm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"webm.js","sourceRoot":"","sources":["../../../src/webm.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,0PAA0P;CACjQ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/webp.js b/client/node_modules/@remusao/small/dist/cjs/src/webp.js
new file mode 100644
index 0000000..2b59f71
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/webp.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'image/webp';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.webp',
+ 'webp',
+ ],
+ body: 'UklGRhIAAABXRUJQVlA4TAYAAAAvQWxvAGs=',
+};
+//# sourceMappingURL=webp.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/webp.js.map b/client/node_modules/@remusao/small/dist/cjs/src/webp.js.map
new file mode 100644
index 0000000..10cc5c4
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/webp.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"webp.js","sourceRoot":"","sources":["../../../src/webp.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,sCAAsC;CAC7C,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/wmv.js b/client/node_modules/@remusao/small/dist/cjs/src/wmv.js
new file mode 100644
index 0000000..e9dbae3
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/wmv.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CONTENT_TYPE = void 0;
+exports.CONTENT_TYPE = 'video/wmv';
+exports.default = {
+ contentType: `${exports.CONTENT_TYPE};base64`,
+ aliases: [
+ exports.CONTENT_TYPE,
+ '.wmv',
+ 'wmv',
+ ],
+ body: 'MCaydY5mzxGm2QCqAGLObOUBAAAAAAAABQAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcCAAAAAAAAAIA+1d6xnQEAAAAAAAAAAMAF2QEAAAAAAAAAAAAAAAAcDAAAAAAAAAIAAACADAAAgAwAAEANAwC1A79fLqnPEY7jAMAMIFNlLgAAAAAAAAAR0tOruqnPEY7mAMAMIFNlBgAAAAAAQKTQ0gfj0hGX8ACgyV6oUGQAAAAAAAAAAQAoAFcATQAvAEUAbgBjAG8AZABpAG4AZwBTAGUAdAB0AGkAbgBnAHMAAAAAABwATABhAHYAZgA1ADcALgA0ADEALgAxADAAMAAAAJEH3Le3qc8RjuYAwAwgU2WBAAAAAAAAAMDvGbxNW88RqP0AgF9cRCsAV/sgVVvPEaj9AIBfXEQrAAAAAAAAAAAzAAAAAAAAAAEAAAAAAAEAAAABAAAAAigAKAAAAAEAAAABAAAAAQAYAE1QNDMDAAAAAAAAAAAAAAAAAAAAAAAAAEBS0YYdMdARo6QAoMkDSPZMAAAAAAAAAEFS0YYdMdARo6QAoMkDSPYBAAAAAQAKAG0AcwBtAHAAZQBnADQAdgAzAAAAAAAEAE1QNDM2JrJ1jmbPEabZAKoAYs5sMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ==',
+};
+//# sourceMappingURL=wmv.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/src/wmv.js.map b/client/node_modules/@remusao/small/dist/cjs/src/wmv.js.map
new file mode 100644
index 0000000..6bdc1d7
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/src/wmv.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"wmv.js","sourceRoot":"","sources":["../../../src/wmv.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,WAAW,CAAC;AAExC,kBAAe;IACb,WAAW,EAAE,GAAG,oBAAY,SAAS;IACrC,OAAO,EAAE;QACP,oBAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8sBAA8sB;CACrtB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/small/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..3f11854
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,1124 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../src/flv.ts": {
+ "version": "ed2058ef502905cf18d044a908f16e9eac2401a2190ea2fc842e70a5003eaa51",
+ "signature": "e5a5407ec819db20c47018a83ca3ae5d52049cd58fd1bb1d35f8f7a5454d0e3f",
+ "affectsGlobalScope": false
+ },
+ "../../src/gif.ts": {
+ "version": "0e5d6daff4301940d4b1e57bf359b86b0dc6c5560b1cc539dfe41816608ba665",
+ "signature": "4db685b7bf9843f5dbda4795db27d89aa217f12a48cd868fc4ab0beaa3ede186",
+ "affectsGlobalScope": false
+ },
+ "../../src/html.ts": {
+ "version": "50e32be47535acd7a75ab06cd24d6d633127347c6c25d58ca8b11d91293753e1",
+ "signature": "271238f0f5ce62e3f70bceca6e3db396c8916476b884be626c581246bbed62f0",
+ "affectsGlobalScope": false
+ },
+ "../../src/ico.ts": {
+ "version": "c087cc1ca50e6b67546d3cc2c4b329072544d7e7a03435ffdc1395dc871575b2",
+ "signature": "2a3bb004ccea0a5e9041a9bced0170d622e09c1dbf4cf7cff7f9f8a983067fce",
+ "affectsGlobalScope": false
+ },
+ "../../src/jpeg.ts": {
+ "version": "35d0e3e7849221c99d9d96ca9b03154fdbddc65a042467585ae74e92c36fe014",
+ "signature": "9f355accafc616ab046816f33ff7292998020e9d6376910c44488d0becd4f671",
+ "affectsGlobalScope": false
+ },
+ "../../src/javascript.ts": {
+ "version": "05e0159c227689bcaa0daa873d80ae7be8cb1727941dc995ed111f8df9faea2d",
+ "signature": "610413da3cdc3268205aa978c9abc55c4b8e677f73ade3c869d45e0d6d2c43f0",
+ "affectsGlobalScope": false
+ },
+ "../../src/json.ts": {
+ "version": "9500ef280217ba8240d1289f2b3e08e9fe42b1cd187aea04af2b5554f9bc2b60",
+ "signature": "5320b2c3042c36e5081cb889b8ef576ee5e8499a3b6f6276405d727e82ebd5ef",
+ "affectsGlobalScope": false
+ },
+ "../../src/mp3.ts": {
+ "version": "e91f64ecff39b6b58b2d60aae64e062865d9ccdea899e2e8173351095dcc32bd",
+ "signature": "de8ebc09aaeaecb9f80a3cbc71588b53f096f7b04b36837938b02c5f6f00af7f",
+ "affectsGlobalScope": false
+ },
+ "../../src/mp4.ts": {
+ "version": "1c1564df0ec89cb23a2fbcc436f16ae4fb86ff7bd48a06831210a11c60027a98",
+ "signature": "7f3d548ece449e7939b810b7e51a8a9fc7bc2a1df84a49b4ee9e1d76cac8e67d",
+ "affectsGlobalScope": false
+ },
+ "../../src/pdf.ts": {
+ "version": "d4d6010253c42aefacf1499a0b6be05f6e495553191a5160147ef2e43f380f8c",
+ "signature": "15f1f4cf54364727f0efe8efe7b00f36a5c27885e17fd3c670b448772610f072",
+ "affectsGlobalScope": false
+ },
+ "../../src/png.ts": {
+ "version": "f9f93a8b9d1c9ed3fe49f17ea6b6e0d989a56d07704c73699aca861299661618",
+ "signature": "147b719cb3935d3ace5b2027a9e4b050b204784c800656db646c146f6b324bec",
+ "affectsGlobalScope": false
+ },
+ "../../src/svg.ts": {
+ "version": "419f016dfd19c8c5683b709f0d57101ef06ba936afb5cbaa8bb92c25ad72f3bb",
+ "signature": "7460d47196ef4266c6fdd622f0e3681c1d27f083d19767667b4a76b9e7dd75cd",
+ "affectsGlobalScope": false
+ },
+ "../../src/txt.ts": {
+ "version": "315ba10be4cd35c6526d6205dbe1d37a45d0ea098b37bcdd7a8a01cb16749a74",
+ "signature": "76d23561e67beeb7d04735d2ef4955fa5acfb562ee4cc17c0512e9f45c1e9286",
+ "affectsGlobalScope": false
+ },
+ "../../src/wav.ts": {
+ "version": "ae30606ed65faacb5316832c65f04bf070a18dba1d27134949267d162c3eeed3",
+ "signature": "ada07aeb452de3bd7d3f26523173ddf0cc8978eb7a5cd98b708af1a0e5e913a3",
+ "affectsGlobalScope": false
+ },
+ "../../src/webm.ts": {
+ "version": "7ef77d5831c70b9a88056c94a556da74b2723eac84ae5bc2f07bc2366be9ac55",
+ "signature": "e9b8691637cfcbaf8b4bc7c0af1308d26462235d05c60de521cdd0aecce973fa",
+ "affectsGlobalScope": false
+ },
+ "../../src/webp.ts": {
+ "version": "1f2b0d9545e542fb08aaa8b2b79c90334f6682cf48ab1619f954e335953b547e",
+ "signature": "1bc6526c84a2fb5d498e1aa4f0d9aac88999676c86442141406ad4bf466c2e0f",
+ "affectsGlobalScope": false
+ },
+ "../../src/wmv.ts": {
+ "version": "5cb5477801eee528f8563dba74c5548d6560d169e1c72b4a62e81f10e12faafc",
+ "signature": "ae1130d899eecda46712617655791708268f458f9f82540bdc10d87fb94e911a",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "1bcc43e4db852cffee775a9c352c20ef5c5266517ec1926803a81ef2cc5ee641",
+ "signature": "a453daca4a60ea9854989d83109a0820494ae4e4739204ed98c74a6e9bb1573e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "8fb42be8d4a5c4e6c2de5c084538886944f349fc0acbc108a633fb84cbde5e3a",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts",
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/index.js b/client/node_modules/@remusao/small/dist/es6/index.js
new file mode 100644
index 0000000..af349f4
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/index.js
@@ -0,0 +1,140 @@
+import flv from './src/flv';
+import gif from './src/gif';
+import html from './src/html';
+import ico from './src/ico';
+import jpg from './src/jpeg';
+import js from './src/javascript';
+import json from './src/json';
+import mp3 from './src/mp3';
+import mp4 from './src/mp4';
+import pdf from './src/pdf';
+import png from './src/png';
+import svg from './src/svg';
+import txt from './src/txt';
+import wav from './src/wav';
+import webm from './src/webm';
+import webp from './src/webp';
+import wmv from './src/wmv';
+// List of mime types:
+// - [ ] .aac AAC audio audio/aac
+// - [ ] .abw AbiWord document application/x-abiword
+// - [ ] .arc Archive document (multiple files embedded) application/x-freearc
+// - [ ] .avi AVI: Audio Video Interleave video/x-msvideo
+// - [ ] .azw Amazon Kindle eBook format application/vnd.amazon.ebook
+// - [ ] .bin Any kind of binary data application/octet-stream
+// - [ ] .bmp Windows OS/2 Bitmap Graphics image/bmp
+// - [ ] .bz BZip archive application/x-bzip
+// - [ ] .bz2 BZip2 archive application/x-bzip2
+// - [ ] .csh C-Shell script application/x-csh
+// - [ ] .css Cascading Style Sheets (CSS) text/css
+// - [ ] .csv Comma-separated values (CSV) text/csv
+// - [ ] .doc Microsoft Word application/msword
+// - [ ] .docx Microsoft Word (OpenXML) application/vnd.openxmlformats-officedocument.wordprocessingml.document
+// - [ ] .eot MS Embedded OpenType fonts application/vnd.ms-fontobject
+// - [ ] .epub Electronic publication (EPUB) application/epub+zip
+// - [ ] .gz GZip Compressed Archive application/gzip
+// - [x] .gif Graphics Interchange Format (GIF) image/gif
+// - [x] .htm, .html HyperText Markup Language (HTML) text/html
+// - [x] .ico Icon format image/vnd.microsoft.icon
+// - [ ] .ics iCalendar format text/calendar
+// - [ ] .jar Java Archive (JAR) application/java-archive
+// - [x] .jpeg, .jpg JPEG images image/jpeg
+// - [x] .js JavaScript text/javascript
+// - [x] .json JSON format application/json
+// - [ ] .jsonld JSON-LD format application/ld+json
+// - [ ] .mid
+// - [ ] .midi Musical Instrument Digital Interface (MIDI) audio/midi audio/x-midi
+// - [ ] .mjs JavaScript module text/javascript
+// - [x] .mp3 MP3 audio audio/mpeg
+// - [ ] .mpeg MPEG Video video/mpeg
+// - [ ] .mpkg Apple Installer Package application/vnd.apple.installer+xml
+// - [ ] .odp OpenDocument presentation document application/vnd.oasis.opendocument.presentation
+// - [ ] .ods OpenDocument spreadsheet document application/vnd.oasis.opendocument.spreadsheet
+// - [ ] .odt OpenDocument text document application/vnd.oasis.opendocument.text
+// - [ ] .oga OGG audio audio/ogg
+// - [ ] .ogv OGG video video/ogg
+// - [ ] .ogx OGG application/ogg
+// - [ ] .opus Opus audio audio/opus
+// - [ ] .otf OpenType font font/otf
+// - [x] .png Portable Network Graphics image/png
+// - [x] .pdf Adobe Portable Document Format (PDF) application/pdf
+// - [ ] .php Hypertext Preprocessor (Personal Home Page) application/php
+// - [ ] .ppt Microsoft PowerPoint application/vnd.ms-powerpoint
+// - [ ] .pptx Microsoft PowerPoint (OpenXML) application/vnd.openxmlformats-officedocument.presentationml.presentation
+// - [ ] .rar RAR archive application/vnd.rar
+// - [ ] .rtf Rich Text Format (RTF) application/rtf
+// - [ ] .sh Bourne shell script application/x-sh
+// - [x] .svg Scalable Vector Graphics (SVG) image/svg+xml
+// - [ ] .swf Small web format (SWF) or Adobe Flash document application/x-shockwave-flash
+// - [ ] .tar Tape Archive (TAR) application/x-tar
+// - [ ] .tif
+// - [ ] .tiff Tagged Image File Format (TIFF) image/tiff
+// - [ ] .ts MPEG transport stream video/mp2t
+// - [ ] .ttf TrueType Font font/ttf
+// - [ ] .txt Text, (generally ASCII or ISO 8859-n) text/plain
+// - [ ] .vsd Microsoft Visio application/vnd.visio
+// - [x] .wav Waveform Audio Format audio/wav
+// - [ ] .weba WEBM audio audio/webm
+// - [x] .webm WEBM video video/webm
+// - [x] .webp WEBP image image/webp
+// - [ ] .woff Web Open Font Format (WOFF) font/woff
+// - [ ] .woff2 Web Open Font Format (WOFF) font/woff2
+// - [ ] .xhtml XHTML application/xhtml+xml
+// - [ ] .xls Microsoft Excel application/vnd.ms-excel
+// - [ ] .xlsx Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+// - [ ] .xml XML application/xml if not readable from casual users (RFC 3023, section 3)
+// - [ ] text/xml if readable from casual users (RFC 3023, section 3)
+// - [ ] .xul XUL application/vnd.mozilla.xul+xml
+// - [ ] .zip ZIP archive application/zip
+// - [ ] .3gp 3GPP audio/video container video/3gpp, audio/3gpp if it doesn't contain video
+// - [ ] .3g2 3GPP2 audio/video container video/3gpp2, audio/3gpp2 if it doesn't contain video
+// - [ ] .7z 7-zip archive application/x-7z-compressed
+const MIME_TO_RESOURCE = (() => {
+ const resources = {};
+ for (const fake of [
+ flv,
+ gif,
+ html,
+ ico,
+ jpg,
+ js,
+ json,
+ mp3,
+ mp4,
+ pdf,
+ png,
+ svg,
+ txt,
+ wav,
+ webm,
+ webp,
+ wmv,
+ ]) {
+ for (const alias of fake.aliases) {
+ resources[alias] = fake;
+ }
+ }
+ return resources;
+})();
+export function getFallbackTextResource() {
+ return txt;
+}
+export function getFallbackBlobResource() {
+ return {
+ contentType: 'application/octet-stream;base64',
+ aliases: ['application/octet-stream'],
+ body: 'Cg==',
+ };
+}
+export function hasResourceForMime(mime) {
+ return MIME_TO_RESOURCE[mime] !== undefined;
+}
+export function getResourceForMime(mime) {
+ return MIME_TO_RESOURCE[mime] || getFallbackTextResource();
+}
+export function getDataUrlForMime(mime) {
+ const { contentType, body } = getResourceForMime(mime);
+ return `data:${contentType},${body}`;
+}
+export { flv, gif, html, ico, jpg, js, json, mp3, mp4, pdf, png, svg, txt, wav, webm, webp, wmv, };
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/index.js.map b/client/node_modules/@remusao/small/dist/es6/index.js.map
new file mode 100644
index 0000000..bc4122e
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/index.test.js b/client/node_modules/@remusao/small/dist/es6/index.test.js
new file mode 100644
index 0000000..d61d386
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/index.test.js
@@ -0,0 +1,7 @@
+// import { expect } from 'chai';
+import 'mocha';
+// import { compress, decompress, getCompressedSize } from './index';
+describe('@remusao/small', () => {
+ // TODO
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/index.test.js.map b/client/node_modules/@remusao/small/dist/es6/index.test.js.map
new file mode 100644
index 0000000..75eb7be
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,OAAO,CAAC;AAEf,qEAAqE;AAErE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,OAAO;AACT,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/flv.js b/client/node_modules/@remusao/small/dist/es6/src/flv.js
new file mode 100644
index 0000000..cbce869
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/flv.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'video/flv';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.flv',
+ 'flv',
+ ],
+ body: 'RkxWAQEAAAAJAAAAABIAALgAAAAAAAAAAgAKb25NZXRhRGF0YQgAAAAIAAhkdXJhdGlvbgAAAAAAAAAAAAAFd2lkdGgAP/AAAAAAAAAABmhlaWdodAA/8AAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAaGoAAAAAAAAJZnJhbWVyYXRlAEBZAAAAAAAAAAx2aWRlb2NvZGVjaWQAQAAAAAAAAAAAB2VuY29kZXICAA1MYXZmNTcuNDEuMTAwAAhmaWxlc2l6ZQBAaoAAAAAAAAAACQAAAMM=',
+};
+//# sourceMappingURL=flv.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/flv.js.map b/client/node_modules/@remusao/small/dist/es6/src/flv.js.map
new file mode 100644
index 0000000..b6963b6
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/flv.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"flv.js","sourceRoot":"","sources":["../../../src/flv.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8RAA8R;CACrS,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/gif.js b/client/node_modules/@remusao/small/dist/es6/src/gif.js
new file mode 100644
index 0000000..1df0dbd
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/gif.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'image/gif';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.gif',
+ 'gif',
+ ],
+ body: 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
+};
+//# sourceMappingURL=gif.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/gif.js.map b/client/node_modules/@remusao/small/dist/es6/src/gif.js.map
new file mode 100644
index 0000000..0aceedc
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/gif.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"gif.js","sourceRoot":"","sources":["../../../src/gif.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,0DAA0D;CACjE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/html.js b/client/node_modules/@remusao/small/dist/es6/src/html.js
new file mode 100644
index 0000000..8778387
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/html.js
@@ -0,0 +1,15 @@
+export const CONTENT_TYPE = 'text/html';
+export default {
+ contentType: CONTENT_TYPE,
+ aliases: [
+ CONTENT_TYPE,
+ '.html',
+ 'html',
+ '.htm',
+ 'htm',
+ 'noopframe',
+ 'noop.html',
+ ],
+ body: '<!DOCTYPE html>',
+};
+//# sourceMappingURL=html.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/html.js.map b/client/node_modules/@remusao/small/dist/es6/src/html.js.map
new file mode 100644
index 0000000..7912ab6
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/html.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/html.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE;QACP,YAAY;QACZ,OAAO;QACP,MAAM;QACN,MAAM;QACN,KAAK;QACL,WAAW;QACX,WAAW;KACZ;IACD,IAAI,EAAE,iBAAiB;CACxB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/ico.js b/client/node_modules/@remusao/small/dist/es6/src/ico.js
new file mode 100644
index 0000000..ad5a80d
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/ico.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'image/vnd.microsoft.icon';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.ico',
+ 'ico',
+ ],
+ body: 'AAABAAEAAQEAAAEAGAAwAAAAFgAAACgAAAABAAAAAgAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAA==',
+};
+//# sourceMappingURL=ico.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/ico.js.map b/client/node_modules/@remusao/small/dist/es6/src/ico.js.map
new file mode 100644
index 0000000..91d6a89
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/ico.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ico.js","sourceRoot":"","sources":["../../../src/ico.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEvD,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,kGAAkG;CACzG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/javascript.js b/client/node_modules/@remusao/small/dist/es6/src/javascript.js
new file mode 100644
index 0000000..3e1790f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/javascript.js
@@ -0,0 +1,19 @@
+export const CONTENT_TYPE = 'application/javascript';
+export default {
+ contentType: CONTENT_TYPE,
+ aliases: [
+ CONTENT_TYPE,
+ '.js',
+ 'js',
+ 'javascript',
+ '.jsx',
+ 'jsx',
+ 'typescript',
+ '.ts',
+ 'ts',
+ 'noop.js',
+ 'noopjs',
+ ],
+ body: '',
+};
+//# sourceMappingURL=javascript.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/javascript.js.map b/client/node_modules/@remusao/small/dist/es6/src/javascript.js.map
new file mode 100644
index 0000000..8070de4
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/javascript.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/javascript.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAErD,eAAe;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE;QACP,YAAY;QACZ,KAAK;QACL,IAAI;QACJ,YAAY;QACZ,MAAM;QACN,KAAK;QACL,YAAY;QACZ,KAAK;QACL,IAAI;QACJ,SAAS;QACT,QAAQ;KACT;IACD,IAAI,EAAE,EAAE;CACT,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/jpeg.js b/client/node_modules/@remusao/small/dist/es6/src/jpeg.js
new file mode 100644
index 0000000..400be9b
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/jpeg.js
@@ -0,0 +1,13 @@
+export const CONTENT_TYPE = 'image/jpeg';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.jpg',
+ 'jpg',
+ '.jpeg',
+ 'jpeg',
+ ],
+ body: '/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k=',
+};
+//# sourceMappingURL=jpeg.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/jpeg.js.map b/client/node_modules/@remusao/small/dist/es6/src/jpeg.js.map
new file mode 100644
index 0000000..62a2fc8
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/jpeg.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"jpeg.js","sourceRoot":"","sources":["../../../src/jpeg.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,kJAAkJ;CACzJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/json.js b/client/node_modules/@remusao/small/dist/es6/src/json.js
new file mode 100644
index 0000000..7b25001
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/json.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'application/json';
+export default {
+ contentType: CONTENT_TYPE,
+ aliases: [
+ CONTENT_TYPE,
+ '.json',
+ 'json',
+ ],
+ body: '0',
+};
+//# sourceMappingURL=json.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/json.js.map b/client/node_modules/@remusao/small/dist/es6/src/json.js.map
new file mode 100644
index 0000000..cf6006b
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/json.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/json.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,eAAe;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE;QACP,YAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,GAAG;CACV,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/mp3.js b/client/node_modules/@remusao/small/dist/es6/src/mp3.js
new file mode 100644
index 0000000..4950779
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/mp3.js
@@ -0,0 +1,13 @@
+export const CONTENT_TYPE = 'audio/mpeg';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.mp3',
+ 'mp3',
+ 'noop-0.1s.mp3',
+ 'noopmp3-0.1s',
+ ],
+ body: '/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
+};
+//# sourceMappingURL=mp3.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/mp3.js.map b/client/node_modules/@remusao/small/dist/es6/src/mp3.js.map
new file mode 100644
index 0000000..54503f8
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/mp3.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp3.js","sourceRoot":"","sources":["../../../src/mp3.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,eAAe;QACf,cAAc;KACf;IACD,IAAI,EAAE,kGAAkG;CACzG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/mp4.js b/client/node_modules/@remusao/small/dist/es6/src/mp4.js
new file mode 100644
index 0000000..764153f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/mp4.js
@@ -0,0 +1,23 @@
+const CONTENT_TYPE = 'video/mp4';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.mp4',
+ 'mp4',
+ '.m4a',
+ 'm4a',
+ '.m4p',
+ 'm4p',
+ '.m4b',
+ 'm4b',
+ '.m4r',
+ 'm4r',
+ '.m4v',
+ 'm4v',
+ 'noop-1s.mp4',
+ 'noopmp4-1s',
+ ],
+ body: 'AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE=',
+};
+//# sourceMappingURL=mp4.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/mp4.js.map b/client/node_modules/@remusao/small/dist/es6/src/mp4.js.map
new file mode 100644
index 0000000..5840f18
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/mp4.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp4.js","sourceRoot":"","sources":["../../../src/mp4.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,WAAW,CAAC;AAGjC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,aAAa;QACb,YAAY;KACb;IACD,IAAI,EAAE,08DAA08D;CACj9D,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/pdf.js b/client/node_modules/@remusao/small/dist/es6/src/pdf.js
new file mode 100644
index 0000000..f0cb45f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/pdf.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'application/pdf';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.pdf',
+ 'pdf',
+ ],
+ body: 'JVBERi0xLgoxIDAgb2JqPDwvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqPDwvS2lkc1szIDAgUl0vQ291bnQgMT4+ZW5kb2JqCjMgMCBvYmo8PC9QYXJlbnQgMiAwIFI+PmVuZG9iagp0cmFpbGVyIDw8L1Jvb3QgMSAwIFI+Pg==',
+};
+//# sourceMappingURL=pdf.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/pdf.js.map b/client/node_modules/@remusao/small/dist/es6/src/pdf.js.map
new file mode 100644
index 0000000..b61edde
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/pdf.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/pdf.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE9C,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,kLAAkL;CACzL,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/png.js b/client/node_modules/@remusao/small/dist/es6/src/png.js
new file mode 100644
index 0000000..4149800
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/png.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'image/png';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.png',
+ 'png',
+ ],
+ body: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==',
+};
+//# sourceMappingURL=png.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/png.js.map b/client/node_modules/@remusao/small/dist/es6/src/png.js.map
new file mode 100644
index 0000000..24a47ed
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/png.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"png.js","sourceRoot":"","sources":["../../../src/png.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8FAA8F;CACrG,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/svg.js b/client/node_modules/@remusao/small/dist/es6/src/svg.js
new file mode 100644
index 0000000..3b75827
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/svg.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'image/svg+xml';
+export default {
+ contentType: CONTENT_TYPE,
+ aliases: [
+ CONTENT_TYPE,
+ '.svg',
+ 'svg',
+ ],
+ body: 'https://raw.githubusercontent.com/mathiasbynens/small/master/svg.svg',
+};
+//# sourceMappingURL=svg.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/svg.js.map b/client/node_modules/@remusao/small/dist/es6/src/svg.js.map
new file mode 100644
index 0000000..ee1355c
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/svg.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/svg.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,eAAe;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,sEAAsE;CAC7E,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/txt.js b/client/node_modules/@remusao/small/dist/es6/src/txt.js
new file mode 100644
index 0000000..f0c1568
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/txt.js
@@ -0,0 +1,14 @@
+export const CONTENT_TYPE = 'text/plain';
+export default {
+ contentType: CONTENT_TYPE,
+ aliases: [
+ CONTENT_TYPE,
+ '.txt',
+ 'txt',
+ 'text',
+ 'nooptext',
+ 'noop.txt',
+ ],
+ body: '',
+};
+//# sourceMappingURL=txt.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/txt.js.map b/client/node_modules/@remusao/small/dist/es6/src/txt.js.map
new file mode 100644
index 0000000..0c26d65
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/txt.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"txt.js","sourceRoot":"","sources":["../../../src/txt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,eAAe;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,MAAM;QACN,UAAU;QACV,UAAU;KACX;IACD,IAAI,EAAE,EAAE;CACT,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/wav.js b/client/node_modules/@remusao/small/dist/es6/src/wav.js
new file mode 100644
index 0000000..f7f19bb
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/wav.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'audio/wav';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.wav',
+ 'wav',
+ ],
+ body: 'UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=',
+};
+//# sourceMappingURL=wav.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/wav.js.map b/client/node_modules/@remusao/small/dist/es6/src/wav.js.map
new file mode 100644
index 0000000..e10dc97
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/wav.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"wav.js","sourceRoot":"","sources":["../../../src/wav.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8DAA8D;CACrE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/webm.js b/client/node_modules/@remusao/small/dist/es6/src/webm.js
new file mode 100644
index 0000000..3ab4dd9
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/webm.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'video/webm';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.webm',
+ 'webm',
+ ],
+ body: 'GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=',
+};
+//# sourceMappingURL=webm.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/webm.js.map b/client/node_modules/@remusao/small/dist/es6/src/webm.js.map
new file mode 100644
index 0000000..bbfa236
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/webm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"webm.js","sourceRoot":"","sources":["../../../src/webm.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,0PAA0P;CACjQ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/webp.js b/client/node_modules/@remusao/small/dist/es6/src/webp.js
new file mode 100644
index 0000000..70e1af3
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/webp.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'image/webp';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.webp',
+ 'webp',
+ ],
+ body: 'UklGRhIAAABXRUJQVlA4TAYAAAAvQWxvAGs=',
+};
+//# sourceMappingURL=webp.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/webp.js.map b/client/node_modules/@remusao/small/dist/es6/src/webp.js.map
new file mode 100644
index 0000000..8c4b898
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/webp.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"webp.js","sourceRoot":"","sources":["../../../src/webp.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,OAAO;QACP,MAAM;KACP;IACD,IAAI,EAAE,sCAAsC;CAC7C,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/wmv.js b/client/node_modules/@remusao/small/dist/es6/src/wmv.js
new file mode 100644
index 0000000..963aaa9
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/wmv.js
@@ -0,0 +1,11 @@
+export const CONTENT_TYPE = 'video/wmv';
+export default {
+ contentType: `${CONTENT_TYPE};base64`,
+ aliases: [
+ CONTENT_TYPE,
+ '.wmv',
+ 'wmv',
+ ],
+ body: 'MCaydY5mzxGm2QCqAGLObOUBAAAAAAAABQAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcCAAAAAAAAAIA+1d6xnQEAAAAAAAAAAMAF2QEAAAAAAAAAAAAAAAAcDAAAAAAAAAIAAACADAAAgAwAAEANAwC1A79fLqnPEY7jAMAMIFNlLgAAAAAAAAAR0tOruqnPEY7mAMAMIFNlBgAAAAAAQKTQ0gfj0hGX8ACgyV6oUGQAAAAAAAAAAQAoAFcATQAvAEUAbgBjAG8AZABpAG4AZwBTAGUAdAB0AGkAbgBnAHMAAAAAABwATABhAHYAZgA1ADcALgA0ADEALgAxADAAMAAAAJEH3Le3qc8RjuYAwAwgU2WBAAAAAAAAAMDvGbxNW88RqP0AgF9cRCsAV/sgVVvPEaj9AIBfXEQrAAAAAAAAAAAzAAAAAAAAAAEAAAAAAAEAAAABAAAAAigAKAAAAAEAAAABAAAAAQAYAE1QNDMDAAAAAAAAAAAAAAAAAAAAAAAAAEBS0YYdMdARo6QAoMkDSPZMAAAAAAAAAEFS0YYdMdARo6QAoMkDSPYBAAAAAQAKAG0AcwBtAHAAZQBnADQAdgAzAAAAAAAEAE1QNDM2JrJ1jmbPEabZAKoAYs5sMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ==',
+};
+//# sourceMappingURL=wmv.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/src/wmv.js.map b/client/node_modules/@remusao/small/dist/es6/src/wmv.js.map
new file mode 100644
index 0000000..d2944a2
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/src/wmv.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"wmv.js","sourceRoot":"","sources":["../../../src/wmv.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,eAAe;IACb,WAAW,EAAE,GAAG,YAAY,SAAS;IACrC,OAAO,EAAE;QACP,YAAY;QACZ,MAAM;QACN,KAAK;KACN;IACD,IAAI,EAAE,8sBAA8sB;CACrtB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/small/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..23d4492
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,1125 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../src/flv.ts": {
+ "version": "ed2058ef502905cf18d044a908f16e9eac2401a2190ea2fc842e70a5003eaa51",
+ "signature": "f313a98d09da91de078b7d3933810c5a2de46d43a850a2c34ba9fb2e64c31d5b",
+ "affectsGlobalScope": false
+ },
+ "../../src/gif.ts": {
+ "version": "0e5d6daff4301940d4b1e57bf359b86b0dc6c5560b1cc539dfe41816608ba665",
+ "signature": "91b0b099e364b546badc17f12ba1c733522d815c488cbfa288be38091286eabd",
+ "affectsGlobalScope": false
+ },
+ "../../src/html.ts": {
+ "version": "50e32be47535acd7a75ab06cd24d6d633127347c6c25d58ca8b11d91293753e1",
+ "signature": "dcef8fe876c8d916eda9a9ab8c1dfa4ed7be752f11a80c158fbb3b3ba2d3c15d",
+ "affectsGlobalScope": false
+ },
+ "../../src/ico.ts": {
+ "version": "c087cc1ca50e6b67546d3cc2c4b329072544d7e7a03435ffdc1395dc871575b2",
+ "signature": "ee3c73d7ca2190102eb4de8c3c037994201c9166d2dd137a76b02e4b8696d158",
+ "affectsGlobalScope": false
+ },
+ "../../src/jpeg.ts": {
+ "version": "35d0e3e7849221c99d9d96ca9b03154fdbddc65a042467585ae74e92c36fe014",
+ "signature": "e70ba6b86cdb9ec76484dbec5596c4f7e3c1d8e546bdc8b40d81468dbb523650",
+ "affectsGlobalScope": false
+ },
+ "../../src/javascript.ts": {
+ "version": "05e0159c227689bcaa0daa873d80ae7be8cb1727941dc995ed111f8df9faea2d",
+ "signature": "9fdb36b3e77f4493a21cfacff0a89b51e60531dc17e98512cb60261f430b537e",
+ "affectsGlobalScope": false
+ },
+ "../../src/json.ts": {
+ "version": "9500ef280217ba8240d1289f2b3e08e9fe42b1cd187aea04af2b5554f9bc2b60",
+ "signature": "a0f1ac31335bbb955e7c56ea45fe545932558c538f4987d1d0b3024f619eefd8",
+ "affectsGlobalScope": false
+ },
+ "../../src/mp3.ts": {
+ "version": "e91f64ecff39b6b58b2d60aae64e062865d9ccdea899e2e8173351095dcc32bd",
+ "signature": "39008295c4b12d96d30563960012d345fae486446a697fbe8178aaef2b3822da",
+ "affectsGlobalScope": false
+ },
+ "../../src/mp4.ts": {
+ "version": "1c1564df0ec89cb23a2fbcc436f16ae4fb86ff7bd48a06831210a11c60027a98",
+ "signature": "dd8f5a8fe8df5a42c0dd0111a6cd4e502dd5aa35c6276ca323728f041f8dade6",
+ "affectsGlobalScope": false
+ },
+ "../../src/pdf.ts": {
+ "version": "d4d6010253c42aefacf1499a0b6be05f6e495553191a5160147ef2e43f380f8c",
+ "signature": "ec6361de88ef7a7826122002596d89d70fb490555e51665e6fa646ef23cab7f0",
+ "affectsGlobalScope": false
+ },
+ "../../src/png.ts": {
+ "version": "f9f93a8b9d1c9ed3fe49f17ea6b6e0d989a56d07704c73699aca861299661618",
+ "signature": "b9f6117eedd8693155f2fce7ae05d907f090421b305445bbcecb7c6097233f47",
+ "affectsGlobalScope": false
+ },
+ "../../src/svg.ts": {
+ "version": "419f016dfd19c8c5683b709f0d57101ef06ba936afb5cbaa8bb92c25ad72f3bb",
+ "signature": "96420f79a7a548cece1ffe872929aa5a5f53ae4b6ae609730900ca243ab9d6c2",
+ "affectsGlobalScope": false
+ },
+ "../../src/txt.ts": {
+ "version": "315ba10be4cd35c6526d6205dbe1d37a45d0ea098b37bcdd7a8a01cb16749a74",
+ "signature": "8b78b88cacfc5fe02ca0756e6ff07454ea70b2cf024d25bf9ee6197cd8df01d9",
+ "affectsGlobalScope": false
+ },
+ "../../src/wav.ts": {
+ "version": "ae30606ed65faacb5316832c65f04bf070a18dba1d27134949267d162c3eeed3",
+ "signature": "58fe07c18ffb14e01597105eff6e3fea4356a0dedf91e4fee93eba215059c1dc",
+ "affectsGlobalScope": false
+ },
+ "../../src/webm.ts": {
+ "version": "7ef77d5831c70b9a88056c94a556da74b2723eac84ae5bc2f07bc2366be9ac55",
+ "signature": "32bedbd66f64fff458f4a4aa6bc0a56b4de7e276139fd38236d455612fff437b",
+ "affectsGlobalScope": false
+ },
+ "../../src/webp.ts": {
+ "version": "1f2b0d9545e542fb08aaa8b2b79c90334f6682cf48ab1619f954e335953b547e",
+ "signature": "60cfd8e7b86939186f6fb12db00bb2f864c856ef67d50ebf235e014abf19eca9",
+ "affectsGlobalScope": false
+ },
+ "../../src/wmv.ts": {
+ "version": "5cb5477801eee528f8563dba74c5548d6560d169e1c72b4a62e81f10e12faafc",
+ "signature": "822b8e401d008cf212dcfee9d46ad744cc06238d68ebc6faec857a7d95128b2f",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "1bcc43e4db852cffee775a9c352c20ef5c5266517ec1926803a81ef2cc5ee641",
+ "signature": "cce89b990ff2b3753dc81af0e793f6623e543dd8f999273379518986f961516d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "8fb42be8d4a5c4e6c2de5c084538886944f349fc0acbc108a633fb84cbde5e3a",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ],
+ "../../index.ts": [
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts",
+ "../../src/flv.ts",
+ "../../src/gif.ts",
+ "../../src/html.ts",
+ "../../src/ico.ts",
+ "../../src/javascript.ts",
+ "../../src/jpeg.ts",
+ "../../src/json.ts",
+ "../../src/mp3.ts",
+ "../../src/mp4.ts",
+ "../../src/pdf.ts",
+ "../../src/png.ts",
+ "../../src/svg.ts",
+ "../../src/txt.ts",
+ "../../src/wav.ts",
+ "../../src/webm.ts",
+ "../../src/webp.ts",
+ "../../src/wmv.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/index.d.ts b/client/node_modules/@remusao/small/dist/types/index.d.ts
new file mode 100644
index 0000000..8feeca4
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/index.d.ts
@@ -0,0 +1,35 @@
+import flv from './src/flv';
+import gif from './src/gif';
+import html from './src/html';
+import ico from './src/ico';
+import jpg from './src/jpeg';
+import js from './src/javascript';
+import json from './src/json';
+import mp3 from './src/mp3';
+import mp4 from './src/mp4';
+import pdf from './src/pdf';
+import png from './src/png';
+import svg from './src/svg';
+import txt from './src/txt';
+import wav from './src/wav';
+import webm from './src/webm';
+import webp from './src/webp';
+import wmv from './src/wmv';
+export declare function getFallbackTextResource(): {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export declare function getFallbackBlobResource(): {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export declare function hasResourceForMime(mime: string): boolean;
+export declare function getResourceForMime(mime: string): {
+ contentType: string;
+ body: string;
+};
+export declare function getDataUrlForMime(mime: string): string;
+export { flv, gif, html, ico, jpg, js, json, mp3, mp4, pdf, png, svg, txt, wav, webm, webp, wmv, };
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/index.d.ts.map b/client/node_modules/@remusao/small/dist/types/index.d.ts.map
new file mode 100644
index 0000000..efa7169
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,GAAG,MAAM,WAAW,CAAC;AA+G5B,wBAAgB,uBAAuB;;;;EAEtC;AAED,wBAAgB,uBAAuB;;;;EAMtC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM;;;EAE9C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,OAAO,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,EAAE,EACF,IAAI,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,GACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/index.test.d.ts b/client/node_modules/@remusao/small/dist/types/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/index.test.d.ts.map b/client/node_modules/@remusao/small/dist/types/index.test.d.ts.map
new file mode 100644
index 0000000..e6be91f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/flv.d.ts b/client/node_modules/@remusao/small/dist/types/src/flv.d.ts
new file mode 100644
index 0000000..3c1915c
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/flv.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "video/flv";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=flv.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/flv.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/flv.d.ts.map
new file mode 100644
index 0000000..efbd029
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/flv.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"flv.d.ts","sourceRoot":"","sources":["../../../src/flv.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/gif.d.ts b/client/node_modules/@remusao/small/dist/types/src/gif.d.ts
new file mode 100644
index 0000000..374894a
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/gif.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/gif";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=gif.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/gif.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/gif.d.ts.map
new file mode 100644
index 0000000..e5c52fe
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/gif.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"gif.d.ts","sourceRoot":"","sources":["../../../src/gif.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/html.d.ts b/client/node_modules/@remusao/small/dist/types/src/html.d.ts
new file mode 100644
index 0000000..fff681a
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/html.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "text/html";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=html.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/html.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/html.d.ts.map
new file mode 100644
index 0000000..0503b98
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/html.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../src/html.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAYE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/ico.d.ts b/client/node_modules/@remusao/small/dist/types/src/ico.d.ts
new file mode 100644
index 0000000..f56907b
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/ico.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/vnd.microsoft.icon";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=ico.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/ico.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/ico.d.ts.map
new file mode 100644
index 0000000..b9bb230
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/ico.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ico.d.ts","sourceRoot":"","sources":["../../../src/ico.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,6BAA6B,CAAC;;;;;;AAEvD,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts b/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts
new file mode 100644
index 0000000..0c8e08f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "application/javascript";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=javascript.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts.map
new file mode 100644
index 0000000..2a7f89f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/javascript.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/javascript.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,2BAA2B,CAAC;;;;;;AAErD,wBAgBE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts b/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts
new file mode 100644
index 0000000..f0b2772
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/jpeg";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=jpeg.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts.map
new file mode 100644
index 0000000..754ef43
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/jpeg.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"jpeg.d.ts","sourceRoot":"","sources":["../../../src/jpeg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;;;;;;AAEzC,wBAUE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/json.d.ts b/client/node_modules/@remusao/small/dist/types/src/json.d.ts
new file mode 100644
index 0000000..2916ccd
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/json.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "application/json";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=json.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/json.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/json.d.ts.map
new file mode 100644
index 0000000..9b3b6fe
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/json.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/json.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,qBAAqB,CAAC;;;;;;AAE/C,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts b/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts
new file mode 100644
index 0000000..fea4d61
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "audio/mpeg";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=mp3.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts.map
new file mode 100644
index 0000000..2e0fc50
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/mp3.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp3.d.ts","sourceRoot":"","sources":["../../../src/mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;;;;;;AAEzC,wBAUE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts b/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts
new file mode 100644
index 0000000..e6ca4f3
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts
@@ -0,0 +1,7 @@
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=mp4.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts.map
new file mode 100644
index 0000000..86117fd
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/mp4.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"mp4.d.ts","sourceRoot":"","sources":["../../../src/mp4.ts"],"names":[],"mappings":";;;;;AAGA,wBAoBE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts b/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts
new file mode 100644
index 0000000..51647d1
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "application/pdf";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=pdf.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts.map
new file mode 100644
index 0000000..08ebfd6
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/pdf.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/pdf.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,oBAAoB,CAAC;;;;;;AAE9C,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/png.d.ts b/client/node_modules/@remusao/small/dist/types/src/png.d.ts
new file mode 100644
index 0000000..73dee60
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/png.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/png";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=png.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/png.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/png.d.ts.map
new file mode 100644
index 0000000..aa07e41
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/png.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../../src/png.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/svg.d.ts b/client/node_modules/@remusao/small/dist/types/src/svg.d.ts
new file mode 100644
index 0000000..90d89da
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/svg.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/svg+xml";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=svg.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/svg.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/svg.d.ts.map
new file mode 100644
index 0000000..5d0a003
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/svg.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/svg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,kBAAkB,CAAC;;;;;;AAE5C,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/txt.d.ts b/client/node_modules/@remusao/small/dist/types/src/txt.d.ts
new file mode 100644
index 0000000..4c8be97
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/txt.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "text/plain";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=txt.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/txt.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/txt.d.ts.map
new file mode 100644
index 0000000..cf9f8dd
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/txt.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"txt.d.ts","sourceRoot":"","sources":["../../../src/txt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;;;;;;AAEzC,wBAWE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/wav.d.ts b/client/node_modules/@remusao/small/dist/types/src/wav.d.ts
new file mode 100644
index 0000000..25d8daf
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/wav.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "audio/wav";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=wav.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/wav.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/wav.d.ts.map
new file mode 100644
index 0000000..34b4c11
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/wav.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"wav.d.ts","sourceRoot":"","sources":["../../../src/wav.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/webm.d.ts b/client/node_modules/@remusao/small/dist/types/src/webm.d.ts
new file mode 100644
index 0000000..7e87f1f
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/webm.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "video/webm";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=webm.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/webm.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/webm.d.ts.map
new file mode 100644
index 0000000..2ba9e51
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/webm.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"webm.d.ts","sourceRoot":"","sources":["../../../src/webm.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;;;;;;AAEzC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/webp.d.ts b/client/node_modules/@remusao/small/dist/types/src/webp.d.ts
new file mode 100644
index 0000000..34141b8
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/webp.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "image/webp";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=webp.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/webp.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/webp.d.ts.map
new file mode 100644
index 0000000..a961013
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/webp.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"webp.d.ts","sourceRoot":"","sources":["../../../src/webp.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;;;;;;AAEzC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts b/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts
new file mode 100644
index 0000000..e356021
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts
@@ -0,0 +1,8 @@
+export declare const CONTENT_TYPE = "video/wmv";
+declare const _default: {
+ contentType: string;
+ aliases: string[];
+ body: string;
+};
+export default _default;
+//# sourceMappingURL=wmv.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts.map b/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts.map
new file mode 100644
index 0000000..761cf64
--- /dev/null
+++ b/client/node_modules/@remusao/small/dist/types/src/wmv.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"wmv.d.ts","sourceRoot":"","sources":["../../../src/wmv.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAAc,CAAC;;;;;;AAExC,wBAQE"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/small/package.json b/client/node_modules/@remusao/small/package.json
new file mode 100644
index 0000000..639e784
--- /dev/null
+++ b/client/node_modules/@remusao/small/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "@remusao/small",
+ "version": "1.2.1",
+ "description": "Smalles files for different MIME types",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/small"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha ./dist/cjs/index.test.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@remusao/smaz-compress/CHANGELOG.md b/client/node_modules/@remusao/smaz-compress/CHANGELOG.md
new file mode 100644
index 0000000..1811318
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/CHANGELOG.md
@@ -0,0 +1,58 @@
+# v1.9.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.9.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.8.0 (Wed Feb 12 2020)
+
+#### :running_woman: Performance
+
+- Use Map instead of array for trie to lower memory usage [#21](https://github.com/remusao/mono/pull/21) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.1 (Mon Feb 03 2020)
+
+#### :bug: Bug Fix
+
+- Add types entry in package.json [#11](https://github.com/remusao/mono/pull/11) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.0 (Mon Feb 03 2020)
+
+#### :rocket: New Feature
+
+- Add smaz packages. [#10](https://github.com/remusao/mono/pull/10) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/LICENSE b/client/node_modules/@remusao/smaz-compress/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/smaz-compress/README.md b/client/node_modules/@remusao/smaz-compress/README.md
new file mode 100644
index 0000000..719d848
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/README.md
@@ -0,0 +1,3 @@
+# `@remusao/smaz-compress`
+
+> Compress strings using custom codebooks
diff --git a/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js
new file mode 100644
index 0000000..2910178
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js
@@ -0,0 +1,114 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SmazCompress = void 0;
+const trie_1 = require("@remusao/trie");
+const EMPTY_UINT8_ARRAY = new Uint8Array(0);
+class SmazCompress {
+ constructor(codebook, maxSize = 30000) {
+ this.trie = trie_1.create(codebook);
+ this.buffer = new Uint8Array(maxSize);
+ this.verbatim = new Uint8Array(255);
+ }
+ getCompressedSize(str) {
+ if (str.length === 0) {
+ return 0;
+ }
+ let bufferIndex = 0;
+ let verbatimIndex = 0;
+ let inputIndex = 0;
+ while (inputIndex < str.length) {
+ let indexAfterMatch = -1;
+ let code = -1;
+ let root = this.trie;
+ for (let j = inputIndex; j < str.length; j += 1) {
+ root = root.chars.get(str.charCodeAt(j));
+ if (root === undefined) {
+ break;
+ }
+ if (root.code !== undefined) {
+ code = root.code;
+ indexAfterMatch = j + 1;
+ }
+ }
+ if (code === -1) {
+ verbatimIndex++;
+ inputIndex++;
+ if (verbatimIndex === 255) {
+ bufferIndex += 2 + verbatimIndex;
+ verbatimIndex = 0;
+ }
+ }
+ else {
+ if (verbatimIndex !== 0) {
+ bufferIndex += 2 + (verbatimIndex === 1 ? 0 : verbatimIndex);
+ verbatimIndex = 0;
+ }
+ bufferIndex++;
+ inputIndex = indexAfterMatch;
+ }
+ }
+ if (verbatimIndex !== 0) {
+ bufferIndex += 2 + (verbatimIndex === 1 ? 0 : verbatimIndex);
+ }
+ return bufferIndex;
+ }
+ compress(str) {
+ if (str.length === 0) {
+ return EMPTY_UINT8_ARRAY;
+ }
+ let bufferIndex = 0;
+ let verbatimIndex = 0;
+ let inputIndex = 0;
+ const len = str.length;
+ while (inputIndex < str.length) {
+ let indexAfterMatch = -1;
+ let code = -1;
+ let root = this.trie;
+ for (let j = inputIndex; j < len; j += 1) {
+ root = root.chars.get(str.charCodeAt(j));
+ if (root === undefined) {
+ break;
+ }
+ if (root.code !== undefined) {
+ code = root.code;
+ indexAfterMatch = j + 1;
+ }
+ }
+ if (code === -1) {
+ this.verbatim[verbatimIndex++] = str.charCodeAt(inputIndex++);
+ if (verbatimIndex === 255) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ verbatimIndex = 0;
+ }
+ }
+ else {
+ if (verbatimIndex !== 0) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ verbatimIndex = 0;
+ }
+ this.buffer[bufferIndex++] = code;
+ inputIndex = indexAfterMatch;
+ }
+ }
+ if (verbatimIndex !== 0) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ }
+ return this.buffer.slice(0, bufferIndex);
+ }
+ flushVerbatim(verbatimIndex, bufferIndex) {
+ if (verbatimIndex === 1) {
+ this.buffer[bufferIndex++] = 254;
+ this.buffer[bufferIndex++] = this.verbatim[0];
+ }
+ else {
+ this.buffer[bufferIndex++] = 255;
+ this.buffer[bufferIndex++] = verbatimIndex;
+ for (let k = 0; k < verbatimIndex; k += 1) {
+ this.buffer[bufferIndex++] = this.verbatim[k];
+ }
+ }
+ return bufferIndex;
+ }
+}
+exports.SmazCompress = SmazCompress;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js.map b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js.map
new file mode 100644
index 0000000..cfe62f5
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js
new file mode 100644
index 0000000..a240f02
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js
@@ -0,0 +1,93 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const index_1 = require("./index");
+describe('@remusao/smaz-compress', () => {
+ it('compresses empty string', () => {
+ const smaz = new index_1.SmazCompress([]);
+ chai_1.expect(smaz.compress('')).to.be.empty;
+ chai_1.expect(smaz.getCompressedSize('')).to.eql(0);
+ });
+ it('compresses string not from codebook', () => {
+ const smaz = new index_1.SmazCompress(['foo']);
+ chai_1.expect(smaz.getCompressedSize('bar')).to.equal(5);
+ chai_1.expect(smaz.compress('bar')).to.deep.equal(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]));
+ });
+ it('compresses string from codebook', () => {
+ const smaz = new index_1.SmazCompress(['foo']);
+ chai_1.expect(smaz.getCompressedSize('foo')).to.be.equal(1);
+ chai_1.expect(smaz.compress('foo')).to.deep.equal(new Uint8Array([0]));
+ });
+ it('compresses with a mix', () => {
+ const smaz = new index_1.SmazCompress(['foo']);
+ chai_1.expect(smaz.getCompressedSize('barfoob')).to.be.equal(8);
+ chai_1.expect(smaz.compress('barfoob')).to.deep.equal(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ 0,
+ 254,
+ 'b'.charCodeAt(0),
+ ]));
+ chai_1.expect(smaz.getCompressedSize('bfoobar')).to.eql(8);
+ chai_1.expect(smaz.compress('bfoobar')).to.deep.equal(new Uint8Array([
+ 254,
+ 'b'.charCodeAt(0),
+ 0,
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]));
+ });
+ it('handles ambiguous codebook', () => {
+ const smaz = new index_1.SmazCompress([
+ 'f',
+ 'fo',
+ 'foo',
+ 'foob',
+ 'fooba',
+ 'foobar',
+ 'foobarb',
+ 'foobarba',
+ 'foobarbaz',
+ ]);
+ const checkCompress = (str, size) => {
+ const compressed = smaz.compress(str);
+ chai_1.expect(compressed).to.have.length(size);
+ chai_1.expect(smaz.getCompressedSize(str)).to.eql(size);
+ };
+ checkCompress('f', 1);
+ checkCompress('fo', 1);
+ checkCompress('foo', 1);
+ checkCompress('foob', 1);
+ checkCompress('fooba', 1);
+ checkCompress('foobar', 1);
+ checkCompress('foobarb', 1);
+ checkCompress('foobarba', 1);
+ checkCompress('foobarbaz', 1);
+ checkCompress('foobarbazf', 2);
+ checkCompress('foobarbazfo', 2);
+ // TODO - add @remusao/smaz-decompress as dev dependency to test.
+ });
+ it('fills verbatim buffer', () => {
+ const smaz = new index_1.SmazCompress(['foo']);
+ let str = '';
+ for (let i = 0; i <= 256; i += 1) {
+ str += 'b';
+ }
+ const compressed = smaz.compress(str);
+ chai_1.expect(compressed.length).to.be.eql(smaz.getCompressedSize(str));
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js.map b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js.map
new file mode 100644
index 0000000..99aa084
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/cjs/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/smaz-compress/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..d79d0b1
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,995 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../../trie/dist/types/index.d.ts": {
+ "version": "3ec95817f43b2a8b173b9350f2826510ebff09e05e45f7f9231f61f13cb151fe",
+ "signature": "3ec95817f43b2a8b173b9350f2826510ebff09e05e45f7f9231f61f13cb151fe",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "c6976f777f27c36dc9c7318466c6fc76f8e5472f2e9c7e2975e3181feb09cb46",
+ "signature": "7eaf77d7fa4d02c294aba8b4b4dc558be303e60541e073f32f8589488d9592db",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "1eba43c01170cc411f907eedf4c4761749b3445acdf2e25b439bce8daf832d4d",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ],
+ "../../index.ts": [
+ "../../../trie/dist/types/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts",
+ "../../../trie/dist/types/index.d.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/es6/index.js b/client/node_modules/@remusao/smaz-compress/dist/es6/index.js
new file mode 100644
index 0000000..7b16b9f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/es6/index.js
@@ -0,0 +1,110 @@
+import { create } from '@remusao/trie';
+const EMPTY_UINT8_ARRAY = new Uint8Array(0);
+export class SmazCompress {
+ constructor(codebook, maxSize = 30000) {
+ this.trie = create(codebook);
+ this.buffer = new Uint8Array(maxSize);
+ this.verbatim = new Uint8Array(255);
+ }
+ getCompressedSize(str) {
+ if (str.length === 0) {
+ return 0;
+ }
+ let bufferIndex = 0;
+ let verbatimIndex = 0;
+ let inputIndex = 0;
+ while (inputIndex < str.length) {
+ let indexAfterMatch = -1;
+ let code = -1;
+ let root = this.trie;
+ for (let j = inputIndex; j < str.length; j += 1) {
+ root = root.chars.get(str.charCodeAt(j));
+ if (root === undefined) {
+ break;
+ }
+ if (root.code !== undefined) {
+ code = root.code;
+ indexAfterMatch = j + 1;
+ }
+ }
+ if (code === -1) {
+ verbatimIndex++;
+ inputIndex++;
+ if (verbatimIndex === 255) {
+ bufferIndex += 2 + verbatimIndex;
+ verbatimIndex = 0;
+ }
+ }
+ else {
+ if (verbatimIndex !== 0) {
+ bufferIndex += 2 + (verbatimIndex === 1 ? 0 : verbatimIndex);
+ verbatimIndex = 0;
+ }
+ bufferIndex++;
+ inputIndex = indexAfterMatch;
+ }
+ }
+ if (verbatimIndex !== 0) {
+ bufferIndex += 2 + (verbatimIndex === 1 ? 0 : verbatimIndex);
+ }
+ return bufferIndex;
+ }
+ compress(str) {
+ if (str.length === 0) {
+ return EMPTY_UINT8_ARRAY;
+ }
+ let bufferIndex = 0;
+ let verbatimIndex = 0;
+ let inputIndex = 0;
+ const len = str.length;
+ while (inputIndex < str.length) {
+ let indexAfterMatch = -1;
+ let code = -1;
+ let root = this.trie;
+ for (let j = inputIndex; j < len; j += 1) {
+ root = root.chars.get(str.charCodeAt(j));
+ if (root === undefined) {
+ break;
+ }
+ if (root.code !== undefined) {
+ code = root.code;
+ indexAfterMatch = j + 1;
+ }
+ }
+ if (code === -1) {
+ this.verbatim[verbatimIndex++] = str.charCodeAt(inputIndex++);
+ if (verbatimIndex === 255) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ verbatimIndex = 0;
+ }
+ }
+ else {
+ if (verbatimIndex !== 0) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ verbatimIndex = 0;
+ }
+ this.buffer[bufferIndex++] = code;
+ inputIndex = indexAfterMatch;
+ }
+ }
+ if (verbatimIndex !== 0) {
+ bufferIndex = this.flushVerbatim(verbatimIndex, bufferIndex);
+ }
+ return this.buffer.slice(0, bufferIndex);
+ }
+ flushVerbatim(verbatimIndex, bufferIndex) {
+ if (verbatimIndex === 1) {
+ this.buffer[bufferIndex++] = 254;
+ this.buffer[bufferIndex++] = this.verbatim[0];
+ }
+ else {
+ this.buffer[bufferIndex++] = 255;
+ this.buffer[bufferIndex++] = verbatimIndex;
+ for (let k = 0; k < verbatimIndex; k += 1) {
+ this.buffer[bufferIndex++] = this.verbatim[k];
+ }
+ }
+ return bufferIndex;
+ }
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/es6/index.js.map b/client/node_modules/@remusao/smaz-compress/dist/es6/index.js.map
new file mode 100644
index 0000000..58198fc
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js b/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js
new file mode 100644
index 0000000..75e88c2
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js
@@ -0,0 +1,91 @@
+import { expect } from 'chai';
+import 'mocha';
+import { SmazCompress } from './index';
+describe('@remusao/smaz-compress', () => {
+ it('compresses empty string', () => {
+ const smaz = new SmazCompress([]);
+ expect(smaz.compress('')).to.be.empty;
+ expect(smaz.getCompressedSize('')).to.eql(0);
+ });
+ it('compresses string not from codebook', () => {
+ const smaz = new SmazCompress(['foo']);
+ expect(smaz.getCompressedSize('bar')).to.equal(5);
+ expect(smaz.compress('bar')).to.deep.equal(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]));
+ });
+ it('compresses string from codebook', () => {
+ const smaz = new SmazCompress(['foo']);
+ expect(smaz.getCompressedSize('foo')).to.be.equal(1);
+ expect(smaz.compress('foo')).to.deep.equal(new Uint8Array([0]));
+ });
+ it('compresses with a mix', () => {
+ const smaz = new SmazCompress(['foo']);
+ expect(smaz.getCompressedSize('barfoob')).to.be.equal(8);
+ expect(smaz.compress('barfoob')).to.deep.equal(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ 0,
+ 254,
+ 'b'.charCodeAt(0),
+ ]));
+ expect(smaz.getCompressedSize('bfoobar')).to.eql(8);
+ expect(smaz.compress('bfoobar')).to.deep.equal(new Uint8Array([
+ 254,
+ 'b'.charCodeAt(0),
+ 0,
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]));
+ });
+ it('handles ambiguous codebook', () => {
+ const smaz = new SmazCompress([
+ 'f',
+ 'fo',
+ 'foo',
+ 'foob',
+ 'fooba',
+ 'foobar',
+ 'foobarb',
+ 'foobarba',
+ 'foobarbaz',
+ ]);
+ const checkCompress = (str, size) => {
+ const compressed = smaz.compress(str);
+ expect(compressed).to.have.length(size);
+ expect(smaz.getCompressedSize(str)).to.eql(size);
+ };
+ checkCompress('f', 1);
+ checkCompress('fo', 1);
+ checkCompress('foo', 1);
+ checkCompress('foob', 1);
+ checkCompress('fooba', 1);
+ checkCompress('foobar', 1);
+ checkCompress('foobarb', 1);
+ checkCompress('foobarba', 1);
+ checkCompress('foobarbaz', 1);
+ checkCompress('foobarbazf', 2);
+ checkCompress('foobarbazfo', 2);
+ // TODO - add @remusao/smaz-decompress as dev dependency to test.
+ });
+ it('fills verbatim buffer', () => {
+ const smaz = new SmazCompress(['foo']);
+ let str = '';
+ for (let i = 0; i <= 256; i += 1) {
+ str += 'b';
+ }
+ const compressed = smaz.compress(str);
+ expect(compressed.length).to.be.eql(smaz.getCompressedSize(str));
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js.map b/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js.map
new file mode 100644
index 0000000..8771b4f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/es6/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/smaz-compress/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..0abdc60
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,996 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../../trie/dist/types/index.d.ts": {
+ "version": "3ec95817f43b2a8b173b9350f2826510ebff09e05e45f7f9231f61f13cb151fe",
+ "signature": "3ec95817f43b2a8b173b9350f2826510ebff09e05e45f7f9231f61f13cb151fe",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "c6976f777f27c36dc9c7318466c6fc76f8e5472f2e9c7e2975e3181feb09cb46",
+ "signature": "9d160b9ac0542177ccf8bf540e5242454718b245be68a23e055a2a1b7e8dd695",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "1eba43c01170cc411f907eedf4c4761749b3445acdf2e25b439bce8daf832d4d",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ],
+ "../../index.ts": [
+ "../../../trie/dist/types/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts",
+ "../../../trie/dist/types/index.d.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts b/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts
new file mode 100644
index 0000000..d6eeae8
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts
@@ -0,0 +1,10 @@
+export declare class SmazCompress {
+ private readonly buffer;
+ private readonly trie;
+ private readonly verbatim;
+ constructor(codebook: readonly string[], maxSize?: number);
+ getCompressedSize(str: string): number;
+ compress(str: string): Uint8Array;
+ private flushVerbatim;
+}
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts.map b/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts.map
new file mode 100644
index 0000000..158c4af
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAIA,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;gBAE1B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,SAAQ;IAMjD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAmDtC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAkDxC,OAAO,CAAC,aAAa;CAatB"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts b/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts.map b/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts.map
new file mode 100644
index 0000000..e6be91f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/dist/types/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-compress/package.json b/client/node_modules/@remusao/smaz-compress/package.json
new file mode 100644
index 0000000..6e459e8
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-compress/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "@remusao/smaz-compress",
+ "version": "1.9.1",
+ "description": "Compress strings using custom codebooks",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/smaz-compress"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha ./dist/cjs/index.test.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "dependencies": {
+ "@remusao/trie": "^1.4.1"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@remusao/smaz-decompress/CHANGELOG.md b/client/node_modules/@remusao/smaz-decompress/CHANGELOG.md
new file mode 100644
index 0000000..1811318
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/CHANGELOG.md
@@ -0,0 +1,58 @@
+# v1.9.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.9.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.8.0 (Wed Feb 12 2020)
+
+#### :running_woman: Performance
+
+- Use Map instead of array for trie to lower memory usage [#21](https://github.com/remusao/mono/pull/21) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.1 (Mon Feb 03 2020)
+
+#### :bug: Bug Fix
+
+- Add types entry in package.json [#11](https://github.com/remusao/mono/pull/11) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.0 (Mon Feb 03 2020)
+
+#### :rocket: New Feature
+
+- Add smaz packages. [#10](https://github.com/remusao/mono/pull/10) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/LICENSE b/client/node_modules/@remusao/smaz-decompress/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/smaz-decompress/README.md b/client/node_modules/@remusao/smaz-decompress/README.md
new file mode 100644
index 0000000..149efa6
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/README.md
@@ -0,0 +1,3 @@
+# `@remusao/smaz-decompress`
+
+> Decompress strings using custom codebooks
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js
new file mode 100644
index 0000000..dd7175a
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js
@@ -0,0 +1,34 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SmazDecompress = void 0;
+class SmazDecompress {
+ constructor(codebook) {
+ this.codebook = codebook;
+ }
+ decompress(arr) {
+ if (arr.byteLength === 0) {
+ return '';
+ }
+ let output = '';
+ let i = 0;
+ while (i < arr.byteLength) {
+ if (arr[i] === 254) {
+ output += String.fromCharCode(arr[i + 1]);
+ i += 2;
+ }
+ else if (arr[i] === 255) {
+ const stop = i + arr[i + 1] + 2;
+ for (i += 2; i < stop; i += 1) {
+ output += String.fromCharCode(arr[i]);
+ }
+ }
+ else {
+ output += this.codebook[arr[i]];
+ i += 1;
+ }
+ }
+ return output;
+ }
+}
+exports.SmazDecompress = SmazDecompress;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js.map b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js.map
new file mode 100644
index 0000000..875f3c6
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IACzB,YAA6B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IACxD,CAAC;IAEM,UAAU,CAAC,GAAe;QAC/B,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAClB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC,IAAI,CAAC,CAAC;aACR;iBAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACzB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC7B,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvC;aACF;iBAAM;gBACL,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,CAAC;aACR;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA5BD,wCA4BC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js
new file mode 100644
index 0000000..7ffc030
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js
@@ -0,0 +1,44 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const index_1 = require("./index");
+describe('@remusao/smaz-compress', () => {
+ it('decompresses empty array', () => {
+ const smaz = new index_1.SmazDecompress(['foo']);
+ chai_1.expect(smaz.decompress(new Uint8Array(0))).to.equal('');
+ });
+ it('decompresses string from codebook', () => {
+ const smaz = new index_1.SmazDecompress(['foo']);
+ chai_1.expect(smaz.decompress(new Uint8Array([0]))).to.equal('foo');
+ });
+ it('decompresses verbatim character', () => {
+ const smaz = new index_1.SmazDecompress(['foo']);
+ chai_1.expect(smaz.decompress(new Uint8Array([254, 'b'.charCodeAt(0)]))).to.equal('b');
+ });
+ it('decompresses verbatim string', () => {
+ const smaz = new index_1.SmazDecompress(['foo']);
+ chai_1.expect(smaz.decompress(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]))).to.equal('bar');
+ });
+ it('decompresses a mix', () => {
+ const smaz = new index_1.SmazDecompress(['foo', 'baz']);
+ chai_1.expect(smaz.decompress(new Uint8Array([
+ 254,
+ 'b'.charCodeAt(0),
+ 0,
+ 1,
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]))).to.equal('bfoobazbar');
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js.map b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js.map
new file mode 100644
index 0000000..0a626cb
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/cjs/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,mCAAyC;AAEzC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,IAAI,sBAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,aAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,sBAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,aAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,sBAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,aAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACxE,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,sBAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,aAAM,CACJ,IAAI,CAAC,UAAU,CACb,IAAI,UAAU,CAAC;YACb,GAAG;YACH,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;SAClB,CAAC,CACH,CACF,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,sBAAc,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,aAAM,CACJ,IAAI,CAAC,UAAU,CACb,IAAI,UAAU,CAAC;YACb,GAAG;YACH,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,CAAC;YACD,GAAG;YACH,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;SAClB,CAAC,CACH,CACF,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/smaz-decompress/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..6605a5c
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,986 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "d7020eb6e6f90a639e741550c4b5562354e6ec3e3d7b9ef5dc771ed814bcab36",
+ "signature": "e0f15bc31719b339299fc790418a09a1c7bfe4c9132e38ac4f691e415f555f41",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "b0313a75f01301214fee346b5c8629a5f02ca64a10a365fe833e76c4bb31ef36",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js
new file mode 100644
index 0000000..f13783d
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js
@@ -0,0 +1,30 @@
+export class SmazDecompress {
+ constructor(codebook) {
+ this.codebook = codebook;
+ }
+ decompress(arr) {
+ if (arr.byteLength === 0) {
+ return '';
+ }
+ let output = '';
+ let i = 0;
+ while (i < arr.byteLength) {
+ if (arr[i] === 254) {
+ output += String.fromCharCode(arr[i + 1]);
+ i += 2;
+ }
+ else if (arr[i] === 255) {
+ const stop = i + arr[i + 1] + 2;
+ for (i += 2; i < stop; i += 1) {
+ output += String.fromCharCode(arr[i]);
+ }
+ }
+ else {
+ output += this.codebook[arr[i]];
+ i += 1;
+ }
+ }
+ return output;
+ }
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js.map b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js.map
new file mode 100644
index 0000000..082c2f2
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB,YAA6B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IACxD,CAAC;IAEM,UAAU,CAAC,GAAe;QAC/B,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAClB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC,IAAI,CAAC,CAAC;aACR;iBAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACzB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC7B,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvC;aACF;iBAAM;gBACL,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,CAAC;aACR;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js
new file mode 100644
index 0000000..d7fa272
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js
@@ -0,0 +1,42 @@
+import { expect } from 'chai';
+import 'mocha';
+import { SmazDecompress } from './index';
+describe('@remusao/smaz-compress', () => {
+ it('decompresses empty array', () => {
+ const smaz = new SmazDecompress(['foo']);
+ expect(smaz.decompress(new Uint8Array(0))).to.equal('');
+ });
+ it('decompresses string from codebook', () => {
+ const smaz = new SmazDecompress(['foo']);
+ expect(smaz.decompress(new Uint8Array([0]))).to.equal('foo');
+ });
+ it('decompresses verbatim character', () => {
+ const smaz = new SmazDecompress(['foo']);
+ expect(smaz.decompress(new Uint8Array([254, 'b'.charCodeAt(0)]))).to.equal('b');
+ });
+ it('decompresses verbatim string', () => {
+ const smaz = new SmazDecompress(['foo']);
+ expect(smaz.decompress(new Uint8Array([
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]))).to.equal('bar');
+ });
+ it('decompresses a mix', () => {
+ const smaz = new SmazDecompress(['foo', 'baz']);
+ expect(smaz.decompress(new Uint8Array([
+ 254,
+ 'b'.charCodeAt(0),
+ 0,
+ 1,
+ 255,
+ 3,
+ 'b'.charCodeAt(0),
+ 'a'.charCodeAt(0),
+ 'r'.charCodeAt(0),
+ ]))).to.equal('bfoobazbar');
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js.map b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js.map
new file mode 100644
index 0000000..cf168fc
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/es6/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACxE,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CACJ,IAAI,CAAC,UAAU,CACb,IAAI,UAAU,CAAC;YACb,GAAG;YACH,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;SAClB,CAAC,CACH,CACF,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM,CACJ,IAAI,CAAC,UAAU,CACb,IAAI,UAAU,CAAC;YACb,GAAG;YACH,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,CAAC;YACD,GAAG;YACH,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;SAClB,CAAC,CACH,CACF,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/smaz-decompress/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..c9ece6f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,987 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "d7020eb6e6f90a639e741550c4b5562354e6ec3e3d7b9ef5dc771ed814bcab36",
+ "signature": "204e06d1420b425cf815ddf27a74e5db987ddea9ae1dae445190ff8a857c3017",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "b0313a75f01301214fee346b5c8629a5f02ca64a10a365fe833e76c4bb31ef36",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts b/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts
new file mode 100644
index 0000000..051543b
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts
@@ -0,0 +1,6 @@
+export declare class SmazDecompress {
+ private readonly codebook;
+ constructor(codebook: readonly string[]);
+ decompress(arr: Uint8Array): string;
+}
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts.map b/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts.map
new file mode 100644
index 0000000..1c29c0a
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,SAAS,MAAM,EAAE;IAGjD,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;CAwB3C"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts b/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts.map b/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts.map
new file mode 100644
index 0000000..e6be91f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/dist/types/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz-decompress/package.json b/client/node_modules/@remusao/smaz-decompress/package.json
new file mode 100644
index 0000000..096ee62
--- /dev/null
+++ b/client/node_modules/@remusao/smaz-decompress/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "@remusao/smaz-decompress",
+ "version": "1.9.1",
+ "description": "Decompress strings using custom codebooks",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/smaz-decompress"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha ./dist/cjs/index.test.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@remusao/smaz/CHANGELOG.md b/client/node_modules/@remusao/smaz/CHANGELOG.md
new file mode 100644
index 0000000..1811318
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/CHANGELOG.md
@@ -0,0 +1,58 @@
+# v1.9.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.9.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.8.0 (Wed Feb 12 2020)
+
+#### :running_woman: Performance
+
+- Use Map instead of array for trie to lower memory usage [#21](https://github.com/remusao/mono/pull/21) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.1 (Mon Feb 03 2020)
+
+#### :bug: Bug Fix
+
+- Add types entry in package.json [#11](https://github.com/remusao/mono/pull/11) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.7.0 (Mon Feb 03 2020)
+
+#### :rocket: New Feature
+
+- Add smaz packages. [#10](https://github.com/remusao/mono/pull/10) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/LICENSE b/client/node_modules/@remusao/smaz/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/smaz/README.md b/client/node_modules/@remusao/smaz/README.md
new file mode 100644
index 0000000..3f4ebe8
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/README.md
@@ -0,0 +1,32 @@
+# `@remusao/smaz`
+
+> Compress strings using custom codebooks
+
+A port of the [smaz](https://github.com/antirez/smaz) small string compression library to JavaScript.
+
+From the original library:
+
+> Smaz is a simple compression library suitable for compressing very short
+> strings. General purpose compression libraries will build the state needed
+> for compressing data dynamically, in order to be able to compress every kind
+> of data. This is a very good idea, but not for a specific problem: compressing
+> small strings will not work.
+>
+> Smaz instead is not good for compressing general purpose data, but can compress
+> text by 40-50% in the average case (works better with English), and is able to
+> perform a bit of compression for HTML and urls as well. The important point is
+> that Smaz is able to compress even strings of two or three bytes!
+>
+> For example the string "the" is compressed into a single byte.
+>
+> To compare this with other libraries, think that like zlib will
+> usually not be able to compress text shorter than 100 bytes.
+
+## Usage
+
+```javascript
+const { compress, decompress } = require('@remusao/smaz');
+
+const compressed = compress('foobar');
+console.log(decompress(compressed));
+```
diff --git a/client/node_modules/@remusao/smaz/dist/cjs/index.js b/client/node_modules/@remusao/smaz/dist/cjs/index.js
new file mode 100644
index 0000000..e99c219
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/cjs/index.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getCompressedSize = exports.compress = exports.decompress = exports.Smaz = void 0;
+const smaz_compress_1 = require("@remusao/smaz-compress");
+const smaz_decompress_1 = require("@remusao/smaz-decompress");
+class Smaz {
+ constructor(codebook, maxSize = 30000) {
+ this.codebook = codebook;
+ this.compressor = new smaz_compress_1.SmazCompress(codebook, maxSize);
+ this.decompressor = new smaz_decompress_1.SmazDecompress(codebook);
+ }
+ compress(str) {
+ return this.compressor.compress(str);
+ }
+ getCompressedSize(str) {
+ return this.compressor.getCompressedSize(str);
+ }
+ decompress(buffer) {
+ return this.decompressor.decompress(buffer);
+ }
+}
+exports.Smaz = Smaz;
+const dictionary = ' ;the;e;t;a;of;o;and;i;n;s;e ;r; th; t;in;he;th;h;he ;to;\r\n;l;s ;d; a;an;er;c; o;d ;on; of;re;of ;t ;, ;is;u;at; ;n ;or;which;f;m;as;it;that;\n;was;en; ; w;es; an; i;f ;g;p;nd; s;nd ;ed ;w;ed;http://;https://;for;te;ing;y ;The; c;ti;r ;his;st; in;ar;nt;,; to;y;ng; h;with;le;al;to ;b;ou;be;were; b;se;o ;ent;ha;ng ;their;";hi;from; f;in ;de;ion;me;v;.;ve;all;re ;ri;ro;is ;co;f t;are;ea;. ;her; m;er ; p;es ;by;they;di;ra;ic;not;s, ;d t;at ;ce;la;h ;ne;as ;tio;on ;n t;io;we; a ;om;, a;s o;ur;li;ll;ch;had;this;e t;g ;e\r\n; wh;ere; co;e o;a ;us; d;ss;\n\r\n;\r\n\r;="; be; e;s a;ma;one;t t;or ;but;el;so;l ;e s;s,;no;ter; wa;iv;ho;e a; r;hat;s t;ns;ch ;wh;tr;ut;/;have;ly ;ta; ha; on;tha;-; l;ati;en ;pe; re;there;ass;si; fo;wa;ec;our;who;its;z;fo;rs;>;ot;un;<;im;th ;nc;ate;><;ver;ad; we;ly;ee; n;id; cl;ac;il;</;rt; wi;div;e, ; it;whi; ma;ge;x;e c;men;.com'.split(";");
+let SMAZ;
+function getDefaultSmaz() {
+ if (SMAZ === undefined) {
+ SMAZ = new Smaz(dictionary);
+ }
+ return SMAZ;
+}
+function decompress(array) {
+ return getDefaultSmaz().decompress(array);
+}
+exports.decompress = decompress;
+function compress(str) {
+ return getDefaultSmaz().compress(str);
+}
+exports.compress = compress;
+function getCompressedSize(str) {
+ return getDefaultSmaz().getCompressedSize(str);
+}
+exports.getCompressedSize = getCompressedSize;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/cjs/index.js.map b/client/node_modules/@remusao/smaz/dist/cjs/index.js.map
new file mode 100644
index 0000000..3eb14a0
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,0DAAsD;AACtD,8DAA0D;AAE1D,MAAa,IAAI;IAIf,YAAqB,QAA2B,EAAE,OAAO,GAAG,KAAK;QAA5C,aAAQ,GAAR,QAAQ,CAAmB;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,4BAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,gCAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEM,iBAAiB,CAAC,GAAW;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF;AApBD,oBAoBC;AAED,MAAM,UAAU,GAAa,k2BAAk2B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE34B,IAAI,IAAsB,CAAC;AAE3B,SAAS,cAAc;IACrB,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7B;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,KAAiB;IAC1C,OAAO,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAFD,gCAEC;AAED,SAAgB,QAAQ,CAAC,GAAW;IAClC,OAAO,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,4BAEC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,OAAO,cAAc,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC;AAFD,8CAEC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/cjs/index.test.js b/client/node_modules/@remusao/smaz/dist/cjs/index.test.js
new file mode 100644
index 0000000..f8447ad
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/cjs/index.test.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const index_1 = require("./index");
+describe('@remusao/smaz', () => {
+ [
+ '',
+ 'This is a small string',
+ 'foobar',
+ 'the end',
+ 'not-a-g00d-Exampl333',
+ 'Smaz is a simple compression library',
+ 'Nothing is more difficult, and therefore more precious, than to be able to decide',
+ 'this is an example of what works very well with smaz',
+ '1000 numbers 2000 will 10 20 30 compress very little',
+ 'Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura',
+ 'Mi illumino di immenso',
+ "L'autore di questa libreria vive in Sicilia",
+ 'http://google.com',
+ 'http://programming.reddit.com',
+ 'http://github.com/antirez/smaz/tree/master',
+ ].forEach(str => {
+ it(str, () => {
+ const compressed = index_1.compress(str);
+ chai_1.expect(compressed).to.have.length(index_1.getCompressedSize(str));
+ chai_1.expect(index_1.decompress(compressed)).to.equal(str);
+ });
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/cjs/index.test.js.map b/client/node_modules/@remusao/smaz/dist/cjs/index.test.js.map
new file mode 100644
index 0000000..a3a239e
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/cjs/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,mCAAkE;AAElE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B;QACE,EAAE;QACF,wBAAwB;QACxB,QAAQ;QACR,SAAS;QACT,sBAAsB;QACtB,sCAAsC;QACtC,mFAAmF;QACnF,sDAAsD;QACtD,sDAAsD;QACtD,sEAAsE;QACtE,wBAAwB;QACxB,6CAA6C;QAC7C,mBAAmB;QACnB,+BAA+B;QAC/B,4CAA4C;KAC7C,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACd,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;YACX,MAAM,UAAU,GAAG,gBAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,aAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,aAAM,CAAC,kBAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/smaz/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..2fe2e3b
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,1002 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../../smaz-compress/dist/types/index.d.ts": {
+ "version": "7eaf77d7fa4d02c294aba8b4b4dc558be303e60541e073f32f8589488d9592db",
+ "signature": "7eaf77d7fa4d02c294aba8b4b4dc558be303e60541e073f32f8589488d9592db",
+ "affectsGlobalScope": false
+ },
+ "../../../smaz-decompress/dist/types/index.d.ts": {
+ "version": "e0f15bc31719b339299fc790418a09a1c7bfe4c9132e38ac4f691e415f555f41",
+ "signature": "e0f15bc31719b339299fc790418a09a1c7bfe4c9132e38ac4f691e415f555f41",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "72dea21ed8dd9f0cfa5955c43d4a492e4fad0ec0ab3b112a199b0fb0c0e970c6",
+ "signature": "46cb2fd15647a989b19403a74a3729c223be2480417baf0901f0fe02aeec1cfa",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "1e78c3ce2424516ebc12de8bdb6a5a2890b63f9f0f02d0db75a68a9bcf9905b9",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ],
+ "../../index.ts": [
+ "../../../smaz-compress/dist/types/index.d.ts",
+ "../../../smaz-decompress/dist/types/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../../smaz-compress/dist/types/index.d.ts",
+ "../../../smaz-decompress/dist/types/index.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/es6/index.js b/client/node_modules/@remusao/smaz/dist/es6/index.js
new file mode 100644
index 0000000..f6d533a
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/es6/index.js
@@ -0,0 +1,36 @@
+import { SmazCompress } from '@remusao/smaz-compress';
+import { SmazDecompress } from '@remusao/smaz-decompress';
+export class Smaz {
+ constructor(codebook, maxSize = 30000) {
+ this.codebook = codebook;
+ this.compressor = new SmazCompress(codebook, maxSize);
+ this.decompressor = new SmazDecompress(codebook);
+ }
+ compress(str) {
+ return this.compressor.compress(str);
+ }
+ getCompressedSize(str) {
+ return this.compressor.getCompressedSize(str);
+ }
+ decompress(buffer) {
+ return this.decompressor.decompress(buffer);
+ }
+}
+const dictionary = ' ;the;e;t;a;of;o;and;i;n;s;e ;r; th; t;in;he;th;h;he ;to;\r\n;l;s ;d; a;an;er;c; o;d ;on; of;re;of ;t ;, ;is;u;at; ;n ;or;which;f;m;as;it;that;\n;was;en; ; w;es; an; i;f ;g;p;nd; s;nd ;ed ;w;ed;http://;https://;for;te;ing;y ;The; c;ti;r ;his;st; in;ar;nt;,; to;y;ng; h;with;le;al;to ;b;ou;be;were; b;se;o ;ent;ha;ng ;their;";hi;from; f;in ;de;ion;me;v;.;ve;all;re ;ri;ro;is ;co;f t;are;ea;. ;her; m;er ; p;es ;by;they;di;ra;ic;not;s, ;d t;at ;ce;la;h ;ne;as ;tio;on ;n t;io;we; a ;om;, a;s o;ur;li;ll;ch;had;this;e t;g ;e\r\n; wh;ere; co;e o;a ;us; d;ss;\n\r\n;\r\n\r;="; be; e;s a;ma;one;t t;or ;but;el;so;l ;e s;s,;no;ter; wa;iv;ho;e a; r;hat;s t;ns;ch ;wh;tr;ut;/;have;ly ;ta; ha; on;tha;-; l;ati;en ;pe; re;there;ass;si; fo;wa;ec;our;who;its;z;fo;rs;>;ot;un;<;im;th ;nc;ate;><;ver;ad; we;ly;ee; n;id; cl;ac;il;</;rt; wi;div;e, ; it;whi; ma;ge;x;e c;men;.com'.split(";");
+let SMAZ;
+function getDefaultSmaz() {
+ if (SMAZ === undefined) {
+ SMAZ = new Smaz(dictionary);
+ }
+ return SMAZ;
+}
+export function decompress(array) {
+ return getDefaultSmaz().decompress(array);
+}
+export function compress(str) {
+ return getDefaultSmaz().compress(str);
+}
+export function getCompressedSize(str) {
+ return getDefaultSmaz().getCompressedSize(str);
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/es6/index.js.map b/client/node_modules/@remusao/smaz/dist/es6/index.js.map
new file mode 100644
index 0000000..973b0a4
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,OAAO,IAAI;IAIf,YAAqB,QAA2B,EAAE,OAAO,GAAG,KAAK;QAA5C,aAAQ,GAAR,QAAQ,CAAmB;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEM,iBAAiB,CAAC,GAAW;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,UAAU,GAAa,k2BAAk2B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE34B,IAAI,IAAsB,CAAC;AAE3B,SAAS,cAAc;IACrB,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7B;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,cAAc,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/es6/index.test.js b/client/node_modules/@remusao/smaz/dist/es6/index.test.js
new file mode 100644
index 0000000..1a81e9e
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/es6/index.test.js
@@ -0,0 +1,29 @@
+import { expect } from 'chai';
+import 'mocha';
+import { compress, decompress, getCompressedSize } from './index';
+describe('@remusao/smaz', () => {
+ [
+ '',
+ 'This is a small string',
+ 'foobar',
+ 'the end',
+ 'not-a-g00d-Exampl333',
+ 'Smaz is a simple compression library',
+ 'Nothing is more difficult, and therefore more precious, than to be able to decide',
+ 'this is an example of what works very well with smaz',
+ '1000 numbers 2000 will 10 20 30 compress very little',
+ 'Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura',
+ 'Mi illumino di immenso',
+ "L'autore di questa libreria vive in Sicilia",
+ 'http://google.com',
+ 'http://programming.reddit.com',
+ 'http://github.com/antirez/smaz/tree/master',
+ ].forEach(str => {
+ it(str, () => {
+ const compressed = compress(str);
+ expect(compressed).to.have.length(getCompressedSize(str));
+ expect(decompress(compressed)).to.equal(str);
+ });
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/es6/index.test.js.map b/client/node_modules/@remusao/smaz/dist/es6/index.test.js.map
new file mode 100644
index 0000000..578e759
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/es6/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,OAAO,CAAC;AAEf,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAElE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B;QACE,EAAE;QACF,wBAAwB;QACxB,QAAQ;QACR,SAAS;QACT,sBAAsB;QACtB,sCAAsC;QACtC,mFAAmF;QACnF,sDAAsD;QACtD,sDAAsD;QACtD,sEAAsE;QACtE,wBAAwB;QACxB,6CAA6C;QAC7C,mBAAmB;QACnB,+BAA+B;QAC/B,4CAA4C;KAC7C,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACd,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;YACX,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/smaz/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..6cd36d3
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,1003 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../../smaz-compress/dist/types/index.d.ts": {
+ "version": "7eaf77d7fa4d02c294aba8b4b4dc558be303e60541e073f32f8589488d9592db",
+ "signature": "7eaf77d7fa4d02c294aba8b4b4dc558be303e60541e073f32f8589488d9592db",
+ "affectsGlobalScope": false
+ },
+ "../../../smaz-decompress/dist/types/index.d.ts": {
+ "version": "e0f15bc31719b339299fc790418a09a1c7bfe4c9132e38ac4f691e415f555f41",
+ "signature": "e0f15bc31719b339299fc790418a09a1c7bfe4c9132e38ac4f691e415f555f41",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "72dea21ed8dd9f0cfa5955c43d4a492e4fad0ec0ab3b112a199b0fb0c0e970c6",
+ "signature": "28f88f7c33b670d94afd4a65fa5af7fdbd38e8c32d3000e06cbb7a8f9a3bab82",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "1e78c3ce2424516ebc12de8bdb6a5a2890b63f9f0f02d0db75a68a9bcf9905b9",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ],
+ "../../index.ts": [
+ "../../../smaz-compress/dist/types/index.d.ts",
+ "../../../smaz-decompress/dist/types/index.d.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../../smaz-compress/dist/types/index.d.ts",
+ "../../../smaz-decompress/dist/types/index.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/types/index.d.ts b/client/node_modules/@remusao/smaz/dist/types/index.d.ts
new file mode 100644
index 0000000..db73edc
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/types/index.d.ts
@@ -0,0 +1,13 @@
+export declare class Smaz {
+ readonly codebook: readonly string[];
+ private readonly compressor;
+ private readonly decompressor;
+ constructor(codebook: readonly string[], maxSize?: number);
+ compress(str: string): Uint8Array;
+ getCompressedSize(str: string): number;
+ decompress(buffer: Uint8Array): string;
+}
+export declare function decompress(array: Uint8Array): string;
+export declare function compress(str: string): Uint8Array;
+export declare function getCompressedSize(str: string): number;
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/types/index.d.ts.map b/client/node_modules/@remusao/smaz/dist/types/index.d.ts.map
new file mode 100644
index 0000000..de920a6
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,qBAAa,IAAI;IAIH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;IAHhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;gBAEzB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,SAAQ;IAK1D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAIjC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAItC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAG9C;AAcD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts b/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts.map b/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts.map
new file mode 100644
index 0000000..e6be91f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/dist/types/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/smaz/package.json b/client/node_modules/@remusao/smaz/package.json
new file mode 100644
index 0000000..79ff12f
--- /dev/null
+++ b/client/node_modules/@remusao/smaz/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@remusao/smaz",
+ "version": "1.9.1",
+ "description": "Compress strings using custom codebooks",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/smaz"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha ./dist/cjs/index.test.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "dependencies": {
+ "@remusao/smaz-compress": "^1.9.1",
+ "@remusao/smaz-decompress": "^1.9.1"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@remusao/trie/CHANGELOG.md b/client/node_modules/@remusao/trie/CHANGELOG.md
new file mode 100644
index 0000000..8b4e59d
--- /dev/null
+++ b/client/node_modules/@remusao/trie/CHANGELOG.md
@@ -0,0 +1,82 @@
+# v1.4.1 (Tue Nov 03 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump typescript from 3.9.7 to 4.0.2 [#257](https://github.com/remusao/mono/pull/257) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+- Bump @types/mocha from 7.0.2 to 8.0.0 [#218](https://github.com/remusao/mono/pull/218) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.4.0 (Sun Jun 14 2020)
+
+#### :nut_and_bolt: Dependencies
+
+- Bump mocha from 7.2.0 to 8.0.1 [#195](https://github.com/remusao/mono/pull/195) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
+
+#### Authors: 1
+
+- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
+
+---
+
+# v1.3.0 (Wed Feb 12 2020)
+
+#### :running_woman: Performance
+
+- Use Map instead of array for trie to lower memory usage [#21](https://github.com/remusao/mono/pull/21) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.2.1 (Mon Feb 03 2020)
+
+#### :bug: Bug Fix
+
+- Add types entry in package.json [#11](https://github.com/remusao/mono/pull/11) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.2.0 (Mon Feb 03 2020)
+
+#### :house: Internal
+
+- Use chai and mocha instead of jest for testing [#9](https://github.com/remusao/mono/pull/9) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.1.0 (Sat Feb 01 2020)
+
+#### :rocket: New Feature
+
+- feat: add new auto-config package [#2](https://github.com/remusao/mono/pull/2) ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao))
+
+---
+
+# v1.0.1 (Sat Feb 01 2020)
+
+#### :bug: Bug Fix
+
+- fix: add dist folder to gitignore ([@remusao](https://github.com/remusao))
+
+#### Authors: 1
+
+- Rémi ([@remusao](https://github.com/remusao)) \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/LICENSE b/client/node_modules/@remusao/trie/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/client/node_modules/@remusao/trie/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/client/node_modules/@remusao/trie/README.md b/client/node_modules/@remusao/trie/README.md
new file mode 100644
index 0000000..6493763
--- /dev/null
+++ b/client/node_modules/@remusao/trie/README.md
@@ -0,0 +1,17 @@
+# `@remusao/trie`
+
+> A tiny but fast trie implementation for ASCII strings
+
+## Usage
+
+```javascript
+const { create, lookup } = require('@remusao/trie');
+const trie = create([
+ 'foo',
+ 'bar',
+]);
+
+lookup(trie, 'foo'); // true
+lookup(trie, 'bar'); // true
+lookup(trie, 'baz'); // false
+```
diff --git a/client/node_modules/@remusao/trie/dist/cjs/index.js b/client/node_modules/@remusao/trie/dist/cjs/index.js
new file mode 100644
index 0000000..669f7dd
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/cjs/index.js
@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.lookup = exports.create = void 0;
+function newNode() {
+ return {
+ chars: new Map(),
+ code: undefined,
+ };
+}
+function create(strings) {
+ const node = newNode();
+ for (let i = 0; i < strings.length; i += 1) {
+ const tok = strings[i];
+ let root = node;
+ for (let j = 0; j < tok.length; j += 1) {
+ const c = tok.charCodeAt(j);
+ let next = root.chars.get(c);
+ if (next === undefined) {
+ next = newNode();
+ root.chars.set(c, next);
+ }
+ root = next;
+ }
+ root.code = i;
+ }
+ return node;
+}
+exports.create = create;
+function lookup(trie, str) {
+ let node = trie;
+ for (let i = 0; i < str.length; i += 1) {
+ if (node === undefined) {
+ return false;
+ }
+ node = node.chars.get(str.charCodeAt(i));
+ }
+ return node !== undefined && node.code !== undefined;
+}
+exports.lookup = lookup;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/cjs/index.js.map b/client/node_modules/@remusao/trie/dist/cjs/index.js.map
new file mode 100644
index 0000000..684934e
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAMA,SAAS,OAAO;IACd,OAAO;QACL,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CAAC,OAA0B;IAC/C,MAAM,IAAI,GAAS,OAAO,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;aACzB;YACD,IAAI,GAAG,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAjBD,wBAiBC;AAED,SAAgB,MAAM,CAAC,IAAU,EAAE,GAAW;IAC5C,IAAI,IAAI,GAAqB,IAAI,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACtC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAM,SAAS,CAAC;AACxD,CAAC;AAXD,wBAWC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/cjs/index.test.js b/client/node_modules/@remusao/trie/dist/cjs/index.test.js
new file mode 100644
index 0000000..e5529c6
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/cjs/index.test.js
@@ -0,0 +1,36 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const chai_1 = require("chai");
+require("mocha");
+const index_1 = require("./index");
+describe('@remusao/trie', () => {
+ describe('#create', () => {
+ it('empty trie', () => {
+ const trie = index_1.create([]);
+ chai_1.expect(trie.code).to.be.undefined;
+ chai_1.expect(trie.chars).to.have.length(0);
+ chai_1.expect(index_1.lookup(trie, '')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'foo')).to.be.false;
+ });
+ it('trie with one string', () => {
+ const trie = index_1.create(['aaaa']);
+ chai_1.expect(index_1.lookup(trie, '')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'a')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aa')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aaa')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aaaa')).to.be.true;
+ chai_1.expect(index_1.lookup(trie, 'aaaaa')).to.be.false;
+ });
+ it('trie with two strings', () => {
+ const trie = index_1.create(['aaaa', 'aaab']);
+ chai_1.expect(index_1.lookup(trie, '')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'a')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aa')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aaa')).to.be.false;
+ chai_1.expect(index_1.lookup(trie, 'aaaa')).to.be.true;
+ chai_1.expect(index_1.lookup(trie, 'aaab')).to.be.true;
+ chai_1.expect(index_1.lookup(trie, 'aaaaa')).to.be.false;
+ });
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/cjs/index.test.js.map b/client/node_modules/@remusao/trie/dist/cjs/index.test.js.map
new file mode 100644
index 0000000..38f23ac
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/cjs/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iBAAe;AAEf,mCAAyC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YACpB,MAAM,IAAI,GAAG,cAAM,CAAC,EAAE,CAAC,CAAC;YACxB,aAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YAClC,aAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,cAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACxC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACxC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,IAAI,GAAG,cAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACxC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACxC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACxC,aAAM,CAAC,cAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/@remusao/trie/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..9831471
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1,986 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "20f1d713ec258602da6c732fd43ae6def1c8327d5903d95f7d3e2dcd418732fe",
+ "signature": "3ec95817f43b2a8b173b9350f2826510ebff09e05e45f7f9231f61f13cb151fe",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "ff7b00bbd768c7d5b5cbcedf3a72f85d2adedff883bc6a3226248409ba2049cf",
+ "signature": "ce1a1fae9216be8fc02e7e53b209f0d929e37d96ba944b961fc3febbd3fd31bc",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+ "target": 4,
+ "module": 1,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": true,
+ "outDir": "./",
+ "declarationDir": "../types",
+ "configFilePath": "../../tsconfig.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/es6/index.js b/client/node_modules/@remusao/trie/dist/es6/index.js
new file mode 100644
index 0000000..de82c09
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/es6/index.js
@@ -0,0 +1,35 @@
+function newNode() {
+ return {
+ chars: new Map(),
+ code: undefined,
+ };
+}
+export function create(strings) {
+ const node = newNode();
+ for (let i = 0; i < strings.length; i += 1) {
+ const tok = strings[i];
+ let root = node;
+ for (let j = 0; j < tok.length; j += 1) {
+ const c = tok.charCodeAt(j);
+ let next = root.chars.get(c);
+ if (next === undefined) {
+ next = newNode();
+ root.chars.set(c, next);
+ }
+ root = next;
+ }
+ root.code = i;
+ }
+ return node;
+}
+export function lookup(trie, str) {
+ let node = trie;
+ for (let i = 0; i < str.length; i += 1) {
+ if (node === undefined) {
+ return false;
+ }
+ node = node.chars.get(str.charCodeAt(i));
+ }
+ return node !== undefined && node.code !== undefined;
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/es6/index.js.map b/client/node_modules/@remusao/trie/dist/es6/index.js.map
new file mode 100644
index 0000000..3d7b4b7
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAMA,SAAS,OAAO;IACd,OAAO;QACL,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAA0B;IAC/C,MAAM,IAAI,GAAS,OAAO,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;aACzB;YACD,IAAI,GAAG,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAU,EAAE,GAAW;IAC5C,IAAI,IAAI,GAAqB,IAAI,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACtC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAM,SAAS,CAAC;AACxD,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/es6/index.test.js b/client/node_modules/@remusao/trie/dist/es6/index.test.js
new file mode 100644
index 0000000..b956e0f
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/es6/index.test.js
@@ -0,0 +1,34 @@
+import { expect } from 'chai';
+import 'mocha';
+import { create, lookup } from './index';
+describe('@remusao/trie', () => {
+ describe('#create', () => {
+ it('empty trie', () => {
+ const trie = create([]);
+ expect(trie.code).to.be.undefined;
+ expect(trie.chars).to.have.length(0);
+ expect(lookup(trie, '')).to.be.false;
+ expect(lookup(trie, 'foo')).to.be.false;
+ });
+ it('trie with one string', () => {
+ const trie = create(['aaaa']);
+ expect(lookup(trie, '')).to.be.false;
+ expect(lookup(trie, 'a')).to.be.false;
+ expect(lookup(trie, 'aa')).to.be.false;
+ expect(lookup(trie, 'aaa')).to.be.false;
+ expect(lookup(trie, 'aaaa')).to.be.true;
+ expect(lookup(trie, 'aaaaa')).to.be.false;
+ });
+ it('trie with two strings', () => {
+ const trie = create(['aaaa', 'aaab']);
+ expect(lookup(trie, '')).to.be.false;
+ expect(lookup(trie, 'a')).to.be.false;
+ expect(lookup(trie, 'aa')).to.be.false;
+ expect(lookup(trie, 'aaa')).to.be.false;
+ expect(lookup(trie, 'aaaa')).to.be.true;
+ expect(lookup(trie, 'aaab')).to.be.true;
+ expect(lookup(trie, 'aaaaa')).to.be.false;
+ });
+ });
+});
+//# sourceMappingURL=index.test.js.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/es6/index.test.js.map b/client/node_modules/@remusao/trie/dist/es6/index.test.js.map
new file mode 100644
index 0000000..6a3a05f
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/es6/index.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/@remusao/trie/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..600b308
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1,987 @@
+{
+ "program": {
+ "fileInfos": {
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts": {
+ "version": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "signature": "c9a1f03d6ba0fe3c871eb0dd81622e78fbb61ade70878b34d48a341a690c59e9",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts": {
+ "version": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "signature": "dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts": {
+ "version": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "signature": "7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts": {
+ "version": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "signature": "8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts": {
+ "version": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "signature": "5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts": {
+ "version": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "signature": "38130cdd16bd2318b9362f9d60dd9670f7e38708bb6131cf11fc78a41b2c34a0",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts": {
+ "version": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "signature": "fb0c09b697dc42afa84d1587e3c994a2f554d2a45635e4f0618768d16a86b69a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": {
+ "version": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "signature": "7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts": {
+ "version": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "signature": "097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts": {
+ "version": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "signature": "46ee15e9fefa913333b61eaf6b18885900b139867d89832a515059b62cf16a17",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts": {
+ "version": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "signature": "43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts": {
+ "version": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "signature": "cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts": {
+ "version": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "signature": "42f5e41e5893da663dbf0394268f54f1da4b43dc0ddd2ea4bf471fe5361d6faf",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts": {
+ "version": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "signature": "0b7a905675e6cb4211c128f0a3aa47d414b275180a299a9aad5d3ec298abbfc4",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts": {
+ "version": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "signature": "dfff68b3c34338f6b307a25d4566de15eed7973b0dc5d69f9fde2bcac1c25315",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts": {
+ "version": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "signature": "cb609802a8698aa28b9c56331d4b53f590ca3c1c3a255350304ae3d06017779d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts": {
+ "version": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "signature": "3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": {
+ "version": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "signature": "4670208dd7da9d6c774ab1b75c1527a810388c7989c4905de6aaea8561cb9dce",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts": {
+ "version": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "signature": "3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts": {
+ "version": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "signature": "17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": {
+ "version": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "signature": "b5e4c2d67aa844ed503b29cd4ca2ede1a229ac7fe874613b2c996fa9c581a25f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts": {
+ "version": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "signature": "6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts": {
+ "version": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "signature": "12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": {
+ "version": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "signature": "b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts": {
+ "version": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "signature": "0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts": {
+ "version": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "signature": "a40c4d82bf13fcded295ac29f354eb7d40249613c15e07b53f2fc75e45e16359",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts": {
+ "version": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "signature": "df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts": {
+ "version": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "signature": "bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts": {
+ "version": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
+ "version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts": {
+ "version": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "signature": "89bf2b7a601b73ea4311eda9c41f86a58994fec1bee3b87c4a14d68d9adcdcbd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts": {
+ "version": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "signature": "d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",
+ "affectsGlobalScope": false
+ },
+ "../../index.ts": {
+ "version": "20f1d713ec258602da6c732fd43ae6def1c8327d5903d95f7d3e2dcd418732fe",
+ "signature": "1af5df19785ec1536f223ce7416f70d04d43a32c28ac36081aa49d52a6ac4615",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chai/index.d.ts": {
+ "version": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "signature": "2d65af67144ac8a3e835ba0bff8cd0c86ca7af3ade64ca13eab6ef42c3bd54de",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/mocha/index.d.ts": {
+ "version": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "signature": "060f0636cb83057f9a758cafc817b7be1e8612c4387dfe3fbadda865958cf8c1",
+ "affectsGlobalScope": true
+ },
+ "../../index.test.ts": {
+ "version": "ff7b00bbd768c7d5b5cbcedf3a72f85d2adedff883bc6a3226248409ba2049cf",
+ "signature": "95aa95996f884804dc6ebc7b4d271fa1a57b7b68911464a7193a307c56748d16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/benchmark/index.d.ts": {
+ "version": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "signature": "758af82138f359fc2efb2ce98af6ce375e86c243c0e12632596ed009b3ecb02a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/har-format/index.d.ts": {
+ "version": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "signature": "588509bbff6a4a62373c9adb0a8c1896f30aa19f6f56d295780732d7fa05fd16",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": {
+ "version": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "signature": "be7abf1df570aea13a80f9e26c48e4ec51ee5b5c807326fc730eadba8a118905",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filewriter/index.d.ts": {
+ "version": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "signature": "d9932f317f16ea21c183b67b73a72f17883c52933980292e7ebba2215495bb5c",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/filesystem/index.d.ts": {
+ "version": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "signature": "40dcb6f3611671f2b9567edf67f9e5c52315663d60cdf0778baefb6007350ea3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/chrome/index.d.ts": {
+ "version": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "signature": "491659a0c6779a4c9bcbd393dd6454d19d65ebe4c3fc33ef449381acaa7db217",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/command-line-args/index.d.ts": {
+ "version": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "signature": "e2790204f9394425bf7d8e93a919887823d03dc2830d31d09c8f6af5562634dd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/command-line-usage/index.d.ts": {
+ "version": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "signature": "65fa9dd7434e469671c4fb384cc9c610ad8ffc572351adec3e3d46f36a68f358",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts": {
+ "version": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "signature": "67a4f798a779e41e9ff2cda0aac61f729070d228279366aa8a7f3267dc05bbb5",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/globals.d.ts": {
+ "version": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "signature": "1332704d6761c94b85753fc3cadc36109f53e5d92fad137ac3de18083febedf3",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/async_hooks.d.ts": {
+ "version": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "signature": "c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/buffer.d.ts": {
+ "version": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "signature": "bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/child_process.d.ts": {
+ "version": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "signature": "987249e7b75023387c5fd9dc2f959ee777cb8989b7900f5a9eb4a67d290f2cba",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/cluster.d.ts": {
+ "version": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "signature": "123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/console.d.ts": {
+ "version": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "signature": "eb5197aade83cb0e360ac407289c53a8009e8fdae7939892a0240d30444496b6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/constants.d.ts": {
+ "version": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "signature": "90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/crypto.d.ts": {
+ "version": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "signature": "c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dgram.d.ts": {
+ "version": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "signature": "7e050b767ed10c7ffbc01f314defbf420bf0b5d54ce666e1c87507c035dfc191",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/dns.d.ts": {
+ "version": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "signature": "7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/domain.d.ts": {
+ "version": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "signature": "cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/events.d.ts": {
+ "version": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "signature": "365e8358843a23944be84b810b1f774ea0223adfccc085f30fd7f4c13dc8a09f",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/fs.d.ts": {
+ "version": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "signature": "f87f95c015900102a5c0edcdebb17596de1382510e6cc17ab79f375d3505bb12",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/fs/promises.d.ts": {
+ "version": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "signature": "05b5679a897598ebe556ee93415b3af1f456e674ea82e4d7afcd716bfe43aa98",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http.d.ts": {
+ "version": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "signature": "35fe02b2c10616cc7ac3db9c15778df7ed9c99276889efdd9be31f342841cfcd",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/http2.d.ts": {
+ "version": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "signature": "1c3fe66943f587685aa4a42f664f794655da1767401d2f85910177dac78aa45d",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/https.d.ts": {
+ "version": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "signature": "c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/inspector.d.ts": {
+ "version": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "signature": "6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/module.d.ts": {
+ "version": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "signature": "bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/net.d.ts": {
+ "version": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "signature": "8de97668870cfb20fc9d355d2ef379e897bdd8a98c889c7d8a6de40ee408ad52",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/os.d.ts": {
+ "version": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "signature": "ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/path.d.ts": {
+ "version": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "signature": "84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": {
+ "version": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "signature": "4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/process.d.ts": {
+ "version": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "signature": "e64979f6084c279bf8cd58dbc9203567f68f1ed19a8ad91351f078f03323ddf6",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/punycode.d.ts": {
+ "version": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "signature": "3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/querystring.d.ts": {
+ "version": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "signature": "884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/readline.d.ts": {
+ "version": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "signature": "6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/repl.d.ts": {
+ "version": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "signature": "acbed967a379b3e9f73237ba9473f8b337eeea14b7dc64d445430b5d695751da",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/stream.d.ts": {
+ "version": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "signature": "272a46cc8f494677af587d17939e61e7db2b1925633e4da0c186ba17f6732521",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/string_decoder.d.ts": {
+ "version": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "signature": "d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/timers.d.ts": {
+ "version": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "signature": "b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tls.d.ts": {
+ "version": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "signature": "a0545ca910ec6b318b8e1d63813c980c3be44824cf217b6477a56fbe9c7927d5",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/trace_events.d.ts": {
+ "version": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "signature": "a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/tty.d.ts": {
+ "version": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "signature": "3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/url.d.ts": {
+ "version": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "signature": "80ffc1786a5dab91b4aa59a72720f02f25df8b7c76b593e04d5e381aec284ccb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/util.d.ts": {
+ "version": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "signature": "5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/v8.d.ts": {
+ "version": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "signature": "289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/vm.d.ts": {
+ "version": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "signature": "baf0b82ffc5d2616f44a6fb1f81e8d798545bebf0c30f5d8b003a1dba1acfb3f",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/worker_threads.d.ts": {
+ "version": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "signature": "c6a5b34f1e725019445754f1e733585f113e0dced75f137bd3c4af5853d3f6ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/zlib.d.ts": {
+ "version": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "signature": "15fbe50526244954eb2f933546bca6cdcf0db16c9428d099b3b386c1db5799ab",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": {
+ "version": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "signature": "d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/globals.global.d.ts": {
+ "version": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "signature": "2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1",
+ "affectsGlobalScope": true
+ },
+ "../../../../node_modules/@types/node/wasi.d.ts": {
+ "version": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "signature": "4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": {
+ "version": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "signature": "ad1ae5ae98eceb9af99061e83e867b9897d267aebc8f3b938c9424deabadf4bb",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/assert.d.ts": {
+ "version": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "signature": "d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/base.d.ts": {
+ "version": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "signature": "e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/node/index.d.ts": {
+ "version": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "signature": "5825520e2099309182c6e2a2b3061b060d42a098c58f67d1754880a7e2cce99a",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimatch/index.d.ts": {
+ "version": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "signature": "1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/glob/index.d.ts": {
+ "version": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "signature": "393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/minimist/index.d.ts": {
+ "version": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "signature": "3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts": {
+ "version": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "signature": "c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613",
+ "affectsGlobalScope": false
+ },
+ "../../../../node_modules/@types/parse-json/index.d.ts": {
+ "version": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "signature": "2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",
+ "affectsGlobalScope": false
+ }
+ },
+ "options": {
+ "declaration": false,
+ "declarationMap": false,
+ "sourceMap": true,
+ "target": 4,
+ "module": 5,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": 2,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "composite": false,
+ "outDir": "./",
+ "declarationDir": "../..",
+ "incremental": true,
+ "configFilePath": "../../tsconfig.bundle.json"
+ },
+ "referencedMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../index.ts"
+ ]
+ },
+ "exportedModulesMap": {
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts": [
+ "../../../../node_modules/@types/har-format/index.d.ts"
+ ],
+ "../../../../node_modules/@types/chrome/index.d.ts": [
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts"
+ ],
+ "../../../../node_modules/@types/filesystem/index.d.ts": [
+ "../../../../node_modules/@types/filewriter/index.d.ts"
+ ],
+ "../../../../node_modules/@types/glob/index.d.ts": [
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts"
+ ],
+ "../../../../node_modules/@types/node/base.d.ts": [
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/child_process.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/cluster.d.ts": [
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/console.d.ts": [
+ "../../../../node_modules/@types/node/util.d.ts"
+ ],
+ "../../../../node_modules/@types/node/constants.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts"
+ ],
+ "../../../../node_modules/@types/node/crypto.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/dgram.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/domain.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/fs/promises.d.ts": [
+ "../../../../node_modules/@types/node/fs.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/http2.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/https.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/index.d.ts": [
+ "../../../../node_modules/@types/node/base.d.ts"
+ ],
+ "../../../../node_modules/@types/node/inspector.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/module.d.ts": [
+ "../../../../node_modules/@types/node/url.d.ts"
+ ],
+ "../../../../node_modules/@types/node/net.d.ts": [
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/perf_hooks.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts"
+ ],
+ "../../../../node_modules/@types/node/process.d.ts": [
+ "../../../../node_modules/@types/node/tty.d.ts"
+ ],
+ "../../../../node_modules/@types/node/readline.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/repl.d.ts": [
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/stream.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tls.d.ts": [
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts": [
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts"
+ ],
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts": [
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts"
+ ],
+ "../../../../node_modules/@types/node/tty.d.ts": [
+ "../../../../node_modules/@types/node/net.d.ts"
+ ],
+ "../../../../node_modules/@types/node/url.d.ts": [
+ "../../../../node_modules/@types/node/querystring.d.ts"
+ ],
+ "../../../../node_modules/@types/node/v8.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../../../node_modules/@types/node/worker_threads.d.ts": [
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts"
+ ],
+ "../../../../node_modules/@types/node/zlib.d.ts": [
+ "../../../../node_modules/@types/node/stream.d.ts"
+ ],
+ "../../index.test.ts": [
+ "../../../../node_modules/@types/mocha/index.d.ts"
+ ]
+ },
+ "semanticDiagnosticsPerFile": [
+ "../../../../node_modules/@types/benchmark/index.d.ts",
+ "../../../../node_modules/@types/chai/index.d.ts",
+ "../../../../node_modules/@types/chrome/har-format/index.d.ts",
+ "../../../../node_modules/@types/chrome/index.d.ts",
+ "../../../../node_modules/@types/command-line-args/index.d.ts",
+ "../../../../node_modules/@types/command-line-usage/index.d.ts",
+ "../../../../node_modules/@types/filesystem/index.d.ts",
+ "../../../../node_modules/@types/filewriter/index.d.ts",
+ "../../../../node_modules/@types/firefox-webext-browser/index.d.ts",
+ "../../../../node_modules/@types/glob/index.d.ts",
+ "../../../../node_modules/@types/har-format/index.d.ts",
+ "../../../../node_modules/@types/minimatch/index.d.ts",
+ "../../../../node_modules/@types/minimist/index.d.ts",
+ "../../../../node_modules/@types/mocha/index.d.ts",
+ "../../../../node_modules/@types/node/assert.d.ts",
+ "../../../../node_modules/@types/node/async_hooks.d.ts",
+ "../../../../node_modules/@types/node/base.d.ts",
+ "../../../../node_modules/@types/node/buffer.d.ts",
+ "../../../../node_modules/@types/node/child_process.d.ts",
+ "../../../../node_modules/@types/node/cluster.d.ts",
+ "../../../../node_modules/@types/node/console.d.ts",
+ "../../../../node_modules/@types/node/constants.d.ts",
+ "../../../../node_modules/@types/node/crypto.d.ts",
+ "../../../../node_modules/@types/node/dgram.d.ts",
+ "../../../../node_modules/@types/node/dns.d.ts",
+ "../../../../node_modules/@types/node/domain.d.ts",
+ "../../../../node_modules/@types/node/events.d.ts",
+ "../../../../node_modules/@types/node/fs.d.ts",
+ "../../../../node_modules/@types/node/fs/promises.d.ts",
+ "../../../../node_modules/@types/node/globals.d.ts",
+ "../../../../node_modules/@types/node/globals.global.d.ts",
+ "../../../../node_modules/@types/node/http.d.ts",
+ "../../../../node_modules/@types/node/http2.d.ts",
+ "../../../../node_modules/@types/node/https.d.ts",
+ "../../../../node_modules/@types/node/index.d.ts",
+ "../../../../node_modules/@types/node/inspector.d.ts",
+ "../../../../node_modules/@types/node/module.d.ts",
+ "../../../../node_modules/@types/node/net.d.ts",
+ "../../../../node_modules/@types/node/os.d.ts",
+ "../../../../node_modules/@types/node/path.d.ts",
+ "../../../../node_modules/@types/node/perf_hooks.d.ts",
+ "../../../../node_modules/@types/node/process.d.ts",
+ "../../../../node_modules/@types/node/punycode.d.ts",
+ "../../../../node_modules/@types/node/querystring.d.ts",
+ "../../../../node_modules/@types/node/readline.d.ts",
+ "../../../../node_modules/@types/node/repl.d.ts",
+ "../../../../node_modules/@types/node/stream.d.ts",
+ "../../../../node_modules/@types/node/string_decoder.d.ts",
+ "../../../../node_modules/@types/node/timers.d.ts",
+ "../../../../node_modules/@types/node/tls.d.ts",
+ "../../../../node_modules/@types/node/trace_events.d.ts",
+ "../../../../node_modules/@types/node/ts3.4/base.d.ts",
+ "../../../../node_modules/@types/node/ts3.6/base.d.ts",
+ "../../../../node_modules/@types/node/tty.d.ts",
+ "../../../../node_modules/@types/node/url.d.ts",
+ "../../../../node_modules/@types/node/util.d.ts",
+ "../../../../node_modules/@types/node/v8.d.ts",
+ "../../../../node_modules/@types/node/vm.d.ts",
+ "../../../../node_modules/@types/node/wasi.d.ts",
+ "../../../../node_modules/@types/node/worker_threads.d.ts",
+ "../../../../node_modules/@types/node/zlib.d.ts",
+ "../../../../node_modules/@types/normalize-package-data/index.d.ts",
+ "../../../../node_modules/@types/parse-json/index.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.d.ts",
+ "../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.core.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2016.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.full.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.object.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.string.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
+ "../../../../node_modules/typescript/lib/lib.es5.d.ts",
+ "../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts",
+ "../../../../node_modules/typescript/lib/lib.scripthost.d.ts",
+ "../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts",
+ "../../index.test.ts",
+ "../../index.ts"
+ ]
+ },
+ "version": "4.0.5"
+} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/types/index.d.ts b/client/node_modules/@remusao/trie/dist/types/index.d.ts
new file mode 100644
index 0000000..401c7d5
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/types/index.d.ts
@@ -0,0 +1,7 @@
+export interface Trie {
+ chars: Map<number, Trie>;
+ code: number | undefined;
+}
+export declare function create(strings: readonly string[]): Trie;
+export declare function lookup(trie: Trie, str: string): boolean;
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/types/index.d.ts.map b/client/node_modules/@remusao/trie/dist/types/index.d.ts.map
new file mode 100644
index 0000000..4e216fa
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/types/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AASD,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAiBvD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAWvD"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/types/index.test.d.ts b/client/node_modules/@remusao/trie/dist/types/index.test.d.ts
new file mode 100644
index 0000000..e317bf3
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/types/index.test.d.ts
@@ -0,0 +1,2 @@
+import 'mocha';
+//# sourceMappingURL=index.test.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/dist/types/index.test.d.ts.map b/client/node_modules/@remusao/trie/dist/types/index.test.d.ts.map
new file mode 100644
index 0000000..e6be91f
--- /dev/null
+++ b/client/node_modules/@remusao/trie/dist/types/index.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/@remusao/trie/package.json b/client/node_modules/@remusao/trie/package.json
new file mode 100644
index 0000000..b36aef0
--- /dev/null
+++ b/client/node_modules/@remusao/trie/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "@remusao/trie",
+ "version": "1.4.1",
+ "description": "A tiny trie implementation",
+ "author": "Rémi Berson <remi@cliqz.com>",
+ "homepage": "https://github.com/remusao/mono#readme",
+ "license": "MPL-2.0",
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/remusao/mono.git",
+ "directory": "packages/trie"
+ },
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "lint": "tslint --config ../../tslint.json --project ./tsconfig.json",
+ "build": "tsc --build ./tsconfig.json",
+ "watch": "tsc --build ./tsconfig.json --watch",
+ "bundle": "tsc --build ./tsconfig.bundle.json",
+ "prebundle": "yarn build",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha ./dist/cjs/index.test.js"
+ },
+ "bugs": {
+ "url": "https://github.com/remusao/mono/issues"
+ },
+ "devDependencies": {
+ "@types/chai": "^4.2.8",
+ "@types/mocha": "^8.0.0",
+ "chai": "^4.2.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "rimraf": "^3.0.0",
+ "tslint": "^6.0.0",
+ "tslint-config-prettier": "^1.18.0",
+ "typescript": "^4.0.2"
+ },
+ "gitHead": "399e0a86376ea8ec011207161ab5b37bcb4e27fe"
+}
diff --git a/client/node_modules/@sindresorhus/is/dist/index.d.ts b/client/node_modules/@sindresorhus/is/dist/index.d.ts
new file mode 100644
index 0000000..dbb8cbd
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/dist/index.d.ts
@@ -0,0 +1,232 @@
+/// <reference types="node" />
+/// <reference lib="es2018" />
+/// <reference lib="dom" />
+import { Class, Falsy, TypedArray, ObservableLike, Primitive } from './types';
+declare const objectTypeNames: readonly ["Function", "Generator", "AsyncGenerator", "GeneratorFunction", "AsyncGeneratorFunction", "AsyncFunction", "Observable", "Array", "Buffer", "Blob", "Object", "RegExp", "Date", "Error", "Map", "Set", "WeakMap", "WeakSet", "ArrayBuffer", "SharedArrayBuffer", "DataView", "Promise", "URL", "FormData", "URLSearchParams", "HTMLElement", ...("Int8Array" | "Uint8Array" | "Uint8ClampedArray" | "Int16Array" | "Uint16Array" | "Int32Array" | "Uint32Array" | "Float32Array" | "Float64Array" | "BigInt64Array" | "BigUint64Array")[]];
+declare type ObjectTypeName = typeof objectTypeNames[number];
+declare const primitiveTypeNames: readonly ["null", "undefined", "string", "number", "bigint", "boolean", "symbol"];
+declare type PrimitiveTypeName = typeof primitiveTypeNames[number];
+export declare type TypeName = ObjectTypeName | PrimitiveTypeName;
+declare function is(value: unknown): TypeName;
+declare namespace is {
+ var undefined: (value: unknown) => value is undefined;
+ var string: (value: unknown) => value is string;
+ var number: (value: unknown) => value is number;
+ var bigint: (value: unknown) => value is bigint;
+ var function_: (value: unknown) => value is Function;
+ var null_: (value: unknown) => value is null;
+ var class_: (value: unknown) => value is Class<unknown, any[]>;
+ var boolean: (value: unknown) => value is boolean;
+ var symbol: (value: unknown) => value is symbol;
+ var numericString: (value: unknown) => value is string;
+ var array: <T = unknown>(value: unknown, assertion?: ((value: T) => value is T) | undefined) => value is T[];
+ var buffer: (value: unknown) => value is Buffer;
+ var blob: (value: unknown) => value is Blob;
+ var nullOrUndefined: (value: unknown) => value is null | undefined;
+ var object: (value: unknown) => value is object;
+ var iterable: <T = unknown>(value: unknown) => value is Iterable<T>;
+ var asyncIterable: <T = unknown>(value: unknown) => value is AsyncIterable<T>;
+ var generator: (value: unknown) => value is Generator<unknown, any, unknown>;
+ var asyncGenerator: (value: unknown) => value is AsyncGenerator<unknown, any, unknown>;
+ var nativePromise: <T = unknown>(value: unknown) => value is Promise<T>;
+ var promise: <T = unknown>(value: unknown) => value is Promise<T>;
+ var generatorFunction: (value: unknown) => value is GeneratorFunction;
+ var asyncGeneratorFunction: (value: unknown) => value is (...args: any[]) => Promise<unknown>;
+ var asyncFunction: <T = unknown>(value: unknown) => value is (...args: any[]) => Promise<T>;
+ var boundFunction: (value: unknown) => value is Function;
+ var regExp: (value: unknown) => value is RegExp;
+ var date: (value: unknown) => value is Date;
+ var error: (value: unknown) => value is Error;
+ var map: <Key = unknown, Value = unknown>(value: unknown) => value is Map<Key, Value>;
+ var set: <T = unknown>(value: unknown) => value is Set<T>;
+ var weakMap: <Key extends object = object, Value = unknown>(value: unknown) => value is WeakMap<Key, Value>;
+ var weakSet: (value: unknown) => value is WeakSet<object>;
+ var int8Array: (value: unknown) => value is Int8Array;
+ var uint8Array: (value: unknown) => value is Uint8Array;
+ var uint8ClampedArray: (value: unknown) => value is Uint8ClampedArray;
+ var int16Array: (value: unknown) => value is Int16Array;
+ var uint16Array: (value: unknown) => value is Uint16Array;
+ var int32Array: (value: unknown) => value is Int32Array;
+ var uint32Array: (value: unknown) => value is Uint32Array;
+ var float32Array: (value: unknown) => value is Float32Array;
+ var float64Array: (value: unknown) => value is Float64Array;
+ var bigInt64Array: (value: unknown) => value is BigInt64Array;
+ var bigUint64Array: (value: unknown) => value is BigUint64Array;
+ var arrayBuffer: (value: unknown) => value is ArrayBuffer;
+ var sharedArrayBuffer: (value: unknown) => value is SharedArrayBuffer;
+ var dataView: (value: unknown) => value is DataView;
+ var enumCase: <T = unknown>(value: unknown, targetEnum: T) => boolean;
+ var directInstanceOf: <T>(instance: unknown, class_: Class<T, any[]>) => instance is T;
+ var urlInstance: (value: unknown) => value is URL;
+ var urlString: (value: unknown) => value is string;
+ var truthy: <T>(value: false | "" | 0 | 0n | T | null | undefined) => value is T;
+ var falsy: <T>(value: false | "" | 0 | 0n | T | null | undefined) => value is Falsy;
+ var nan: (value: unknown) => boolean;
+ var primitive: (value: unknown) => value is Primitive;
+ var integer: (value: unknown) => value is number;
+ var safeInteger: (value: unknown) => value is number;
+ var plainObject: <Value = unknown>(value: unknown) => value is Record<string | number | symbol, Value>;
+ var typedArray: (value: unknown) => value is TypedArray;
+ var arrayLike: <T = unknown>(value: unknown) => value is ArrayLike<T>;
+ var inRange: (value: number, range: number | number[]) => value is number;
+ var domElement: (value: unknown) => value is HTMLElement;
+ var observable: (value: unknown) => value is ObservableLike;
+ var nodeStream: (value: unknown) => value is NodeStream;
+ var infinite: (value: unknown) => value is number;
+ var evenInteger: (value: number) => value is number;
+ var oddInteger: (value: number) => value is number;
+ var emptyArray: (value: unknown) => value is never[];
+ var nonEmptyArray: (value: unknown) => value is unknown[];
+ var emptyString: (value: unknown) => value is "";
+ var emptyStringOrWhitespace: (value: unknown) => value is string;
+ var nonEmptyString: (value: unknown) => value is string;
+ var nonEmptyStringAndNotWhitespace: (value: unknown) => value is string;
+ var emptyObject: <Key extends string | number | symbol = string>(value: unknown) => value is Record<Key, never>;
+ var nonEmptyObject: <Key extends string | number | symbol = string, Value = unknown>(value: unknown) => value is Record<Key, Value>;
+ var emptySet: (value: unknown) => value is Set<never>;
+ var nonEmptySet: <T = unknown>(value: unknown) => value is Set<T>;
+ var emptyMap: (value: unknown) => value is Map<never, never>;
+ var nonEmptyMap: <Key = unknown, Value = unknown>(value: unknown) => value is Map<Key, Value>;
+ var propertyKey: (value: unknown) => value is string | number | symbol;
+ var formData: (value: unknown) => value is FormData;
+ var urlSearchParams: (value: unknown) => value is URLSearchParams;
+ var any: (predicate: Predicate | Predicate[], ...values: unknown[]) => boolean;
+ var all: (predicate: Predicate, ...values: unknown[]) => boolean;
+}
+export interface ArrayLike<T> {
+ readonly [index: number]: T;
+ readonly length: number;
+}
+export interface NodeStream extends NodeJS.EventEmitter {
+ pipe<T extends NodeJS.WritableStream>(destination: T, options?: {
+ end?: boolean;
+ }): T;
+}
+export declare type Predicate = (value: unknown) => boolean;
+export declare const enum AssertionTypeDescription {
+ class_ = "Class",
+ numericString = "string with a number",
+ nullOrUndefined = "null or undefined",
+ iterable = "Iterable",
+ asyncIterable = "AsyncIterable",
+ nativePromise = "native Promise",
+ urlString = "string with a URL",
+ truthy = "truthy",
+ falsy = "falsy",
+ nan = "NaN",
+ primitive = "primitive",
+ integer = "integer",
+ safeInteger = "integer",
+ plainObject = "plain object",
+ arrayLike = "array-like",
+ typedArray = "TypedArray",
+ domElement = "HTMLElement",
+ nodeStream = "Node.js Stream",
+ infinite = "infinite number",
+ emptyArray = "empty array",
+ nonEmptyArray = "non-empty array",
+ emptyString = "empty string",
+ emptyStringOrWhitespace = "empty string or whitespace",
+ nonEmptyString = "non-empty string",
+ nonEmptyStringAndNotWhitespace = "non-empty string and not whitespace",
+ emptyObject = "empty object",
+ nonEmptyObject = "non-empty object",
+ emptySet = "empty set",
+ nonEmptySet = "non-empty set",
+ emptyMap = "empty map",
+ nonEmptyMap = "non-empty map",
+ evenInteger = "even integer",
+ oddInteger = "odd integer",
+ directInstanceOf = "T",
+ inRange = "in range",
+ any = "predicate returns truthy for any value",
+ all = "predicate returns truthy for all values"
+}
+interface Assert {
+ undefined: (value: unknown) => asserts value is undefined;
+ string: (value: unknown) => asserts value is string;
+ number: (value: unknown) => asserts value is number;
+ bigint: (value: unknown) => asserts value is bigint;
+ function_: (value: unknown) => asserts value is Function;
+ null_: (value: unknown) => asserts value is null;
+ class_: (value: unknown) => asserts value is Class;
+ boolean: (value: unknown) => asserts value is boolean;
+ symbol: (value: unknown) => asserts value is symbol;
+ numericString: (value: unknown) => asserts value is string;
+ array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T) => asserts value is T[];
+ buffer: (value: unknown) => asserts value is Buffer;
+ blob: (value: unknown) => asserts value is Blob;
+ nullOrUndefined: (value: unknown) => asserts value is null | undefined;
+ object: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
+ iterable: <T = unknown>(value: unknown) => asserts value is Iterable<T>;
+ asyncIterable: <T = unknown>(value: unknown) => asserts value is AsyncIterable<T>;
+ generator: (value: unknown) => asserts value is Generator;
+ asyncGenerator: (value: unknown) => asserts value is AsyncGenerator;
+ nativePromise: <T = unknown>(value: unknown) => asserts value is Promise<T>;
+ promise: <T = unknown>(value: unknown) => asserts value is Promise<T>;
+ generatorFunction: (value: unknown) => asserts value is GeneratorFunction;
+ asyncGeneratorFunction: (value: unknown) => asserts value is AsyncGeneratorFunction;
+ asyncFunction: (value: unknown) => asserts value is Function;
+ boundFunction: (value: unknown) => asserts value is Function;
+ regExp: (value: unknown) => asserts value is RegExp;
+ date: (value: unknown) => asserts value is Date;
+ error: (value: unknown) => asserts value is Error;
+ map: <Key = unknown, Value = unknown>(value: unknown) => asserts value is Map<Key, Value>;
+ set: <T = unknown>(value: unknown) => asserts value is Set<T>;
+ weakMap: <Key extends object = object, Value = unknown>(value: unknown) => asserts value is WeakMap<Key, Value>;
+ weakSet: <T extends object = object>(value: unknown) => asserts value is WeakSet<T>;
+ int8Array: (value: unknown) => asserts value is Int8Array;
+ uint8Array: (value: unknown) => asserts value is Uint8Array;
+ uint8ClampedArray: (value: unknown) => asserts value is Uint8ClampedArray;
+ int16Array: (value: unknown) => asserts value is Int16Array;
+ uint16Array: (value: unknown) => asserts value is Uint16Array;
+ int32Array: (value: unknown) => asserts value is Int32Array;
+ uint32Array: (value: unknown) => asserts value is Uint32Array;
+ float32Array: (value: unknown) => asserts value is Float32Array;
+ float64Array: (value: unknown) => asserts value is Float64Array;
+ bigInt64Array: (value: unknown) => asserts value is BigInt64Array;
+ bigUint64Array: (value: unknown) => asserts value is BigUint64Array;
+ arrayBuffer: (value: unknown) => asserts value is ArrayBuffer;
+ sharedArrayBuffer: (value: unknown) => asserts value is SharedArrayBuffer;
+ dataView: (value: unknown) => asserts value is DataView;
+ enumCase: <T = unknown>(value: unknown, targetEnum: T) => asserts value is T[keyof T];
+ urlInstance: (value: unknown) => asserts value is URL;
+ urlString: (value: unknown) => asserts value is string;
+ truthy: (value: unknown) => asserts value is unknown;
+ falsy: (value: unknown) => asserts value is unknown;
+ nan: (value: unknown) => asserts value is unknown;
+ primitive: (value: unknown) => asserts value is Primitive;
+ integer: (value: unknown) => asserts value is number;
+ safeInteger: (value: unknown) => asserts value is number;
+ plainObject: <Value = unknown>(value: unknown) => asserts value is Record<PropertyKey, Value>;
+ typedArray: (value: unknown) => asserts value is TypedArray;
+ arrayLike: <T = unknown>(value: unknown) => asserts value is ArrayLike<T>;
+ domElement: (value: unknown) => asserts value is HTMLElement;
+ observable: (value: unknown) => asserts value is ObservableLike;
+ nodeStream: (value: unknown) => asserts value is NodeStream;
+ infinite: (value: unknown) => asserts value is number;
+ emptyArray: (value: unknown) => asserts value is never[];
+ nonEmptyArray: (value: unknown) => asserts value is unknown[];
+ emptyString: (value: unknown) => asserts value is '';
+ emptyStringOrWhitespace: (value: unknown) => asserts value is string;
+ nonEmptyString: (value: unknown) => asserts value is string;
+ nonEmptyStringAndNotWhitespace: (value: unknown) => asserts value is string;
+ emptyObject: <Key extends keyof any = string>(value: unknown) => asserts value is Record<Key, never>;
+ nonEmptyObject: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
+ emptySet: (value: unknown) => asserts value is Set<never>;
+ nonEmptySet: <T = unknown>(value: unknown) => asserts value is Set<T>;
+ emptyMap: (value: unknown) => asserts value is Map<never, never>;
+ nonEmptyMap: <Key = unknown, Value = unknown>(value: unknown) => asserts value is Map<Key, Value>;
+ propertyKey: (value: unknown) => asserts value is PropertyKey;
+ formData: (value: unknown) => asserts value is FormData;
+ urlSearchParams: (value: unknown) => asserts value is URLSearchParams;
+ evenInteger: (value: number) => asserts value is number;
+ oddInteger: (value: number) => asserts value is number;
+ directInstanceOf: <T>(instance: unknown, class_: Class<T>) => asserts instance is T;
+ inRange: (value: number, range: number | number[]) => asserts value is number;
+ any: (predicate: Predicate | Predicate[], ...values: unknown[]) => void | never;
+ all: (predicate: Predicate, ...values: unknown[]) => void | never;
+}
+export declare const assert: Assert;
+export default is;
+export { Class, TypedArray, ObservableLike, Primitive } from './types';
diff --git a/client/node_modules/@sindresorhus/is/dist/index.js b/client/node_modules/@sindresorhus/is/dist/index.js
new file mode 100644
index 0000000..a80df87
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/dist/index.js
@@ -0,0 +1,434 @@
+"use strict";
+/// <reference lib="es2018"/>
+/// <reference lib="dom"/>
+/// <reference types="node"/>
+Object.defineProperty(exports, "__esModule", { value: true });
+const typedArrayTypeNames = [
+ 'Int8Array',
+ 'Uint8Array',
+ 'Uint8ClampedArray',
+ 'Int16Array',
+ 'Uint16Array',
+ 'Int32Array',
+ 'Uint32Array',
+ 'Float32Array',
+ 'Float64Array',
+ 'BigInt64Array',
+ 'BigUint64Array'
+];
+function isTypedArrayName(name) {
+ return typedArrayTypeNames.includes(name);
+}
+const objectTypeNames = [
+ 'Function',
+ 'Generator',
+ 'AsyncGenerator',
+ 'GeneratorFunction',
+ 'AsyncGeneratorFunction',
+ 'AsyncFunction',
+ 'Observable',
+ 'Array',
+ 'Buffer',
+ 'Blob',
+ 'Object',
+ 'RegExp',
+ 'Date',
+ 'Error',
+ 'Map',
+ 'Set',
+ 'WeakMap',
+ 'WeakSet',
+ 'ArrayBuffer',
+ 'SharedArrayBuffer',
+ 'DataView',
+ 'Promise',
+ 'URL',
+ 'FormData',
+ 'URLSearchParams',
+ 'HTMLElement',
+ ...typedArrayTypeNames
+];
+function isObjectTypeName(name) {
+ return objectTypeNames.includes(name);
+}
+const primitiveTypeNames = [
+ 'null',
+ 'undefined',
+ 'string',
+ 'number',
+ 'bigint',
+ 'boolean',
+ 'symbol'
+];
+function isPrimitiveTypeName(name) {
+ return primitiveTypeNames.includes(name);
+}
+// eslint-disable-next-line @typescript-eslint/ban-types
+function isOfType(type) {
+ return (value) => typeof value === type;
+}
+const { toString } = Object.prototype;
+const getObjectType = (value) => {
+ const objectTypeName = toString.call(value).slice(8, -1);
+ if (/HTML\w+Element/.test(objectTypeName) && is.domElement(value)) {
+ return 'HTMLElement';
+ }
+ if (isObjectTypeName(objectTypeName)) {
+ return objectTypeName;
+ }
+ return undefined;
+};
+const isObjectOfType = (type) => (value) => getObjectType(value) === type;
+function is(value) {
+ if (value === null) {
+ return 'null';
+ }
+ switch (typeof value) {
+ case 'undefined':
+ return 'undefined';
+ case 'string':
+ return 'string';
+ case 'number':
+ return 'number';
+ case 'boolean':
+ return 'boolean';
+ case 'function':
+ return 'Function';
+ case 'bigint':
+ return 'bigint';
+ case 'symbol':
+ return 'symbol';
+ default:
+ }
+ if (is.observable(value)) {
+ return 'Observable';
+ }
+ if (is.array(value)) {
+ return 'Array';
+ }
+ if (is.buffer(value)) {
+ return 'Buffer';
+ }
+ const tagType = getObjectType(value);
+ if (tagType) {
+ return tagType;
+ }
+ if (value instanceof String || value instanceof Boolean || value instanceof Number) {
+ throw new TypeError('Please don\'t use object wrappers for primitive types');
+ }
+ return 'Object';
+}
+is.undefined = isOfType('undefined');
+is.string = isOfType('string');
+const isNumberType = isOfType('number');
+is.number = (value) => isNumberType(value) && !is.nan(value);
+is.bigint = isOfType('bigint');
+// eslint-disable-next-line @typescript-eslint/ban-types
+is.function_ = isOfType('function');
+is.null_ = (value) => value === null;
+is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
+is.boolean = (value) => value === true || value === false;
+is.symbol = isOfType('symbol');
+is.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
+is.array = (value, assertion) => {
+ if (!Array.isArray(value)) {
+ return false;
+ }
+ if (!is.function_(assertion)) {
+ return true;
+ }
+ return value.every(assertion);
+};
+is.buffer = (value) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.isBuffer) === null || _c === void 0 ? void 0 : _c.call(_b, value)) !== null && _d !== void 0 ? _d : false; };
+is.blob = (value) => isObjectOfType('Blob')(value);
+is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);
+is.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));
+is.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };
+is.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };
+is.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };
+is.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);
+is.nativePromise = (value) => isObjectOfType('Promise')(value);
+const hasPromiseAPI = (value) => {
+ var _a, _b;
+ return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.then) &&
+ is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.catch);
+};
+is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);
+is.generatorFunction = isObjectOfType('GeneratorFunction');
+is.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';
+is.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';
+// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types
+is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
+is.regExp = isObjectOfType('RegExp');
+is.date = isObjectOfType('Date');
+is.error = isObjectOfType('Error');
+is.map = (value) => isObjectOfType('Map')(value);
+is.set = (value) => isObjectOfType('Set')(value);
+is.weakMap = (value) => isObjectOfType('WeakMap')(value);
+is.weakSet = (value) => isObjectOfType('WeakSet')(value);
+is.int8Array = isObjectOfType('Int8Array');
+is.uint8Array = isObjectOfType('Uint8Array');
+is.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');
+is.int16Array = isObjectOfType('Int16Array');
+is.uint16Array = isObjectOfType('Uint16Array');
+is.int32Array = isObjectOfType('Int32Array');
+is.uint32Array = isObjectOfType('Uint32Array');
+is.float32Array = isObjectOfType('Float32Array');
+is.float64Array = isObjectOfType('Float64Array');
+is.bigInt64Array = isObjectOfType('BigInt64Array');
+is.bigUint64Array = isObjectOfType('BigUint64Array');
+is.arrayBuffer = isObjectOfType('ArrayBuffer');
+is.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');
+is.dataView = isObjectOfType('DataView');
+is.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
+is.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
+is.urlInstance = (value) => isObjectOfType('URL')(value);
+is.urlString = (value) => {
+ if (!is.string(value)) {
+ return false;
+ }
+ try {
+ new URL(value); // eslint-disable-line no-new
+ return true;
+ }
+ catch (_a) {
+ return false;
+ }
+};
+// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`
+is.truthy = (value) => Boolean(value);
+// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`
+is.falsy = (value) => !value;
+is.nan = (value) => Number.isNaN(value);
+is.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);
+is.integer = (value) => Number.isInteger(value);
+is.safeInteger = (value) => Number.isSafeInteger(value);
+is.plainObject = (value) => {
+ // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js
+ if (toString.call(value) !== '[object Object]') {
+ return false;
+ }
+ const prototype = Object.getPrototypeOf(value);
+ return prototype === null || prototype === Object.getPrototypeOf({});
+};
+is.typedArray = (value) => isTypedArrayName(getObjectType(value));
+const isValidLength = (value) => is.safeInteger(value) && value >= 0;
+is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
+is.inRange = (value, range) => {
+ if (is.number(range)) {
+ return value >= Math.min(0, range) && value <= Math.max(range, 0);
+ }
+ if (is.array(range) && range.length === 2) {
+ return value >= Math.min(...range) && value <= Math.max(...range);
+ }
+ throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
+};
+const NODE_TYPE_ELEMENT = 1;
+const DOM_PROPERTIES_TO_CHECK = [
+ 'innerHTML',
+ 'ownerDocument',
+ 'style',
+ 'attributes',
+ 'nodeValue'
+];
+is.domElement = (value) => {
+ return is.object(value) &&
+ value.nodeType === NODE_TYPE_ELEMENT &&
+ is.string(value.nodeName) &&
+ !is.plainObject(value) &&
+ DOM_PROPERTIES_TO_CHECK.every(property => property in value);
+};
+is.observable = (value) => {
+ var _a, _b, _c, _d;
+ if (!value) {
+ return false;
+ }
+ // eslint-disable-next-line no-use-extend-native/no-use-extend-native
+ if (value === ((_b = (_a = value)[Symbol.observable]) === null || _b === void 0 ? void 0 : _b.call(_a))) {
+ return true;
+ }
+ if (value === ((_d = (_c = value)['@@observable']) === null || _d === void 0 ? void 0 : _d.call(_c))) {
+ return true;
+ }
+ return false;
+};
+is.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);
+is.infinite = (value) => value === Infinity || value === -Infinity;
+const isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;
+is.evenInteger = isAbsoluteMod2(0);
+is.oddInteger = isAbsoluteMod2(1);
+is.emptyArray = (value) => is.array(value) && value.length === 0;
+is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
+is.emptyString = (value) => is.string(value) && value.length === 0;
+const isWhiteSpaceString = (value) => is.string(value) && !/\S/.test(value);
+is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
+// TODO: Use `not ''` when the `not` operator is available.
+is.nonEmptyString = (value) => is.string(value) && value.length > 0;
+// TODO: Use `not ''` when the `not` operator is available.
+is.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);
+is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
+// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:
+// - https://github.com/Microsoft/TypeScript/pull/29317
+is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
+is.emptySet = (value) => is.set(value) && value.size === 0;
+is.nonEmptySet = (value) => is.set(value) && value.size > 0;
+is.emptyMap = (value) => is.map(value) && value.size === 0;
+is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
+// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)
+is.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);
+is.formData = (value) => isObjectOfType('FormData')(value);
+is.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);
+const predicateOnArray = (method, predicate, values) => {
+ if (!is.function_(predicate)) {
+ throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
+ }
+ if (values.length === 0) {
+ throw new TypeError('Invalid number of values');
+ }
+ return method.call(values, predicate);
+};
+is.any = (predicate, ...values) => {
+ const predicates = is.array(predicate) ? predicate : [predicate];
+ return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));
+};
+is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
+const assertType = (condition, description, value, options = {}) => {
+ if (!condition) {
+ const { multipleValues } = options;
+ const valuesMessage = multipleValues ?
+ `received values of types ${[
+ ...new Set(value.map(singleValue => `\`${is(singleValue)}\``))
+ ].join(', ')}` :
+ `received value of type \`${is(value)}\``;
+ throw new TypeError(`Expected value which is \`${description}\`, ${valuesMessage}.`);
+ }
+};
+exports.assert = {
+ // Unknowns.
+ undefined: (value) => assertType(is.undefined(value), 'undefined', value),
+ string: (value) => assertType(is.string(value), 'string', value),
+ number: (value) => assertType(is.number(value), 'number', value),
+ bigint: (value) => assertType(is.bigint(value), 'bigint', value),
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ function_: (value) => assertType(is.function_(value), 'Function', value),
+ null_: (value) => assertType(is.null_(value), 'null', value),
+ class_: (value) => assertType(is.class_(value), "Class" /* class_ */, value),
+ boolean: (value) => assertType(is.boolean(value), 'boolean', value),
+ symbol: (value) => assertType(is.symbol(value), 'symbol', value),
+ numericString: (value) => assertType(is.numericString(value), "string with a number" /* numericString */, value),
+ array: (value, assertion) => {
+ const assert = assertType;
+ assert(is.array(value), 'Array', value);
+ if (assertion) {
+ value.forEach(assertion);
+ }
+ },
+ buffer: (value) => assertType(is.buffer(value), 'Buffer', value),
+ blob: (value) => assertType(is.blob(value), 'Blob', value),
+ nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), "null or undefined" /* nullOrUndefined */, value),
+ object: (value) => assertType(is.object(value), 'Object', value),
+ iterable: (value) => assertType(is.iterable(value), "Iterable" /* iterable */, value),
+ asyncIterable: (value) => assertType(is.asyncIterable(value), "AsyncIterable" /* asyncIterable */, value),
+ generator: (value) => assertType(is.generator(value), 'Generator', value),
+ asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),
+ nativePromise: (value) => assertType(is.nativePromise(value), "native Promise" /* nativePromise */, value),
+ promise: (value) => assertType(is.promise(value), 'Promise', value),
+ generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),
+ asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),
+ regExp: (value) => assertType(is.regExp(value), 'RegExp', value),
+ date: (value) => assertType(is.date(value), 'Date', value),
+ error: (value) => assertType(is.error(value), 'Error', value),
+ map: (value) => assertType(is.map(value), 'Map', value),
+ set: (value) => assertType(is.set(value), 'Set', value),
+ weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),
+ weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),
+ int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),
+ uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),
+ uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
+ int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),
+ uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),
+ int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),
+ uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),
+ float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),
+ float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),
+ bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),
+ bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),
+ arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),
+ sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),
+ dataView: (value) => assertType(is.dataView(value), 'DataView', value),
+ enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),
+ urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),
+ urlString: (value) => assertType(is.urlString(value), "string with a URL" /* urlString */, value),
+ truthy: (value) => assertType(is.truthy(value), "truthy" /* truthy */, value),
+ falsy: (value) => assertType(is.falsy(value), "falsy" /* falsy */, value),
+ nan: (value) => assertType(is.nan(value), "NaN" /* nan */, value),
+ primitive: (value) => assertType(is.primitive(value), "primitive" /* primitive */, value),
+ integer: (value) => assertType(is.integer(value), "integer" /* integer */, value),
+ safeInteger: (value) => assertType(is.safeInteger(value), "integer" /* safeInteger */, value),
+ plainObject: (value) => assertType(is.plainObject(value), "plain object" /* plainObject */, value),
+ typedArray: (value) => assertType(is.typedArray(value), "TypedArray" /* typedArray */, value),
+ arrayLike: (value) => assertType(is.arrayLike(value), "array-like" /* arrayLike */, value),
+ domElement: (value) => assertType(is.domElement(value), "HTMLElement" /* domElement */, value),
+ observable: (value) => assertType(is.observable(value), 'Observable', value),
+ nodeStream: (value) => assertType(is.nodeStream(value), "Node.js Stream" /* nodeStream */, value),
+ infinite: (value) => assertType(is.infinite(value), "infinite number" /* infinite */, value),
+ emptyArray: (value) => assertType(is.emptyArray(value), "empty array" /* emptyArray */, value),
+ nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), "non-empty array" /* nonEmptyArray */, value),
+ emptyString: (value) => assertType(is.emptyString(value), "empty string" /* emptyString */, value),
+ emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), "empty string or whitespace" /* emptyStringOrWhitespace */, value),
+ nonEmptyString: (value) => assertType(is.nonEmptyString(value), "non-empty string" /* nonEmptyString */, value),
+ nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), "non-empty string and not whitespace" /* nonEmptyStringAndNotWhitespace */, value),
+ emptyObject: (value) => assertType(is.emptyObject(value), "empty object" /* emptyObject */, value),
+ nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), "non-empty object" /* nonEmptyObject */, value),
+ emptySet: (value) => assertType(is.emptySet(value), "empty set" /* emptySet */, value),
+ nonEmptySet: (value) => assertType(is.nonEmptySet(value), "non-empty set" /* nonEmptySet */, value),
+ emptyMap: (value) => assertType(is.emptyMap(value), "empty map" /* emptyMap */, value),
+ nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), "non-empty map" /* nonEmptyMap */, value),
+ propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),
+ formData: (value) => assertType(is.formData(value), 'FormData', value),
+ urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),
+ // Numbers.
+ evenInteger: (value) => assertType(is.evenInteger(value), "even integer" /* evenInteger */, value),
+ oddInteger: (value) => assertType(is.oddInteger(value), "odd integer" /* oddInteger */, value),
+ // Two arguments.
+ directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), "T" /* directInstanceOf */, instance),
+ inRange: (value, range) => assertType(is.inRange(value, range), "in range" /* inRange */, value),
+ // Variadic functions.
+ any: (predicate, ...values) => {
+ return assertType(is.any(predicate, ...values), "predicate returns truthy for any value" /* any */, values, { multipleValues: true });
+ },
+ all: (predicate, ...values) => assertType(is.all(predicate, ...values), "predicate returns truthy for all values" /* all */, values, { multipleValues: true })
+};
+// Some few keywords are reserved, but we'll populate them for Node.js users
+// See https://github.com/Microsoft/TypeScript/issues/2536
+Object.defineProperties(is, {
+ class: {
+ value: is.class_
+ },
+ function: {
+ value: is.function_
+ },
+ null: {
+ value: is.null_
+ }
+});
+Object.defineProperties(exports.assert, {
+ class: {
+ value: exports.assert.class_
+ },
+ function: {
+ value: exports.assert.function_
+ },
+ null: {
+ value: exports.assert.null_
+ }
+});
+exports.default = is;
+// For CommonJS default export support
+module.exports = is;
+module.exports.default = is;
+module.exports.assert = exports.assert;
diff --git a/client/node_modules/@sindresorhus/is/dist/types.d.ts b/client/node_modules/@sindresorhus/is/dist/types.d.ts
new file mode 100644
index 0000000..b4fae5d
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/dist/types.d.ts
@@ -0,0 +1,25 @@
+/**
+Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
+*/
+export declare type Primitive = null | undefined | string | number | boolean | symbol | bigint;
+/**
+Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
+*/
+export declare type Class<T = unknown, Arguments extends any[] = any[]> = new (...arguments_: Arguments) => T;
+/**
+Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
+*/
+export declare type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
+declare global {
+ interface SymbolConstructor {
+ readonly observable: symbol;
+ }
+}
+/**
+Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
+*/
+export interface ObservableLike {
+ subscribe(observer: (value: unknown) => void): void;
+ [Symbol.observable](): ObservableLike;
+}
+export declare type Falsy = false | 0 | 0n | '' | null | undefined;
diff --git a/client/node_modules/@sindresorhus/is/dist/types.js b/client/node_modules/@sindresorhus/is/dist/types.js
new file mode 100644
index 0000000..0930323
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/dist/types.js
@@ -0,0 +1,3 @@
+"use strict";
+// Extracted from https://github.com/sindresorhus/type-fest/blob/78019f42ea888b0cdceb41a4a78163868de57555/index.d.ts
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/client/node_modules/@sindresorhus/is/license b/client/node_modules/@sindresorhus/is/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/@sindresorhus/is/package.json b/client/node_modules/@sindresorhus/is/package.json
new file mode 100644
index 0000000..8052a87
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/package.json
@@ -0,0 +1,96 @@
+{
+ "name": "@sindresorhus/is",
+ "version": "4.6.0",
+ "description": "Type check values",
+ "license": "MIT",
+ "repository": "sindresorhus/is",
+ "funding": "https://github.com/sindresorhus/is?sponsor=1",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "main": "dist/index.js",
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "build": "del dist && tsc",
+ "test": "xo && ava",
+ "prepare": "npm run build"
+ },
+ "files": [
+ "dist"
+ ],
+ "keywords": [
+ "type",
+ "types",
+ "is",
+ "check",
+ "checking",
+ "validate",
+ "validation",
+ "utility",
+ "util",
+ "typeof",
+ "instanceof",
+ "object",
+ "assert",
+ "assertion",
+ "test",
+ "kind",
+ "primitive",
+ "verify",
+ "compare",
+ "typescript",
+ "typeguards",
+ "types"
+ ],
+ "devDependencies": {
+ "@sindresorhus/tsconfig": "^0.7.0",
+ "@types/jsdom": "^16.1.0",
+ "@types/node": "^14.0.13",
+ "@types/zen-observable": "^0.8.0",
+ "@typescript-eslint/eslint-plugin": "^2.20.0",
+ "@typescript-eslint/parser": "^2.20.0",
+ "ava": "^3.3.0",
+ "del-cli": "^2.0.0",
+ "eslint-config-xo-typescript": "^0.26.0",
+ "jsdom": "^16.0.1",
+ "rxjs": "^6.4.0",
+ "tempy": "^0.4.0",
+ "ts-node": "^8.3.0",
+ "typescript": "~3.8.2",
+ "xo": "^0.26.1",
+ "zen-observable": "^0.8.8"
+ },
+ "types": "dist/index.d.ts",
+ "sideEffects": false,
+ "ava": {
+ "extensions": [
+ "ts"
+ ],
+ "require": [
+ "ts-node/register"
+ ]
+ },
+ "xo": {
+ "extends": "xo-typescript",
+ "extensions": [
+ "ts"
+ ],
+ "parserOptions": {
+ "project": "./tsconfig.xo.json"
+ },
+ "globals": [
+ "BigInt",
+ "BigInt64Array",
+ "BigUint64Array"
+ ],
+ "rules": {
+ "@typescript-eslint/promise-function-async": "off",
+ "@typescript-eslint/no-empty-function": "off",
+ "@typescript-eslint/explicit-function-return-type": "off"
+ }
+ }
+}
diff --git a/client/node_modules/@sindresorhus/is/readme.md b/client/node_modules/@sindresorhus/is/readme.md
new file mode 100644
index 0000000..05a291a
--- /dev/null
+++ b/client/node_modules/@sindresorhus/is/readme.md
@@ -0,0 +1,669 @@
+# is
+
+> Type check values
+
+For example, `is.string('🦄') //=> true`
+
+<img src="header.gif" width="182" align="right">
+
+## Highlights
+
+- Written in TypeScript
+- [Extensive use of type guards](#type-guards)
+- [Supports type assertions](#type-assertions)
+- [Aware of generic type parameters](#generic-type-parameters) (use with caution)
+- Actively maintained
+- ![Millions of downloads per week](https://img.shields.io/npm/dw/@sindresorhus/is)
+
+## Install
+
+```sh
+npm install @sindresorhus/is
+```
+
+## Usage
+
+```js
+const is = require('@sindresorhus/is');
+
+is('🦄');
+//=> 'string'
+
+is(new Map());
+//=> 'Map'
+
+is.number(6);
+//=> true
+```
+
+[Assertions](#type-assertions) perform the same type checks, but throw an error if the type does not match.
+
+```js
+const {assert} = require('@sindresorhus/is');
+
+assert.string(2);
+//=> Error: Expected value which is `string`, received value of type `number`.
+```
+
+And with TypeScript:
+
+```ts
+import {assert} from '@sindresorhus/is';
+
+assert.string(foo);
+// `foo` is now typed as a `string`.
+```
+
+## API
+
+### is(value)
+
+Returns the type of `value`.
+
+Primitives are lowercase and object types are camelcase.
+
+Example:
+
+- `'undefined'`
+- `'null'`
+- `'string'`
+- `'symbol'`
+- `'Array'`
+- `'Function'`
+- `'Object'`
+
+Note: It will throw an error if you try to feed it object-wrapped primitives, as that's a bad practice. For example `new String('foo')`.
+
+### is.{method}
+
+All the below methods accept a value and returns a boolean for whether the value is of the desired type.
+
+#### Primitives
+
+##### .undefined(value)
+##### .null(value)
+
+**Note:** TypeScript users must use `.null_()` because of a TypeScript naming limitation.
+
+##### .string(value)
+##### .number(value)
+
+Note: `is.number(NaN)` returns `false`. This intentionally deviates from `typeof` behavior to increase user-friendliness of `is` type checks.
+
+##### .boolean(value)
+##### .symbol(value)
+##### .bigint(value)
+
+#### Built-in types
+
+##### .array(value, assertion?)
+
+Returns true if `value` is an array and all of its items match the assertion (if provided).
+
+```js
+is.array(value); // Validate `value` is an array.
+is.array(value, is.number); // Validate `value` is an array and all of its items are numbers.
+```
+
+##### .function(value)
+
+**Note:** TypeScript users must use `.function_()` because of a TypeScript naming limitation.
+
+##### .buffer(value)
+##### .blob(value)
+##### .object(value)
+
+Keep in mind that [functions are objects too](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions).
+
+##### .numericString(value)
+
+Returns `true` for a string that represents a number satisfying `is.number`, for example, `'42'` and `'-8.3'`.
+
+Note: `'NaN'` returns `false`, but `'Infinity'` and `'-Infinity'` return `true`.
+
+##### .regExp(value)
+##### .date(value)
+##### .error(value)
+##### .nativePromise(value)
+##### .promise(value)
+
+Returns `true` for any object with a `.then()` and `.catch()` method. Prefer this one over `.nativePromise()` as you usually want to allow userland promise implementations too.
+
+##### .generator(value)
+
+Returns `true` for any object that implements its own `.next()` and `.throw()` methods and has a function definition for `Symbol.iterator`.
+
+##### .generatorFunction(value)
+
+##### .asyncFunction(value)
+
+Returns `true` for any `async` function that can be called with the `await` operator.
+
+```js
+is.asyncFunction(async () => {});
+//=> true
+
+is.asyncFunction(() => {});
+//=> false
+```
+
+##### .asyncGenerator(value)
+
+```js
+is.asyncGenerator(
+ (async function * () {
+ yield 4;
+ })()
+);
+//=> true
+
+is.asyncGenerator(
+ (function * () {
+ yield 4;
+ })()
+);
+//=> false
+```
+
+##### .asyncGeneratorFunction(value)
+
+```js
+is.asyncGeneratorFunction(async function * () {
+ yield 4;
+});
+//=> true
+
+is.asyncGeneratorFunction(function * () {
+ yield 4;
+});
+//=> false
+```
+
+##### .boundFunction(value)
+
+Returns `true` for any `bound` function.
+
+```js
+is.boundFunction(() => {});
+//=> true
+
+is.boundFunction(function () {}.bind(null));
+//=> true
+
+is.boundFunction(function () {});
+//=> false
+```
+
+##### .map(value)
+##### .set(value)
+##### .weakMap(value)
+##### .weakSet(value)
+
+#### Typed arrays
+
+##### .int8Array(value)
+##### .uint8Array(value)
+##### .uint8ClampedArray(value)
+##### .int16Array(value)
+##### .uint16Array(value)
+##### .int32Array(value)
+##### .uint32Array(value)
+##### .float32Array(value)
+##### .float64Array(value)
+##### .bigInt64Array(value)
+##### .bigUint64Array(value)
+
+#### Structured data
+
+##### .arrayBuffer(value)
+##### .sharedArrayBuffer(value)
+##### .dataView(value)
+
+##### .enumCase(value, enum)
+
+TypeScript-only. Returns `true` if `value` is a member of `enum`.
+
+```ts
+enum Direction {
+ Ascending = 'ascending',
+ Descending = 'descending'
+}
+
+is.enumCase('ascending', Direction);
+//=> true
+
+is.enumCase('other', Direction);
+//=> false
+```
+
+#### Emptiness
+
+##### .emptyString(value)
+
+Returns `true` if the value is a `string` and the `.length` is 0.
+
+##### .emptyStringOrWhitespace(value)
+
+Returns `true` if `is.emptyString(value)` or if it's a `string` that is all whitespace.
+
+##### .nonEmptyString(value)
+
+Returns `true` if the value is a `string` and the `.length` is more than 0.
+
+##### .nonEmptyStringAndNotWhitespace(value)
+
+Returns `true` if the value is a `string` that is not empty and not whitespace.
+
+```js
+const values = ['property1', '', null, 'property2', ' ', undefined];
+
+values.filter(is.nonEmptyStringAndNotWhitespace);
+//=> ['property1', 'property2']
+```
+
+##### .emptyArray(value)
+
+Returns `true` if the value is an `Array` and the `.length` is 0.
+
+##### .nonEmptyArray(value)
+
+Returns `true` if the value is an `Array` and the `.length` is more than 0.
+
+##### .emptyObject(value)
+
+Returns `true` if the value is an `Object` and `Object.keys(value).length` is 0.
+
+Please note that `Object.keys` returns only own enumerable properties. Hence something like this can happen:
+
+```js
+const object1 = {};
+
+Object.defineProperty(object1, 'property1', {
+ value: 42,
+ writable: true,
+ enumerable: false,
+ configurable: true
+});
+
+is.emptyObject(object1);
+//=> true
+```
+
+##### .nonEmptyObject(value)
+
+Returns `true` if the value is an `Object` and `Object.keys(value).length` is more than 0.
+
+##### .emptySet(value)
+
+Returns `true` if the value is a `Set` and the `.size` is 0.
+
+##### .nonEmptySet(Value)
+
+Returns `true` if the value is a `Set` and the `.size` is more than 0.
+
+##### .emptyMap(value)
+
+Returns `true` if the value is a `Map` and the `.size` is 0.
+
+##### .nonEmptyMap(value)
+
+Returns `true` if the value is a `Map` and the `.size` is more than 0.
+
+#### Miscellaneous
+
+##### .directInstanceOf(value, class)
+
+Returns `true` if `value` is a direct instance of `class`.
+
+```js
+is.directInstanceOf(new Error(), Error);
+//=> true
+
+class UnicornError extends Error {}
+
+is.directInstanceOf(new UnicornError(), Error);
+//=> false
+```
+
+##### .urlInstance(value)
+
+Returns `true` if `value` is an instance of the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL).
+
+```js
+const url = new URL('https://example.com');
+
+is.urlInstance(url);
+//=> true
+```
+
+##### .urlString(value)
+
+Returns `true` if `value` is a URL string.
+
+Note: this only does basic checking using the [`URL` class](https://developer.mozilla.org/en-US/docs/Web/API/URL) constructor.
+
+```js
+const url = 'https://example.com';
+
+is.urlString(url);
+//=> true
+
+is.urlString(new URL(url));
+//=> false
+```
+
+##### .truthy(value)
+
+Returns `true` for all values that evaluate to true in a boolean context:
+
+```js
+is.truthy('🦄');
+//=> true
+
+is.truthy(undefined);
+//=> false
+```
+
+##### .falsy(value)
+
+Returns `true` if `value` is one of: `false`, `0`, `''`, `null`, `undefined`, `NaN`.
+
+##### .nan(value)
+##### .nullOrUndefined(value)
+##### .primitive(value)
+
+JavaScript primitives are as follows: `null`, `undefined`, `string`, `number`, `boolean`, `symbol`.
+
+##### .integer(value)
+
+##### .safeInteger(value)
+
+Returns `true` if `value` is a [safe integer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger).
+
+##### .plainObject(value)
+
+An object is plain if it's created by either `{}`, `new Object()`, or `Object.create(null)`.
+
+##### .iterable(value)
+##### .asyncIterable(value)
+##### .class(value)
+
+Returns `true` for instances created by a class.
+
+**Note:** TypeScript users must use `.class_()` because of a TypeScript naming limitation.
+
+##### .typedArray(value)
+
+##### .arrayLike(value)
+
+A `value` is array-like if it is not a function and has a `value.length` that is a safe integer greater than or equal to 0.
+
+```js
+is.arrayLike(document.forms);
+//=> true
+
+function foo() {
+ is.arrayLike(arguments);
+ //=> true
+}
+foo();
+```
+
+##### .inRange(value, range)
+
+Check if `value` (number) is in the given `range`. The range is an array of two values, lower bound and upper bound, in no specific order.
+
+```js
+is.inRange(3, [0, 5]);
+is.inRange(3, [5, 0]);
+is.inRange(0, [-2, 2]);
+```
+
+##### .inRange(value, upperBound)
+
+Check if `value` (number) is in the range of `0` to `upperBound`.
+
+```js
+is.inRange(3, 10);
+```
+
+##### .domElement(value)
+
+Returns `true` if `value` is a DOM Element.
+
+##### .nodeStream(value)
+
+Returns `true` if `value` is a Node.js [stream](https://nodejs.org/api/stream.html).
+
+```js
+const fs = require('fs');
+
+is.nodeStream(fs.createReadStream('unicorn.png'));
+//=> true
+```
+
+##### .observable(value)
+
+Returns `true` if `value` is an `Observable`.
+
+```js
+const {Observable} = require('rxjs');
+
+is.observable(new Observable());
+//=> true
+```
+
+##### .infinite(value)
+
+Check if `value` is `Infinity` or `-Infinity`.
+
+##### .evenInteger(value)
+
+Returns `true` if `value` is an even integer.
+
+##### .oddInteger(value)
+
+Returns `true` if `value` is an odd integer.
+
+##### .propertyKey(value)
+
+Returns `true` if `value` can be used as an object property key (either `string`, `number`, or `symbol`).
+
+##### .formData(value)
+
+Returns `true` if `value` is an instance of the [`FormData` class](https://developer.mozilla.org/en-US/docs/Web/API/FormData).
+
+```js
+const data = new FormData();
+
+is.formData(data);
+//=> true
+```
+
+##### .urlSearchParams(value)
+
+Returns `true` if `value` is an instance of the [`URLSearchParams` class](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams).
+
+```js
+const searchParams = new URLSearchParams();
+
+is.urlSearchParams(searchParams);
+//=> true
+```
+
+##### .any(predicate | predicate[], ...values)
+
+Using a single `predicate` argument, returns `true` if **any** of the input `values` returns true in the `predicate`:
+
+```js
+is.any(is.string, {}, true, '🦄');
+//=> true
+
+is.any(is.boolean, 'unicorns', [], new Map());
+//=> false
+```
+
+Using an array of `predicate[]`, returns `true` if **any** of the input `values` returns true for **any** of the `predicates` provided in an array:
+
+```js
+is.any([is.string, is.number], {}, true, '🦄');
+//=> true
+
+is.any([is.boolean, is.number], 'unicorns', [], new Map());
+//=> false
+```
+
+##### .all(predicate, ...values)
+
+Returns `true` if **all** of the input `values` returns true in the `predicate`:
+
+```js
+is.all(is.object, {}, new Map(), new Set());
+//=> true
+
+is.all(is.string, '🦄', [], 'unicorns');
+//=> false
+```
+
+## Type guards
+
+When using `is` together with TypeScript, [type guards](http://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types) are being used extensively to infer the correct type inside if-else statements.
+
+```ts
+import is from '@sindresorhus/is';
+
+const padLeft = (value: string, padding: string | number) => {
+ if (is.number(padding)) {
+ // `padding` is typed as `number`
+ return Array(padding + 1).join(' ') + value;
+ }
+
+ if (is.string(padding)) {
+ // `padding` is typed as `string`
+ return padding + value;
+ }
+
+ throw new TypeError(`Expected 'padding' to be of type 'string' or 'number', got '${is(padding)}'.`);
+}
+
+padLeft('🦄', 3);
+//=> ' 🦄'
+
+padLeft('🦄', '🌈');
+//=> '🌈🦄'
+```
+
+## Type assertions
+
+The type guards are also available as [type assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions), which throw an error for unexpected types. It is a convenient one-line version of the often repetitive "if-not-expected-type-throw" pattern.
+
+```ts
+import {assert} from '@sindresorhus/is';
+
+const handleMovieRatingApiResponse = (response: unknown) => {
+ assert.plainObject(response);
+ // `response` is now typed as a plain `object` with `unknown` properties.
+
+ assert.number(response.rating);
+ // `response.rating` is now typed as a `number`.
+
+ assert.string(response.title);
+ // `response.title` is now typed as a `string`.
+
+ return `${response.title} (${response.rating * 10})`;
+};
+
+handleMovieRatingApiResponse({rating: 0.87, title: 'The Matrix'});
+//=> 'The Matrix (8.7)'
+
+// This throws an error.
+handleMovieRatingApiResponse({rating: '🦄'});
+```
+
+## Generic type parameters
+
+The type guards and type assertions are aware of [generic type parameters](https://www.typescriptlang.org/docs/handbook/generics.html), such as `Promise<T>` and `Map<Key, Value>`. The default is `unknown` for most cases, since `is` cannot check them at runtime. If the generic type is known at compile-time, either implicitly (inferred) or explicitly (provided), `is` propagates the type so it can be used later.
+
+Use generic type parameters with caution. They are only checked by the TypeScript compiler, and not checked by `is` at runtime. This can lead to unexpected behavior, where the generic type is _assumed_ at compile-time, but actually is something completely different at runtime. It is best to use `unknown` (default) and type-check the value of the generic type parameter at runtime with `is` or `assert`.
+
+```ts
+import {assert} from '@sindresorhus/is';
+
+async function badNumberAssumption(input: unknown) {
+ // Bad assumption about the generic type parameter fools the compile-time type system.
+ assert.promise<number>(input);
+ // `input` is a `Promise` but only assumed to be `Promise<number>`.
+
+ const resolved = await input;
+ // `resolved` is typed as `number` but was not actually checked at runtime.
+
+ // Multiplication will return NaN if the input promise did not actually contain a number.
+ return 2 * resolved;
+}
+
+async function goodNumberAssertion(input: unknown) {
+ assert.promise(input);
+ // `input` is typed as `Promise<unknown>`
+
+ const resolved = await input;
+ // `resolved` is typed as `unknown`
+
+ assert.number(resolved);
+ // `resolved` is typed as `number`
+
+ // Uses runtime checks so only numbers will reach the multiplication.
+ return 2 * resolved;
+}
+
+badNumberAssumption(Promise.resolve('An unexpected string'));
+//=> NaN
+
+// This correctly throws an error because of the unexpected string value.
+goodNumberAssertion(Promise.resolve('An unexpected string'));
+```
+
+## FAQ
+
+### Why yet another type checking module?
+
+There are hundreds of type checking modules on npm, unfortunately, I couldn't find any that fit my needs:
+
+- Includes both type methods and ability to get the type
+- Types of primitives returned as lowercase and object types as camelcase
+- Covers all built-ins
+- Unsurprising behavior
+- Well-maintained
+- Comprehensive test suite
+
+For the ones I found, pick 3 of these.
+
+The most common mistakes I noticed in these modules was using `instanceof` for type checking, forgetting that functions are objects, and omitting `symbol` as a primitive.
+
+### Why not just use `instanceof` instead of this package?
+
+`instanceof` does not work correctly for all types and it does not work across [realms](https://stackoverflow.com/a/49832343/64949). Examples of realms are iframes, windows, web workers, and the `vm` module in Node.js.
+
+## For enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of @sindresorhus/is and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-sindresorhus-is?utm_source=npm-sindresorhus-is&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
+
+## Related
+
+- [ow](https://github.com/sindresorhus/ow) - Function argument validation for humans
+- [is-stream](https://github.com/sindresorhus/is-stream) - Check if something is a Node.js stream
+- [is-observable](https://github.com/sindresorhus/is-observable) - Check if a value is an Observable
+- [file-type](https://github.com/sindresorhus/file-type) - Detect the file type of a Buffer/Uint8Array
+- [is-ip](https://github.com/sindresorhus/is-ip) - Check if a string is an IP address
+- [is-array-sorted](https://github.com/sindresorhus/is-array-sorted) - Check if an Array is sorted
+- [is-error-constructor](https://github.com/sindresorhus/is-error-constructor) - Check if a value is an error constructor
+- [is-empty-iterable](https://github.com/sindresorhus/is-empty-iterable) - Check if an Iterable is empty
+- [is-blob](https://github.com/sindresorhus/is-blob) - Check if a value is a Blob - File-like object of immutable, raw data
+- [has-emoji](https://github.com/sindresorhus/has-emoji) - Check whether a string has any emoji
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Giora Guttsait](https://github.com/gioragutt)
+- [Brandon Smith](https://github.com/brandon93s)
diff --git a/client/node_modules/@szmarczak/http-timer/LICENSE b/client/node_modules/@szmarczak/http-timer/LICENSE
new file mode 100644
index 0000000..15ad2e8
--- /dev/null
+++ b/client/node_modules/@szmarczak/http-timer/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Szymon Marczak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/@szmarczak/http-timer/README.md b/client/node_modules/@szmarczak/http-timer/README.md
new file mode 100644
index 0000000..f58e10b
--- /dev/null
+++ b/client/node_modules/@szmarczak/http-timer/README.md
@@ -0,0 +1,93 @@
+# http-timer
+> Timings for HTTP requests
+
+[![Build Status](https://travis-ci.org/szmarczak/http-timer.svg?branch=master)](https://travis-ci.org/szmarczak/http-timer)
+[![Coverage Status](https://coveralls.io/repos/github/szmarczak/http-timer/badge.svg?branch=master)](https://coveralls.io/github/szmarczak/http-timer?branch=master)
+[![install size](https://packagephobia.now.sh/badge?p=@szmarczak/http-timer)](https://packagephobia.now.sh/result?p=@szmarczak/http-timer)
+
+Inspired by the [`request` package](https://github.com/request/request).
+
+## Installation
+
+NPM:
+
+> `npm install @szmarczak/http-timer`
+
+Yarn:
+
+> `yarn add @szmarczak/http-timer`
+
+## Usage
+**Note:**
+> - The measured events resemble Node.js events, not the kernel ones.
+> - Sending a chunk greater than [`highWaterMark`](https://nodejs.org/api/stream.html#stream_new_stream_writable_options) will result in invalid `upload` and `response` timings. You can avoid this by splitting the payload into smaller chunks.
+
+```js
+const https = require('https');
+const timer = require('@szmarczak/http-timer');
+
+const request = https.get('https://httpbin.org/anything');
+timer(request);
+
+request.once('response', response => {
+ response.resume();
+ response.once('end', () => {
+ console.log(response.timings); // You can use `request.timings` as well
+ });
+});
+
+// {
+// start: 1572712180361,
+// socket: 1572712180362,
+// lookup: 1572712180415,
+// connect: 1572712180571,
+// upload: 1572712180884,
+// response: 1572712181037,
+// end: 1572712181039,
+// error: undefined,
+// abort: undefined,
+// phases: {
+// wait: 1,
+// dns: 53,
+// tcp: 156,
+// request: 313,
+// firstByte: 153,
+// download: 2,
+// total: 678
+// }
+// }
+```
+
+## API
+
+### timer(request)
+
+Returns: `Object`
+
+**Note**: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
+
+- `start` - Time when the request started.
+- `socket` - Time when a socket was assigned to the request.
+- `lookup` - Time when the DNS lookup finished.
+- `connect` - Time when the socket successfully connected.
+- `secureConnect` - Time when the socket securely connected.
+- `upload` - Time when the request finished uploading.
+- `response` - Time when the request fired `response` event.
+- `end` - Time when the response fired `end` event.
+- `error` - Time when the request fired `error` event.
+- `abort` - Time when the request fired `abort` event.
+- `phases`
+ - `wait` - `timings.socket - timings.start`
+ - `dns` - `timings.lookup - timings.socket`
+ - `tcp` - `timings.connect - timings.lookup`
+ - `tls` - `timings.secureConnect - timings.connect`
+ - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
+ - `firstByte` - `timings.response - timings.upload`
+ - `download` - `timings.end - timings.response`
+ - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
+
+If something has not been measured yet, it will be `undefined`.
+
+## License
+
+MIT
diff --git a/client/node_modules/@szmarczak/http-timer/dist/source/index.d.ts b/client/node_modules/@szmarczak/http-timer/dist/source/index.d.ts
new file mode 100644
index 0000000..2620b4a
--- /dev/null
+++ b/client/node_modules/@szmarczak/http-timer/dist/source/index.d.ts
@@ -0,0 +1,32 @@
+/// <reference types="node" />
+import { ClientRequest, IncomingMessage } from 'http';
+export interface Timings {
+ start: number;
+ socket?: number;
+ lookup?: number;
+ connect?: number;
+ secureConnect?: number;
+ upload?: number;
+ response?: number;
+ end?: number;
+ error?: number;
+ abort?: number;
+ phases: {
+ wait?: number;
+ dns?: number;
+ tcp?: number;
+ tls?: number;
+ request?: number;
+ firstByte?: number;
+ download?: number;
+ total?: number;
+ };
+}
+export interface ClientRequestWithTimings extends ClientRequest {
+ timings?: Timings;
+}
+export interface IncomingMessageWithTimings extends IncomingMessage {
+ timings?: Timings;
+}
+declare const timer: (request: ClientRequestWithTimings) => Timings;
+export default timer;
diff --git a/client/node_modules/@szmarczak/http-timer/dist/source/index.js b/client/node_modules/@szmarczak/http-timer/dist/source/index.js
new file mode 100644
index 0000000..6f07245
--- /dev/null
+++ b/client/node_modules/@szmarczak/http-timer/dist/source/index.js
@@ -0,0 +1,126 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const defer_to_connect_1 = require("defer-to-connect");
+const util_1 = require("util");
+const nodejsMajorVersion = Number(process.versions.node.split('.')[0]);
+const timer = (request) => {
+ if (request.timings) {
+ return request.timings;
+ }
+ const timings = {
+ start: Date.now(),
+ socket: undefined,
+ lookup: undefined,
+ connect: undefined,
+ secureConnect: undefined,
+ upload: undefined,
+ response: undefined,
+ end: undefined,
+ error: undefined,
+ abort: undefined,
+ phases: {
+ wait: undefined,
+ dns: undefined,
+ tcp: undefined,
+ tls: undefined,
+ request: undefined,
+ firstByte: undefined,
+ download: undefined,
+ total: undefined
+ }
+ };
+ request.timings = timings;
+ const handleError = (origin) => {
+ const emit = origin.emit.bind(origin);
+ origin.emit = (event, ...args) => {
+ // Catches the `error` event
+ if (event === 'error') {
+ timings.error = Date.now();
+ timings.phases.total = timings.error - timings.start;
+ origin.emit = emit;
+ }
+ // Saves the original behavior
+ return emit(event, ...args);
+ };
+ };
+ handleError(request);
+ const onAbort = () => {
+ timings.abort = Date.now();
+ // Let the `end` response event be responsible for setting the total phase,
+ // unless the Node.js major version is >= 13.
+ if (!timings.response || nodejsMajorVersion >= 13) {
+ timings.phases.total = Date.now() - timings.start;
+ }
+ };
+ request.prependOnceListener('abort', onAbort);
+ const onSocket = (socket) => {
+ timings.socket = Date.now();
+ timings.phases.wait = timings.socket - timings.start;
+ if (util_1.types.isProxy(socket)) {
+ return;
+ }
+ const lookupListener = () => {
+ timings.lookup = Date.now();
+ timings.phases.dns = timings.lookup - timings.socket;
+ };
+ socket.prependOnceListener('lookup', lookupListener);
+ defer_to_connect_1.default(socket, {
+ connect: () => {
+ timings.connect = Date.now();
+ if (timings.lookup === undefined) {
+ socket.removeListener('lookup', lookupListener);
+ timings.lookup = timings.connect;
+ timings.phases.dns = timings.lookup - timings.socket;
+ }
+ timings.phases.tcp = timings.connect - timings.lookup;
+ // This callback is called before flushing any data,
+ // so we don't need to set `timings.phases.request` here.
+ },
+ secureConnect: () => {
+ timings.secureConnect = Date.now();
+ timings.phases.tls = timings.secureConnect - timings.connect;
+ }
+ });
+ };
+ if (request.socket) {
+ onSocket(request.socket);
+ }
+ else {
+ request.prependOnceListener('socket', onSocket);
+ }
+ const onUpload = () => {
+ var _a;
+ timings.upload = Date.now();
+ timings.phases.request = timings.upload - ((_a = timings.secureConnect) !== null && _a !== void 0 ? _a : timings.connect);
+ };
+ const writableFinished = () => {
+ if (typeof request.writableFinished === 'boolean') {
+ return request.writableFinished;
+ }
+ // Node.js doesn't have `request.writableFinished` property
+ return request.finished && request.outputSize === 0 && (!request.socket || request.socket.writableLength === 0);
+ };
+ if (writableFinished()) {
+ onUpload();
+ }
+ else {
+ request.prependOnceListener('finish', onUpload);
+ }
+ request.prependOnceListener('response', (response) => {
+ timings.response = Date.now();
+ timings.phases.firstByte = timings.response - timings.upload;
+ response.timings = timings;
+ handleError(response);
+ response.prependOnceListener('end', () => {
+ timings.end = Date.now();
+ timings.phases.download = timings.end - timings.response;
+ timings.phases.total = timings.end - timings.start;
+ });
+ response.prependOnceListener('aborted', onAbort);
+ });
+ return timings;
+};
+exports.default = timer;
+// For CommonJS default export support
+module.exports = timer;
+module.exports.default = timer;
diff --git a/client/node_modules/@szmarczak/http-timer/package.json b/client/node_modules/@szmarczak/http-timer/package.json
new file mode 100644
index 0000000..43a3559
--- /dev/null
+++ b/client/node_modules/@szmarczak/http-timer/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "@szmarczak/http-timer",
+ "version": "4.0.6",
+ "description": "Timings for HTTP requests",
+ "main": "dist/source",
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && tsc --noEmit && nyc ava",
+ "build": "del-cli dist && tsc",
+ "prepare": "npm run build",
+ "coveralls": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "files": [
+ "dist/source"
+ ],
+ "keywords": [
+ "http",
+ "https",
+ "timer",
+ "timings"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/szmarczak/http-timer.git"
+ },
+ "author": "Szymon Marczak",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/szmarczak/http-timer/issues"
+ },
+ "homepage": "https://github.com/szmarczak/http-timer#readme",
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "devDependencies": {
+ "@ava/typescript": "^2.0.0",
+ "@sindresorhus/tsconfig": "^1.0.2",
+ "@types/node": "^16.3.1",
+ "ava": "^3.15.0",
+ "coveralls": "^3.1.1",
+ "del-cli": "^3.0.1",
+ "http2-wrapper": "^2.0.7",
+ "nyc": "^15.1.0",
+ "p-event": "^4.2.0",
+ "typescript": "^4.3.5",
+ "xo": "^0.39.1"
+ },
+ "types": "dist/source",
+ "nyc": {
+ "extension": [
+ ".ts"
+ ],
+ "exclude": [
+ "**/tests/**"
+ ]
+ },
+ "xo": {
+ "rules": {
+ "@typescript-eslint/no-non-null-assertion": "off"
+ }
+ },
+ "ava": {
+ "typescript": {
+ "compile": false,
+ "rewritePaths": {
+ "tests/": "dist/tests/"
+ }
+ }
+ }
+}
diff --git a/client/node_modules/boolean/.eslintrc.json b/client/node_modules/boolean/.eslintrc.json
new file mode 100644
index 0000000..0b7481d
--- /dev/null
+++ b/client/node_modules/boolean/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "es/node"
+}
diff --git a/client/node_modules/boolean/.npmpackagejsonlintrc.json b/client/node_modules/boolean/.npmpackagejsonlintrc.json
new file mode 100644
index 0000000..fa44555
--- /dev/null
+++ b/client/node_modules/boolean/.npmpackagejsonlintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "npm-package-json-lint-config-tnw/lib.json"
+} \ No newline at end of file
diff --git a/client/node_modules/boolean/.releaserc.json b/client/node_modules/boolean/.releaserc.json
new file mode 100644
index 0000000..ca62656
--- /dev/null
+++ b/client/node_modules/boolean/.releaserc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "semantic-release-configuration"
+}
diff --git a/client/node_modules/boolean/CHANGELOG.md b/client/node_modules/boolean/CHANGELOG.md
new file mode 100644
index 0000000..00828a5
--- /dev/null
+++ b/client/node_modules/boolean/CHANGELOG.md
@@ -0,0 +1,70 @@
+# [3.2.0](https://github.com/thenativeweb/boolean/compare/3.1.4...3.2.0) (2022-02-16)
+
+
+### Features
+
+* Introduce isBooleanable function. ([#341](https://github.com/thenativeweb/boolean/issues/341)) ([e2ecfb3](https://github.com/thenativeweb/boolean/commit/e2ecfb357db729990e533dfd498211cea6126a17))
+
+## [3.1.4](https://github.com/thenativeweb/boolean/compare/3.1.3...3.1.4) (2021-08-19)
+
+
+### Bug Fixes
+
+* Downgrade workflows to Node 14. ([#319](https://github.com/thenativeweb/boolean/issues/319)) ([072b068](https://github.com/thenativeweb/boolean/commit/072b0685f8de7602f6be9da9b80cda08cdd71778))
+* Rollback versions and remove engines field. ([#318](https://github.com/thenativeweb/boolean/issues/318)) ([145dfcf](https://github.com/thenativeweb/boolean/commit/145dfcf7f4c5e3f5898e43661b9a017a2d8cb6a9))
+
+## [3.1.3](https://github.com/thenativeweb/boolean/compare/3.1.2...3.1.3) (2021-08-19)
+
+
+### Bug Fixes
+
+* bump path-parse from 1.0.6 to 1.0.7 ([#316](https://github.com/thenativeweb/boolean/issues/316)) ([0817f9d](https://github.com/thenativeweb/boolean/commit/0817f9d5c7e4691558e7562146afac19258a655c))
+
+## [3.1.2](https://github.com/thenativeweb/boolean/compare/3.1.1...3.1.2) (2021-06-10)
+
+
+### Bug Fixes
+
+* bump trim-newlines from 3.0.0 to 3.0.1 ([#302](https://github.com/thenativeweb/boolean/issues/302)) ([376489f](https://github.com/thenativeweb/boolean/commit/376489fe37ec9c46aafb44d3c9abf0edeabc6f93))
+
+## [3.1.1](https://github.com/thenativeweb/boolean/compare/3.1.0...3.1.1) (2021-06-10)
+
+
+### Bug Fixes
+
+* bump glob-parent from 5.1.1 to 5.1.2 ([#303](https://github.com/thenativeweb/boolean/issues/303)) ([8265437](https://github.com/thenativeweb/boolean/commit/8265437b1b3215256f8649e10ac65d4036a38bad))
+
+# [3.1.0](https://github.com/thenativeweb/boolean/compare/3.0.4...3.1.0) (2021-05-30)
+
+
+### Features
+
+* Add support for primitive object wrappers (fixes [#295](https://github.com/thenativeweb/boolean/issues/295)) ([#296](https://github.com/thenativeweb/boolean/issues/296)) ([5ae115f](https://github.com/thenativeweb/boolean/commit/5ae115f09f123cdb624452fc163fc8724e0ab926))
+
+## [3.0.4](https://github.com/thenativeweb/boolean/compare/3.0.3...3.0.4) (2021-05-10)
+
+
+### Bug Fixes
+
+* bump hosted-git-info from 2.8.8 to 2.8.9 ([#289](https://github.com/thenativeweb/boolean/issues/289)) ([69ead2c](https://github.com/thenativeweb/boolean/commit/69ead2c8fe897d546f8329ed262e6158938581be))
+
+## [3.0.3](https://github.com/thenativeweb/boolean/compare/3.0.2...3.0.3) (2021-03-25)
+
+
+### Bug Fixes
+
+* Migrate from master to main. ([#273](https://github.com/thenativeweb/boolean/issues/273)) ([18b640a](https://github.com/thenativeweb/boolean/commit/18b640af858d26b4dd76b9de443a4039e1e2131a))
+
+## [3.0.2](https://github.com/thenativeweb/boolean/compare/3.0.1...3.0.2) (2020-11-03)
+
+
+### Bug Fixes
+
+* Fix headline for robot section in readme. ([#191](https://github.com/thenativeweb/boolean/issues/191)) ([6b7b72b](https://github.com/thenativeweb/boolean/commit/6b7b72b6d5d5c1ad2251c5959b35c8c87b3421a5))
+
+## [3.0.1](https://github.com/thenativeweb/boolean/compare/3.0.0...3.0.1) (2020-02-11)
+
+
+### Bug Fixes
+
+* Simplify comparison code to not use unicode regexp flag ([#99](https://github.com/thenativeweb/boolean/issues/99)) ([2be2aeb](https://github.com/thenativeweb/boolean/commit/2be2aeb244c060eccb388dacc6903bbad193e745))
diff --git a/client/node_modules/boolean/LICENSE.txt b/client/node_modules/boolean/LICENSE.txt
new file mode 100644
index 0000000..c152105
--- /dev/null
+++ b/client/node_modules/boolean/LICENSE.txt
@@ -0,0 +1,8 @@
+The MIT License (MIT)
+Copyright (c) 2014-2022 the native web.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/boolean/README.md b/client/node_modules/boolean/README.md
new file mode 100644
index 0000000..11fe8e5
--- /dev/null
+++ b/client/node_modules/boolean/README.md
@@ -0,0 +1,95 @@
+# boolean
+
+boolean converts lots of things to boolean.
+
+## Status
+
+| Category | Status |
+| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| Version | [![npm](https://img.shields.io/npm/v/boolean)](https://www.npmjs.com/package/boolean) |
+| Dependencies | ![David](https://img.shields.io/david/thenativeweb/boolean) |
+| Dev dependencies | ![David](https://img.shields.io/david/dev/thenativeweb/boolean) |
+| Build | ![GitHub Actions](https://github.com/thenativeweb/boolean/workflows/Release/badge.svg?branch=main) |
+| License | ![GitHub](https://img.shields.io/github/license/thenativeweb/boolean) |
+
+## Installation
+
+```shell
+$ npm install boolean
+```
+
+## Quick start
+
+First you need to add a reference to boolean in your application:
+
+```javascript
+const { boolean, isBooleanable } = require('boolean');
+```
+
+If you use TypeScript, use the following code instead:
+
+```typescript
+import { boolean, isBooleanable } from 'boolean';
+```
+
+To verify a value for its boolean value, call the `boolean` function and provide the value in question as parameter:
+
+```javascript
+console.log(boolean('true')); // => true
+```
+
+The `boolean` function considers the following values to be equivalent to `true`:
+
+- `true` (boolean)
+- `'true'` (string)
+- `'TRUE'` (string)
+- `'t'` (string)
+- `'T'` (string)
+- `'yes'` (string)
+- `'YES'` (string)
+- `'y'` (string)
+- `'Y'` (string)
+- `'on'` (string)
+- `'ON'` (string)
+- `'1'` (string)
+- `1` (number)
+
+In addition to the primitive types mentioned above, boolean also supports their object wrappers `Boolean`, `String`, and `Number`.
+
+_Please note that if you provide a `string` or a `String` object, it will be trimmed._
+
+All other values, including `undefined` and `null` are considered to be `false`.
+
+### Figuring out whether a value can be considered to be boolean
+
+From time to time, you may not want to directly convert a value to its boolean equivalent, but explicitly check whether it looks like a boolean. E.g., although `boolean('F')` returns `false`, the string `F` at least looks like a boolean, in contrast to something such as `123` (for which `boolean(123)` would also return `false`).
+
+To figure out whether a value can be considered to be a boolean, use the `isBooleanable` function:
+
+```javascript
+console.log(isBooleanable('true')); // => true
+```
+
+The `isBooleanable` function considers all of the above mentioned values to be reasonable boolean values, and additionally, also the following ones:
+
+- `false` (boolean)
+- `'false'` (string)
+- `'FALSE'` (string)
+- `'f'` (string)
+- `'F'` (string)
+- `'no'` (string)
+- `'NO'` (string)
+- `'n'` (string)
+- `'N'` (string)
+- `'off'` (string)
+- `'OFF'` (string)
+- `'0'` (string)
+- `0` (number)
+
+## Running quality assurance
+
+To run quality assurance for this module use [roboter](https://www.npmjs.com/package/roboter):
+
+```shell
+$ npx roboter
+```
diff --git a/client/node_modules/boolean/lib/boolean.ts b/client/node_modules/boolean/lib/boolean.ts
new file mode 100644
index 0000000..2cbdc2d
--- /dev/null
+++ b/client/node_modules/boolean/lib/boolean.ts
@@ -0,0 +1,17 @@
+const boolean = function (value: any): boolean {
+ switch (Object.prototype.toString.call(value)) {
+ case '[object String]':
+ return [ 'true', 't', 'yes', 'y', 'on', '1' ].includes(value.trim().toLowerCase());
+
+ case '[object Number]':
+ return value.valueOf() === 1;
+
+ case '[object Boolean]':
+ return value.valueOf();
+
+ default:
+ return false;
+ }
+};
+
+export { boolean };
diff --git a/client/node_modules/boolean/lib/index.ts b/client/node_modules/boolean/lib/index.ts
new file mode 100644
index 0000000..0388edc
--- /dev/null
+++ b/client/node_modules/boolean/lib/index.ts
@@ -0,0 +1,4 @@
+import { boolean } from './boolean';
+import { isBooleanable } from './isBooleanable';
+
+export { boolean, isBooleanable };
diff --git a/client/node_modules/boolean/lib/isBooleanable.ts b/client/node_modules/boolean/lib/isBooleanable.ts
new file mode 100644
index 0000000..7052ee3
--- /dev/null
+++ b/client/node_modules/boolean/lib/isBooleanable.ts
@@ -0,0 +1,20 @@
+const isBooleanable = function (value: any): boolean {
+ switch (Object.prototype.toString.call(value)) {
+ case '[object String]':
+ return [
+ 'true', 't', 'yes', 'y', 'on', '1',
+ 'false', 'f', 'no', 'n', 'off', '0'
+ ].includes(value.trim().toLowerCase());
+
+ case '[object Number]':
+ return [ 0, 1 ].includes(value.valueOf());
+
+ case '[object Boolean]':
+ return true;
+
+ default:
+ return false;
+ }
+};
+
+export { isBooleanable };
diff --git a/client/node_modules/boolean/licenseCheck.json b/client/node_modules/boolean/licenseCheck.json
new file mode 100644
index 0000000..d689b76
--- /dev/null
+++ b/client/node_modules/boolean/licenseCheck.json
@@ -0,0 +1,16 @@
+{
+ "compatibleLicenses": [
+ "0BSD",
+ "Apache-2.0",
+ "Artistic-2.0",
+ "BSD-2-Clause",
+ "BSD-3-Clause",
+ "CC0-1.0",
+ "CC-BY-3.0",
+ "CC-BY-4.0",
+ "ISC",
+ "MIT",
+ "Python-2.0",
+ "Unlicense"
+ ]
+} \ No newline at end of file
diff --git a/client/node_modules/boolean/package.json b/client/node_modules/boolean/package.json
new file mode 100644
index 0000000..402080d
--- /dev/null
+++ b/client/node_modules/boolean/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "boolean",
+ "version": "3.2.0",
+ "description": "boolean converts lots of things to boolean.",
+ "contributors": [
+ {
+ "name": "Golo Roden",
+ "email": "golo.roden@thenativeweb.io"
+ },
+ {
+ "name": "Matthias Wagler",
+ "email": "matthias.wagler@thenativeweb.io"
+ },
+ {
+ "name": "Ryan Smith",
+ "email": "ryan.smith@ht2labs.com"
+ },
+ {
+ "name": "Thomas Schaaf",
+ "email": "schaaf@komola.de"
+ },
+ {
+ "name": "Sebastian Mares",
+ "email": "camil.sebastian@mares.email"
+ }
+ ],
+ "private": false,
+ "main": "build/lib/index.js",
+ "types": "build/lib/index.d.ts",
+ "dependencies": {},
+ "devDependencies": {
+ "assertthat": "6.4.0",
+ "roboter": "12.7.0",
+ "semantic-release-configuration": "2.0.7"
+ },
+ "scripts": {},
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/thenativeweb/boolean.git"
+ },
+ "keywords": [
+ "boolean",
+ "parser"
+ ],
+ "license": "MIT"
+}
diff --git a/client/node_modules/boolean/tsconfig.json b/client/node_modules/boolean/tsconfig.json
new file mode 100644
index 0000000..98d16e7
--- /dev/null
+++ b/client/node_modules/boolean/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "declaration": true,
+ "esModuleInterop": true,
+ "lib": [ "esnext" ],
+ "module": "commonjs",
+ "outDir": "build",
+ "resolveJsonModule": true,
+ "strict": true,
+ "target": "es2019"
+ },
+ "include": [
+ "./**/*.ts"
+ ],
+ "exclude": [
+ "./build"
+ ]
+}
diff --git a/client/node_modules/buffer-crc32/LICENSE b/client/node_modules/buffer-crc32/LICENSE
new file mode 100644
index 0000000..4cef10e
--- /dev/null
+++ b/client/node_modules/buffer-crc32/LICENSE
@@ -0,0 +1,19 @@
+The MIT License
+
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/buffer-crc32/README.md b/client/node_modules/buffer-crc32/README.md
new file mode 100644
index 0000000..0d9d8b8
--- /dev/null
+++ b/client/node_modules/buffer-crc32/README.md
@@ -0,0 +1,47 @@
+# buffer-crc32
+
+[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)
+
+crc32 that works with binary data and fancy character sets, outputs
+buffer, signed or unsigned data and has tests.
+
+Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix
+
+# install
+```
+npm install buffer-crc32
+```
+
+# example
+```js
+var crc32 = require('buffer-crc32');
+// works with buffers
+var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])
+crc32(buf) // -> <Buffer 94 5a ab 4a>
+
+// has convenience methods for getting signed or unsigned ints
+crc32.signed(buf) // -> -1805997238
+crc32.unsigned(buf) // -> 2488970058
+
+// will cast to buffer if given a string, so you can
+// directly use foreign characters safely
+crc32('自動販売機') // -> <Buffer cb 03 1a c5>
+
+// and works in append mode too
+var partialCrc = crc32('hey');
+var partialCrc = crc32(' ', partialCrc);
+var partialCrc = crc32('sup', partialCrc);
+var partialCrc = crc32(' ', partialCrc);
+var finalCrc = crc32('bros', partialCrc); // -> <Buffer 47 fa 55 70>
+```
+
+# tests
+This was tested against the output of zlib's crc32 method. You can run
+the tests with`npm test` (requires tap)
+
+# see also
+https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also
+supports buffer inputs and return unsigned ints (thanks @tjholowaychuk).
+
+# license
+MIT/X11
diff --git a/client/node_modules/buffer-crc32/index.js b/client/node_modules/buffer-crc32/index.js
new file mode 100644
index 0000000..6727dd3
--- /dev/null
+++ b/client/node_modules/buffer-crc32/index.js
@@ -0,0 +1,111 @@
+var Buffer = require('buffer').Buffer;
+
+var CRC_TABLE = [
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d
+];
+
+if (typeof Int32Array !== 'undefined') {
+ CRC_TABLE = new Int32Array(CRC_TABLE);
+}
+
+function ensureBuffer(input) {
+ if (Buffer.isBuffer(input)) {
+ return input;
+ }
+
+ var hasNewBufferAPI =
+ typeof Buffer.alloc === "function" &&
+ typeof Buffer.from === "function";
+
+ if (typeof input === "number") {
+ return hasNewBufferAPI ? Buffer.alloc(input) : new Buffer(input);
+ }
+ else if (typeof input === "string") {
+ return hasNewBufferAPI ? Buffer.from(input) : new Buffer(input);
+ }
+ else {
+ throw new Error("input must be buffer, number, or string, received " +
+ typeof input);
+ }
+}
+
+function bufferizeInt(num) {
+ var tmp = ensureBuffer(4);
+ tmp.writeInt32BE(num, 0);
+ return tmp;
+}
+
+function _crc32(buf, previous) {
+ buf = ensureBuffer(buf);
+ if (Buffer.isBuffer(previous)) {
+ previous = previous.readUInt32BE(0);
+ }
+ var crc = ~~previous ^ -1;
+ for (var n = 0; n < buf.length; n++) {
+ crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);
+ }
+ return (crc ^ -1);
+}
+
+function crc32() {
+ return bufferizeInt(_crc32.apply(null, arguments));
+}
+crc32.signed = function () {
+ return _crc32.apply(null, arguments);
+};
+crc32.unsigned = function () {
+ return _crc32.apply(null, arguments) >>> 0;
+};
+
+module.exports = crc32;
diff --git a/client/node_modules/buffer-crc32/package.json b/client/node_modules/buffer-crc32/package.json
new file mode 100644
index 0000000..e896bec
--- /dev/null
+++ b/client/node_modules/buffer-crc32/package.json
@@ -0,0 +1,39 @@
+{
+ "author": "Brian J. Brennan <brianloveswords@gmail.com>",
+ "name": "buffer-crc32",
+ "description": "A pure javascript CRC32 algorithm that plays nice with binary data",
+ "version": "0.2.13",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/brianloveswords/buffer-crc32/raw/master/LICENSE"
+ }
+ ],
+ "contributors": [
+ {
+ "name": "Vladimir Kuznetsov",
+ "github": "mistakster"
+ }
+ ],
+ "homepage": "https://github.com/brianloveswords/buffer-crc32",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/brianloveswords/buffer-crc32.git"
+ },
+ "main": "index.js",
+ "scripts": {
+ "test": "./node_modules/.bin/tap tests/*.test.js"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "~0.2.5"
+ },
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "license": "MIT",
+ "files": [
+ "index.js"
+ ]
+}
diff --git a/client/node_modules/cacheable-lookup/LICENSE b/client/node_modules/cacheable-lookup/LICENSE
new file mode 100755
index 0000000..92498ed
--- /dev/null
+++ b/client/node_modules/cacheable-lookup/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Szymon Marczak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/cacheable-lookup/README.md b/client/node_modules/cacheable-lookup/README.md
new file mode 100755
index 0000000..2507155
--- /dev/null
+++ b/client/node_modules/cacheable-lookup/README.md
@@ -0,0 +1,240 @@
+# cacheable-lookup
+
+> A cacheable [`dns.lookup(…)`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) that respects TTL :tada:
+
+[![Node CI](https://github.com/szmarczak/cacheable-lookup/workflows/Node%20CI/badge.svg)](https://github.com/szmarczak/cacheable-lookup/actions)
+[![Coverage Status](https://coveralls.io/repos/github/szmarczak/cacheable-lookup/badge.svg?branch=master)](https://coveralls.io/github/szmarczak/cacheable-lookup?branch=master)
+[![npm](https://img.shields.io/npm/dm/cacheable-lookup.svg)](https://www.npmjs.com/package/cacheable-lookup)
+[![install size](https://packagephobia.now.sh/badge?p=cacheable-lookup)](https://packagephobia.now.sh/result?p=cacheable-lookup)
+
+Making lots of HTTP requests? You can save some time by caching DNS lookups :zap:
+
+## Usage
+
+### Using the `lookup` option
+
+```js
+const http = require('http');
+const CacheableLookup = require('cacheable-lookup');
+
+const cacheable = new CacheableLookup();
+
+http.get('http://example.com', {lookup: cacheable.lookup}, response => {
+ // Handle the response here
+});
+```
+
+### Attaching CacheableLookup to an Agent
+
+```js
+const http = require('http');
+const CacheableLookup = require('cacheable-lookup');
+
+const cacheable = new CacheableLookup();
+cacheable.install(http.globalAgent);
+
+http.get('http://example.com', response => {
+ // Handle the response here
+});
+```
+
+## API
+
+### new CacheableLookup(options)
+
+Returns a new instance of `CacheableLookup`.
+
+#### options
+
+Type: `object`<br>
+Default: `{}`
+
+Options used to cache the DNS lookups.
+
+##### cache
+
+Type: `Map` | [`Keyv`](https://github.com/lukechilds/keyv/)<br>
+Default: `new Map()`
+
+Custom cache instance. If `undefined`, it will create a new one.
+
+**Note**: If you decide to use Keyv instead of the native implementation, the performance will drop by 10x. Memory leaks may occur as it doesn't provide any way to remove all the deprecated values at once.
+
+**Tip**: [`QuickLRU`](https://github.com/sindresorhus/quick-lru) is fully compatible with the Map API, you can use it to limit the amount of cached entries. Example:
+
+```js
+const http = require('http');
+const CacheableLookup = require('cacheable-lookup');
+const QuickLRU = require('quick-lru');
+
+const cacheable = new CacheableLookup({
+ cache: new QuickLRU({maxSize: 1000})
+});
+
+http.get('http://example.com', {lookup: cacheable.lookup}, response => {
+ // Handle the response here
+});
+```
+
+##### options.maxTtl
+
+Type: `number`<br>
+Default: `Infinity`
+
+The maximum lifetime of the entries received from the specifed DNS server (TTL in seconds).
+
+If set to `0`, it will make a new DNS query each time.
+
+**Pro Tip**: This shouldn't be lower than your DNS server response time in order to prevent bottlenecks. For example, if you use Cloudflare, this value should be greater than `0.01`.
+
+##### options.fallbackDuration
+
+Type: `number`<br>
+Default: `3600` (1 hour)
+
+When the DNS server responds with `ENOTFOUND` or `ENODATA` and the OS reports that the entry is available, it will use `dns.lookup(...)` directly for the requested hostnames for the specified amount of time (in seconds).
+
+If you don't query internal hostnames (such as `localhost`, `database.local` etc.), it is strongly recommended to set this value to `0`.
+
+##### options.errorTtl
+
+Type: `number`<br>
+Default: `0.15`
+
+The time how long it needs to remember queries that threw `ENOTFOUND` or `ENODATA` (TTL in seconds).
+
+**Note**: This option is independent, `options.maxTtl` does not affect this.
+
+**Pro Tip**: This shouldn't be lower than your DNS server response time in order to prevent bottlenecks. For example, if you use Cloudflare, this value should be greater than `0.01`.
+
+##### options.resolver
+
+Type: `dns.Resolver | dns.promises.Resolver`<br>
+Default: [`new dns.promises.Resolver()`](https://nodejs.org/api/dns.html#dns_class_dns_resolver)
+
+An instance of [DNS Resolver](https://nodejs.org/api/dns.html#dns_class_dns_resolver) used to make DNS queries.
+
+##### options.lookup
+
+Type: `Function`<br>
+Default: [`dns.lookup`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback)
+
+The fallback function to use when the DNS server responds with `ENOTFOUND` or `ENODATA`.
+
+**Note**: This has no effect if the `fallbackDuration` option is less than `1`.
+
+### Entry object
+
+Type: `object`
+
+#### address
+
+Type: `string`
+
+The IP address (can be an IPv4 or IPv6 address).
+
+#### family
+
+Type: `number`
+
+The IP family (`4` or `6`).
+
+##### expires
+
+Type: `number`
+
+**Note**: This is not present when falling back to `dns.lookup(...)`!
+
+The timestamp (`Date.now() + ttl * 1000`) when the entry expires.
+
+#### ttl
+
+**Note**: This is not present when falling back to `dns.lookup(...)`!
+
+The time in seconds for its lifetime.
+
+### Entry object (callback-style)
+
+When `options.all` is `false`, then `callback(error, address, family, expires, ttl)` is called. <br>
+When `options.all` is `true`, then `callback(error, entries)` is called.
+
+### CacheableLookup instance
+
+#### servers
+
+Type: `Array`
+
+The DNS servers used to make queries. Can be overridden - doing so will clear the cache.
+
+#### [lookup(hostname, options, callback)](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback)
+
+#### lookupAsync(hostname, options)
+
+The asynchronous version of `dns.lookup(…)`.
+
+Returns an [entry object](#entry-object).<br>
+If `options.all` is true, returns an array of entry objects.
+
+##### hostname
+
+Type: `string`
+
+##### options
+
+Type: `object`
+
+The same as the [`dns.lookup(…)`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback) options.
+
+#### query(hostname)
+
+An asynchronous function which returns cached DNS lookup entries.<br>
+This is the base for `lookupAsync(hostname, options)` and `lookup(hostname, options, callback)`.
+
+**Note**: This function has no options.
+
+Returns an array of objects with `address`, `family`, `ttl` and `expires` properties.
+
+#### queryAndCache(hostname)
+
+An asynchronous function which makes two DNS queries: A and AAAA. The result is cached.<br>
+This is used by `query(hostname)` if no entry in the database is present.
+
+Returns an array of objects with `address`, `family`, `ttl` and `expires` properties.
+
+#### updateInterfaceInfo()
+
+Updates interface info. For example, you need to run this when you plug or unplug your WiFi driver.
+
+**Note:** Running `updateInterfaceInfo()` will trigger `clear()` only on network interface removal.
+
+#### clear(hostname?)
+
+Clears the cache for the given hostname. If the hostname argument is not present, the entire cache will be emptied.
+
+## High performance
+
+Performed on:
+- Query: `example.com`
+- CPU: i7-7700k
+- CPU governor: performance
+
+```
+CacheableLookup#lookupAsync x 2,896,251 ops/sec ±1.07% (85 runs sampled)
+CacheableLookup#lookupAsync.all x 2,842,664 ops/sec ±1.11% (88 runs sampled)
+CacheableLookup#lookupAsync.all.ADDRCONFIG x 2,598,283 ops/sec ±1.21% (88 runs sampled)
+CacheableLookup#lookup x 2,565,913 ops/sec ±1.56% (85 runs sampled)
+CacheableLookup#lookup.all x 2,609,039 ops/sec ±1.01% (86 runs sampled)
+CacheableLookup#lookup.all.ADDRCONFIG x 2,416,242 ops/sec ±0.89% (85 runs sampled)
+dns#lookup x 7,272 ops/sec ±0.36% (86 runs sampled)
+dns#lookup.all x 7,249 ops/sec ±0.40% (86 runs sampled)
+dns#lookup.all.ADDRCONFIG x 5,693 ops/sec ±0.28% (85 runs sampled)
+Fastest is CacheableLookup#lookupAsync.all
+```
+
+## Related
+
+ - [cacheable-request](https://github.com/lukechilds/cacheable-request) - Wrap native HTTP requests with RFC compliant cache support
+
+## License
+
+MIT
diff --git a/client/node_modules/cacheable-lookup/index.d.ts b/client/node_modules/cacheable-lookup/index.d.ts
new file mode 100755
index 0000000..528b1e2
--- /dev/null
+++ b/client/node_modules/cacheable-lookup/index.d.ts
@@ -0,0 +1,139 @@
+import {Resolver, promises as dnsPromises, lookup} from 'dns';
+import {Agent} from 'http';
+
+type AsyncResolver = dnsPromises.Resolver;
+
+export type IPFamily = 4 | 6;
+
+type TPromise<T> = T | Promise<T>;
+
+export interface CacheInstance {
+ set(hostname: string, entries: EntryObject[], ttl: number): TPromise<void | boolean | this>;
+ get(hostname: string): TPromise<EntryObject[] | undefined>;
+ delete(hostname: string): TPromise<boolean>;
+ clear(): TPromise<void>;
+}
+
+export interface Options {
+ /**
+ * Custom cache instance. If `undefined`, it will create a new one.
+ * @default undefined
+ */
+ cache?: CacheInstance;
+ /**
+ * Limits the cache time (TTL). If set to `0`, it will make a new DNS query each time.
+ * @default Infinity
+ */
+ maxTtl?: number;
+ /**
+ * DNS Resolver used to make DNS queries.
+ * @default new dns.promises.Resolver()
+ */
+ resolver?: Resolver | AsyncResolver;
+ /**
+ * When the DNS server responds with `ENOTFOUND` or `ENODATA` and the OS reports that the entry is available,
+ * it will use `dns.lookup(...)` directly for the requested hostnames for the specified amount of time (in seconds).
+ *
+ * If you don't query internal hostnames (such as `localhost`, `database.local` etc.),
+ * it is strongly recommended to set this value to `0`.
+ * @default 3600
+ */
+ fallbackDuration?: number;
+ /**
+ * The time how long it needs to remember failed queries (TTL in seconds).
+ *
+ * **Note**: This option is independent, `options.maxTtl` does not affect this.
+ * @default 0.15
+ */
+ errorTtl?: number;
+ /**
+ * The fallback function to use when the DNS server responds with `ENOTFOUND` or `ENODATA`.
+ *
+ * **Note**: This has no effect if the `fallbackDuration` option is less than `1`.
+ * @default dns.lookup
+ */
+ lookup?: typeof lookup;
+}
+
+export interface EntryObject {
+ /**
+ * The IP address (can be an IPv4 or IPv5 address).
+ */
+ readonly address: string;
+ /**
+ * The IP family.
+ */
+ readonly family: IPFamily;
+ /**
+ * The original TTL.
+ */
+ readonly ttl?: number;
+ /**
+ * The expiration timestamp.
+ */
+ readonly expires?: number;
+}
+
+export interface LookupOptions {
+ /**
+ * One or more supported getaddrinfo flags. Multiple flags may be passed by bitwise ORing their values.
+ */
+ hints?: number;
+ /**
+ * The record family. Must be `4` or `6`. IPv4 and IPv6 addresses are both returned by default.
+ */
+ family?: IPFamily;
+ /**
+ * When `true`, the callback returns all resolved addresses in an array. Otherwise, returns a single address.
+ * @default false
+ */
+ all?: boolean;
+}
+
+export default class CacheableLookup {
+ constructor(options?: Options);
+ /**
+ * The DNS servers used to make queries. Can be overridden - doing so will clear the cache.
+ */
+ servers: string[];
+ /**
+ * @see https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback
+ */
+ lookup(hostname: string, family: IPFamily, callback: (error: NodeJS.ErrnoException, address: string, family: IPFamily) => void): void;
+ lookup(hostname: string, callback: (error: NodeJS.ErrnoException, address: string, family: IPFamily) => void): void;
+ lookup(hostname: string, options: LookupOptions & {all: true}, callback: (error: NodeJS.ErrnoException, result: ReadonlyArray<EntryObject>) => void): void;
+ lookup(hostname: string, options: LookupOptions, callback: (error: NodeJS.ErrnoException, address: string, family: IPFamily) => void): void;
+ /**
+ * The asynchronous version of `dns.lookup(…)`.
+ */
+ lookupAsync(hostname: string, options: LookupOptions & {all: true}): Promise<ReadonlyArray<EntryObject>>;
+ lookupAsync(hostname: string, options: LookupOptions): Promise<EntryObject>;
+ lookupAsync(hostname: string): Promise<EntryObject>;
+ lookupAsync(hostname: string, family: IPFamily): Promise<EntryObject>;
+ /**
+ * An asynchronous function which returns cached DNS lookup entries. This is the base for `lookupAsync(hostname, options)` and `lookup(hostname, options, callback)`.
+ */
+ query(hostname: string): Promise<ReadonlyArray<EntryObject>>;
+ /**
+ * An asynchronous function which makes a new DNS lookup query and updates the database. This is used by `query(hostname, family)` if no entry in the database is present. Returns an array of objects with `address`, `family`, `ttl` and `expires` properties.
+ */
+ queryAndCache(hostname: string): Promise<ReadonlyArray<EntryObject>>;
+ /**
+ * Attaches itself to an Agent instance.
+ */
+ install(agent: Agent): void;
+ /**
+ * Removes itself from an Agent instance.
+ */
+ uninstall(agent: Agent): void;
+ /**
+ * Updates interface info. For example, you need to run this when you plug or unplug your WiFi driver.
+ *
+ * **Note:** Running `updateInterfaceInfo()` will trigger `clear()` only on network interface removal.
+ */
+ updateInterfaceInfo(): void;
+ /**
+ * Clears the cache for the given hostname. If the hostname argument is not present, the entire cache will be emptied.
+ */
+ clear(hostname?: string): void;
+}
diff --git a/client/node_modules/cacheable-lookup/package.json b/client/node_modules/cacheable-lookup/package.json
new file mode 100755
index 0000000..f20991e
--- /dev/null
+++ b/client/node_modules/cacheable-lookup/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "cacheable-lookup",
+ "version": "5.0.4",
+ "description": "A cacheable dns.lookup(…) that respects the TTL",
+ "engines": {
+ "node": ">=10.6.0"
+ },
+ "files": [
+ "source",
+ "index.d.ts"
+ ],
+ "main": "source/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "xo && nyc --reporter=lcovonly --reporter=text ava && tsd"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/szmarczak/cacheable-lookup.git"
+ },
+ "keywords": [
+ "dns",
+ "lookup",
+ "cacheable",
+ "ttl"
+ ],
+ "author": "Szymon Marczak",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/szmarczak/cacheable-lookup/issues"
+ },
+ "homepage": "https://github.com/szmarczak/cacheable-lookup#readme",
+ "devDependencies": {
+ "@types/keyv": "^3.1.1",
+ "ava": "^3.8.2",
+ "benchmark": "^2.1.4",
+ "coveralls": "^3.0.9",
+ "keyv": "^4.0.0",
+ "nyc": "^15.0.0",
+ "proxyquire": "^2.1.3",
+ "tsd": "^0.11.0",
+ "quick-lru": "^5.1.0",
+ "xo": "^0.25.3"
+ }
+}
diff --git a/client/node_modules/cacheable-lookup/source/index.js b/client/node_modules/cacheable-lookup/source/index.js
new file mode 100755
index 0000000..21f731e
--- /dev/null
+++ b/client/node_modules/cacheable-lookup/source/index.js
@@ -0,0 +1,436 @@
+'use strict';
+const {
+ V4MAPPED,
+ ADDRCONFIG,
+ ALL,
+ promises: {
+ Resolver: AsyncResolver
+ },
+ lookup: dnsLookup
+} = require('dns');
+const {promisify} = require('util');
+const os = require('os');
+
+const kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection');
+const kCacheableLookupInstance = Symbol('cacheableLookupInstance');
+const kExpires = Symbol('expires');
+
+const supportsALL = typeof ALL === 'number';
+
+const verifyAgent = agent => {
+ if (!(agent && typeof agent.createConnection === 'function')) {
+ throw new Error('Expected an Agent instance as the first argument');
+ }
+};
+
+const map4to6 = entries => {
+ for (const entry of entries) {
+ if (entry.family === 6) {
+ continue;
+ }
+
+ entry.address = `::ffff:${entry.address}`;
+ entry.family = 6;
+ }
+};
+
+const getIfaceInfo = () => {
+ let has4 = false;
+ let has6 = false;
+
+ for (const device of Object.values(os.networkInterfaces())) {
+ for (const iface of device) {
+ if (iface.internal) {
+ continue;
+ }
+
+ if (iface.family === 'IPv6') {
+ has6 = true;
+ } else {
+ has4 = true;
+ }
+
+ if (has4 && has6) {
+ return {has4, has6};
+ }
+ }
+ }
+
+ return {has4, has6};
+};
+
+const isIterable = map => {
+ return Symbol.iterator in map;
+};
+
+const ttl = {ttl: true};
+const all = {all: true};
+
+class CacheableLookup {
+ constructor({
+ cache = new Map(),
+ maxTtl = Infinity,
+ fallbackDuration = 3600,
+ errorTtl = 0.15,
+ resolver = new AsyncResolver(),
+ lookup = dnsLookup
+ } = {}) {
+ this.maxTtl = maxTtl;
+ this.errorTtl = errorTtl;
+
+ this._cache = cache;
+ this._resolver = resolver;
+ this._dnsLookup = promisify(lookup);
+
+ if (this._resolver instanceof AsyncResolver) {
+ this._resolve4 = this._resolver.resolve4.bind(this._resolver);
+ this._resolve6 = this._resolver.resolve6.bind(this._resolver);
+ } else {
+ this._resolve4 = promisify(this._resolver.resolve4.bind(this._resolver));
+ this._resolve6 = promisify(this._resolver.resolve6.bind(this._resolver));
+ }
+
+ this._iface = getIfaceInfo();
+
+ this._pending = {};
+ this._nextRemovalTime = false;
+ this._hostnamesToFallback = new Set();
+
+ if (fallbackDuration < 1) {
+ this._fallback = false;
+ } else {
+ this._fallback = true;
+
+ const interval = setInterval(() => {
+ this._hostnamesToFallback.clear();
+ }, fallbackDuration * 1000);
+
+ /* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */
+ if (interval.unref) {
+ interval.unref();
+ }
+ }
+
+ this.lookup = this.lookup.bind(this);
+ this.lookupAsync = this.lookupAsync.bind(this);
+ }
+
+ set servers(servers) {
+ this.clear();
+
+ this._resolver.setServers(servers);
+ }
+
+ get servers() {
+ return this._resolver.getServers();
+ }
+
+ lookup(hostname, options, callback) {
+ if (typeof options === 'function') {
+ callback = options;
+ options = {};
+ } else if (typeof options === 'number') {
+ options = {
+ family: options
+ };
+ }
+
+ if (!callback) {
+ throw new Error('Callback must be a function.');
+ }
+
+ // eslint-disable-next-line promise/prefer-await-to-then
+ this.lookupAsync(hostname, options).then(result => {
+ if (options.all) {
+ callback(null, result);
+ } else {
+ callback(null, result.address, result.family, result.expires, result.ttl);
+ }
+ }, callback);
+ }
+
+ async lookupAsync(hostname, options = {}) {
+ if (typeof options === 'number') {
+ options = {
+ family: options
+ };
+ }
+
+ let cached = await this.query(hostname);
+
+ if (options.family === 6) {
+ const filtered = cached.filter(entry => entry.family === 6);
+
+ if (options.hints & V4MAPPED) {
+ if ((supportsALL && options.hints & ALL) || filtered.length === 0) {
+ map4to6(cached);
+ } else {
+ cached = filtered;
+ }
+ } else {
+ cached = filtered;
+ }
+ } else if (options.family === 4) {
+ cached = cached.filter(entry => entry.family === 4);
+ }
+
+ if (options.hints & ADDRCONFIG) {
+ const {_iface} = this;
+ cached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4);
+ }
+
+ if (cached.length === 0) {
+ const error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);
+ error.code = 'ENOTFOUND';
+ error.hostname = hostname;
+
+ throw error;
+ }
+
+ if (options.all) {
+ return cached;
+ }
+
+ return cached[0];
+ }
+
+ async query(hostname) {
+ let cached = await this._cache.get(hostname);
+
+ if (!cached) {
+ const pending = this._pending[hostname];
+
+ if (pending) {
+ cached = await pending;
+ } else {
+ const newPromise = this.queryAndCache(hostname);
+ this._pending[hostname] = newPromise;
+
+ try {
+ cached = await newPromise;
+ } finally {
+ delete this._pending[hostname];
+ }
+ }
+ }
+
+ cached = cached.map(entry => {
+ return {...entry};
+ });
+
+ return cached;
+ }
+
+ async _resolve(hostname) {
+ const wrap = async promise => {
+ try {
+ return await promise;
+ } catch (error) {
+ if (error.code === 'ENODATA' || error.code === 'ENOTFOUND') {
+ return [];
+ }
+
+ throw error;
+ }
+ };
+
+ // ANY is unsafe as it doesn't trigger new queries in the underlying server.
+ const [A, AAAA] = await Promise.all([
+ this._resolve4(hostname, ttl),
+ this._resolve6(hostname, ttl)
+ ].map(promise => wrap(promise)));
+
+ let aTtl = 0;
+ let aaaaTtl = 0;
+ let cacheTtl = 0;
+
+ const now = Date.now();
+
+ for (const entry of A) {
+ entry.family = 4;
+ entry.expires = now + (entry.ttl * 1000);
+
+ aTtl = Math.max(aTtl, entry.ttl);
+ }
+
+ for (const entry of AAAA) {
+ entry.family = 6;
+ entry.expires = now + (entry.ttl * 1000);
+
+ aaaaTtl = Math.max(aaaaTtl, entry.ttl);
+ }
+
+ if (A.length > 0) {
+ if (AAAA.length > 0) {
+ cacheTtl = Math.min(aTtl, aaaaTtl);
+ } else {
+ cacheTtl = aTtl;
+ }
+ } else {
+ cacheTtl = aaaaTtl;
+ }
+
+ return {
+ entries: [
+ ...A,
+ ...AAAA
+ ],
+ cacheTtl
+ };
+ }
+
+ async _lookup(hostname) {
+ try {
+ const entries = await this._dnsLookup(hostname, {
+ all: true
+ });
+
+ return {
+ entries,
+ cacheTtl: 0
+ };
+ } catch (_) {
+ return {
+ entries: [],
+ cacheTtl: 0
+ };
+ }
+ }
+
+ async _set(hostname, data, cacheTtl) {
+ if (this.maxTtl > 0 && cacheTtl > 0) {
+ cacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000;
+ data[kExpires] = Date.now() + cacheTtl;
+
+ try {
+ await this._cache.set(hostname, data, cacheTtl);
+ } catch (error) {
+ this.lookupAsync = async () => {
+ const cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.');
+ cacheError.cause = error;
+
+ throw cacheError;
+ };
+ }
+
+ if (isIterable(this._cache)) {
+ this._tick(cacheTtl);
+ }
+ }
+ }
+
+ async queryAndCache(hostname) {
+ if (this._hostnamesToFallback.has(hostname)) {
+ return this._dnsLookup(hostname, all);
+ }
+
+ let query = await this._resolve(hostname);
+
+ if (query.entries.length === 0 && this._fallback) {
+ query = await this._lookup(hostname);
+
+ if (query.entries.length !== 0) {
+ // Use `dns.lookup(...)` for that particular hostname
+ this._hostnamesToFallback.add(hostname);
+ }
+ }
+
+ const cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;
+ await this._set(hostname, query.entries, cacheTtl);
+
+ return query.entries;
+ }
+
+ _tick(ms) {
+ const nextRemovalTime = this._nextRemovalTime;
+
+ if (!nextRemovalTime || ms < nextRemovalTime) {
+ clearTimeout(this._removalTimeout);
+
+ this._nextRemovalTime = ms;
+
+ this._removalTimeout = setTimeout(() => {
+ this._nextRemovalTime = false;
+
+ let nextExpiry = Infinity;
+
+ const now = Date.now();
+
+ for (const [hostname, entries] of this._cache) {
+ const expires = entries[kExpires];
+
+ if (now >= expires) {
+ this._cache.delete(hostname);
+ } else if (expires < nextExpiry) {
+ nextExpiry = expires;
+ }
+ }
+
+ if (nextExpiry !== Infinity) {
+ this._tick(nextExpiry - now);
+ }
+ }, ms);
+
+ /* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */
+ if (this._removalTimeout.unref) {
+ this._removalTimeout.unref();
+ }
+ }
+ }
+
+ install(agent) {
+ verifyAgent(agent);
+
+ if (kCacheableLookupCreateConnection in agent) {
+ throw new Error('CacheableLookup has been already installed');
+ }
+
+ agent[kCacheableLookupCreateConnection] = agent.createConnection;
+ agent[kCacheableLookupInstance] = this;
+
+ agent.createConnection = (options, callback) => {
+ if (!('lookup' in options)) {
+ options.lookup = this.lookup;
+ }
+
+ return agent[kCacheableLookupCreateConnection](options, callback);
+ };
+ }
+
+ uninstall(agent) {
+ verifyAgent(agent);
+
+ if (agent[kCacheableLookupCreateConnection]) {
+ if (agent[kCacheableLookupInstance] !== this) {
+ throw new Error('The agent is not owned by this CacheableLookup instance');
+ }
+
+ agent.createConnection = agent[kCacheableLookupCreateConnection];
+
+ delete agent[kCacheableLookupCreateConnection];
+ delete agent[kCacheableLookupInstance];
+ }
+ }
+
+ updateInterfaceInfo() {
+ const {_iface} = this;
+
+ this._iface = getIfaceInfo();
+
+ if ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) {
+ this._cache.clear();
+ }
+ }
+
+ clear(hostname) {
+ if (hostname) {
+ this._cache.delete(hostname);
+ return;
+ }
+
+ this._cache.clear();
+ }
+}
+
+module.exports = CacheableLookup;
+module.exports.default = CacheableLookup;
diff --git a/client/node_modules/cacheable-request/LICENSE b/client/node_modules/cacheable-request/LICENSE
new file mode 100644
index 0000000..f27ee9b
--- /dev/null
+++ b/client/node_modules/cacheable-request/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Luke Childs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/cacheable-request/README.md b/client/node_modules/cacheable-request/README.md
new file mode 100644
index 0000000..725e7e0
--- /dev/null
+++ b/client/node_modules/cacheable-request/README.md
@@ -0,0 +1,206 @@
+# cacheable-request
+
+> Wrap native HTTP requests with RFC compliant cache support
+
+[![Build Status](https://travis-ci.org/lukechilds/cacheable-request.svg?branch=master)](https://travis-ci.org/lukechilds/cacheable-request)
+[![Coverage Status](https://coveralls.io/repos/github/lukechilds/cacheable-request/badge.svg?branch=master)](https://coveralls.io/github/lukechilds/cacheable-request?branch=master)
+[![npm](https://img.shields.io/npm/dm/cacheable-request.svg)](https://www.npmjs.com/package/cacheable-request)
+[![npm](https://img.shields.io/npm/v/cacheable-request.svg)](https://www.npmjs.com/package/cacheable-request)
+
+[RFC 7234](http://httpwg.org/specs/rfc7234.html) compliant HTTP caching for native Node.js HTTP/HTTPS requests. Caching works out of the box in memory or is easily pluggable with a wide range of storage adapters.
+
+**Note:** This is a low level wrapper around the core HTTP modules, it's not a high level request library.
+
+## Features
+
+- Only stores cacheable responses as defined by RFC 7234
+- Fresh cache entries are served directly from cache
+- Stale cache entries are revalidated with `If-None-Match`/`If-Modified-Since` headers
+- 304 responses from revalidation requests use cached body
+- Updates `Age` header on cached responses
+- Can completely bypass cache on a per request basis
+- In memory cache by default
+- Official support for Redis, MongoDB, SQLite, PostgreSQL and MySQL storage adapters
+- Easily plug in your own or third-party storage adapters
+- If DB connection fails, cache is automatically bypassed ([disabled by default](#optsautomaticfailover))
+- Adds cache support to any existing HTTP code with minimal changes
+- Uses [http-cache-semantics](https://github.com/pornel/http-cache-semantics) internally for HTTP RFC 7234 compliance
+
+## Install
+
+```shell
+npm install cacheable-request
+```
+
+## Usage
+
+```js
+const http = require('http');
+const CacheableRequest = require('cacheable-request');
+
+// Then instead of
+const req = http.request('http://example.com', cb);
+req.end();
+
+// You can do
+const cacheableRequest = new CacheableRequest(http.request);
+const cacheReq = cacheableRequest('http://example.com', cb);
+cacheReq.on('request', req => req.end());
+// Future requests to 'example.com' will be returned from cache if still valid
+
+// You pass in any other http.request API compatible method to be wrapped with cache support:
+const cacheableRequest = new CacheableRequest(https.request);
+const cacheableRequest = new CacheableRequest(electron.net);
+```
+
+## Storage Adapters
+
+`cacheable-request` uses [Keyv](https://github.com/lukechilds/keyv) to support a wide range of storage adapters.
+
+For example, to use Redis as a cache backend, you just need to install the official Redis Keyv storage adapter:
+
+```
+npm install @keyv/redis
+```
+
+And then you can pass `CacheableRequest` your connection string:
+
+```js
+const cacheableRequest = new CacheableRequest(http.request, 'redis://user:pass@localhost:6379');
+```
+
+[View all official Keyv storage adapters.](https://github.com/lukechilds/keyv#official-storage-adapters)
+
+Keyv also supports anything that follows the Map API so it's easy to write your own storage adapter or use a third-party solution.
+
+e.g The following are all valid storage adapters
+
+```js
+const storageAdapter = new Map();
+// or
+const storageAdapter = require('./my-storage-adapter');
+// or
+const QuickLRU = require('quick-lru');
+const storageAdapter = new QuickLRU({ maxSize: 1000 });
+
+const cacheableRequest = new CacheableRequest(http.request, storageAdapter);
+```
+
+View the [Keyv docs](https://github.com/lukechilds/keyv) for more information on how to use storage adapters.
+
+## API
+
+### new cacheableRequest(request, [storageAdapter])
+
+Returns the provided request function wrapped with cache support.
+
+#### request
+
+Type: `function`
+
+Request function to wrap with cache support. Should be [`http.request`](https://nodejs.org/api/http.html#http_http_request_options_callback) or a similar API compatible request function.
+
+#### storageAdapter
+
+Type: `Keyv storage adapter`<br>
+Default: `new Map()`
+
+A [Keyv](https://github.com/lukechilds/keyv) storage adapter instance, or connection string if using with an official Keyv storage adapter.
+
+### Instance
+
+#### cacheableRequest(opts, [cb])
+
+Returns an event emitter.
+
+##### opts
+
+Type: `object`, `string`
+
+- Any of the default request functions options.
+- Any [`http-cache-semantics`](https://github.com/kornelski/http-cache-semantics#constructor-options) options.
+- Any of the following:
+
+###### opts.cache
+
+Type: `boolean`<br>
+Default: `true`
+
+If the cache should be used. Setting this to false will completely bypass the cache for the current request.
+
+###### opts.strictTtl
+
+Type: `boolean`<br>
+Default: `false`
+
+If set to `true` once a cached resource has expired it is deleted and will have to be re-requested.
+
+If set to `false` (default), after a cached resource's TTL expires it is kept in the cache and will be revalidated on the next request with `If-None-Match`/`If-Modified-Since` headers.
+
+###### opts.maxTtl
+
+Type: `number`<br>
+Default: `undefined`
+
+Limits TTL. The `number` represents milliseconds.
+
+###### opts.automaticFailover
+
+Type: `boolean`<br>
+Default: `false`
+
+When set to `true`, if the DB connection fails we will automatically fallback to a network request. DB errors will still be emitted to notify you of the problem even though the request callback may succeed.
+
+###### opts.forceRefresh
+
+Type: `boolean`<br>
+Default: `false`
+
+Forces refreshing the cache. If the response could be retrieved from the cache, it will perform a new request and override the cache instead.
+
+##### cb
+
+Type: `function`
+
+The callback function which will receive the response as an argument.
+
+The response can be either a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage) or a [responselike object](https://github.com/lukechilds/responselike). The response will also have a `fromCache` property set with a boolean value.
+
+##### .on('request', request)
+
+`request` event to get the request object of the request.
+
+**Note:** This event will only fire if an HTTP request is actually made, not when a response is retrieved from cache. However, you should always handle the `request` event to end the request and handle any potential request errors.
+
+##### .on('response', response)
+
+`response` event to get the response object from the HTTP request or cache.
+
+##### .on('error', error)
+
+`error` event emitted in case of an error with the cache.
+
+Errors emitted here will be an instance of `CacheableRequest.RequestError` or `CacheableRequest.CacheError`. You will only ever receive a `RequestError` if the request function throws (normally caused by invalid user input). Normal request errors should be handled inside the `request` event.
+
+To properly handle all error scenarios you should use the following pattern:
+
+```js
+cacheableRequest('example.com', cb)
+ .on('error', err => {
+ if (err instanceof CacheableRequest.CacheError) {
+ handleCacheError(err); // Cache error
+ } else if (err instanceof CacheableRequest.RequestError) {
+ handleRequestError(err); // Request function thrown
+ }
+ })
+ .on('request', req => {
+ req.on('error', handleRequestError); // Request error emitted
+ req.end();
+ });
+```
+
+**Note:** Database connection errors are emitted here, however `cacheable-request` will attempt to re-request the resource and bypass the cache on a connection error. Therefore a database connection error doesn't necessarily mean the request won't be fulfilled.
+
+## License
+
+MIT © Luke Childs
diff --git a/client/node_modules/cacheable-request/package.json b/client/node_modules/cacheable-request/package.json
new file mode 100644
index 0000000..ef1c2ae
--- /dev/null
+++ b/client/node_modules/cacheable-request/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "cacheable-request",
+ "version": "7.0.4",
+ "description": "Wrap native HTTP requests with RFC compliant cache support",
+ "license": "MIT",
+ "repository": "lukechilds/cacheable-request",
+ "author": "Luke Childs <lukechilds123@gmail.com> (http://lukechilds.co.uk)",
+ "main": "src/index.js",
+ "engines": {
+ "node": ">=8"
+ },
+ "scripts": {
+ "test": "xo && nyc ava",
+ "coverage": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "files": [
+ "src"
+ ],
+ "keywords": [
+ "HTTP",
+ "HTTPS",
+ "cache",
+ "caching",
+ "layer",
+ "cacheable",
+ "RFC 7234",
+ "RFC",
+ "7234",
+ "compliant"
+ ],
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "devDependencies": {
+ "@keyv/sqlite": "^2.0.0",
+ "ava": "^1.1.0",
+ "coveralls": "^3.0.0",
+ "create-test-server": "3.0.0",
+ "delay": "^4.0.0",
+ "eslint-config-xo-lukechilds": "^1.0.0",
+ "nyc": "^14.1.1",
+ "pify": "^4.0.0",
+ "sqlite3": "^4.0.2",
+ "this": "^1.0.2",
+ "xo": "^0.23.0"
+ },
+ "xo": {
+ "extends": "xo-lukechilds"
+ }
+}
diff --git a/client/node_modules/cacheable-request/src/index.js b/client/node_modules/cacheable-request/src/index.js
new file mode 100644
index 0000000..3fcea3f
--- /dev/null
+++ b/client/node_modules/cacheable-request/src/index.js
@@ -0,0 +1,251 @@
+'use strict';
+
+const EventEmitter = require('events');
+const urlLib = require('url');
+const normalizeUrl = require('normalize-url');
+const getStream = require('get-stream');
+const CachePolicy = require('http-cache-semantics');
+const Response = require('responselike');
+const lowercaseKeys = require('lowercase-keys');
+const cloneResponse = require('clone-response');
+const Keyv = require('keyv');
+
+class CacheableRequest {
+ constructor(request, cacheAdapter) {
+ if (typeof request !== 'function') {
+ throw new TypeError('Parameter `request` must be a function');
+ }
+
+ this.cache = new Keyv({
+ uri: typeof cacheAdapter === 'string' && cacheAdapter,
+ store: typeof cacheAdapter !== 'string' && cacheAdapter,
+ namespace: 'cacheable-request'
+ });
+
+ return this.createCacheableRequest(request);
+ }
+
+ createCacheableRequest(request) {
+ return (opts, cb) => {
+ let url;
+ if (typeof opts === 'string') {
+ url = normalizeUrlObject(urlLib.parse(opts));
+ opts = {};
+ } else if (opts instanceof urlLib.URL) {
+ url = normalizeUrlObject(urlLib.parse(opts.toString()));
+ opts = {};
+ } else {
+ const [pathname, ...searchParts] = (opts.path || '').split('?');
+ const search = searchParts.length > 0 ?
+ `?${searchParts.join('?')}` :
+ '';
+ url = normalizeUrlObject({ ...opts, pathname, search });
+ }
+
+ opts = {
+ headers: {},
+ method: 'GET',
+ cache: true,
+ strictTtl: false,
+ automaticFailover: false,
+ ...opts,
+ ...urlObjectToRequestOptions(url)
+ };
+ opts.headers = lowercaseKeys(opts.headers);
+
+ const ee = new EventEmitter();
+ const normalizedUrlString = normalizeUrl(
+ urlLib.format(url),
+ {
+ stripWWW: false,
+ removeTrailingSlash: false,
+ stripAuthentication: false
+ }
+ );
+ const key = `${opts.method}:${normalizedUrlString}`;
+ let revalidate = false;
+ let madeRequest = false;
+
+ const makeRequest = opts => {
+ madeRequest = true;
+ let requestErrored = false;
+ let requestErrorCallback;
+
+ const requestErrorPromise = new Promise(resolve => {
+ requestErrorCallback = () => {
+ if (!requestErrored) {
+ requestErrored = true;
+ resolve();
+ }
+ };
+ });
+
+ const handler = response => {
+ if (revalidate && !opts.forceRefresh) {
+ response.status = response.statusCode;
+ const revalidatedPolicy = CachePolicy.fromObject(revalidate.cachePolicy).revalidatedPolicy(opts, response);
+ if (!revalidatedPolicy.modified) {
+ const headers = revalidatedPolicy.policy.responseHeaders();
+ response = new Response(revalidate.statusCode, headers, revalidate.body, revalidate.url);
+ response.cachePolicy = revalidatedPolicy.policy;
+ response.fromCache = true;
+ }
+ }
+
+ if (!response.fromCache) {
+ response.cachePolicy = new CachePolicy(opts, response, opts);
+ response.fromCache = false;
+ }
+
+ let clonedResponse;
+ if (opts.cache && response.cachePolicy.storable()) {
+ clonedResponse = cloneResponse(response);
+
+ (async () => {
+ try {
+ const bodyPromise = getStream.buffer(response);
+
+ await Promise.race([
+ requestErrorPromise,
+ new Promise(resolve => response.once('end', resolve))
+ ]);
+
+ if (requestErrored) {
+ return;
+ }
+
+ const body = await bodyPromise;
+
+ const value = {
+ cachePolicy: response.cachePolicy.toObject(),
+ url: response.url,
+ statusCode: response.fromCache ? revalidate.statusCode : response.statusCode,
+ body
+ };
+
+ let ttl = opts.strictTtl ? response.cachePolicy.timeToLive() : undefined;
+ if (opts.maxTtl) {
+ ttl = ttl ? Math.min(ttl, opts.maxTtl) : opts.maxTtl;
+ }
+
+ await this.cache.set(key, value, ttl);
+ } catch (error) {
+ ee.emit('error', new CacheableRequest.CacheError(error));
+ }
+ })();
+ } else if (opts.cache && revalidate) {
+ (async () => {
+ try {
+ await this.cache.delete(key);
+ } catch (error) {
+ ee.emit('error', new CacheableRequest.CacheError(error));
+ }
+ })();
+ }
+
+ ee.emit('response', clonedResponse || response);
+ if (typeof cb === 'function') {
+ cb(clonedResponse || response);
+ }
+ };
+
+ try {
+ const req = request(opts, handler);
+ req.once('error', requestErrorCallback);
+ req.once('abort', requestErrorCallback);
+ ee.emit('request', req);
+ } catch (error) {
+ ee.emit('error', new CacheableRequest.RequestError(error));
+ }
+ };
+
+ (async () => {
+ const get = async opts => {
+ await Promise.resolve();
+
+ const cacheEntry = opts.cache ? await this.cache.get(key) : undefined;
+ if (typeof cacheEntry === 'undefined') {
+ return makeRequest(opts);
+ }
+
+ const policy = CachePolicy.fromObject(cacheEntry.cachePolicy);
+ if (policy.satisfiesWithoutRevalidation(opts) && !opts.forceRefresh) {
+ const headers = policy.responseHeaders();
+ const response = new Response(cacheEntry.statusCode, headers, cacheEntry.body, cacheEntry.url);
+ response.cachePolicy = policy;
+ response.fromCache = true;
+
+ ee.emit('response', response);
+ if (typeof cb === 'function') {
+ cb(response);
+ }
+ } else {
+ revalidate = cacheEntry;
+ opts.headers = policy.revalidationHeaders(opts);
+ makeRequest(opts);
+ }
+ };
+
+ const errorHandler = error => ee.emit('error', new CacheableRequest.CacheError(error));
+ this.cache.once('error', errorHandler);
+ ee.on('response', () => this.cache.removeListener('error', errorHandler));
+
+ try {
+ await get(opts);
+ } catch (error) {
+ if (opts.automaticFailover && !madeRequest) {
+ makeRequest(opts);
+ }
+
+ ee.emit('error', new CacheableRequest.CacheError(error));
+ }
+ })();
+
+ return ee;
+ };
+ }
+}
+
+function urlObjectToRequestOptions(url) {
+ const options = { ...url };
+ options.path = `${url.pathname || '/'}${url.search || ''}`;
+ delete options.pathname;
+ delete options.search;
+ return options;
+}
+
+function normalizeUrlObject(url) {
+ // If url was parsed by url.parse or new URL:
+ // - hostname will be set
+ // - host will be hostname[:port]
+ // - port will be set if it was explicit in the parsed string
+ // Otherwise, url was from request options:
+ // - hostname or host may be set
+ // - host shall not have port encoded
+ return {
+ protocol: url.protocol,
+ auth: url.auth,
+ hostname: url.hostname || url.host || 'localhost',
+ port: url.port,
+ pathname: url.pathname,
+ search: url.search
+ };
+}
+
+CacheableRequest.RequestError = class extends Error {
+ constructor(error) {
+ super(error.message);
+ this.name = 'RequestError';
+ Object.assign(this, error);
+ }
+};
+
+CacheableRequest.CacheError = class extends Error {
+ constructor(error) {
+ super(error.message);
+ this.name = 'CacheError';
+ Object.assign(this, error);
+ }
+};
+
+module.exports = CacheableRequest;
diff --git a/client/node_modules/clone-response/LICENSE b/client/node_modules/clone-response/LICENSE
new file mode 100644
index 0000000..f27ee9b
--- /dev/null
+++ b/client/node_modules/clone-response/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Luke Childs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/clone-response/README.md b/client/node_modules/clone-response/README.md
new file mode 100644
index 0000000..d037cfe
--- /dev/null
+++ b/client/node_modules/clone-response/README.md
@@ -0,0 +1,62 @@
+# clone-response
+
+> Clone a Node.js HTTP response stream
+
+[![Build Status](https://travis-ci.org/lukechilds/clone-response.svg?branch=master)](https://travis-ci.org/lukechilds/clone-response)
+[![Coverage Status](https://coveralls.io/repos/github/lukechilds/clone-response/badge.svg?branch=master)](https://coveralls.io/github/lukechilds/clone-response?branch=master)
+[![npm](https://img.shields.io/npm/dm/clone-response.svg)](https://www.npmjs.com/package/clone-response)
+[![npm](https://img.shields.io/npm/v/clone-response.svg)](https://www.npmjs.com/package/clone-response)
+
+Returns a new stream and copies over all properties and methods from the original response giving you a complete duplicate.
+
+This is useful in situations where you need to consume the response stream but also want to pass an unconsumed stream somewhere else to be consumed later.
+
+## Install
+
+```shell
+npm install --save clone-response
+```
+
+## Usage
+
+```js
+const http = require('http');
+const cloneResponse = require('clone-response');
+
+http.get('http://example.com', response => {
+ const clonedResponse = cloneResponse(response);
+ response.pipe(process.stdout);
+
+ setImmediate(() => {
+ // The response stream has already been consumed by the time this executes,
+ // however the cloned response stream is still available.
+ doSomethingWithResponse(clonedResponse);
+ });
+});
+```
+
+Please bear in mind that the process of cloning a stream consumes it. However, you can consume a stream multiple times in the same tick, therefore allowing you to create multiple clones. e.g:
+
+```js
+const clone1 = cloneResponse(response);
+const clone2 = cloneResponse(response);
+// response can still be consumed in this tick but cannot be consumed if passed
+// into any async callbacks. clone1 and clone2 can be passed around and be
+// consumed in the future.
+```
+
+## API
+
+### cloneResponse(response)
+
+Returns a clone of the passed in response.
+
+#### response
+
+Type: `stream`
+
+A [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage) to clone.
+
+## License
+
+MIT © Luke Childs
diff --git a/client/node_modules/clone-response/package.json b/client/node_modules/clone-response/package.json
new file mode 100644
index 0000000..a4a0810
--- /dev/null
+++ b/client/node_modules/clone-response/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "clone-response",
+ "version": "1.0.3",
+ "description": "Clone a Node.js HTTP response stream",
+ "main": "src/index.js",
+ "scripts": {
+ "test": "xo && nyc ava",
+ "coverage": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "xo": {
+ "extends": "xo-lukechilds"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/clone-response.git"
+ },
+ "keywords": [
+ "clone",
+ "duplicate",
+ "copy",
+ "response",
+ "HTTP",
+ "stream"
+ ],
+ "author": "Luke Childs <lukechilds123@gmail.com> (http://lukechilds.co.uk)",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "devDependencies": {
+ "ava": "^0.22.0",
+ "coveralls": "^2.13.1",
+ "create-test-server": "^2.0.1",
+ "eslint-config-xo-lukechilds": "^1.0.0",
+ "get-stream": "^3.0.0",
+ "nyc": "^11.0.2",
+ "pify": "^3.0.0",
+ "xo": "^0.19.0"
+ }
+}
diff --git a/client/node_modules/clone-response/src/index.js b/client/node_modules/clone-response/src/index.js
new file mode 100644
index 0000000..0285dff
--- /dev/null
+++ b/client/node_modules/clone-response/src/index.js
@@ -0,0 +1,17 @@
+'use strict';
+
+const PassThrough = require('stream').PassThrough;
+const mimicResponse = require('mimic-response');
+
+const cloneResponse = response => {
+ if (!(response && response.pipe)) {
+ throw new TypeError('Parameter `response` must be a response stream.');
+ }
+
+ const clone = new PassThrough();
+ mimicResponse(response, clone);
+
+ return response.pipe(clone);
+};
+
+module.exports = cloneResponse;
diff --git a/client/node_modules/cross-fetch/CHANGELOG.md b/client/node_modules/cross-fetch/CHANGELOG.md
new file mode 100644
index 0000000..2e432a6
--- /dev/null
+++ b/client/node_modules/cross-fetch/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [4.0.0](https://github.com/lquixada/cross-fetch/compare/v4.0.0-alpha.13...v4.0.0) (2023-07-03)
diff --git a/client/node_modules/cross-fetch/LICENSE b/client/node_modules/cross-fetch/LICENSE
new file mode 100644
index 0000000..9198b86
--- /dev/null
+++ b/client/node_modules/cross-fetch/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2017 Leonardo Quixadá
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/cross-fetch/README.md b/client/node_modules/cross-fetch/README.md
new file mode 100644
index 0000000..5e38a16
--- /dev/null
+++ b/client/node_modules/cross-fetch/README.md
@@ -0,0 +1,165 @@
+cross-fetch<br>
+[![NPM Version](https://img.shields.io/npm/v/cross-fetch.svg?branch=main)](https://www.npmjs.com/package/cross-fetch)
+[![Downloads Per Week](https://img.shields.io/npm/dw/cross-fetch.svg?color=blue)](https://www.npmjs.com/package/cross-fetch)
+[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
+[![CI](https://github.com/lquixada/cross-fetch/actions/workflows/ci.yml/badge.svg)](https://github.com/lquixada/cross-fetch/actions/workflows/ci.yml)
+[![codecov](https://codecov.io/gh/lquixada/cross-fetch/branch/main/graph/badge.svg)](https://codecov.io/gh/lquixada/cross-fetch)
+================
+
+Universal WHATWG Fetch API for Node, Browsers, Workers and React Native. The scenario that cross-fetch really shines is when the same JavaScript codebase needs to run on different platforms.
+
+- **Platform agnostic**: browsers, Node or React Native
+- **Optional polyfill**: it's up to you if something is going to be added to the global object or not
+- **Simple interface**: no instantiation, no configuration and no extra dependency
+- **WHATWG compliant**: it works the same way wherever your code runs
+- **TypeScript support**: better development experience with types.
+- **Worker support**: works on different types of workers such as Service Workers and CloudFlare Workers
+
+
+* * *
+
+## Table of Contents
+
+- [Table of Contents](#table-of-contents)
+- [Install](#install)
+- [Usage](#usage)
+- [Demo \& API](#demo--api)
+- [FAQ](#faq)
+ - [Yet another fetch library?](#yet-another-fetch-library)
+ - [Why polyfill might not be a good idea?](#why-polyfill-might-not-be-a-good-idea)
+ - [How does cross-fetch work?](#how-does-cross-fetch-work)
+- [Who's Using It?](#whos-using-it)
+- [Thanks](#thanks)
+- [License](#license)
+- [Author](#author)
+
+* * *
+
+## Install
+
+```sh
+npm install --save cross-fetch
+```
+
+As a [ponyfill](https://github.com/sindresorhus/ponyfill) (imports locally):
+
+```javascript
+// Using ES6 modules with Babel or TypeScript
+import fetch from 'cross-fetch';
+
+// Using CommonJS modules
+const fetch = require('cross-fetch');
+```
+
+As a polyfill (installs globally):
+
+```javascript
+// Using ES6 modules
+import 'cross-fetch/polyfill';
+
+// Using CommonJS modules
+require('cross-fetch/polyfill');
+```
+
+
+The CDN build is also available on unpkg:
+
+```html
+<script src="//unpkg.com/cross-fetch/dist/cross-fetch.js"></script>
+```
+
+This adds the fetch function to the window object. Note that this is not UMD compatible.
+
+
+* * *
+
+## Usage
+
+With [promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise):
+
+```javascript
+import fetch from 'cross-fetch';
+// Or just: import 'cross-fetch/polyfill';
+
+fetch('//api.github.com/users/lquixada')
+ .then(res => {
+ if (res.status >= 400) {
+ throw new Error("Bad response from server");
+ }
+ return res.json();
+ })
+ .then(user => {
+ console.log(user);
+ })
+ .catch(err => {
+ console.error(err);
+ });
+```
+
+With [async/await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function):
+
+```javascript
+import fetch from 'cross-fetch';
+// Or just: import 'cross-fetch/polyfill';
+
+(async () => {
+ try {
+ const res = await fetch('//api.github.com/users/lquixada');
+
+ if (res.status >= 400) {
+ throw new Error("Bad response from server");
+ }
+
+ const user = await res.json();
+
+ console.log(user);
+ } catch (err) {
+ console.error(err);
+ }
+})();
+```
+
+## Demo & API
+
+You can find a comprehensive doc at [Github's fetch](https://github.github.io/fetch/) page. If you want to play with cross-fetch, check our [**JSFiddle playground**](https://jsfiddle.net/lquixada/3ypqgacp/).
+
+> **Tip**: Run the fiddle on various browsers and with different settings (for instance: cross-domain requests, wrong urls or text requests). Don't forget to open the console in the test suite page and play around.
+
+
+## FAQ
+
+#### Yet another fetch library?
+
+I did a lot of research in order to find a fetch library that could be simple, cross-platform and provide polyfill as an option. There's a plethora of libs out there but none could match those requirements.
+
+#### Why polyfill might not be a good idea?
+
+In a word? Risk. If the spec changes in the future, it might be problematic to debug. Read more about it on [sindresorhus's ponyfill](https://github.com/sindresorhus/ponyfill#how-are-ponyfills-better-than-polyfills) page. It's up to you if you're fine with it or not.
+
+#### How does cross-fetch work?
+
+Just like isomorphic-fetch, it is just a proxy. If you're in node, it delivers you the [node-fetch](https://github.com/bitinn/node-fetch/) library, if you're in a browser or React Native, it delivers you the github's [whatwg-fetch](https://github.com/github/fetch/). The same strategy applies whether you're using polyfill or ponyfill.
+
+
+## Who's Using It?
+
+|[![The New York Times](./docs/images/logo-nytimes.png)](https://www.nytimes.com/)|[![Apollo GraphQL](./docs/images/logo-apollo.png)](https://github.com/apollographql/apollo-client/)|[![Facebook](./docs/images/logo-facebook.png)](https://github.com/facebook/fbjs/)|[![Swagger](./docs/images/logo-swagger.png)](https://swagger.io/)|[![VulcanJS](./docs/images/logo-vulcanjs.png)](http://vulcanjs.org)|[![graphql-request](./docs/images/logo-graphql-request.png)](https://github.com/prisma/graphql-request)|
+|:---:|:---:|:---:|:---:|:---:|:---:|
+|The New York Times|Apollo GraphQL|Facebook|Swagger|VulcanJS|graphql-request|
+
+
+## Thanks
+
+Heavily inspired by the works of [matthew-andrews](https://github.com/matthew-andrews). Kudos to him!
+
+
+## License
+
+cross-fetch is licensed under the [MIT license](https://github.com/lquixada/cross-fetch/blob/main/LICENSE) © [Leonardo Quixadá](https://twitter.com/lquixada/)
+
+
+## Author
+
+|[![@lquixada](https://avatars0.githubusercontent.com/u/195494?v=4&s=96)](https://github.com/lquixada)|
+|:---:|
+|[@lquixada](http://www.github.com/lquixada)|
diff --git a/client/node_modules/cross-fetch/dist/browser-polyfill.js b/client/node_modules/cross-fetch/dist/browser-polyfill.js
new file mode 100644
index 0000000..74c42c0
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/browser-polyfill.js
@@ -0,0 +1,619 @@
+(function(self) {
+
+var irrelevant = (function (exports) {
+
+ var global =
+ (typeof globalThis !== 'undefined' && globalThis) ||
+ (typeof self !== 'undefined' && self) ||
+ (typeof global !== 'undefined' && global);
+
+ var support = {
+ searchParams: 'URLSearchParams' in global,
+ iterable: 'Symbol' in global && 'iterator' in Symbol,
+ blob:
+ 'FileReader' in global &&
+ 'Blob' in global &&
+ (function() {
+ try {
+ new Blob();
+ return true
+ } catch (e) {
+ return false
+ }
+ })(),
+ formData: 'FormData' in global,
+ arrayBuffer: 'ArrayBuffer' in global
+ };
+
+ function isDataView(obj) {
+ return obj && DataView.prototype.isPrototypeOf(obj)
+ }
+
+ if (support.arrayBuffer) {
+ var viewClasses = [
+ '[object Int8Array]',
+ '[object Uint8Array]',
+ '[object Uint8ClampedArray]',
+ '[object Int16Array]',
+ '[object Uint16Array]',
+ '[object Int32Array]',
+ '[object Uint32Array]',
+ '[object Float32Array]',
+ '[object Float64Array]'
+ ];
+
+ var isArrayBufferView =
+ ArrayBuffer.isView ||
+ function(obj) {
+ return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
+ };
+ }
+
+ function normalizeName(name) {
+ if (typeof name !== 'string') {
+ name = String(name);
+ }
+ if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
+ throw new TypeError('Invalid character in header field name: "' + name + '"')
+ }
+ return name.toLowerCase()
+ }
+
+ function normalizeValue(value) {
+ if (typeof value !== 'string') {
+ value = String(value);
+ }
+ return value
+ }
+
+ // Build a destructive iterator for the value list
+ function iteratorFor(items) {
+ var iterator = {
+ next: function() {
+ var value = items.shift();
+ return {done: value === undefined, value: value}
+ }
+ };
+
+ if (support.iterable) {
+ iterator[Symbol.iterator] = function() {
+ return iterator
+ };
+ }
+
+ return iterator
+ }
+
+ function Headers(headers) {
+ this.map = {};
+
+ if (headers instanceof Headers) {
+ headers.forEach(function(value, name) {
+ this.append(name, value);
+ }, this);
+ } else if (Array.isArray(headers)) {
+ headers.forEach(function(header) {
+ this.append(header[0], header[1]);
+ }, this);
+ } else if (headers) {
+ Object.getOwnPropertyNames(headers).forEach(function(name) {
+ this.append(name, headers[name]);
+ }, this);
+ }
+ }
+
+ Headers.prototype.append = function(name, value) {
+ name = normalizeName(name);
+ value = normalizeValue(value);
+ var oldValue = this.map[name];
+ this.map[name] = oldValue ? oldValue + ', ' + value : value;
+ };
+
+ Headers.prototype['delete'] = function(name) {
+ delete this.map[normalizeName(name)];
+ };
+
+ Headers.prototype.get = function(name) {
+ name = normalizeName(name);
+ return this.has(name) ? this.map[name] : null
+ };
+
+ Headers.prototype.has = function(name) {
+ return this.map.hasOwnProperty(normalizeName(name))
+ };
+
+ Headers.prototype.set = function(name, value) {
+ this.map[normalizeName(name)] = normalizeValue(value);
+ };
+
+ Headers.prototype.forEach = function(callback, thisArg) {
+ for (var name in this.map) {
+ if (this.map.hasOwnProperty(name)) {
+ callback.call(thisArg, this.map[name], name, this);
+ }
+ }
+ };
+
+ Headers.prototype.keys = function() {
+ var items = [];
+ this.forEach(function(value, name) {
+ items.push(name);
+ });
+ return iteratorFor(items)
+ };
+
+ Headers.prototype.values = function() {
+ var items = [];
+ this.forEach(function(value) {
+ items.push(value);
+ });
+ return iteratorFor(items)
+ };
+
+ Headers.prototype.entries = function() {
+ var items = [];
+ this.forEach(function(value, name) {
+ items.push([name, value]);
+ });
+ return iteratorFor(items)
+ };
+
+ if (support.iterable) {
+ Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
+ }
+
+ function consumed(body) {
+ if (body.bodyUsed) {
+ return Promise.reject(new TypeError('Already read'))
+ }
+ body.bodyUsed = true;
+ }
+
+ function fileReaderReady(reader) {
+ return new Promise(function(resolve, reject) {
+ reader.onload = function() {
+ resolve(reader.result);
+ };
+ reader.onerror = function() {
+ reject(reader.error);
+ };
+ })
+ }
+
+ function readBlobAsArrayBuffer(blob) {
+ var reader = new FileReader();
+ var promise = fileReaderReady(reader);
+ reader.readAsArrayBuffer(blob);
+ return promise
+ }
+
+ function readBlobAsText(blob) {
+ var reader = new FileReader();
+ var promise = fileReaderReady(reader);
+ reader.readAsText(blob);
+ return promise
+ }
+
+ function readArrayBufferAsText(buf) {
+ var view = new Uint8Array(buf);
+ var chars = new Array(view.length);
+
+ for (var i = 0; i < view.length; i++) {
+ chars[i] = String.fromCharCode(view[i]);
+ }
+ return chars.join('')
+ }
+
+ function bufferClone(buf) {
+ if (buf.slice) {
+ return buf.slice(0)
+ } else {
+ var view = new Uint8Array(buf.byteLength);
+ view.set(new Uint8Array(buf));
+ return view.buffer
+ }
+ }
+
+ function Body() {
+ this.bodyUsed = false;
+
+ this._initBody = function(body) {
+ /*
+ fetch-mock wraps the Response object in an ES6 Proxy to
+ provide useful test harness features such as flush. However, on
+ ES5 browsers without fetch or Proxy support pollyfills must be used;
+ the proxy-pollyfill is unable to proxy an attribute unless it exists
+ on the object before the Proxy is created. This change ensures
+ Response.bodyUsed exists on the instance, while maintaining the
+ semantic of setting Request.bodyUsed in the constructor before
+ _initBody is called.
+ */
+ this.bodyUsed = this.bodyUsed;
+ this._bodyInit = body;
+ if (!body) {
+ this._bodyText = '';
+ } else if (typeof body === 'string') {
+ this._bodyText = body;
+ } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
+ this._bodyBlob = body;
+ } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
+ this._bodyFormData = body;
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this._bodyText = body.toString();
+ } else if (support.arrayBuffer && support.blob && isDataView(body)) {
+ this._bodyArrayBuffer = bufferClone(body.buffer);
+ // IE 10-11 can't handle a DataView body.
+ this._bodyInit = new Blob([this._bodyArrayBuffer]);
+ } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
+ this._bodyArrayBuffer = bufferClone(body);
+ } else {
+ this._bodyText = body = Object.prototype.toString.call(body);
+ }
+
+ if (!this.headers.get('content-type')) {
+ if (typeof body === 'string') {
+ this.headers.set('content-type', 'text/plain;charset=UTF-8');
+ } else if (this._bodyBlob && this._bodyBlob.type) {
+ this.headers.set('content-type', this._bodyBlob.type);
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+ }
+ }
+ };
+
+ if (support.blob) {
+ this.blob = function() {
+ var rejected = consumed(this);
+ if (rejected) {
+ return rejected
+ }
+
+ if (this._bodyBlob) {
+ return Promise.resolve(this._bodyBlob)
+ } else if (this._bodyArrayBuffer) {
+ return Promise.resolve(new Blob([this._bodyArrayBuffer]))
+ } else if (this._bodyFormData) {
+ throw new Error('could not read FormData body as blob')
+ } else {
+ return Promise.resolve(new Blob([this._bodyText]))
+ }
+ };
+
+ this.arrayBuffer = function() {
+ if (this._bodyArrayBuffer) {
+ var isConsumed = consumed(this);
+ if (isConsumed) {
+ return isConsumed
+ }
+ if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
+ return Promise.resolve(
+ this._bodyArrayBuffer.buffer.slice(
+ this._bodyArrayBuffer.byteOffset,
+ this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
+ )
+ )
+ } else {
+ return Promise.resolve(this._bodyArrayBuffer)
+ }
+ } else {
+ return this.blob().then(readBlobAsArrayBuffer)
+ }
+ };
+ }
+
+ this.text = function() {
+ var rejected = consumed(this);
+ if (rejected) {
+ return rejected
+ }
+
+ if (this._bodyBlob) {
+ return readBlobAsText(this._bodyBlob)
+ } else if (this._bodyArrayBuffer) {
+ return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
+ } else if (this._bodyFormData) {
+ throw new Error('could not read FormData body as text')
+ } else {
+ return Promise.resolve(this._bodyText)
+ }
+ };
+
+ if (support.formData) {
+ this.formData = function() {
+ return this.text().then(decode)
+ };
+ }
+
+ this.json = function() {
+ return this.text().then(JSON.parse)
+ };
+
+ return this
+ }
+
+ // HTTP methods whose capitalization should be normalized
+ var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
+
+ function normalizeMethod(method) {
+ var upcased = method.toUpperCase();
+ return methods.indexOf(upcased) > -1 ? upcased : method
+ }
+
+ function Request(input, options) {
+ if (!(this instanceof Request)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
+
+ options = options || {};
+ var body = options.body;
+
+ if (input instanceof Request) {
+ if (input.bodyUsed) {
+ throw new TypeError('Already read')
+ }
+ this.url = input.url;
+ this.credentials = input.credentials;
+ if (!options.headers) {
+ this.headers = new Headers(input.headers);
+ }
+ this.method = input.method;
+ this.mode = input.mode;
+ this.signal = input.signal;
+ if (!body && input._bodyInit != null) {
+ body = input._bodyInit;
+ input.bodyUsed = true;
+ }
+ } else {
+ this.url = String(input);
+ }
+
+ this.credentials = options.credentials || this.credentials || 'same-origin';
+ if (options.headers || !this.headers) {
+ this.headers = new Headers(options.headers);
+ }
+ this.method = normalizeMethod(options.method || this.method || 'GET');
+ this.mode = options.mode || this.mode || null;
+ this.signal = options.signal || this.signal;
+ this.referrer = null;
+
+ if ((this.method === 'GET' || this.method === 'HEAD') && body) {
+ throw new TypeError('Body not allowed for GET or HEAD requests')
+ }
+ this._initBody(body);
+
+ if (this.method === 'GET' || this.method === 'HEAD') {
+ if (options.cache === 'no-store' || options.cache === 'no-cache') {
+ // Search for a '_' parameter in the query string
+ var reParamSearch = /([?&])_=[^&]*/;
+ if (reParamSearch.test(this.url)) {
+ // If it already exists then set the value with the current time
+ this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
+ } else {
+ // Otherwise add a new '_' parameter to the end with the current time
+ var reQueryString = /\?/;
+ this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
+ }
+ }
+ }
+ }
+
+ Request.prototype.clone = function() {
+ return new Request(this, {body: this._bodyInit})
+ };
+
+ function decode(body) {
+ var form = new FormData();
+ body
+ .trim()
+ .split('&')
+ .forEach(function(bytes) {
+ if (bytes) {
+ var split = bytes.split('=');
+ var name = split.shift().replace(/\+/g, ' ');
+ var value = split.join('=').replace(/\+/g, ' ');
+ form.append(decodeURIComponent(name), decodeURIComponent(value));
+ }
+ });
+ return form
+ }
+
+ function parseHeaders(rawHeaders) {
+ var headers = new Headers();
+ // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
+ // https://tools.ietf.org/html/rfc7230#section-3.2
+ var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
+ // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
+ // https://github.com/github/fetch/issues/748
+ // https://github.com/zloirock/core-js/issues/751
+ preProcessedHeaders
+ .split('\r')
+ .map(function(header) {
+ return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
+ })
+ .forEach(function(line) {
+ var parts = line.split(':');
+ var key = parts.shift().trim();
+ if (key) {
+ var value = parts.join(':').trim();
+ headers.append(key, value);
+ }
+ });
+ return headers
+ }
+
+ Body.call(Request.prototype);
+
+ function Response(bodyInit, options) {
+ if (!(this instanceof Response)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
+ if (!options) {
+ options = {};
+ }
+
+ this.type = 'default';
+ this.status = options.status === undefined ? 200 : options.status;
+ this.ok = this.status >= 200 && this.status < 300;
+ this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
+ this.headers = new Headers(options.headers);
+ this.url = options.url || '';
+ this._initBody(bodyInit);
+ }
+
+ Body.call(Response.prototype);
+
+ Response.prototype.clone = function() {
+ return new Response(this._bodyInit, {
+ status: this.status,
+ statusText: this.statusText,
+ headers: new Headers(this.headers),
+ url: this.url
+ })
+ };
+
+ Response.error = function() {
+ var response = new Response(null, {status: 0, statusText: ''});
+ response.type = 'error';
+ return response
+ };
+
+ var redirectStatuses = [301, 302, 303, 307, 308];
+
+ Response.redirect = function(url, status) {
+ if (redirectStatuses.indexOf(status) === -1) {
+ throw new RangeError('Invalid status code')
+ }
+
+ return new Response(null, {status: status, headers: {location: url}})
+ };
+
+ exports.DOMException = global.DOMException;
+ try {
+ new exports.DOMException();
+ } catch (err) {
+ exports.DOMException = function(message, name) {
+ this.message = message;
+ this.name = name;
+ var error = Error(message);
+ this.stack = error.stack;
+ };
+ exports.DOMException.prototype = Object.create(Error.prototype);
+ exports.DOMException.prototype.constructor = exports.DOMException;
+ }
+
+ function fetch(input, init) {
+ return new Promise(function(resolve, reject) {
+ var request = new Request(input, init);
+
+ if (request.signal && request.signal.aborted) {
+ return reject(new exports.DOMException('Aborted', 'AbortError'))
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ function abortXhr() {
+ xhr.abort();
+ }
+
+ xhr.onload = function() {
+ var options = {
+ status: xhr.status,
+ statusText: xhr.statusText,
+ headers: parseHeaders(xhr.getAllResponseHeaders() || '')
+ };
+ options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
+ var body = 'response' in xhr ? xhr.response : xhr.responseText;
+ setTimeout(function() {
+ resolve(new Response(body, options));
+ }, 0);
+ };
+
+ xhr.onerror = function() {
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
+ };
+
+ xhr.ontimeout = function() {
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
+ };
+
+ xhr.onabort = function() {
+ setTimeout(function() {
+ reject(new exports.DOMException('Aborted', 'AbortError'));
+ }, 0);
+ };
+
+ function fixUrl(url) {
+ try {
+ return url === '' && global.location.href ? global.location.href : url
+ } catch (e) {
+ return url
+ }
+ }
+
+ xhr.open(request.method, fixUrl(request.url), true);
+
+ if (request.credentials === 'include') {
+ xhr.withCredentials = true;
+ } else if (request.credentials === 'omit') {
+ xhr.withCredentials = false;
+ }
+
+ if ('responseType' in xhr) {
+ if (support.blob) {
+ xhr.responseType = 'blob';
+ } else if (
+ support.arrayBuffer &&
+ request.headers.get('Content-Type') &&
+ request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
+ ) {
+ xhr.responseType = 'arraybuffer';
+ }
+ }
+
+ if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
+ Object.getOwnPropertyNames(init.headers).forEach(function(name) {
+ xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
+ });
+ } else {
+ request.headers.forEach(function(value, name) {
+ xhr.setRequestHeader(name, value);
+ });
+ }
+
+ if (request.signal) {
+ request.signal.addEventListener('abort', abortXhr);
+
+ xhr.onreadystatechange = function() {
+ // DONE (success or failure)
+ if (xhr.readyState === 4) {
+ request.signal.removeEventListener('abort', abortXhr);
+ }
+ };
+ }
+
+ xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
+ })
+ }
+
+ fetch.polyfill = true;
+
+ if (!global.fetch) {
+ global.fetch = fetch;
+ global.Headers = Headers;
+ global.Request = Request;
+ global.Response = Response;
+ }
+
+ exports.Headers = Headers;
+ exports.Request = Request;
+ exports.Response = Response;
+ exports.fetch = fetch;
+
+ return exports;
+
+})({});
+})(typeof self !== 'undefined' ? self : this);
diff --git a/client/node_modules/cross-fetch/dist/browser-ponyfill.js b/client/node_modules/cross-fetch/dist/browser-ponyfill.js
new file mode 100644
index 0000000..6ecf75a
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/browser-ponyfill.js
@@ -0,0 +1,647 @@
+// Save global object in a variable
+var __global__ =
+(typeof globalThis !== 'undefined' && globalThis) ||
+(typeof self !== 'undefined' && self) ||
+(typeof global !== 'undefined' && global);
+// Create an object that extends from __global__ without the fetch function
+var __globalThis__ = (function () {
+function F() {
+this.fetch = false;
+this.DOMException = __global__.DOMException
+}
+F.prototype = __global__; // Needed for feature detection on whatwg-fetch's code
+return new F();
+})();
+// Wraps whatwg-fetch with a function scope to hijack the global object
+// "globalThis" that's going to be patched
+(function(globalThis) {
+
+var irrelevant = (function (exports) {
+
+ var global =
+ (typeof globalThis !== 'undefined' && globalThis) ||
+ (typeof self !== 'undefined' && self) ||
+ (typeof global !== 'undefined' && global);
+
+ var support = {
+ searchParams: 'URLSearchParams' in global,
+ iterable: 'Symbol' in global && 'iterator' in Symbol,
+ blob:
+ 'FileReader' in global &&
+ 'Blob' in global &&
+ (function() {
+ try {
+ new Blob();
+ return true
+ } catch (e) {
+ return false
+ }
+ })(),
+ formData: 'FormData' in global,
+ arrayBuffer: 'ArrayBuffer' in global
+ };
+
+ function isDataView(obj) {
+ return obj && DataView.prototype.isPrototypeOf(obj)
+ }
+
+ if (support.arrayBuffer) {
+ var viewClasses = [
+ '[object Int8Array]',
+ '[object Uint8Array]',
+ '[object Uint8ClampedArray]',
+ '[object Int16Array]',
+ '[object Uint16Array]',
+ '[object Int32Array]',
+ '[object Uint32Array]',
+ '[object Float32Array]',
+ '[object Float64Array]'
+ ];
+
+ var isArrayBufferView =
+ ArrayBuffer.isView ||
+ function(obj) {
+ return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
+ };
+ }
+
+ function normalizeName(name) {
+ if (typeof name !== 'string') {
+ name = String(name);
+ }
+ if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
+ throw new TypeError('Invalid character in header field name: "' + name + '"')
+ }
+ return name.toLowerCase()
+ }
+
+ function normalizeValue(value) {
+ if (typeof value !== 'string') {
+ value = String(value);
+ }
+ return value
+ }
+
+ // Build a destructive iterator for the value list
+ function iteratorFor(items) {
+ var iterator = {
+ next: function() {
+ var value = items.shift();
+ return {done: value === undefined, value: value}
+ }
+ };
+
+ if (support.iterable) {
+ iterator[Symbol.iterator] = function() {
+ return iterator
+ };
+ }
+
+ return iterator
+ }
+
+ function Headers(headers) {
+ this.map = {};
+
+ if (headers instanceof Headers) {
+ headers.forEach(function(value, name) {
+ this.append(name, value);
+ }, this);
+ } else if (Array.isArray(headers)) {
+ headers.forEach(function(header) {
+ this.append(header[0], header[1]);
+ }, this);
+ } else if (headers) {
+ Object.getOwnPropertyNames(headers).forEach(function(name) {
+ this.append(name, headers[name]);
+ }, this);
+ }
+ }
+
+ Headers.prototype.append = function(name, value) {
+ name = normalizeName(name);
+ value = normalizeValue(value);
+ var oldValue = this.map[name];
+ this.map[name] = oldValue ? oldValue + ', ' + value : value;
+ };
+
+ Headers.prototype['delete'] = function(name) {
+ delete this.map[normalizeName(name)];
+ };
+
+ Headers.prototype.get = function(name) {
+ name = normalizeName(name);
+ return this.has(name) ? this.map[name] : null
+ };
+
+ Headers.prototype.has = function(name) {
+ return this.map.hasOwnProperty(normalizeName(name))
+ };
+
+ Headers.prototype.set = function(name, value) {
+ this.map[normalizeName(name)] = normalizeValue(value);
+ };
+
+ Headers.prototype.forEach = function(callback, thisArg) {
+ for (var name in this.map) {
+ if (this.map.hasOwnProperty(name)) {
+ callback.call(thisArg, this.map[name], name, this);
+ }
+ }
+ };
+
+ Headers.prototype.keys = function() {
+ var items = [];
+ this.forEach(function(value, name) {
+ items.push(name);
+ });
+ return iteratorFor(items)
+ };
+
+ Headers.prototype.values = function() {
+ var items = [];
+ this.forEach(function(value) {
+ items.push(value);
+ });
+ return iteratorFor(items)
+ };
+
+ Headers.prototype.entries = function() {
+ var items = [];
+ this.forEach(function(value, name) {
+ items.push([name, value]);
+ });
+ return iteratorFor(items)
+ };
+
+ if (support.iterable) {
+ Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
+ }
+
+ function consumed(body) {
+ if (body.bodyUsed) {
+ return Promise.reject(new TypeError('Already read'))
+ }
+ body.bodyUsed = true;
+ }
+
+ function fileReaderReady(reader) {
+ return new Promise(function(resolve, reject) {
+ reader.onload = function() {
+ resolve(reader.result);
+ };
+ reader.onerror = function() {
+ reject(reader.error);
+ };
+ })
+ }
+
+ function readBlobAsArrayBuffer(blob) {
+ var reader = new FileReader();
+ var promise = fileReaderReady(reader);
+ reader.readAsArrayBuffer(blob);
+ return promise
+ }
+
+ function readBlobAsText(blob) {
+ var reader = new FileReader();
+ var promise = fileReaderReady(reader);
+ reader.readAsText(blob);
+ return promise
+ }
+
+ function readArrayBufferAsText(buf) {
+ var view = new Uint8Array(buf);
+ var chars = new Array(view.length);
+
+ for (var i = 0; i < view.length; i++) {
+ chars[i] = String.fromCharCode(view[i]);
+ }
+ return chars.join('')
+ }
+
+ function bufferClone(buf) {
+ if (buf.slice) {
+ return buf.slice(0)
+ } else {
+ var view = new Uint8Array(buf.byteLength);
+ view.set(new Uint8Array(buf));
+ return view.buffer
+ }
+ }
+
+ function Body() {
+ this.bodyUsed = false;
+
+ this._initBody = function(body) {
+ /*
+ fetch-mock wraps the Response object in an ES6 Proxy to
+ provide useful test harness features such as flush. However, on
+ ES5 browsers without fetch or Proxy support pollyfills must be used;
+ the proxy-pollyfill is unable to proxy an attribute unless it exists
+ on the object before the Proxy is created. This change ensures
+ Response.bodyUsed exists on the instance, while maintaining the
+ semantic of setting Request.bodyUsed in the constructor before
+ _initBody is called.
+ */
+ this.bodyUsed = this.bodyUsed;
+ this._bodyInit = body;
+ if (!body) {
+ this._bodyText = '';
+ } else if (typeof body === 'string') {
+ this._bodyText = body;
+ } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
+ this._bodyBlob = body;
+ } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
+ this._bodyFormData = body;
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this._bodyText = body.toString();
+ } else if (support.arrayBuffer && support.blob && isDataView(body)) {
+ this._bodyArrayBuffer = bufferClone(body.buffer);
+ // IE 10-11 can't handle a DataView body.
+ this._bodyInit = new Blob([this._bodyArrayBuffer]);
+ } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
+ this._bodyArrayBuffer = bufferClone(body);
+ } else {
+ this._bodyText = body = Object.prototype.toString.call(body);
+ }
+
+ if (!this.headers.get('content-type')) {
+ if (typeof body === 'string') {
+ this.headers.set('content-type', 'text/plain;charset=UTF-8');
+ } else if (this._bodyBlob && this._bodyBlob.type) {
+ this.headers.set('content-type', this._bodyBlob.type);
+ } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
+ this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+ }
+ }
+ };
+
+ if (support.blob) {
+ this.blob = function() {
+ var rejected = consumed(this);
+ if (rejected) {
+ return rejected
+ }
+
+ if (this._bodyBlob) {
+ return Promise.resolve(this._bodyBlob)
+ } else if (this._bodyArrayBuffer) {
+ return Promise.resolve(new Blob([this._bodyArrayBuffer]))
+ } else if (this._bodyFormData) {
+ throw new Error('could not read FormData body as blob')
+ } else {
+ return Promise.resolve(new Blob([this._bodyText]))
+ }
+ };
+
+ this.arrayBuffer = function() {
+ if (this._bodyArrayBuffer) {
+ var isConsumed = consumed(this);
+ if (isConsumed) {
+ return isConsumed
+ }
+ if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
+ return Promise.resolve(
+ this._bodyArrayBuffer.buffer.slice(
+ this._bodyArrayBuffer.byteOffset,
+ this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
+ )
+ )
+ } else {
+ return Promise.resolve(this._bodyArrayBuffer)
+ }
+ } else {
+ return this.blob().then(readBlobAsArrayBuffer)
+ }
+ };
+ }
+
+ this.text = function() {
+ var rejected = consumed(this);
+ if (rejected) {
+ return rejected
+ }
+
+ if (this._bodyBlob) {
+ return readBlobAsText(this._bodyBlob)
+ } else if (this._bodyArrayBuffer) {
+ return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
+ } else if (this._bodyFormData) {
+ throw new Error('could not read FormData body as text')
+ } else {
+ return Promise.resolve(this._bodyText)
+ }
+ };
+
+ if (support.formData) {
+ this.formData = function() {
+ return this.text().then(decode)
+ };
+ }
+
+ this.json = function() {
+ return this.text().then(JSON.parse)
+ };
+
+ return this
+ }
+
+ // HTTP methods whose capitalization should be normalized
+ var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
+
+ function normalizeMethod(method) {
+ var upcased = method.toUpperCase();
+ return methods.indexOf(upcased) > -1 ? upcased : method
+ }
+
+ function Request(input, options) {
+ if (!(this instanceof Request)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
+
+ options = options || {};
+ var body = options.body;
+
+ if (input instanceof Request) {
+ if (input.bodyUsed) {
+ throw new TypeError('Already read')
+ }
+ this.url = input.url;
+ this.credentials = input.credentials;
+ if (!options.headers) {
+ this.headers = new Headers(input.headers);
+ }
+ this.method = input.method;
+ this.mode = input.mode;
+ this.signal = input.signal;
+ if (!body && input._bodyInit != null) {
+ body = input._bodyInit;
+ input.bodyUsed = true;
+ }
+ } else {
+ this.url = String(input);
+ }
+
+ this.credentials = options.credentials || this.credentials || 'same-origin';
+ if (options.headers || !this.headers) {
+ this.headers = new Headers(options.headers);
+ }
+ this.method = normalizeMethod(options.method || this.method || 'GET');
+ this.mode = options.mode || this.mode || null;
+ this.signal = options.signal || this.signal;
+ this.referrer = null;
+
+ if ((this.method === 'GET' || this.method === 'HEAD') && body) {
+ throw new TypeError('Body not allowed for GET or HEAD requests')
+ }
+ this._initBody(body);
+
+ if (this.method === 'GET' || this.method === 'HEAD') {
+ if (options.cache === 'no-store' || options.cache === 'no-cache') {
+ // Search for a '_' parameter in the query string
+ var reParamSearch = /([?&])_=[^&]*/;
+ if (reParamSearch.test(this.url)) {
+ // If it already exists then set the value with the current time
+ this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
+ } else {
+ // Otherwise add a new '_' parameter to the end with the current time
+ var reQueryString = /\?/;
+ this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
+ }
+ }
+ }
+ }
+
+ Request.prototype.clone = function() {
+ return new Request(this, {body: this._bodyInit})
+ };
+
+ function decode(body) {
+ var form = new FormData();
+ body
+ .trim()
+ .split('&')
+ .forEach(function(bytes) {
+ if (bytes) {
+ var split = bytes.split('=');
+ var name = split.shift().replace(/\+/g, ' ');
+ var value = split.join('=').replace(/\+/g, ' ');
+ form.append(decodeURIComponent(name), decodeURIComponent(value));
+ }
+ });
+ return form
+ }
+
+ function parseHeaders(rawHeaders) {
+ var headers = new Headers();
+ // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
+ // https://tools.ietf.org/html/rfc7230#section-3.2
+ var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
+ // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
+ // https://github.com/github/fetch/issues/748
+ // https://github.com/zloirock/core-js/issues/751
+ preProcessedHeaders
+ .split('\r')
+ .map(function(header) {
+ return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
+ })
+ .forEach(function(line) {
+ var parts = line.split(':');
+ var key = parts.shift().trim();
+ if (key) {
+ var value = parts.join(':').trim();
+ headers.append(key, value);
+ }
+ });
+ return headers
+ }
+
+ Body.call(Request.prototype);
+
+ function Response(bodyInit, options) {
+ if (!(this instanceof Response)) {
+ throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
+ }
+ if (!options) {
+ options = {};
+ }
+
+ this.type = 'default';
+ this.status = options.status === undefined ? 200 : options.status;
+ this.ok = this.status >= 200 && this.status < 300;
+ this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
+ this.headers = new Headers(options.headers);
+ this.url = options.url || '';
+ this._initBody(bodyInit);
+ }
+
+ Body.call(Response.prototype);
+
+ Response.prototype.clone = function() {
+ return new Response(this._bodyInit, {
+ status: this.status,
+ statusText: this.statusText,
+ headers: new Headers(this.headers),
+ url: this.url
+ })
+ };
+
+ Response.error = function() {
+ var response = new Response(null, {status: 0, statusText: ''});
+ response.type = 'error';
+ return response
+ };
+
+ var redirectStatuses = [301, 302, 303, 307, 308];
+
+ Response.redirect = function(url, status) {
+ if (redirectStatuses.indexOf(status) === -1) {
+ throw new RangeError('Invalid status code')
+ }
+
+ return new Response(null, {status: status, headers: {location: url}})
+ };
+
+ exports.DOMException = global.DOMException;
+ try {
+ new exports.DOMException();
+ } catch (err) {
+ exports.DOMException = function(message, name) {
+ this.message = message;
+ this.name = name;
+ var error = Error(message);
+ this.stack = error.stack;
+ };
+ exports.DOMException.prototype = Object.create(Error.prototype);
+ exports.DOMException.prototype.constructor = exports.DOMException;
+ }
+
+ function fetch(input, init) {
+ return new Promise(function(resolve, reject) {
+ var request = new Request(input, init);
+
+ if (request.signal && request.signal.aborted) {
+ return reject(new exports.DOMException('Aborted', 'AbortError'))
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ function abortXhr() {
+ xhr.abort();
+ }
+
+ xhr.onload = function() {
+ var options = {
+ status: xhr.status,
+ statusText: xhr.statusText,
+ headers: parseHeaders(xhr.getAllResponseHeaders() || '')
+ };
+ options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
+ var body = 'response' in xhr ? xhr.response : xhr.responseText;
+ setTimeout(function() {
+ resolve(new Response(body, options));
+ }, 0);
+ };
+
+ xhr.onerror = function() {
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
+ };
+
+ xhr.ontimeout = function() {
+ setTimeout(function() {
+ reject(new TypeError('Network request failed'));
+ }, 0);
+ };
+
+ xhr.onabort = function() {
+ setTimeout(function() {
+ reject(new exports.DOMException('Aborted', 'AbortError'));
+ }, 0);
+ };
+
+ function fixUrl(url) {
+ try {
+ return url === '' && global.location.href ? global.location.href : url
+ } catch (e) {
+ return url
+ }
+ }
+
+ xhr.open(request.method, fixUrl(request.url), true);
+
+ if (request.credentials === 'include') {
+ xhr.withCredentials = true;
+ } else if (request.credentials === 'omit') {
+ xhr.withCredentials = false;
+ }
+
+ if ('responseType' in xhr) {
+ if (support.blob) {
+ xhr.responseType = 'blob';
+ } else if (
+ support.arrayBuffer &&
+ request.headers.get('Content-Type') &&
+ request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
+ ) {
+ xhr.responseType = 'arraybuffer';
+ }
+ }
+
+ if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
+ Object.getOwnPropertyNames(init.headers).forEach(function(name) {
+ xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
+ });
+ } else {
+ request.headers.forEach(function(value, name) {
+ xhr.setRequestHeader(name, value);
+ });
+ }
+
+ if (request.signal) {
+ request.signal.addEventListener('abort', abortXhr);
+
+ xhr.onreadystatechange = function() {
+ // DONE (success or failure)
+ if (xhr.readyState === 4) {
+ request.signal.removeEventListener('abort', abortXhr);
+ }
+ };
+ }
+
+ xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
+ })
+ }
+
+ fetch.polyfill = true;
+
+ if (!global.fetch) {
+ global.fetch = fetch;
+ global.Headers = Headers;
+ global.Request = Request;
+ global.Response = Response;
+ }
+
+ exports.Headers = Headers;
+ exports.Request = Request;
+ exports.Response = Response;
+ exports.fetch = fetch;
+
+ return exports;
+
+})({});
+})(__globalThis__);
+// This is a ponyfill, so...
+__globalThis__.fetch.ponyfill = true;
+delete __globalThis__.fetch.polyfill;
+// Choose between native implementation (__global__) or custom implementation (__globalThis__)
+var ctx = __global__.fetch ? __global__ : __globalThis__;
+exports = ctx.fetch // To enable: import fetch from 'cross-fetch'
+exports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.
+exports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'
+exports.Headers = ctx.Headers
+exports.Request = ctx.Request
+exports.Response = ctx.Response
+module.exports = exports
diff --git a/client/node_modules/cross-fetch/dist/cross-fetch.js b/client/node_modules/cross-fetch/dist/cross-fetch.js
new file mode 100644
index 0000000..c54b9ed
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/cross-fetch.js
@@ -0,0 +1,2 @@
+!function(t){!function(e){var r="undefined"!=typeof globalThis&&globalThis||void 0!==t&&t||void 0!==r&&r,o="URLSearchParams"in r,n="Symbol"in r&&"iterator"in Symbol,i="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(t){return!1}}(),s="FormData"in r,a="ArrayBuffer"in r;if(a)var h=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(t){return t&&h.indexOf(Object.prototype.toString.call(t))>-1};function f(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function c(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n&&(e[Symbol.iterator]=function(){return e}),e}function y(t){this.map={},t instanceof y?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function l(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function b(t){var e=new FileReader,r=l(e);return e.readAsArrayBuffer(t),r}function m(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function w(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:s&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:o&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():a&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=m(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(t)||u(t))?this._bodyArrayBuffer=m(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):o&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var t=p(this);return t||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}return this.blob().then(b)}),this.text=function(){var t,e,r,o=p(this);if(o)return o;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=l(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o<e.length;o++)r[o]=String.fromCharCode(e[o]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},s&&(this.formData=function(){return this.text().then(T)}),this.json=function(){return this.text().then(JSON.parse)},this}y.prototype.append=function(t,e){t=f(t),e=c(e);var r=this.map[t];this.map[t]=r?r+", "+e:e},y.prototype.delete=function(t){delete this.map[f(t)]},y.prototype.get=function(t){return t=f(t),this.has(t)?this.map[t]:null},y.prototype.has=function(t){return this.map.hasOwnProperty(f(t))},y.prototype.set=function(t,e){this.map[f(t)]=c(e)},y.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},y.prototype.keys=function(){var t=[];return this.forEach((function(e,r){t.push(r)})),d(t)},y.prototype.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),d(t)},y.prototype.entries=function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),d(t)},n&&(y.prototype[Symbol.iterator]=y.prototype.entries);var v=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function E(t,e){if(!(this instanceof E))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var r,o,n=(e=e||{}).body;if(t instanceof E){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new y(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"same-origin",!e.headers&&this.headers||(this.headers=new y(e.headers)),this.method=(r=e.method||this.method||"GET",o=r.toUpperCase(),v.indexOf(o)>-1?o:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(n),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var i=/([?&])_=[^&]*/;if(i.test(this.url))this.url=this.url.replace(i,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function T(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var r=t.split("="),o=r.shift().replace(/\+/g," "),n=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(o),decodeURIComponent(n))}})),e}function A(t,e){if(!(this instanceof A))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new y(e.headers),this.url=e.url||"",this._initBody(t)}E.prototype.clone=function(){return new E(this,{body:this._bodyInit})},w.call(E.prototype),w.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new y(this.headers),url:this.url})},A.error=function(){var t=new A(null,{status:0,statusText:""});return t.type="error",t};var _=[301,302,303,307,308];A.redirect=function(t,e){if(-1===_.indexOf(e))throw new RangeError("Invalid status code");return new A(null,{status:e,headers:{location:t}})},e.DOMException=r.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function g(t,o){return new Promise((function(n,s){var h=new E(t,o);if(h.signal&&h.signal.aborted)return s(new e.DOMException("Aborted","AbortError"));var u=new XMLHttpRequest;function f(){u.abort()}u.onload=function(){var t,e,r={status:u.status,statusText:u.statusText,headers:(t=u.getAllResponseHeaders()||"",e=new y,t.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(t){return 0===t.indexOf("\n")?t.substr(1,t.length):t})).forEach((function(t){var r=t.split(":"),o=r.shift().trim();if(o){var n=r.join(":").trim();e.append(o,n)}})),e)};r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var o="response"in u?u.response:u.responseText;setTimeout((function(){n(new A(o,r))}),0)},u.onerror=function(){setTimeout((function(){s(new TypeError("Network request failed"))}),0)},u.ontimeout=function(){setTimeout((function(){s(new TypeError("Network request failed"))}),0)},u.onabort=function(){setTimeout((function(){s(new e.DOMException("Aborted","AbortError"))}),0)},u.open(h.method,function(t){try{return""===t&&r.location.href?r.location.href:t}catch(e){return t}}(h.url),!0),"include"===h.credentials?u.withCredentials=!0:"omit"===h.credentials&&(u.withCredentials=!1),"responseType"in u&&(i?u.responseType="blob":a&&h.headers.get("Content-Type")&&-1!==h.headers.get("Content-Type").indexOf("application/octet-stream")&&(u.responseType="arraybuffer")),!o||"object"!=typeof o.headers||o.headers instanceof y?h.headers.forEach((function(t,e){u.setRequestHeader(e,t)})):Object.getOwnPropertyNames(o.headers).forEach((function(t){u.setRequestHeader(t,c(o.headers[t]))})),h.signal&&(h.signal.addEventListener("abort",f),u.onreadystatechange=function(){4===u.readyState&&h.signal.removeEventListener("abort",f)}),u.send(void 0===h._bodyInit?null:h._bodyInit)}))}g.polyfill=!0,r.fetch||(r.fetch=g,r.Headers=y,r.Request=E,r.Response=A),e.Headers=y,e.Request=E,e.Response=A,e.fetch=g}({})}("undefined"!=typeof self?self:this);
+//# sourceMappingURL=cross-fetch.js.map
diff --git a/client/node_modules/cross-fetch/dist/cross-fetch.js.map b/client/node_modules/cross-fetch/dist/cross-fetch.js.map
new file mode 100644
index 0000000..ebdc5c0
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/cross-fetch.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cross-fetch.js","sources":["../node_modules/whatwg-fetch/fetch.js"],"sourcesContent":["var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n"],"names":["global","globalThis","self","support","Symbol","Blob","e","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","Object","prototype","toString","call","normalizeName","name","String","test","TypeError","toLowerCase","normalizeValue","value","iteratorFor","items","iterator","next","shift","done","undefined","Headers","headers","this","map","forEach","append","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","Promise","reject","fileReaderReady","reader","resolve","onload","result","onerror","error","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","get","type","rejected","Error","arrayBuffer","isConsumed","byteOffset","then","text","readAsText","chars","length","i","fromCharCode","join","readArrayBufferAsText","formData","decode","json","JSON","parse","oldValue","has","hasOwnProperty","callback","thisArg","keys","push","values","entries","methods","Request","input","options","method","upcased","url","credentials","mode","signal","toUpperCase","referrer","cache","reParamSearch","replace","Date","getTime","form","trim","split","bytes","decodeURIComponent","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","exports","DOMException","err","message","stack","create","constructor","fetch","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","substr","line","parts","key","responseURL","responseText","setTimeout","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill"],"mappings":"0BAAA,IAAIA,EACqB,oBAAfC,YAA8BA,iBACrB,IAATC,GAAwBA,QACb,IAAXF,GAA0BA,EAEhCG,EACY,oBAAqBH,EADjCG,EAEQ,WAAYH,GAAU,aAAcI,OAF5CD,EAIA,eAAgBH,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIK,MACG,CACR,CAAC,MAAOC,GACP,OAAO,CACR,CACF,CAPD,GANAH,EAcQ,aAAcH,EAdtBG,EAeW,gBAAiBH,EAOhC,GAAIG,EACF,IAAII,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASC,GACP,OAAOA,GAAOJ,EAAYK,QAAQC,OAAOC,UAAUC,SAASC,KAAKL,KAAS,CAC3E,EAGL,SAASM,EAAcC,GAIrB,GAHoB,iBAATA,IACTA,EAAOC,OAAOD,IAEZ,6BAA6BE,KAAKF,IAAkB,KAATA,EAC7C,MAAM,IAAIG,UAAU,4CAA8CH,EAAO,KAE3E,OAAOA,EAAKI,aACd,CAEA,SAASC,EAAeC,GAItB,MAHqB,iBAAVA,IACTA,EAAQL,OAAOK,IAEVA,CACT,CAGA,SAASC,EAAYC,GACnB,IAAIC,EAAW,CACbC,KAAM,WACJ,IAAIJ,EAAQE,EAAMG,QAClB,MAAO,CAACC,UAAgBC,IAAVP,EAAqBA,MAAOA,EAC3C,GASH,OANIrB,IACFwB,EAASvB,OAAOuB,UAAY,WAC1B,OAAOA,CACR,GAGIA,CACT,CAEO,SAASK,EAAQC,GACtBC,KAAKC,IAAM,CAAE,EAETF,aAAmBD,EACrBC,EAAQG,SAAQ,SAASZ,EAAON,GAC9BgB,KAAKG,OAAOnB,EAAMM,EACnB,GAAEU,MACMI,MAAMC,QAAQN,GACvBA,EAAQG,SAAQ,SAASI,GACvBN,KAAKG,OAAOG,EAAO,GAAIA,EAAO,GAC/B,GAAEN,MACMD,GACTpB,OAAO4B,oBAAoBR,GAASG,SAAQ,SAASlB,GACnDgB,KAAKG,OAAOnB,EAAMe,EAAQf,GAC3B,GAAEgB,KAEP,CA8DA,SAASQ,EAASC,GAChB,GAAIA,EAAKC,SACP,OAAOC,QAAQC,OAAO,IAAIzB,UAAU,iBAEtCsB,EAAKC,UAAW,CAClB,CAEA,SAASG,EAAgBC,GACvB,OAAO,IAAIH,SAAQ,SAASI,EAASH,GACnCE,EAAOE,OAAS,WACdD,EAAQD,EAAOG,OAChB,EACDH,EAAOI,QAAU,WACfN,EAAOE,EAAOK,MACf,CACL,GACA,CAEA,SAASC,EAAsBC,GAC7B,IAAIP,EAAS,IAAIQ,WACbC,EAAUV,EAAgBC,GAE9B,OADAA,EAAOU,kBAAkBH,GAClBE,CACT,CAmBA,SAASE,EAAYC,GACnB,GAAIA,EAAIC,MACN,OAAOD,EAAIC,MAAM,GAEjB,IAAIC,EAAO,IAAIC,WAAWH,EAAII,YAE9B,OADAF,EAAKG,IAAI,IAAIF,WAAWH,IACjBE,EAAKI,MAEhB,CAEA,SAASC,IAkHP,OAjHAjC,KAAKU,UAAW,EAEhBV,KAAKkC,UAAY,SAASzB,GAhM5B,IAAoBhC,EA2MhBuB,KAAKU,SAAWV,KAAKU,SACrBV,KAAKmC,UAAY1B,EACZA,EAEsB,iBAATA,EAChBT,KAAKoC,UAAY3B,EACRxC,GAAgBE,KAAKS,UAAUyD,cAAc5B,GACtDT,KAAKsC,UAAY7B,EACRxC,GAAoBsE,SAAS3D,UAAUyD,cAAc5B,GAC9DT,KAAKwC,cAAgB/B,EACZxC,GAAwBwE,gBAAgB7D,UAAUyD,cAAc5B,GACzET,KAAKoC,UAAY3B,EAAK5B,WACbZ,GAAuBA,KAvNlBQ,EAuN6CgC,IAtNjDiC,SAAS9D,UAAUyD,cAAc5D,KAuN3CuB,KAAK2C,iBAAmBlB,EAAYhB,EAAKuB,QAEzChC,KAAKmC,UAAY,IAAIhE,KAAK,CAAC6B,KAAK2C,oBACvB1E,IAAwBM,YAAYK,UAAUyD,cAAc5B,IAASnC,EAAkBmC,IAChGT,KAAK2C,iBAAmBlB,EAAYhB,GAEpCT,KAAKoC,UAAY3B,EAAO9B,OAAOC,UAAUC,SAASC,KAAK2B,GAhBvDT,KAAKoC,UAAY,GAmBdpC,KAAKD,QAAQ6C,IAAI,kBACA,iBAATnC,EACTT,KAAKD,QAAQgC,IAAI,eAAgB,4BACxB/B,KAAKsC,WAAatC,KAAKsC,UAAUO,KAC1C7C,KAAKD,QAAQgC,IAAI,eAAgB/B,KAAKsC,UAAUO,MACvC5E,GAAwBwE,gBAAgB7D,UAAUyD,cAAc5B,IACzET,KAAKD,QAAQgC,IAAI,eAAgB,mDAGtC,EAEG9D,IACF+B,KAAKqB,KAAO,WACV,IAAIyB,EAAWtC,EAASR,MACxB,GAAI8C,EACF,OAAOA,EAGT,GAAI9C,KAAKsC,UACP,OAAO3B,QAAQI,QAAQf,KAAKsC,WACvB,GAAItC,KAAK2C,iBACd,OAAOhC,QAAQI,QAAQ,IAAI5C,KAAK,CAAC6B,KAAK2C,oBACjC,GAAI3C,KAAKwC,cACd,MAAM,IAAIO,MAAM,wCAEhB,OAAOpC,QAAQI,QAAQ,IAAI5C,KAAK,CAAC6B,KAAKoC,YAEzC,EAEDpC,KAAKgD,YAAc,WACjB,GAAIhD,KAAK2C,iBAAkB,CACzB,IAAIM,EAAazC,EAASR,MAC1B,OAAIiD,IAGA1E,YAAYC,OAAOwB,KAAK2C,kBACnBhC,QAAQI,QACbf,KAAK2C,iBAAiBX,OAAOL,MAC3B3B,KAAK2C,iBAAiBO,WACtBlD,KAAK2C,iBAAiBO,WAAalD,KAAK2C,iBAAiBb,aAItDnB,QAAQI,QAAQf,KAAK2C,kBAEtC,CACQ,OAAO3C,KAAKqB,OAAO8B,KAAK/B,EAE3B,GAGHpB,KAAKoD,KAAO,WACV,IAnHoB/B,EAClBP,EACAS,EAiHEuB,EAAWtC,EAASR,MACxB,GAAI8C,EACF,OAAOA,EAGT,GAAI9C,KAAKsC,UACP,OAzHkBjB,EAyHIrB,KAAKsC,UAxH3BxB,EAAS,IAAIQ,WACbC,EAAUV,EAAgBC,GAC9BA,EAAOuC,WAAWhC,GACXE,EAsHE,GAAIvB,KAAK2C,iBACd,OAAOhC,QAAQI,QApHrB,SAA+BW,GAI7B,IAHA,IAAIE,EAAO,IAAIC,WAAWH,GACtB4B,EAAQ,IAAIlD,MAAMwB,EAAK2B,QAElBC,EAAI,EAAGA,EAAI5B,EAAK2B,OAAQC,IAC/BF,EAAME,GAAKvE,OAAOwE,aAAa7B,EAAK4B,IAEtC,OAAOF,EAAMI,KAAK,GACpB,CA4G6BC,CAAsB3D,KAAK2C,mBAC7C,GAAI3C,KAAKwC,cACd,MAAM,IAAIO,MAAM,wCAEhB,OAAOpC,QAAQI,QAAQf,KAAKoC,UAE/B,EAEGnE,IACF+B,KAAK4D,SAAW,WACd,OAAO5D,KAAKoD,OAAOD,KAAKU,EACzB,GAGH7D,KAAK8D,KAAO,WACV,OAAO9D,KAAKoD,OAAOD,KAAKY,KAAKC,MAC9B,EAEMhE,IACT,CAnOAF,EAAQlB,UAAUuB,OAAS,SAASnB,EAAMM,GACxCN,EAAOD,EAAcC,GACrBM,EAAQD,EAAeC,GACvB,IAAI2E,EAAWjE,KAAKC,IAAIjB,GACxBgB,KAAKC,IAAIjB,GAAQiF,EAAWA,EAAW,KAAO3E,EAAQA,CACxD,EAEAQ,EAAQlB,UAAkB,OAAI,SAASI,UAC9BgB,KAAKC,IAAIlB,EAAcC,GAChC,EAEAc,EAAQlB,UAAUgE,IAAM,SAAS5D,GAE/B,OADAA,EAAOD,EAAcC,GACdgB,KAAKkE,IAAIlF,GAAQgB,KAAKC,IAAIjB,GAAQ,IAC3C,EAEAc,EAAQlB,UAAUsF,IAAM,SAASlF,GAC/B,OAAOgB,KAAKC,IAAIkE,eAAepF,EAAcC,GAC/C,EAEAc,EAAQlB,UAAUmD,IAAM,SAAS/C,EAAMM,GACrCU,KAAKC,IAAIlB,EAAcC,IAASK,EAAeC,EACjD,EAEAQ,EAAQlB,UAAUsB,QAAU,SAASkE,EAAUC,GAC7C,IAAK,IAAIrF,KAAQgB,KAAKC,IAChBD,KAAKC,IAAIkE,eAAenF,IAC1BoF,EAAStF,KAAKuF,EAASrE,KAAKC,IAAIjB,GAAOA,EAAMgB,KAGnD,EAEAF,EAAQlB,UAAU0F,KAAO,WACvB,IAAI9E,EAAQ,GAIZ,OAHAQ,KAAKE,SAAQ,SAASZ,EAAON,GAC3BQ,EAAM+E,KAAKvF,EACf,IACSO,EAAYC,EACrB,EAEAM,EAAQlB,UAAU4F,OAAS,WACzB,IAAIhF,EAAQ,GAIZ,OAHAQ,KAAKE,SAAQ,SAASZ,GACpBE,EAAM+E,KAAKjF,EACf,IACSC,EAAYC,EACrB,EAEAM,EAAQlB,UAAU6F,QAAU,WAC1B,IAAIjF,EAAQ,GAIZ,OAHAQ,KAAKE,SAAQ,SAASZ,EAAON,GAC3BQ,EAAM+E,KAAK,CAACvF,EAAMM,GACtB,IACSC,EAAYC,EACrB,EAEIvB,IACF6B,EAAQlB,UAAUV,OAAOuB,UAAYK,EAAQlB,UAAU6F,SA6KzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAOpD,SAASC,EAAQC,EAAOC,GAC7B,KAAM7E,gBAAgB2E,GACpB,MAAM,IAAIxF,UAAU,8FAItB,IAXuB2F,EACnBC,EAUAtE,GADJoE,EAAUA,GAAW,CAAE,GACJpE,KAEnB,GAAImE,aAAiBD,EAAS,CAC5B,GAAIC,EAAMlE,SACR,MAAM,IAAIvB,UAAU,gBAEtBa,KAAKgF,IAAMJ,EAAMI,IACjBhF,KAAKiF,YAAcL,EAAMK,YACpBJ,EAAQ9E,UACXC,KAAKD,QAAU,IAAID,EAAQ8E,EAAM7E,UAEnCC,KAAK8E,OAASF,EAAME,OACpB9E,KAAKkF,KAAON,EAAMM,KAClBlF,KAAKmF,OAASP,EAAMO,OACf1E,GAA2B,MAAnBmE,EAAMzC,YACjB1B,EAAOmE,EAAMzC,UACbyC,EAAMlE,UAAW,EAEvB,MACIV,KAAKgF,IAAM/F,OAAO2F,GAYpB,GATA5E,KAAKiF,YAAcJ,EAAQI,aAAejF,KAAKiF,aAAe,eAC1DJ,EAAQ9E,SAAYC,KAAKD,UAC3BC,KAAKD,QAAU,IAAID,EAAQ+E,EAAQ9E,UAErCC,KAAK8E,QArCkBA,EAqCOD,EAAQC,QAAU9E,KAAK8E,QAAU,MApC3DC,EAAUD,EAAOM,cACdV,EAAQhG,QAAQqG,IAAY,EAAIA,EAAUD,GAoCjD9E,KAAKkF,KAAOL,EAAQK,MAAQlF,KAAKkF,MAAQ,KACzClF,KAAKmF,OAASN,EAAQM,QAAUnF,KAAKmF,OACrCnF,KAAKqF,SAAW,MAEK,QAAhBrF,KAAK8E,QAAoC,SAAhB9E,KAAK8E,SAAsBrE,EACvD,MAAM,IAAItB,UAAU,6CAItB,GAFAa,KAAKkC,UAAUzB,KAEK,QAAhBT,KAAK8E,QAAoC,SAAhB9E,KAAK8E,QACV,aAAlBD,EAAQS,OAA0C,aAAlBT,EAAQS,OAAsB,CAEhE,IAAIC,EAAgB,gBACpB,GAAIA,EAAcrG,KAAKc,KAAKgF,KAE1BhF,KAAKgF,IAAMhF,KAAKgF,IAAIQ,QAAQD,EAAe,QAAS,IAAIE,MAAOC,eAC1D,CAGL1F,KAAKgF,MADe,KACO9F,KAAKc,KAAKgF,KAAO,IAAM,KAAO,MAAO,IAAIS,MAAOC,SAC5E,CACF,CAEL,CAMA,SAAS7B,EAAOpD,GACd,IAAIkF,EAAO,IAAIpD,SAYf,OAXA9B,EACGmF,OACAC,MAAM,KACN3F,SAAQ,SAAS4F,GAChB,GAAIA,EAAO,CACT,IAAID,EAAQC,EAAMD,MAAM,KACpB7G,EAAO6G,EAAMlG,QAAQ6F,QAAQ,MAAO,KACpClG,EAAQuG,EAAMnC,KAAK,KAAK8B,QAAQ,MAAO,KAC3CG,EAAKxF,OAAO4F,mBAAmB/G,GAAO+G,mBAAmBzG,GAC1D,CACP,IACSqG,CACT,CA4BO,SAASK,EAASC,EAAUpB,GACjC,KAAM7E,gBAAgBgG,GACpB,MAAM,IAAI7G,UAAU,8FAEjB0F,IACHA,EAAU,CAAE,GAGd7E,KAAK6C,KAAO,UACZ7C,KAAKkG,YAA4BrG,IAAnBgF,EAAQqB,OAAuB,IAAMrB,EAAQqB,OAC3DlG,KAAKmG,GAAKnG,KAAKkG,QAAU,KAAOlG,KAAKkG,OAAS,IAC9ClG,KAAKoG,gBAAoCvG,IAAvBgF,EAAQuB,WAA2B,GAAK,GAAKvB,EAAQuB,WACvEpG,KAAKD,QAAU,IAAID,EAAQ+E,EAAQ9E,SACnCC,KAAKgF,IAAMH,EAAQG,KAAO,GAC1BhF,KAAKkC,UAAU+D,EACjB,CA7DAtB,EAAQ/F,UAAUyH,MAAQ,WACxB,OAAO,IAAI1B,EAAQ3E,KAAM,CAACS,KAAMT,KAAKmC,WACvC,EA0CAF,EAAKnD,KAAK6F,EAAQ/F,WAmBlBqD,EAAKnD,KAAKkH,EAASpH,WAEnBoH,EAASpH,UAAUyH,MAAQ,WACzB,OAAO,IAAIL,EAAShG,KAAKmC,UAAW,CAClC+D,OAAQlG,KAAKkG,OACbE,WAAYpG,KAAKoG,WACjBrG,QAAS,IAAID,EAAQE,KAAKD,SAC1BiF,IAAKhF,KAAKgF,KAEd,EAEAgB,EAAS7E,MAAQ,WACf,IAAImF,EAAW,IAAIN,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADAE,EAASzD,KAAO,QACTyD,CACT,EAEA,IAAIC,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CP,EAASQ,SAAW,SAASxB,EAAKkB,GAChC,IAA0C,IAAtCK,EAAiB7H,QAAQwH,GAC3B,MAAM,IAAIO,WAAW,uBAGvB,OAAO,IAAIT,EAAS,KAAM,CAACE,OAAQA,EAAQnG,QAAS,CAAC2G,SAAU1B,IACjE,EAEuB2B,EAAAC,aAAG9I,EAAO8I,aACjC,IACE,IAAIA,cACN,CAAE,MAAOC,GACPD,eAAe,SAASE,EAAS9H,GAC/BgB,KAAK8G,QAAUA,EACf9G,KAAKhB,KAAOA,EACZ,IAAImC,EAAQ4B,MAAM+D,GAClB9G,KAAK+G,MAAQ5F,EAAM4F,KACpB,EACDH,EAAAA,aAAahI,UAAYD,OAAOqI,OAAOjE,MAAMnE,WAC7CgI,eAAahI,UAAUqI,YAAcL,EAAYA,YACnD,CAEO,SAASM,EAAMtC,EAAOuC,GAC3B,OAAO,IAAIxG,SAAQ,SAASI,EAASH,GACnC,IAAIwG,EAAU,IAAIzC,EAAQC,EAAOuC,GAEjC,GAAIC,EAAQjC,QAAUiC,EAAQjC,OAAOkC,QACnC,OAAOzG,EAAO,IAAIgG,EAAAA,aAAa,UAAW,eAG5C,IAAIU,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,OACL,CAEDH,EAAItG,OAAS,WACX,IAnGgB0G,EAChB3H,EAkGI8E,EAAU,CACZqB,OAAQoB,EAAIpB,OACZE,WAAYkB,EAAIlB,WAChBrG,SAtGc2H,EAsGQJ,EAAIK,yBAA2B,GArGvD5H,EAAU,IAAID,EAGQ4H,EAAWlC,QAAQ,eAAgB,KAK1DK,MAAM,MACN5F,KAAI,SAASK,GACZ,OAAgC,IAAzBA,EAAO5B,QAAQ,MAAc4B,EAAOsH,OAAO,EAAGtH,EAAOiD,QAAUjD,CAC5E,IACKJ,SAAQ,SAAS2H,GAChB,IAAIC,EAAQD,EAAKhC,MAAM,KACnBkC,EAAMD,EAAMnI,QAAQiG,OACxB,GAAImC,EAAK,CACP,IAAIzI,EAAQwI,EAAMpE,KAAK,KAAKkC,OAC5B7F,EAAQI,OAAO4H,EAAKzI,EACrB,CACP,IACSS,IAmFH8E,EAAQG,IAAM,gBAAiBsC,EAAMA,EAAIU,YAAcnD,EAAQ9E,QAAQ6C,IAAI,iBAC3E,IAAInC,EAAO,aAAc6G,EAAMA,EAAIhB,SAAWgB,EAAIW,aAClDC,YAAW,WACTnH,EAAQ,IAAIiF,EAASvF,EAAMoE,GAC5B,GAAE,EACJ,EAEDyC,EAAIpG,QAAU,WACZgH,YAAW,WACTtH,EAAO,IAAIzB,UAAU,0BACtB,GAAE,EACJ,EAEDmI,EAAIa,UAAY,WACdD,YAAW,WACTtH,EAAO,IAAIzB,UAAU,0BACtB,GAAE,EACJ,EAEDmI,EAAIc,QAAU,WACZF,YAAW,WACTtH,EAAO,IAAIgG,EAAAA,aAAa,UAAW,cACpC,GAAE,EACJ,EAUDU,EAAIe,KAAKjB,EAAQtC,OARjB,SAAgBE,GACd,IACE,MAAe,KAARA,GAAclH,EAAO4I,SAAS4B,KAAOxK,EAAO4I,SAAS4B,KAAOtD,CACpE,CAAC,MAAO5G,GACP,OAAO4G,CACR,CACF,CAEwBuD,CAAOnB,EAAQpC,MAAM,GAElB,YAAxBoC,EAAQnC,YACVqC,EAAIkB,iBAAkB,EACW,SAAxBpB,EAAQnC,cACjBqC,EAAIkB,iBAAkB,GAGpB,iBAAkBlB,IAChBrJ,EACFqJ,EAAImB,aAAe,OAEnBxK,GACAmJ,EAAQrH,QAAQ6C,IAAI,kBACyD,IAA7EwE,EAAQrH,QAAQ6C,IAAI,gBAAgBlE,QAAQ,8BAE5C4I,EAAImB,aAAe,iBAInBtB,GAAgC,iBAAjBA,EAAKpH,SAA0BoH,EAAKpH,mBAAmBD,EAKxEsH,EAAQrH,QAAQG,SAAQ,SAASZ,EAAON,GACtCsI,EAAIoB,iBAAiB1J,EAAMM,EACnC,IANMX,OAAO4B,oBAAoB4G,EAAKpH,SAASG,SAAQ,SAASlB,GACxDsI,EAAIoB,iBAAiB1J,EAAMK,EAAe8H,EAAKpH,QAAQf,IAC/D,IAOQoI,EAAQjC,SACViC,EAAQjC,OAAOwD,iBAAiB,QAASnB,GAEzCF,EAAIsB,mBAAqB,WAEA,IAAnBtB,EAAIuB,YACNzB,EAAQjC,OAAO2D,oBAAoB,QAAStB,EAE/C,GAGHF,EAAIyB,UAAkC,IAAtB3B,EAAQjF,UAA4B,KAAOiF,EAAQjF,UACvE,GACA,CAEA+E,EAAM8B,UAAW,EAEZlL,EAAOoJ,QACVpJ,EAAOoJ,MAAQA,EACfpJ,EAAOgC,QAAUA,EACjBhC,EAAO6G,QAAUA,EACjB7G,EAAOkI,SAAWA","x_google_ignoreList":[0]} \ No newline at end of file
diff --git a/client/node_modules/cross-fetch/dist/node-polyfill.js b/client/node_modules/cross-fetch/dist/node-polyfill.js
new file mode 100644
index 0000000..f0c477c
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/node-polyfill.js
@@ -0,0 +1,11 @@
+const fetchNode = require('./node-ponyfill')
+
+if (!global.fetch) {
+ const fetch = fetchNode.fetch.bind({})
+
+ global.fetch = fetch
+ global.fetch.polyfill = true
+ global.Response = fetchNode.Response
+ global.Headers = fetchNode.Headers
+ global.Request = fetchNode.Request
+}
diff --git a/client/node_modules/cross-fetch/dist/node-ponyfill.js b/client/node_modules/cross-fetch/dist/node-ponyfill.js
new file mode 100644
index 0000000..e8b153f
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/node-ponyfill.js
@@ -0,0 +1,22 @@
+const nodeFetch = require('node-fetch')
+const realFetch = nodeFetch.default || nodeFetch
+
+const fetch = function (url, options) {
+ // Support schemaless URIs on the server for parity with the browser.
+ // Ex: //github.com/ -> https://github.com/
+ if (/^\/\//.test(url)) {
+ url = 'https:' + url
+ }
+ return realFetch.call(this, url, options)
+}
+
+fetch.ponyfill = true
+
+module.exports = exports = fetch
+exports.fetch = fetch
+exports.Headers = nodeFetch.Headers
+exports.Request = nodeFetch.Request
+exports.Response = nodeFetch.Response
+
+// Needed for TypeScript consumers without esModuleInterop.
+exports.default = fetch
diff --git a/client/node_modules/cross-fetch/dist/react-native-polyfill.js b/client/node_modules/cross-fetch/dist/react-native-polyfill.js
new file mode 100644
index 0000000..57ad256
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/react-native-polyfill.js
@@ -0,0 +1,12 @@
+/*!
+ * VaporJS JavaScript Library v1.4.5
+ * https://github.com/madrobby/vapor.js
+ *
+ * Copyright (c) 2010 Thomas Fuchs (http://script.aculo.us/thomas)
+ * Released under the MIT license
+ * https://github.com/madrobby/vapor.js/blob/master/MIT-LICENSE
+ *
+ * Date: 2019-05-25T03:04Z
+ */
+
+// React Native already polyfills `fetch` so this code is intentionally handled to VaporJS.
diff --git a/client/node_modules/cross-fetch/dist/react-native-ponyfill.js b/client/node_modules/cross-fetch/dist/react-native-ponyfill.js
new file mode 100644
index 0000000..8e5baff
--- /dev/null
+++ b/client/node_modules/cross-fetch/dist/react-native-ponyfill.js
@@ -0,0 +1,6 @@
+module.exports = global.fetch // To enable: import fetch from 'cross-fetch'
+module.exports.default = global.fetch // For TypeScript consumers without esModuleInterop.
+module.exports.fetch = global.fetch // To enable: import {fetch} from 'cross-fetch'
+module.exports.Headers = global.Headers
+module.exports.Request = global.Request
+module.exports.Response = global.Response
diff --git a/client/node_modules/cross-fetch/index.d.ts b/client/node_modules/cross-fetch/index.d.ts
new file mode 100644
index 0000000..3c030c0
--- /dev/null
+++ b/client/node_modules/cross-fetch/index.d.ts
@@ -0,0 +1,14 @@
+/// <reference lib="dom" />
+
+declare const _fetch: typeof fetch;
+declare const _Request: typeof Request;
+declare const _Response: typeof Response;
+declare const _Headers: typeof Headers;
+
+declare module "cross-fetch" {
+ export const fetch: typeof _fetch;
+ export const Request: typeof _Request;
+ export const Response: typeof _Response;
+ export const Headers: typeof _Headers;
+ export default fetch;
+}
diff --git a/client/node_modules/cross-fetch/package.json b/client/node_modules/cross-fetch/package.json
new file mode 100644
index 0000000..30f0690
--- /dev/null
+++ b/client/node_modules/cross-fetch/package.json
@@ -0,0 +1,128 @@
+{
+ "name": "cross-fetch",
+ "version": "4.0.0",
+ "description": "Universal WHATWG Fetch API for Node, Browsers and React Native",
+ "homepage": "https://github.com/lquixada/cross-fetch",
+ "main": "dist/node-ponyfill.js",
+ "browser": "dist/browser-ponyfill.js",
+ "react-native": "dist/react-native-ponyfill.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "commit": "cz",
+ "prepare": "husky install",
+ "prepublishOnly": "rimraf dist && make dist"
+ },
+ "lint-staged": {
+ "*.js": [
+ "standard --fix"
+ ]
+ },
+ "config": {
+ "commitizen": {
+ "path": "cz-conventional-changelog"
+ }
+ },
+ "standard": {
+ "env": [
+ "browser",
+ "mocha",
+ "serviceworker"
+ ],
+ "globals": [
+ "expect",
+ "assert",
+ "chai",
+ "Mocha"
+ ],
+ "ignore": [
+ "/dist/",
+ "api.spec.js",
+ "bundle.js",
+ "test.js",
+ "*.bundle.js",
+ "*.ts"
+ ]
+ },
+ "mocha": {
+ "require": [
+ "chai/register-expect.js",
+ "chai/register-assert.js"
+ ],
+ "check-leaks": true
+ },
+ "nyc": {
+ "temp-dir": ".reports/.coverage"
+ },
+ "commitlint": {
+ "extends": [
+ "@commitlint/config-conventional"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/lquixada/cross-fetch.git"
+ },
+ "author": "Leonardo Quixada <lquixada@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/lquixada/cross-fetch/issues"
+ },
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "17.6.6",
+ "@commitlint/config-conventional": "17.6.6",
+ "@rollup/plugin-terser": "0.4.3",
+ "@types/chai": "4.3.5",
+ "@types/mocha": "10.0.1",
+ "@types/node": "18.15.13",
+ "body-parser": "1.20.2",
+ "chai": "4.3.7",
+ "codecov": "3.8.3",
+ "commitizen": "4.3.0",
+ "cz-conventional-changelog": "3.3.0",
+ "express": "4.18.2",
+ "husky": "8.0.3",
+ "lint-staged": "13.2.3",
+ "mocha": "10.2.0",
+ "mocha-headless-chrome": "4.0.0",
+ "nock": "13.3.1",
+ "nyc": "15.1.0",
+ "rimraf": "5.0.1",
+ "rollup": "3.26.0",
+ "rollup-plugin-copy": "3.4.0",
+ "semver": "7.5.3",
+ "serve-index": "1.9.1",
+ "standard": "17.1.0",
+ "standard-version": "9.5.0",
+ "typescript": "5.1.6",
+ "webpack": "5.88.1",
+ "webpack-cli": "5.1.4",
+ "whatwg-fetch": "3.6.2",
+ "yargs": "17.7.2"
+ },
+ "files": [
+ "dist",
+ "polyfill",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "fetch",
+ "http",
+ "url",
+ "promise",
+ "async",
+ "await",
+ "isomorphic",
+ "universal",
+ "node",
+ "react",
+ "native",
+ "browser",
+ "ponyfill",
+ "whatwg",
+ "xhr",
+ "ajax"
+ ]
+}
diff --git a/client/node_modules/cross-fetch/polyfill/package.json b/client/node_modules/cross-fetch/polyfill/package.json
new file mode 100644
index 0000000..7258820
--- /dev/null
+++ b/client/node_modules/cross-fetch/polyfill/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "cross-fetch-polyfill",
+ "version": "0.0.0",
+ "main": "../dist/node-polyfill.js",
+ "browser": "../dist/browser-polyfill.js",
+ "react-native": "../dist/react-native-polyfill.js",
+ "types": "../index.d.ts",
+ "license": "MIT"
+}
diff --git a/client/node_modules/decompress-response/index.d.ts b/client/node_modules/decompress-response/index.d.ts
new file mode 100644
index 0000000..c0be175
--- /dev/null
+++ b/client/node_modules/decompress-response/index.d.ts
@@ -0,0 +1,22 @@
+/// <reference types="node"/>
+import {IncomingMessage} from 'http';
+
+/**
+Decompress a HTTP response if needed.
+
+@param response - The HTTP incoming stream with compressed data.
+@returns The decompressed HTTP response stream.
+
+@example
+```
+import {http} from 'http';
+import decompressResponse = require('decompress-response');
+
+http.get('https://sindresorhus.com', response => {
+ response = decompressResponse(response);
+});
+```
+*/
+declare function decompressResponse(response: IncomingMessage): IncomingMessage;
+
+export = decompressResponse;
diff --git a/client/node_modules/decompress-response/index.js b/client/node_modules/decompress-response/index.js
new file mode 100644
index 0000000..c861036
--- /dev/null
+++ b/client/node_modules/decompress-response/index.js
@@ -0,0 +1,58 @@
+'use strict';
+const {Transform, PassThrough} = require('stream');
+const zlib = require('zlib');
+const mimicResponse = require('mimic-response');
+
+module.exports = response => {
+ const contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();
+
+ if (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {
+ return response;
+ }
+
+ // TODO: Remove this when targeting Node.js 12.
+ const isBrotli = contentEncoding === 'br';
+ if (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {
+ response.destroy(new Error('Brotli is not supported on Node.js < 12'));
+ return response;
+ }
+
+ let isEmpty = true;
+
+ const checker = new Transform({
+ transform(data, _encoding, callback) {
+ isEmpty = false;
+
+ callback(null, data);
+ },
+
+ flush(callback) {
+ callback();
+ }
+ });
+
+ const finalStream = new PassThrough({
+ autoDestroy: false,
+ destroy(error, callback) {
+ response.destroy();
+
+ callback(error);
+ }
+ });
+
+ const decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();
+
+ decompressStream.once('error', error => {
+ if (isEmpty && !response.readable) {
+ finalStream.end();
+ return;
+ }
+
+ finalStream.destroy(error);
+ });
+
+ mimicResponse(response, finalStream);
+ response.pipe(checker).pipe(decompressStream).pipe(finalStream);
+
+ return finalStream;
+};
diff --git a/client/node_modules/decompress-response/license b/client/node_modules/decompress-response/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/decompress-response/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/decompress-response/node_modules/mimic-response/index.d.ts b/client/node_modules/decompress-response/node_modules/mimic-response/index.d.ts
new file mode 100644
index 0000000..65a51e9
--- /dev/null
+++ b/client/node_modules/decompress-response/node_modules/mimic-response/index.d.ts
@@ -0,0 +1,17 @@
+import {IncomingMessage} from 'http';
+
+/**
+Mimic a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+Makes `toStream` include the properties from `fromStream`.
+
+@param fromStream - The stream to copy the properties from.
+@param toStream - The stream to copy the properties to.
+@return The same object as `toStream`.
+*/
+declare function mimicResponse<T extends NodeJS.ReadableStream>(
+ fromStream: IncomingMessage, // eslint-disable-line @typescript-eslint/prefer-readonly-parameter-types
+ toStream: T,
+): T & IncomingMessage;
+
+export = mimicResponse;
diff --git a/client/node_modules/decompress-response/node_modules/mimic-response/index.js b/client/node_modules/decompress-response/node_modules/mimic-response/index.js
new file mode 100644
index 0000000..404e111
--- /dev/null
+++ b/client/node_modules/decompress-response/node_modules/mimic-response/index.js
@@ -0,0 +1,77 @@
+'use strict';
+
+// We define these manually to ensure they're always copied
+// even if they would move up the prototype chain
+// https://nodejs.org/api/http.html#http_class_http_incomingmessage
+const knownProperties = [
+ 'aborted',
+ 'complete',
+ 'headers',
+ 'httpVersion',
+ 'httpVersionMinor',
+ 'httpVersionMajor',
+ 'method',
+ 'rawHeaders',
+ 'rawTrailers',
+ 'setTimeout',
+ 'socket',
+ 'statusCode',
+ 'statusMessage',
+ 'trailers',
+ 'url'
+];
+
+module.exports = (fromStream, toStream) => {
+ if (toStream._readableState.autoDestroy) {
+ throw new Error('The second stream must have the `autoDestroy` option set to `false`');
+ }
+
+ const fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));
+
+ const properties = {};
+
+ for (const property of fromProperties) {
+ // Don't overwrite existing properties.
+ if (property in toStream) {
+ continue;
+ }
+
+ properties[property] = {
+ get() {
+ const value = fromStream[property];
+ const isFunction = typeof value === 'function';
+
+ return isFunction ? value.bind(fromStream) : value;
+ },
+ set(value) {
+ fromStream[property] = value;
+ },
+ enumerable: true,
+ configurable: false
+ };
+ }
+
+ Object.defineProperties(toStream, properties);
+
+ fromStream.once('aborted', () => {
+ toStream.destroy();
+
+ toStream.emit('aborted');
+ });
+
+ fromStream.once('close', () => {
+ if (fromStream.complete) {
+ if (toStream.readable) {
+ toStream.once('end', () => {
+ toStream.emit('close');
+ });
+ } else {
+ toStream.emit('close');
+ }
+ } else {
+ toStream.emit('close');
+ }
+ });
+
+ return toStream;
+};
diff --git a/client/node_modules/decompress-response/node_modules/mimic-response/license b/client/node_modules/decompress-response/node_modules/mimic-response/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/decompress-response/node_modules/mimic-response/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/decompress-response/node_modules/mimic-response/package.json b/client/node_modules/decompress-response/node_modules/mimic-response/package.json
new file mode 100644
index 0000000..d478b0f
--- /dev/null
+++ b/client/node_modules/decompress-response/node_modules/mimic-response/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "mimic-response",
+ "version": "3.1.0",
+ "description": "Mimic a Node.js HTTP response stream",
+ "license": "MIT",
+ "repository": "sindresorhus/mimic-response",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.d.ts",
+ "index.js"
+ ],
+ "keywords": [
+ "mimic",
+ "response",
+ "stream",
+ "http",
+ "https",
+ "request",
+ "get",
+ "core"
+ ],
+ "devDependencies": {
+ "@types/node": "^14.0.1",
+ "ava": "^2.4.0",
+ "create-test-server": "^2.4.0",
+ "p-event": "^4.1.0",
+ "pify": "^5.0.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.30.0"
+ }
+}
diff --git a/client/node_modules/decompress-response/node_modules/mimic-response/readme.md b/client/node_modules/decompress-response/node_modules/mimic-response/readme.md
new file mode 100644
index 0000000..e968620
--- /dev/null
+++ b/client/node_modules/decompress-response/node_modules/mimic-response/readme.md
@@ -0,0 +1,78 @@
+# mimic-response [![Build Status](https://travis-ci.com/sindresorhus/mimic-response.svg?branch=master)](https://travis-ci.com/sindresorhus/mimic-response)
+
+> Mimic a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+## Install
+
+```
+$ npm install mimic-response
+```
+
+## Usage
+
+```js
+const stream = require('stream');
+const mimicResponse = require('mimic-response');
+
+const responseStream = getHttpResponseStream();
+const myStream = new stream.PassThrough();
+
+mimicResponse(responseStream, myStream);
+
+console.log(myStream.statusCode);
+//=> 200
+```
+
+## API
+
+### mimicResponse(from, to)
+
+**Note #1:** The `from.destroy(error)` function is not proxied. You have to call it manually:
+
+```js
+const stream = require('stream');
+const mimicResponse = require('mimic-response');
+
+const responseStream = getHttpResponseStream();
+
+const myStream = new stream.PassThrough({
+ destroy(error, callback) {
+ responseStream.destroy();
+
+ callback(error);
+ }
+});
+
+myStream.destroy();
+```
+
+Please note that `myStream` and `responseStream` never throws. The error is passed to the request instead.
+
+#### from
+
+Type: `Stream`
+
+[Node.js HTTP response stream.](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+#### to
+
+Type: `Stream`
+
+Any stream.
+
+## Related
+
+- [mimic-fn](https://github.com/sindresorhus/mimic-fn) - Make a function mimic another one
+- [clone-response](https://github.com/lukechilds/clone-response) - Clone a Node.js response stream
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-mimic-response?utm_source=npm-mimic-response&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/decompress-response/package.json b/client/node_modules/decompress-response/package.json
new file mode 100644
index 0000000..57df889
--- /dev/null
+++ b/client/node_modules/decompress-response/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "decompress-response",
+ "version": "6.0.0",
+ "description": "Decompress a HTTP response if needed",
+ "license": "MIT",
+ "repository": "sindresorhus/decompress-response",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "decompress",
+ "response",
+ "http",
+ "https",
+ "zlib",
+ "gzip",
+ "zip",
+ "deflate",
+ "unzip",
+ "ungzip",
+ "incoming",
+ "message",
+ "stream",
+ "compressed",
+ "brotli"
+ ],
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "devDependencies": {
+ "@types/node": "^14.0.1",
+ "ava": "^2.2.0",
+ "get-stream": "^5.0.0",
+ "pify": "^5.0.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.30.0"
+ },
+ "xo": {
+ "rules": {
+ "@typescript-eslint/prefer-readonly-parameter-types": "off"
+ }
+ }
+}
diff --git a/client/node_modules/decompress-response/readme.md b/client/node_modules/decompress-response/readme.md
new file mode 100644
index 0000000..58523ef
--- /dev/null
+++ b/client/node_modules/decompress-response/readme.md
@@ -0,0 +1,48 @@
+# decompress-response [![Build Status](https://travis-ci.com/sindresorhus/decompress-response.svg?branch=master)](https://travis-ci.com/sindresorhus/decompress-response)
+
+> Decompress a HTTP response if needed
+
+Decompresses the [response](https://nodejs.org/api/http.html#http_class_http_incomingmessage) from [`http.request`](https://nodejs.org/api/http.html#http_http_request_options_callback) if it's gzipped, deflated or compressed with Brotli, otherwise just passes it through.
+
+Used by [`got`](https://github.com/sindresorhus/got).
+
+## Install
+
+```
+$ npm install decompress-response
+```
+
+## Usage
+
+```js
+const http = require('http');
+const decompressResponse = require('decompress-response');
+
+http.get('https://sindresorhus.com', response => {
+ response = decompressResponse(response);
+});
+```
+
+## API
+
+### decompressResponse(response)
+
+Returns the decompressed HTTP response stream.
+
+#### response
+
+Type: [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+The HTTP incoming stream with compressed data.
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-decompress-response?utm_source=npm-decompress-response&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/defer-to-connect/LICENSE b/client/node_modules/defer-to-connect/LICENSE
new file mode 100644
index 0000000..15ad2e8
--- /dev/null
+++ b/client/node_modules/defer-to-connect/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Szymon Marczak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/defer-to-connect/README.md b/client/node_modules/defer-to-connect/README.md
new file mode 100644
index 0000000..4dd36c2
--- /dev/null
+++ b/client/node_modules/defer-to-connect/README.md
@@ -0,0 +1,38 @@
+# defer-to-connect
+
+> The safe way to handle the `connect` socket event
+
+[![Coverage Status](https://coveralls.io/repos/github/szmarczak/defer-to-connect/badge.svg?branch=master)](https://coveralls.io/github/szmarczak/defer-to-connect?branch=master)
+
+Once you receive the socket, it may be already connected (or disconnected).<br>
+To avoid checking that, use `defer-to-connect`. It'll do that for you.
+
+## Usage
+
+```js
+const deferToConnect = require('defer-to-connect');
+
+deferToConnect(socket, () => {
+ console.log('Connected!');
+});
+```
+
+## API
+
+### deferToConnect(socket, connectListener)
+
+Calls `connectListener()` when connected.
+
+### deferToConnect(socket, listeners)
+
+#### listeners
+
+An object representing `connect`, `secureConnect` and `close` properties.
+
+Calls `connect()` when the socket is connected.<br>
+Calls `secureConnect()` when the socket is securely connected.<br>
+Calls `close()` when the socket is destroyed.
+
+## License
+
+MIT
diff --git a/client/node_modules/defer-to-connect/dist/source/index.d.ts b/client/node_modules/defer-to-connect/dist/source/index.d.ts
new file mode 100644
index 0000000..8db8dbb
--- /dev/null
+++ b/client/node_modules/defer-to-connect/dist/source/index.d.ts
@@ -0,0 +1,10 @@
+/// <reference types="node" />
+import { Socket } from 'net';
+import { TLSSocket } from 'tls';
+interface Listeners {
+ connect?: () => void;
+ secureConnect?: () => void;
+ close?: (hadError: boolean) => void;
+}
+declare const deferToConnect: (socket: TLSSocket | Socket, fn: Listeners | (() => void)) => void;
+export default deferToConnect;
diff --git a/client/node_modules/defer-to-connect/dist/source/index.js b/client/node_modules/defer-to-connect/dist/source/index.js
new file mode 100644
index 0000000..f26c4fa
--- /dev/null
+++ b/client/node_modules/defer-to-connect/dist/source/index.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function isTLSSocket(socket) {
+ return socket.encrypted;
+}
+const deferToConnect = (socket, fn) => {
+ let listeners;
+ if (typeof fn === 'function') {
+ const connect = fn;
+ listeners = { connect };
+ }
+ else {
+ listeners = fn;
+ }
+ const hasConnectListener = typeof listeners.connect === 'function';
+ const hasSecureConnectListener = typeof listeners.secureConnect === 'function';
+ const hasCloseListener = typeof listeners.close === 'function';
+ const onConnect = () => {
+ if (hasConnectListener) {
+ listeners.connect();
+ }
+ if (isTLSSocket(socket) && hasSecureConnectListener) {
+ if (socket.authorized) {
+ listeners.secureConnect();
+ }
+ else if (!socket.authorizationError) {
+ socket.once('secureConnect', listeners.secureConnect);
+ }
+ }
+ if (hasCloseListener) {
+ socket.once('close', listeners.close);
+ }
+ };
+ if (socket.writable && !socket.connecting) {
+ onConnect();
+ }
+ else if (socket.connecting) {
+ socket.once('connect', onConnect);
+ }
+ else if (socket.destroyed && hasCloseListener) {
+ listeners.close(socket._hadError);
+ }
+};
+exports.default = deferToConnect;
+// For CommonJS default export support
+module.exports = deferToConnect;
+module.exports.default = deferToConnect;
diff --git a/client/node_modules/defer-to-connect/package.json b/client/node_modules/defer-to-connect/package.json
new file mode 100644
index 0000000..4dbd1c6
--- /dev/null
+++ b/client/node_modules/defer-to-connect/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "defer-to-connect",
+ "version": "2.0.1",
+ "description": "The safe way to handle the `connect` socket event",
+ "main": "dist/source",
+ "files": [
+ "dist/source"
+ ],
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "build": "del-cli dist && tsc",
+ "prepare": "npm run build",
+ "test": "xo && tsc --noEmit && nyc ava",
+ "coveralls": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "keywords": [
+ "socket",
+ "connect",
+ "event"
+ ],
+ "author": "Szymon Marczak",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/szmarczak/defer-to-connect.git"
+ },
+ "bugs": {
+ "url": "https://github.com/szmarczak/defer-to-connect/issues"
+ },
+ "homepage": "https://github.com/szmarczak/defer-to-connect#readme",
+ "xo": {
+ "extends": "xo-typescript",
+ "extensions": [
+ "ts"
+ ]
+ },
+ "devDependencies": {
+ "@ava/typescript": "^1.1.0",
+ "@sindresorhus/tsconfig": "^0.7.0",
+ "@types/node": "^13.5.0",
+ "@typescript-eslint/eslint-plugin": "^2.18.0",
+ "@typescript-eslint/parser": "^2.18.0",
+ "ava": "^3.2.0",
+ "coveralls": "^3.0.9",
+ "create-cert": "^1.0.6",
+ "del-cli": "^3.0.0",
+ "eslint-config-xo-typescript": "^0.24.1",
+ "nyc": "^15.0.0",
+ "p-event": "^4.1.0",
+ "typescript": "^3.7.5",
+ "xo": "^0.25.3"
+ },
+ "nyc": {
+ "include": [
+ "dist/source"
+ ],
+ "extension": [
+ ".ts"
+ ]
+ },
+ "ava": {
+ "typescript": {
+ "rewritePaths": {
+ "tests/": "dist/tests/"
+ }
+ }
+ },
+ "types": "dist/source/index.d.ts"
+}
diff --git a/client/node_modules/define-data-property/.eslintrc b/client/node_modules/define-data-property/.eslintrc
new file mode 100644
index 0000000..75443e8
--- /dev/null
+++ b/client/node_modules/define-data-property/.eslintrc
@@ -0,0 +1,24 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "complexity": 0,
+ "id-length": 0,
+ "new-cap": ["error", {
+ "capIsNewExceptions": [
+ "GetIntrinsic",
+ ],
+ }],
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "max-lines-per-function": "off",
+ },
+ },
+ ],
+}
diff --git a/client/node_modules/define-data-property/.github/FUNDING.yml b/client/node_modules/define-data-property/.github/FUNDING.yml
new file mode 100644
index 0000000..3e17725
--- /dev/null
+++ b/client/node_modules/define-data-property/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/define-data-property
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/define-data-property/.nycrc b/client/node_modules/define-data-property/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/client/node_modules/define-data-property/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/define-data-property/CHANGELOG.md b/client/node_modules/define-data-property/CHANGELOG.md
new file mode 100644
index 0000000..94bad09
--- /dev/null
+++ b/client/node_modules/define-data-property/CHANGELOG.md
@@ -0,0 +1,41 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.1.1](https://github.com/ljharb/define-data-property/compare/v1.1.0...v1.1.1) - 2023-10-12
+
+### Commits
+
+- [Tests] fix tests in ES3 engines [`5c6920e`](https://github.com/ljharb/define-data-property/commit/5c6920edd1f52f675b02f417e539c28135b43f94)
+- [Dev Deps] update `@types/es-value-fixtures`, `@types/for-each`, `@types/gopd`, `@types/has-property-descriptors`, `tape`, `typescript` [`7d82dfc`](https://github.com/ljharb/define-data-property/commit/7d82dfc20f778b4465bba06335dd53f6f431aea3)
+- [Fix] IE 8 has a broken `Object.defineProperty` [`0672e1a`](https://github.com/ljharb/define-data-property/commit/0672e1af2a9fcc787e7c23b96dea60d290df5548)
+- [meta] emit types on prepack [`73acb1f`](https://github.com/ljharb/define-data-property/commit/73acb1f903c21b314ec7156bf10f73c7910530c0)
+- [Dev Deps] update `tape`, `typescript` [`9489a77`](https://github.com/ljharb/define-data-property/commit/9489a7738bf2ecf0ac71d5b78ec4ca6ad7ba0142)
+
+## [v1.1.0](https://github.com/ljharb/define-data-property/compare/v1.0.1...v1.1.0) - 2023-09-13
+
+### Commits
+
+- [New] add `loose` arg [`155235a`](https://github.com/ljharb/define-data-property/commit/155235a4c4d7741f6de01cd87c99599a56654b72)
+- [New] allow `null` to be passed for the non* args [`7d2fa5f`](https://github.com/ljharb/define-data-property/commit/7d2fa5f06be0392736c13b126f7cd38979f34792)
+
+## [v1.0.1](https://github.com/ljharb/define-data-property/compare/v1.0.0...v1.0.1) - 2023-09-12
+
+### Commits
+
+- [meta] add TS types [`43d763c`](https://github.com/ljharb/define-data-property/commit/43d763c6c883f652de1c9c02ef6216ee507ffa69)
+- [Dev Deps] update `@types/tape`, `typescript` [`f444985`](https://github.com/ljharb/define-data-property/commit/f444985811c36f3e6448a03ad2f9b7898917f4c7)
+- [meta] add `safe-publish-latest`, [`172bb10`](https://github.com/ljharb/define-data-property/commit/172bb10890896ebb160e64398f6ee55760107bee)
+
+## v1.0.0 - 2023-09-12
+
+### Commits
+
+- Initial implementation, tests, readme [`5b43d6b`](https://github.com/ljharb/define-data-property/commit/5b43d6b44e675a904810467a7d4e0adb7efc3196)
+- Initial commit [`35e577a`](https://github.com/ljharb/define-data-property/commit/35e577a6ba59a98befa97776d70d90f3bea9009d)
+- npm init [`82a0a04`](https://github.com/ljharb/define-data-property/commit/82a0a04a321ca7de220af02d41e2745e8a9962ed)
+- Only apps should have lockfiles [`96df244`](https://github.com/ljharb/define-data-property/commit/96df244a3c6f426f9a2437be825d1c6f5dd7158e)
+- [meta] use `npmignore` to autogenerate an npmignore file [`a87ff18`](https://github.com/ljharb/define-data-property/commit/a87ff18cb79e14c2eb5720486c4759fd9a189375)
diff --git a/client/node_modules/define-data-property/LICENSE b/client/node_modules/define-data-property/LICENSE
new file mode 100644
index 0000000..b4213ac
--- /dev/null
+++ b/client/node_modules/define-data-property/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/define-data-property/README.md b/client/node_modules/define-data-property/README.md
new file mode 100644
index 0000000..f2304da
--- /dev/null
+++ b/client/node_modules/define-data-property/README.md
@@ -0,0 +1,67 @@
+# define-data-property <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Define a data property on an object. Will fall back to assignment in an engine without descriptors.
+
+The three `non*` argument can also be passed `null`, which will use the existing state if available.
+
+The `loose` argument will mean that if you attempt to set a non-normal data property, in an environment without descriptor support, it will fall back to normal assignment.
+
+## Usage
+
+```javascript
+var defineDataProperty = require('define-data-property');
+var assert = require('assert');
+
+var obj = {};
+defineDataProperty(obj, 'key', 'value');
+defineDataProperty(
+ obj,
+ 'key2',
+ 'value',
+ true, // nonEnumerable, optional
+ false, // nonWritable, optional
+ true, // nonConfigurable, optional
+ false // loose, optional
+);
+
+assert.deepEqual(
+ Object.getOwnPropertyDescriptors(obj),
+ {
+ key: {
+ configurable: true,
+ enumerable: true,
+ value: 'value',
+ writable: true,
+ },
+ key2: {
+ configurable: false,
+ enumerable: false,
+ value: 'value',
+ writable: true,
+ },
+ }
+);
+```
+
+[package-url]: https://npmjs.org/package/define-data-property
+[npm-version-svg]: https://versionbadg.es/ljharb/define-data-property.svg
+[deps-svg]: https://david-dm.org/ljharb/define-data-property.svg
+[deps-url]: https://david-dm.org/ljharb/define-data-property
+[dev-deps-svg]: https://david-dm.org/ljharb/define-data-property/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/define-data-property#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/define-data-property.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/define-data-property.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/define-data-property.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=define-data-property
+[codecov-image]: https://codecov.io/gh/ljharb/define-data-property/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/define-data-property/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/define-data-property
+[actions-url]: https://github.com/ljharb/define-data-property/actions
diff --git a/client/node_modules/define-data-property/index.d.ts b/client/node_modules/define-data-property/index.d.ts
new file mode 100644
index 0000000..d2e353d
--- /dev/null
+++ b/client/node_modules/define-data-property/index.d.ts
@@ -0,0 +1,3 @@
+declare const _exports: (obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void;
+export = _exports;
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/define-data-property/index.d.ts.map b/client/node_modules/define-data-property/index.d.ts.map
new file mode 100644
index 0000000..39aca4b
--- /dev/null
+++ b/client/node_modules/define-data-property/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"8BAqBiB,OAAO,WAAW,EAAE,OAAO,CAAC,YAAY,WAAW,SAAS,OAAO,kBAAkB,OAAO,GAAG,IAAI,gBAAgB,OAAO,GAAG,IAAI,oBAAoB,OAAO,GAAG,IAAI,UAAU,OAAO,KAAK,IAAI"} \ No newline at end of file
diff --git a/client/node_modules/define-data-property/index.js b/client/node_modules/define-data-property/index.js
new file mode 100644
index 0000000..9534065
--- /dev/null
+++ b/client/node_modules/define-data-property/index.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var hasPropertyDescriptors = require('has-property-descriptors')();
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);
+if ($defineProperty) {
+ try {
+ $defineProperty({}, 'a', { value: 1 });
+ } catch (e) {
+ // IE 8 has a broken defineProperty
+ $defineProperty = false;
+ }
+}
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var gopd = require('gopd');
+
+/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */
+module.exports = function defineDataProperty(
+ obj,
+ property,
+ value
+) {
+ if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ throw new $TypeError('`obj` must be an object or a function`');
+ }
+ if (typeof property !== 'string' && typeof property !== 'symbol') {
+ throw new $TypeError('`property` must be a string or a symbol`');
+ }
+ if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {
+ throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');
+ }
+ if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {
+ throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');
+ }
+ if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {
+ throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');
+ }
+ if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {
+ throw new $TypeError('`loose`, if provided, must be a boolean');
+ }
+
+ var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
+ var nonWritable = arguments.length > 4 ? arguments[4] : null;
+ var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
+ var loose = arguments.length > 6 ? arguments[6] : false;
+
+ /* @type {false | TypedPropertyDescriptor<unknown>} */
+ var desc = !!gopd && gopd(obj, property);
+
+ if ($defineProperty) {
+ $defineProperty(obj, property, {
+ configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
+ enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
+ value: value,
+ writable: nonWritable === null && desc ? desc.writable : !nonWritable
+ });
+ } else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {
+ // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
+ obj[property] = value; // eslint-disable-line no-param-reassign
+ } else {
+ throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');
+ }
+};
diff --git a/client/node_modules/define-data-property/package.json b/client/node_modules/define-data-property/package.json
new file mode 100644
index 0000000..1bb5815
--- /dev/null
+++ b/client/node_modules/define-data-property/package.json
@@ -0,0 +1,113 @@
+{
+ "name": "define-data-property",
+ "version": "1.1.1",
+ "description": "Define a data property on an object. Will fall back to assignment in an engine without descriptors.",
+ "main": "index.js",
+ "exports": {
+ ".": [
+ {
+ "types": "./index.d.ts",
+ "default": "./index.js"
+ },
+ "./index.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "types": "./index.d.ts",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated && npm run emit-types",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "tsc": "tsc -p .",
+ "preemit-types": "rm -f *.ts *.ts.map test/*.ts test/*.ts.map",
+ "emit-types": "npm run tsc -- --noEmit false --emitDeclarationOnly",
+ "postemit-types": "rm test/*.ts test/*.ts.map",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "npm run tsc",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/define-data-property.git"
+ },
+ "keywords": [
+ "define",
+ "data",
+ "property",
+ "object",
+ "accessor",
+ "javascript",
+ "ecmascript",
+ "enumerable",
+ "configurable",
+ "writable"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/define-data-property/issues"
+ },
+ "homepage": "https://github.com/ljharb/define-data-property#readme",
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "@types/es-value-fixtures": "^1.4.1",
+ "@types/for-each": "^0.3.1",
+ "@types/get-intrinsic": "^1.2.0",
+ "@types/gopd": "^1.0.1",
+ "@types/has": "^1.0.0",
+ "@types/has-property-descriptors": "^1.0.1",
+ "@types/object-inspect": "^1.8.2",
+ "@types/object.getownpropertydescriptors": "^2.1.2",
+ "@types/tape": "^5.6.1",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "es-value-fixtures": "^1.4.2",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+ "has": "^1.0.3",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "object-inspect": "^1.12.3",
+ "object.getownpropertydescriptors": "^2.1.7",
+ "reflect.ownkeys": "^1.1.4",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.7.1",
+ "typescript": "^5.3.0-dev.20231012"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "testling": {
+ "files": "test/index.js"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows",
+ "!*.ts",
+ "!*.ts.map",
+ "types/reflect.ownkeys"
+ ]
+ }
+}
diff --git a/client/node_modules/define-data-property/test/index.js b/client/node_modules/define-data-property/test/index.js
new file mode 100644
index 0000000..405508e
--- /dev/null
+++ b/client/node_modules/define-data-property/test/index.js
@@ -0,0 +1,392 @@
+'use strict';
+
+var test = require('tape');
+var v = require('es-value-fixtures');
+var forEach = require('for-each');
+var inspect = require('object-inspect');
+var has = require('has');
+var hasPropertyDescriptors = require('has-property-descriptors')();
+var getOwnPropertyDescriptors = require('object.getownpropertydescriptors');
+var ownKeys = require('reflect.ownkeys');
+
+var defineDataProperty = require('../');
+
+test('defineDataProperty', function (t) {
+ t.test('argument validation', function (st) {
+ forEach(v.primitives, function (nonObject) {
+ st['throws'](
+ // @ts-expect-error
+ function () { defineDataProperty(nonObject, 'key', 'value'); },
+ TypeError,
+ 'throws on non-object input: ' + inspect(nonObject)
+ );
+ });
+
+ forEach(v.nonPropertyKeys, function (nonPropertyKey) {
+ st['throws'](
+ // @ts-expect-error
+ function () { defineDataProperty({}, nonPropertyKey, 'value'); },
+ TypeError,
+ 'throws on non-PropertyKey input: ' + inspect(nonPropertyKey)
+ );
+ });
+
+ forEach(v.nonBooleans, function (nonBoolean) {
+ if (nonBoolean !== null) {
+ st['throws'](
+ // @ts-expect-error
+ function () { defineDataProperty({}, 'key', 'value', nonBoolean); },
+ TypeError,
+ 'throws on non-boolean nonEnumerable: ' + inspect(nonBoolean)
+ );
+
+ st['throws'](
+ // @ts-expect-error
+ function () { defineDataProperty({}, 'key', 'value', false, nonBoolean); },
+ TypeError,
+ 'throws on non-boolean nonWritable: ' + inspect(nonBoolean)
+ );
+
+ st['throws'](
+ // @ts-expect-error
+ function () { defineDataProperty({}, 'key', 'value', false, false, nonBoolean); },
+ TypeError,
+ 'throws on non-boolean nonConfigurable: ' + inspect(nonBoolean)
+ );
+ }
+ });
+
+ st.end();
+ });
+
+ t.test('normal data property', function (st) {
+ /** @type {Record<PropertyKey, string>} */
+ var obj = { existing: 'existing property' };
+ st.ok(has(obj, 'existing'), 'has initial own property');
+ st.equal(obj.existing, 'existing property', 'has expected initial value');
+
+ var res = defineDataProperty(obj, 'added', 'added property');
+ st.equal(res, void undefined, 'returns `undefined`');
+ st.ok(has(obj, 'added'), 'has expected own property');
+ st.equal(obj.added, 'added property', 'has expected value');
+
+ defineDataProperty(obj, 'existing', 'new value');
+ st.ok(has(obj, 'existing'), 'still has expected own property');
+ st.equal(obj.existing, 'new value', 'has new expected value');
+
+ defineDataProperty(obj, 'explicit1', 'new value', false);
+ st.ok(has(obj, 'explicit1'), 'has expected own property (explicit enumerable)');
+ st.equal(obj.explicit1, 'new value', 'has new expected value (explicit enumerable)');
+
+ defineDataProperty(obj, 'explicit2', 'new value', false, false);
+ st.ok(has(obj, 'explicit2'), 'has expected own property (explicit writable)');
+ st.equal(obj.explicit2, 'new value', 'has new expected value (explicit writable)');
+
+ defineDataProperty(obj, 'explicit3', 'new value', false, false, false);
+ st.ok(has(obj, 'explicit3'), 'has expected own property (explicit configurable)');
+ st.equal(obj.explicit3, 'new value', 'has new expected value (explicit configurable)');
+
+ st.end();
+ });
+
+ t.test('loose mode', { skip: !hasPropertyDescriptors }, function (st) {
+ var obj = { existing: 'existing property' };
+
+ defineDataProperty(obj, 'added', 'added value 1', true, null, null, true);
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ existing: {
+ configurable: true,
+ enumerable: true,
+ value: 'existing property',
+ writable: true
+ },
+ added: {
+ configurable: true,
+ enumerable: !hasPropertyDescriptors,
+ value: 'added value 1',
+ writable: true
+ }
+ },
+ 'in loose mode, obj still adds property 1'
+ );
+
+ defineDataProperty(obj, 'added', 'added value 2', false, true, null, true);
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ existing: {
+ configurable: true,
+ enumerable: true,
+ value: 'existing property',
+ writable: true
+ },
+ added: {
+ configurable: true,
+ enumerable: true,
+ value: 'added value 2',
+ writable: !hasPropertyDescriptors
+ }
+ },
+ 'in loose mode, obj still adds property 2'
+ );
+
+ defineDataProperty(obj, 'added', 'added value 3', false, false, true, true);
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ existing: {
+ configurable: true,
+ enumerable: true,
+ value: 'existing property',
+ writable: true
+ },
+ added: {
+ configurable: !hasPropertyDescriptors,
+ enumerable: true,
+ value: 'added value 3',
+ writable: true
+ }
+ },
+ 'in loose mode, obj still adds property 3'
+ );
+
+ st.end();
+ });
+
+ t.test('non-normal data property, ES3', { skip: hasPropertyDescriptors }, function (st) {
+ /** @type {Record<PropertyKey, string>} */
+ var obj = { existing: 'existing property' };
+
+ st['throws'](
+ function () { defineDataProperty(obj, 'added', 'added value', true); },
+ SyntaxError,
+ 'nonEnumerable throws a Syntax Error'
+ );
+
+ st['throws'](
+ function () { defineDataProperty(obj, 'added', 'added value', false, true); },
+ SyntaxError,
+ 'nonWritable throws a Syntax Error'
+ );
+
+ st['throws'](
+ function () { defineDataProperty(obj, 'added', 'added value', false, false, true); },
+ SyntaxError,
+ 'nonWritable throws a Syntax Error'
+ );
+
+ st.deepEqual(
+ ownKeys(obj),
+ ['existing'],
+ 'obj still has expected keys'
+ );
+ st.equal(obj.existing, 'existing property', 'obj still has expected values');
+
+ st.end();
+ });
+
+ t.test('new non-normal data property, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
+ /** @type {Record<PropertyKey, string>} */
+ var obj = { existing: 'existing property' };
+
+ defineDataProperty(obj, 'nonEnum', null, true);
+ defineDataProperty(obj, 'nonWrit', null, false, true);
+ defineDataProperty(obj, 'nonConf', null, false, false, true);
+
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ existing: {
+ configurable: true,
+ enumerable: true,
+ value: 'existing property',
+ writable: true
+ },
+ nonEnum: {
+ configurable: true,
+ enumerable: false,
+ value: null,
+ writable: true
+ },
+ nonWrit: {
+ configurable: true,
+ enumerable: true,
+ value: null,
+ writable: false
+ },
+ nonConf: {
+ configurable: false,
+ enumerable: true,
+ value: null,
+ writable: true
+ }
+ },
+ 'obj has expected property descriptors'
+ );
+
+ st.end();
+ });
+
+ t.test('existing non-normal data property, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
+ // test case changing an existing non-normal property
+
+ /** @type {Record<string, null | string>} */
+ var obj = {};
+ Object.defineProperty(obj, 'nonEnum', { configurable: true, enumerable: false, value: null, writable: true });
+ Object.defineProperty(obj, 'nonWrit', { configurable: true, enumerable: true, value: null, writable: false });
+ Object.defineProperty(obj, 'nonConf', { configurable: false, enumerable: true, value: null, writable: true });
+
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ nonEnum: {
+ configurable: true,
+ enumerable: false,
+ value: null,
+ writable: true
+ },
+ nonWrit: {
+ configurable: true,
+ enumerable: true,
+ value: null,
+ writable: false
+ },
+ nonConf: {
+ configurable: false,
+ enumerable: true,
+ value: null,
+ writable: true
+ }
+ },
+ 'obj initially has expected property descriptors'
+ );
+
+ defineDataProperty(obj, 'nonEnum', 'new value', false);
+ defineDataProperty(obj, 'nonWrit', 'new value', false, false);
+ st['throws'](
+ function () { defineDataProperty(obj, 'nonConf', 'new value', false, false, false); },
+ TypeError,
+ 'can not alter a nonconfigurable property'
+ );
+
+ st.deepEqual(
+ getOwnPropertyDescriptors(obj),
+ {
+ nonEnum: {
+ configurable: true,
+ enumerable: true,
+ value: 'new value',
+ writable: true
+ },
+ nonWrit: {
+ configurable: true,
+ enumerable: true,
+ value: 'new value',
+ writable: true
+ },
+ nonConf: {
+ configurable: false,
+ enumerable: true,
+ value: null,
+ writable: true
+ }
+ },
+ 'obj ends up with expected property descriptors'
+ );
+
+ st.end();
+ });
+
+ t.test('frozen object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
+ var frozen = Object.freeze({ existing: true });
+
+ st['throws'](
+ function () { defineDataProperty(frozen, 'existing', 'new value'); },
+ TypeError,
+ 'frozen object can not modify an existing property'
+ );
+
+ st['throws'](
+ function () { defineDataProperty(frozen, 'new', 'new property'); },
+ TypeError,
+ 'frozen object can not add a new property'
+ );
+
+ st.end();
+ });
+
+ t.test('sealed object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
+ var sealed = Object.seal({ existing: true });
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(sealed, 'existing'),
+ {
+ configurable: false,
+ enumerable: true,
+ value: true,
+ writable: true
+ },
+ 'existing value on sealed object has expected descriptor'
+ );
+
+ defineDataProperty(sealed, 'existing', 'new value');
+
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(sealed, 'existing'),
+ {
+ configurable: false,
+ enumerable: true,
+ value: 'new value',
+ writable: true
+ },
+ 'existing value on sealed object has changed descriptor'
+ );
+
+ st['throws'](
+ function () { defineDataProperty(sealed, 'new', 'new property'); },
+ TypeError,
+ 'sealed object can not add a new property'
+ );
+
+ st.end();
+ });
+
+ t.test('nonextensible object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
+ var nonExt = Object.preventExtensions({ existing: true });
+
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(nonExt, 'existing'),
+ {
+ configurable: true,
+ enumerable: true,
+ value: true,
+ writable: true
+ },
+ 'existing value on non-extensible object has expected descriptor'
+ );
+
+ defineDataProperty(nonExt, 'existing', 'new value', true);
+
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(nonExt, 'existing'),
+ {
+ configurable: true,
+ enumerable: false,
+ value: 'new value',
+ writable: true
+ },
+ 'existing value on non-extensible object has changed descriptor'
+ );
+
+ st['throws'](
+ function () { defineDataProperty(nonExt, 'new', 'new property'); },
+ TypeError,
+ 'non-extensible object can not add a new property'
+ );
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/client/node_modules/define-data-property/tsconfig.json b/client/node_modules/define-data-property/tsconfig.json
new file mode 100644
index 0000000..69f060d
--- /dev/null
+++ b/client/node_modules/define-data-property/tsconfig.json
@@ -0,0 +1,59 @@
+{
+ "compilerOptions": {
+ /* Visit https://aka.ms/tsconfig to read more about this file */
+
+ /* Projects */
+
+ /* Language and Environment */
+ "target": "es2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
+ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+ "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
+
+ /* Modules */
+ "module": "commonjs", /* Specify what module code is generated. */
+ // "rootDir": "./", /* Specify the root folder within your source files. */
+ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+ "typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */
+ "resolveJsonModule": true, /* Enable importing .json files. */
+
+ /* JavaScript Support */
+ "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+ "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
+
+ /* Emit */
+ "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
+ "declarationMap": true, /* Create sourcemaps for d.ts files. */
+ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
+ "noEmit": true, /* Disable emitting files from a compilation. */
+
+ /* Interop Constraints */
+ "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
+
+ /* Type Checking */
+ "strict": true, /* Enable all strict type-checking options. */
+ "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
+ "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
+ "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
+ "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
+ "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
+ "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
+ "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+ "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
+ "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
+ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
+
+ /* Completeness */
+ // "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "exclude": [
+ "coverage"
+ ]
+}
diff --git a/client/node_modules/define-properties/.editorconfig b/client/node_modules/define-properties/.editorconfig
new file mode 100644
index 0000000..eaa2141
--- /dev/null
+++ b/client/node_modules/define-properties/.editorconfig
@@ -0,0 +1,13 @@
+root = true
+
+[*]
+indent_style = tab;
+insert_final_newline = true;
+quote_type = auto;
+space_after_anonymous_functions = true;
+space_after_control_statements = true;
+spaces_around_operators = true;
+trim_trailing_whitespace = true;
+spaces_in_brackets = false;
+end_of_line = lf;
+
diff --git a/client/node_modules/define-properties/.eslintrc b/client/node_modules/define-properties/.eslintrc
new file mode 100644
index 0000000..4297a97
--- /dev/null
+++ b/client/node_modules/define-properties/.eslintrc
@@ -0,0 +1,19 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "id-length": [2, { "min": 1, "max": 35 }],
+ "max-params": [2, 4],
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "max-lines-per-function": 0,
+ },
+ },
+ ],
+}
diff --git a/client/node_modules/define-properties/.github/FUNDING.yml b/client/node_modules/define-properties/.github/FUNDING.yml
new file mode 100644
index 0000000..c70f264
--- /dev/null
+++ b/client/node_modules/define-properties/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/define-properties
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/define-properties/.nycrc b/client/node_modules/define-properties/.nycrc
new file mode 100644
index 0000000..bdd626c
--- /dev/null
+++ b/client/node_modules/define-properties/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/define-properties/CHANGELOG.md b/client/node_modules/define-properties/CHANGELOG.md
new file mode 100644
index 0000000..5bdf5f1
--- /dev/null
+++ b/client/node_modules/define-properties/CHANGELOG.md
@@ -0,0 +1,91 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.2.1](https://github.com/ljharb/define-properties/compare/v1.2.0...v1.2.1) - 2023-09-12
+
+### Commits
+
+- [Refactor] use `define-data-property` [`e7782a7`](https://github.com/ljharb/define-properties/commit/e7782a7480a62f8b6e141b49371e6de4df176c97)
+- [actions] use reusable rebase action [`cd249c3`](https://github.com/ljharb/define-properties/commit/cd249c3920607bc8eeb7c0cd5b672b810983cac5)
+- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`8205f97`](https://github.com/ljharb/define-properties/commit/8205f9734a4da8ee5b3b29798788567a09b330e8)
+
+## [v1.2.0](https://github.com/ljharb/define-properties/compare/v1.1.4...v1.2.0) - 2023-02-10
+
+### Commits
+
+- [New] if the predicate is boolean `true`, it compares the existing value with `===` as the predicate [`d8dd6fc`](https://github.com/ljharb/define-properties/commit/d8dd6fca40d7c5878a4b643b91e66ae5a513a194)
+- [meta] add `auto-changelog` [`7ebe2b0`](https://github.com/ljharb/define-properties/commit/7ebe2b0a0f90e62b842942cd45e86864fe75d9f6)
+- [meta] use `npmignore` to autogenerate an npmignore file [`647478a`](https://github.com/ljharb/define-properties/commit/647478a8401fbf053fb633c0a3a7c982da6bad74)
+- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`e620d70`](https://github.com/ljharb/define-properties/commit/e620d707d2e1118a38796f22a862200eb0a53fff)
+- [Dev Deps] update `aud`, `tape` [`f1e5072`](https://github.com/ljharb/define-properties/commit/f1e507225c2551a99ed4fe40d3fe71b0f44acf88)
+- [actions] update checkout action [`628b3af`](https://github.com/ljharb/define-properties/commit/628b3af5c74b8f0963296d811a8f6fa657baf964)
+
+<!-- auto-changelog-above -->
+
+1.1.4 / 2022-04-14
+=================
+ * [Refactor] use `has-property-descriptors`
+ * [readme] add github actions/codecov badges
+ * [Docs] fix header parsing; remove testling
+ * [Deps] update `object-keys`
+ * [meta] use `prepublishOnly` script for npm 7+
+ * [meta] add `funding` field; create FUNDING.yml
+ * [actions] add "Allow Edits" workflow; automatic rebasing / merge commit blocking
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+ * [actions] use `node/install` instead of `node/run`; use `codecov` action
+ * [Tests] migrate tests to Github Actions
+ * [Tests] run `nyc` on all tests; use `tape` runner
+ * [Tests] use shared travis-ci config
+ * [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops
+ * [Tests] remove `jscs`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape`; add `aud`, `safe-publish-latest`
+
+1.1.3 / 2018-08-14
+=================
+ * [Refactor] use a for loop instead of `foreach` to make for smaller bundle sizes
+ * [Robustness] cache `Array.prototype.concat` and `Object.defineProperty`
+ * [Deps] update `object-keys`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `nsp`, `tape`, `jscs`; remove unused eccheck script + dep
+ * [Tests] use pretest/posttest for linting/security
+ * [Tests] fix npm upgrades on older nodes
+
+1.1.2 / 2015-10-14
+=================
+ * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
+ * [Deps] Update `object-keys`
+ * [Dev Deps] update `jscs`, `tape`, `eslint`, `@ljharb/eslint-config`, `nsp`
+ * [Tests] up to `io.js` `v3.3`, `node` `v4.2`
+
+1.1.1 / 2015-07-21
+=================
+ * [Deps] Update `object-keys`
+ * [Dev Deps] Update `tape`, `eslint`
+ * [Tests] Test on `io.js` `v2.4`
+
+1.1.0 / 2015-07-01
+=================
+ * [New] Add support for symbol-valued properties.
+ * [Dev Deps] Update `nsp`, `eslint`
+ * [Tests] Test up to `io.js` `v2.3`
+
+1.0.3 / 2015-05-30
+=================
+ * Using a more reliable check for supported property descriptors.
+
+1.0.2 / 2015-05-23
+=================
+ * Test up to `io.js` `v2.0`
+ * Update `tape`, `jscs`, `nsp`, `eslint`, `object-keys`, `editorconfig-tools`, `covert`
+
+1.0.1 / 2015-01-06
+=================
+ * Update `object-keys` to fix ES3 support
+
+1.0.0 / 2015-01-04
+=================
+ * v1.0.0
diff --git a/client/node_modules/define-properties/LICENSE b/client/node_modules/define-properties/LICENSE
new file mode 100644
index 0000000..8c271c1
--- /dev/null
+++ b/client/node_modules/define-properties/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (C) 2015 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/client/node_modules/define-properties/README.md b/client/node_modules/define-properties/README.md
new file mode 100644
index 0000000..650adfa
--- /dev/null
+++ b/client/node_modules/define-properties/README.md
@@ -0,0 +1,84 @@
+# define-properties <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.
+Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.
+
+## Example
+
+```js
+var define = require('define-properties');
+var assert = require('assert');
+
+var obj = define({ a: 1, b: 2 }, {
+ a: 10,
+ b: 20,
+ c: 30
+});
+assert(obj.a === 1);
+assert(obj.b === 2);
+assert(obj.c === 30);
+if (define.supportsDescriptors) {
+ assert.deepEqual(Object.keys(obj), ['a', 'b']);
+ assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), {
+ configurable: true,
+ enumerable: false,
+ value: 30,
+ writable: false
+ });
+}
+```
+
+Then, with predicates:
+```js
+var define = require('define-properties');
+var assert = require('assert');
+
+var obj = define({ a: 1, b: 2, c: 3 }, {
+ a: 10,
+ b: 20,
+ c: 30
+}, {
+ a: function () { return false; },
+ b: function () { return true; }
+});
+assert(obj.a === 1);
+assert(obj.b === 20);
+assert(obj.c === 3);
+if (define.supportsDescriptors) {
+ assert.deepEqual(Object.keys(obj), ['a', 'c']);
+ assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), {
+ configurable: true,
+ enumerable: false,
+ value: 20,
+ writable: false
+ });
+}
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/define-properties
+[npm-version-svg]: https://versionbadg.es/ljharb/define-properties.svg
+[deps-svg]: https://david-dm.org/ljharb/define-properties.svg
+[deps-url]: https://david-dm.org/ljharb/define-properties
+[dev-deps-svg]: https://david-dm.org/ljharb/define-properties/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/define-properties#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/define-properties.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/define-properties.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/define-properties.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=define-properties
+[codecov-image]: https://codecov.io/gh/ljharb/define-properties/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/define-properties/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/define-properties
+[actions-url]: https://github.com/ljharb/define-properties/actions
diff --git a/client/node_modules/define-properties/index.js b/client/node_modules/define-properties/index.js
new file mode 100644
index 0000000..1860404
--- /dev/null
+++ b/client/node_modules/define-properties/index.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var keys = require('object-keys');
+var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
+
+var toStr = Object.prototype.toString;
+var concat = Array.prototype.concat;
+var defineDataProperty = require('define-data-property');
+
+var isFunction = function (fn) {
+ return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
+};
+
+var supportsDescriptors = require('has-property-descriptors')();
+
+var defineProperty = function (object, name, value, predicate) {
+ if (name in object) {
+ if (predicate === true) {
+ if (object[name] === value) {
+ return;
+ }
+ } else if (!isFunction(predicate) || !predicate()) {
+ return;
+ }
+ }
+
+ if (supportsDescriptors) {
+ defineDataProperty(object, name, value, true);
+ } else {
+ defineDataProperty(object, name, value);
+ }
+};
+
+var defineProperties = function (object, map) {
+ var predicates = arguments.length > 2 ? arguments[2] : {};
+ var props = keys(map);
+ if (hasSymbols) {
+ props = concat.call(props, Object.getOwnPropertySymbols(map));
+ }
+ for (var i = 0; i < props.length; i += 1) {
+ defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
+ }
+};
+
+defineProperties.supportsDescriptors = !!supportsDescriptors;
+
+module.exports = defineProperties;
diff --git a/client/node_modules/define-properties/package.json b/client/node_modules/define-properties/package.json
new file mode 100644
index 0000000..577d885
--- /dev/null
+++ b/client/node_modules/define-properties/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "define-properties",
+ "version": "1.2.1",
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
+ "license": "MIT",
+ "main": "index.js",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "lint": "eslint --ext=js,mjs .",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/ljharb/define-properties.git"
+ },
+ "keywords": [
+ "Object.defineProperty",
+ "Object.defineProperties",
+ "object",
+ "property descriptor",
+ "descriptor",
+ "define",
+ "ES5"
+ ],
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.6"
+ },
+ "testling": {
+ "files": "test/index.js",
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true,
+ "startingVersion": "1.1.5"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows",
+ "test/"
+ ]
+ }
+}
diff --git a/client/node_modules/detect-node/LICENSE b/client/node_modules/detect-node/LICENSE
new file mode 100644
index 0000000..3113356
--- /dev/null
+++ b/client/node_modules/detect-node/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Ilya Kantor
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/detect-node/Readme.md b/client/node_modules/detect-node/Readme.md
new file mode 100644
index 0000000..73c57b9
--- /dev/null
+++ b/client/node_modules/detect-node/Readme.md
@@ -0,0 +1,30 @@
+### Install
+
+```shell
+npm install --save detect-node
+```
+
+### Usage:
+
+```js
+var isNode = require('detect-node');
+
+if (isNode) {
+ console.log("Running under Node.JS");
+} else {
+ alert("Hello from browser (or whatever not-a-node env)");
+}
+```
+
+The check is performed as:
+```js
+module.exports = false;
+
+// Only Node.JS has a process variable that is of [[Class]] process
+try {
+ module.exports = Object.prototype.toString.call(global.process) === '[object process]'
+} catch(e) {}
+
+```
+
+Thanks to Ingvar Stepanyan for the initial idea. This check is both **the most reliable I could find** and it does not use `process` env directly, which would cause browserify to include it into the build.
diff --git a/client/node_modules/detect-node/browser.js b/client/node_modules/detect-node/browser.js
new file mode 100644
index 0000000..4172696
--- /dev/null
+++ b/client/node_modules/detect-node/browser.js
@@ -0,0 +1,2 @@
+module.exports = false;
+
diff --git a/client/node_modules/detect-node/index.esm.js b/client/node_modules/detect-node/index.esm.js
new file mode 100644
index 0000000..b4b379f
--- /dev/null
+++ b/client/node_modules/detect-node/index.esm.js
@@ -0,0 +1,2 @@
+// Only Node.JS has a process variable that is of [[Class]] process
+export default Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';
diff --git a/client/node_modules/detect-node/index.js b/client/node_modules/detect-node/index.js
new file mode 100644
index 0000000..229949e
--- /dev/null
+++ b/client/node_modules/detect-node/index.js
@@ -0,0 +1,2 @@
+// Only Node.JS has a process variable that is of [[Class]] process
+module.exports = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';
diff --git a/client/node_modules/detect-node/package.json b/client/node_modules/detect-node/package.json
new file mode 100644
index 0000000..3cbabbe
--- /dev/null
+++ b/client/node_modules/detect-node/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "detect-node",
+ "version": "2.1.0",
+ "description": "Detect Node.JS (as opposite to browser environment) (reliable)",
+ "main": "index.js",
+ "module": "index.esm.js",
+ "browser": "browser.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/iliakan/detect-node"
+ },
+ "keywords": [
+ "detect",
+ "node"
+ ],
+ "author": "Ilya Kantor",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/iliakan/detect-node/issues"
+ },
+ "homepage": "https://github.com/iliakan/detect-node"
+}
diff --git a/client/node_modules/electron/LICENSE b/client/node_modules/electron/LICENSE
new file mode 100644
index 0000000..536d54e
--- /dev/null
+++ b/client/node_modules/electron/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) Electron contributors
+Copyright (c) 2013-2020 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/electron/README.md b/client/node_modules/electron/README.md
new file mode 100644
index 0000000..3a2ade4
--- /dev/null
+++ b/client/node_modules/electron/README.md
@@ -0,0 +1,115 @@
+[![Electron Logo](https://electronjs.org/images/electron-logo.svg)](https://electronjs.org)
+
+[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/main.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/main)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/main?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/main)
+[![Electron Discord Invite](https://img.shields.io/discord/745037351163527189?color=%237289DA&label=chat&logo=discord&logoColor=white)](https://discord.gg/electronjs)
+
+:memo: Available Translations: 🇨🇳 🇧🇷 🇪🇸 🇯🇵 🇷🇺 🇫🇷 🇺🇸 🇩🇪.
+View these docs in other languages on our [Crowdin](https://crowdin.com/project/electron) project.
+
+The Electron framework lets you write cross-platform desktop applications
+using JavaScript, HTML and CSS. It is based on [Node.js](https://nodejs.org/) and
+[Chromium](https://www.chromium.org) and is used by the [Atom
+editor](https://github.com/atom/atom) and many other [apps](https://electronjs.org/apps).
+
+Follow [@electronjs](https://twitter.com/electronjs) on Twitter for important
+announcements.
+
+This project adheres to the Contributor Covenant
+[code of conduct](https://github.com/electron/electron/tree/main/CODE_OF_CONDUCT.md).
+By participating, you are expected to uphold this code. Please report unacceptable
+behavior to [coc@electronjs.org](mailto:coc@electronjs.org).
+
+## Installation
+
+To install prebuilt Electron binaries, use [`npm`](https://docs.npmjs.com/).
+The preferred method is to install Electron as a development dependency in your
+app:
+
+```sh
+npm install electron --save-dev
+```
+
+For more installation options and troubleshooting tips, see
+[installation](docs/tutorial/installation.md). For info on how to manage Electron versions in your apps, see
+[Electron versioning](docs/tutorial/electron-versioning.md).
+
+## Platform support
+
+Each Electron release provides binaries for macOS, Windows, and Linux.
+
+* macOS (Catalina and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
+* Windows (Windows 10 and up): Electron provides `ia32` (`x86`), `x64` (`amd64`), and `arm64` binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.1 was [removed in Electron 23, in line with Chromium's Windows deprecation policy](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice).
+* Linux: The prebuilt binaries of Electron are built on Ubuntu 20.04. They have also been verified to work on:
+ * Ubuntu 14.04 and newer
+ * Fedora 24 and newer
+ * Debian 8 and newer
+
+## Quick start & Electron Fiddle
+
+Use [`Electron Fiddle`](https://github.com/electron/fiddle)
+to build, run, and package small Electron experiments, to see code examples for all of Electron's APIs, and
+to try out different versions of Electron. It's designed to make the start of your journey with
+Electron easier.
+
+Alternatively, clone and run the
+[electron/electron-quick-start](https://github.com/electron/electron-quick-start)
+repository to see a minimal Electron app in action:
+
+```sh
+git clone https://github.com/electron/electron-quick-start
+cd electron-quick-start
+npm install
+npm start
+```
+
+## Resources for learning Electron
+
+* [electronjs.org/docs](https://electronjs.org/docs) - All of Electron's documentation
+* [electron/fiddle](https://github.com/electron/fiddle) - A tool to build, run, and package small Electron experiments
+* [electron/electron-quick-start](https://github.com/electron/electron-quick-start) - A very basic starter Electron app
+* [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - Sample starter apps created by the community
+
+## Programmatic usage
+
+Most people use Electron from the command line, but if you require `electron` inside
+your **Node app** (not your Electron app) it will return the file path to the
+binary. Use this to spawn Electron from Node scripts:
+
+```javascript
+const electron = require('electron')
+const proc = require('node:child_process')
+
+// will print something similar to /Users/maf/.../Electron
+console.log(electron)
+
+// spawn Electron
+const child = proc.spawn(electron)
+```
+
+### Mirrors
+
+* [China](https://npmmirror.com/mirrors/electron/)
+
+See the [Advanced Installation Instructions](https://www.electronjs.org/docs/latest/tutorial/installation#mirror) to learn how to use a custom mirror.
+
+## Documentation translations
+
+We crowdsource translations for our documentation via [Crowdin](https://crowdin.com/project/electron).
+We currently accept translations for Chinese (Simplified), French, German, Japanese, Portuguese,
+Russian, and Spanish.
+
+## Contributing
+
+If you are interested in reporting/fixing issues and contributing directly to the code base, please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information on what we're looking for and how to get started.
+
+## Community
+
+Info on reporting bugs, getting help, finding third-party tools and sample apps,
+and more can be found on the [Community page](https://www.electronjs.org/community).
+
+## License
+
+[MIT](https://github.com/electron/electron/blob/main/LICENSE)
+
+When using Electron logos, make sure to follow [OpenJS Foundation Trademark Policy](https://openjsf.org/wp-content/uploads/sites/84/2021/01/OpenJS-Foundation-Trademark-Policy-2021-01-12.docx.pdf).
diff --git a/client/node_modules/electron/checksums.json b/client/node_modules/electron/checksums.json
new file mode 100644
index 0000000..2c43692
--- /dev/null
+++ b/client/node_modules/electron/checksums.json
@@ -0,0 +1,77 @@
+{
+ "chromedriver-v27.1.2-darwin-arm64.zip": "a75535a26a52b5eeb6dde3a235254fd75966a9ab40ea292193e7bce0cc8b220c",
+ "chromedriver-v27.1.2-darwin-x64.zip": "059d2eb14c1ba8a1b3bc39f75608e5d294e23158318b136d3210b595df511821",
+ "chromedriver-v27.1.2-linux-arm64.zip": "143f40271ab4d069c89d0a0d685e8291d49bedb3d661e925372577024b4d8b49",
+ "chromedriver-v27.1.2-linux-armv7l.zip": "6736e997fe69182f11a7aca749bd7dd2ca61157c8340c1c227bcd138e7e812c1",
+ "chromedriver-v27.1.2-linux-x64.zip": "b06c7a133f0af3c01d2260bd2125d76609404f5d3ada99df43967b26bc63e926",
+ "chromedriver-v27.1.2-mas-arm64.zip": "c4792b8707bf4293a06f044d8b48b010b8cfff01c47c9512aaed293bc663476f",
+ "chromedriver-v27.1.2-mas-x64.zip": "b968abdffa068763ab56a2d2feae7b32efbb9a68c7bd0ea14ccfb8b6c36103b5",
+ "chromedriver-v27.1.2-win32-arm64.zip": "36987bf4ec3c5d17f614159667eda348ae2860cf09f8da335cf4a0079efab044",
+ "chromedriver-v27.1.2-win32-ia32.zip": "2375ac534fb94a33296f6a6ee36226ed7542ecd96d5c3eb86a8fad02be6121de",
+ "chromedriver-v27.1.2-win32-x64.zip": "79624471b9ceda9709db2c0735b3716965c29e897f93cb1b2e46454dfc73300e",
+ "electron-api.json": "866546d57b1408bf4e9ff7bd57979bc75c68a42cb857167ae99100e2e668e630",
+ "electron-v27.1.2-darwin-arm64-dsym-snapshot.zip": "58adce7ba8be4c5cc55dcd19aa944c40541b3198dfd6a27db11293d40c46b086",
+ "electron-v27.1.2-darwin-arm64-dsym.zip": "f04d0bd1aaa3c3bcd7783f48f41a48cc3c11b326a046681adee4f7d8054a7444",
+ "electron-v27.1.2-darwin-arm64-symbols.zip": "aa5c1996f97d41f1c5f5b3d70d91a8c8258bc5ea9b406b295b14a5c95f5f90da",
+ "electron-v27.1.2-darwin-arm64.zip": "184634fb368189652225ee84d1f70f9a62c62fc8d80717aba5b84e5c5260e917",
+ "electron-v27.1.2-darwin-x64-dsym-snapshot.zip": "c2408a30676dc5b5ebaad1ff51764d0e2287669cc1789b51e0dc3580267511eb",
+ "electron-v27.1.2-darwin-x64-dsym.zip": "584cc19cb25d1086ab4492e5c54e2d4fc1f60b5d82d38f02dcda8b3a4a4cd035",
+ "electron-v27.1.2-darwin-x64-symbols.zip": "f6b8e7759611d857f7a00f9490df6d31fad004ee0fea1d0e073ca620fa7f1f19",
+ "electron-v27.1.2-darwin-x64.zip": "89342c18a400ec2fb91c6b4d9a98ef57ece764bd2e511abf2442996177393eef",
+ "electron-v27.1.2-linux-arm64-debug.zip": "418f6bfc0378befcd38b8cf1c72c969bf89b123003400ad729e7909e208faf57",
+ "electron-v27.1.2-linux-arm64-symbols.zip": "d15b867fe27150a3070c7b7ca50208fff478a93a0cc0a6197520d5ba4023ce64",
+ "electron-v27.1.2-linux-arm64.zip": "e2f3c0c5ba96df976d783f966c47ca7aef47d1b07aeb07916ca643ed02cdb8b3",
+ "electron-v27.1.2-linux-armv7l-debug.zip": "418f6bfc0378befcd38b8cf1c72c969bf89b123003400ad729e7909e208faf57",
+ "electron-v27.1.2-linux-armv7l-symbols.zip": "c4acdbbd2143efc1c99dfd1c8b611c555687fcfd0df486b32f5b726b44f888d0",
+ "electron-v27.1.2-linux-armv7l.zip": "f4fe3f7988c37b470364bedb08b93b1de3accbac9247be675493f94e1e94bb46",
+ "electron-v27.1.2-linux-x64-debug.zip": "e5507ede9d599b66f8b1a8c65df78282ae3e7402a2c324e50e51fb3409b5e5ac",
+ "electron-v27.1.2-linux-x64-symbols.zip": "e09af1cdf92fe3469296224a5856e3fc67c600d4565b86515a315d1ae5afff81",
+ "electron-v27.1.2-linux-x64.zip": "5a9004b586a9049808b381d3eb367c795648d3f548cbc4a6dc1efd62945ad194",
+ "electron-v27.1.2-mas-arm64-dsym-snapshot.zip": "31699a2738c881c20c26909138de6fc0cc33cccb2f8e6bb589474b699c1ec697",
+ "electron-v27.1.2-mas-arm64-dsym.zip": "db62a336745ceb9f1bd2749e41eaafd64d7dd23027a82f27bfd84170aa6e1bad",
+ "electron-v27.1.2-mas-arm64-symbols.zip": "a3b964ce42dd471be91991d95d5b2f301ae960dabb4cc69a756dbf7aca17168d",
+ "electron-v27.1.2-mas-arm64.zip": "a0f013b5b72c38d2d7411b6e770f8f119cdfa284c9e5399b38110f7539a12597",
+ "electron-v27.1.2-mas-x64-dsym-snapshot.zip": "73d5f92bfd59a28d26a0c6e779b7f296cd453ea0168226ed5413d01b2d178be9",
+ "electron-v27.1.2-mas-x64-dsym.zip": "8d0b7a413ab9b744944864c3df5c08ed4dafa87100fff77539823b9d7404ea51",
+ "electron-v27.1.2-mas-x64-symbols.zip": "e52425c5673cd46beb06521b92f8f1820616b83d2e4c474645020996a2190f2b",
+ "electron-v27.1.2-mas-x64.zip": "ebcea8666929a482780083346749374dac3a259798bab42f39f582d896f1642c",
+ "electron-v27.1.2-win32-arm64-pdb.zip": "4284849c9584428831f0846229b279712b7ca2a054935f914c40be60866f6093",
+ "electron-v27.1.2-win32-arm64-symbols.zip": "b70039faceca3661b32e4d7ebec0dbee980c10f8827f72c409044b177f13a779",
+ "electron-v27.1.2-win32-arm64-toolchain-profile.zip": "c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a",
+ "electron-v27.1.2-win32-arm64.zip": "eb7d0223e25d349f9ebd4a2309b2b3b6b2e4425991f14ca8e9e2b260528e1b35",
+ "electron-v27.1.2-win32-ia32-pdb.zip": "fefb58008b98893ee0b720458795ce31b45a6f14944a2ada2e10f46fdc70546e",
+ "electron-v27.1.2-win32-ia32-symbols.zip": "a109829310a7952b319a16562ae0230a3d987fdd7213f3700f33838751ac978b",
+ "electron-v27.1.2-win32-ia32-toolchain-profile.zip": "c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a",
+ "electron-v27.1.2-win32-ia32.zip": "b4ba9608247b28d6ac83ae2a70237554ccf0b7649bd21cfade9e17c63164c652",
+ "electron-v27.1.2-win32-x64-pdb.zip": "f73615f2913bc73129681b00c802ce726025ea8bf621200be7e2f667f0eeb49d",
+ "electron-v27.1.2-win32-x64-symbols.zip": "853a0dcf84cf49c250e27487b7af73f4b8a4b6c60ddb1b8cd8e991df426c230c",
+ "electron-v27.1.2-win32-x64-toolchain-profile.zip": "c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a",
+ "electron-v27.1.2-win32-x64.zip": "57b40918a81bc13da9c622d562be25075d76f345aa124938c912653a62797da6",
+ "electron.d.ts": "48667463cbf71b088eef653c2d5f182fa16c4e42942a5a097cc2fdedf832401a",
+ "ffmpeg-v27.1.2-darwin-arm64.zip": "62849622e0688a5e6626202182eb8d99d10c3f939647e7dd6b96fb862739d160",
+ "ffmpeg-v27.1.2-darwin-x64.zip": "fc560b29761c5ef7e602e38c4787e919c28b26a7512f2f04f66db70591864597",
+ "ffmpeg-v27.1.2-linux-arm64.zip": "be517ba93c5b5f36d2e55af148213f4c2fc43177563825601bee6f88dd4f7b05",
+ "ffmpeg-v27.1.2-linux-armv7l.zip": "926d0da25ffcea3d05a6cbcae15e5d7729d93bc43394ae4439747669d2210e1d",
+ "ffmpeg-v27.1.2-linux-x64.zip": "6f9c0ef52af14828ad547a80b17f8c63cac51a18b8d5769a2f33e4fa6cccfc7e",
+ "ffmpeg-v27.1.2-mas-arm64.zip": "f7756bfebd336f96362a9cf1fd0e2b7dff02918860cacc8f425a8a18cf075129",
+ "ffmpeg-v27.1.2-mas-x64.zip": "3d17ed34ff914b51d33ab813ba0304d12c18c1b41f243ecfad69db3505092ee6",
+ "ffmpeg-v27.1.2-win32-arm64.zip": "ff048718fb6ec6364ea77137e792fd1b185000659fe1f0d255fcc4cab640eda5",
+ "ffmpeg-v27.1.2-win32-ia32.zip": "2d5ae353e1f6657370742f742f5781dfb4ae5a2ec267d6a02048f49233cad1e0",
+ "ffmpeg-v27.1.2-win32-x64.zip": "92945258db5b97dc4d1bb2f7cac53c6351d17e9eafe41c0d941d008eb5e49241",
+ "hunspell_dictionaries.zip": "43162177ed0e37bff9a390ff34cd19406d672c8ad5a01cc675d5212ebbc74a12",
+ "libcxx-objects-v27.1.2-linux-arm64.zip": "1881fe0f5ee7c04eed01772a3c3eb01fe09a9ee2c99fe454ae39dd127a5f45a7",
+ "libcxx-objects-v27.1.2-linux-armv7l.zip": "a016929c69aaf84579ecc804a987b8c1867d8ad74d415c68b5953ea2c5edf33e",
+ "libcxx-objects-v27.1.2-linux-x64.zip": "9c7e9a39cc6067bb60aa26e13708f9f7eef595f6df811c8b9d38f4728033c190",
+ "libcxx_headers.zip": "7d259fd7db8455f4157f5bc78db6b3f0ca4244c29cf4b330f40b264a4cfdad4e",
+ "libcxxabi_headers.zip": "39bb75865eb1279e2c453e996c2a75c3783a32042993035df5b47f53105889f7",
+ "mksnapshot-v27.1.2-darwin-arm64.zip": "0c4d07ff82f3e6730c61ec4e8edec5e3ceeb0fb1f052631d738763ce233746df",
+ "mksnapshot-v27.1.2-darwin-x64.zip": "3e3c2d04c14032011e4b965e01209797f49289cf371c78aebe81be51f78c33d5",
+ "mksnapshot-v27.1.2-linux-arm64-x64.zip": "13e133ddd3c05808855ab95bf7ddd1e6acc2a8c775435978277c3cbef2fb2612",
+ "mksnapshot-v27.1.2-linux-armv7l-x64.zip": "7da772b94cbbbaf4f37b758a5bf7c3c8297e4670e0a5c2c7de69a602c30eb9ae",
+ "mksnapshot-v27.1.2-linux-x64.zip": "225ef9211295f18661ce9fe34d0a70bb12ed545e5374056c1d77071665afd178",
+ "mksnapshot-v27.1.2-mas-arm64.zip": "b105169782a9da0d2b3f1c075308f571fcd070d71f9f44d0cff0a4f407a94c76",
+ "mksnapshot-v27.1.2-mas-x64.zip": "b6c10aa4d13b653cbeb37ee8cd5916795afc6a453331a2c646d123b0a5b1e572",
+ "mksnapshot-v27.1.2-win32-arm64-x64.zip": "e2b76d6a984629a8ff10dd944a540952d6e165369ccf82b9f09dfa0d322db9d4",
+ "mksnapshot-v27.1.2-win32-ia32.zip": "c7b44affc9e3416306858756dac48de6c61ed8d2987fc18547c5e9fc890155ac",
+ "mksnapshot-v27.1.2-win32-x64.zip": "b692a5d650337f73c5992d68dd90ef047ca4c041a9e977836e86369b3ec4f2b5"
+} \ No newline at end of file
diff --git a/client/node_modules/electron/cli.js b/client/node_modules/electron/cli.js
new file mode 100755
index 0000000..09f4677
--- /dev/null
+++ b/client/node_modules/electron/cli.js
@@ -0,0 +1,25 @@
+#!/usr/bin/env node
+
+const electron = require('./');
+
+const proc = require('child_process');
+
+const child = proc.spawn(electron, process.argv.slice(2), { stdio: 'inherit', windowsHide: false });
+child.on('close', function (code, signal) {
+ if (code === null) {
+ console.error(electron, 'exited with signal', signal);
+ process.exit(1);
+ }
+ process.exit(code);
+});
+
+const handleTerminationSignal = function (signal) {
+ process.on(signal, function signalHandler () {
+ if (!child.killed) {
+ child.kill(signal);
+ }
+ });
+};
+
+handleTerminationSignal('SIGINT');
+handleTerminationSignal('SIGTERM');
diff --git a/client/node_modules/electron/electron.d.ts b/client/node_modules/electron/electron.d.ts
new file mode 100644
index 0000000..eedb19d
--- /dev/null
+++ b/client/node_modules/electron/electron.d.ts
@@ -0,0 +1,19519 @@
+// Type definitions for Electron 27.1.2
+// Project: http://electronjs.org/
+// Definitions by: The Electron Team <https://github.com/electron/electron>
+// Definitions: https://github.com/electron/typescript-definitions
+
+/// <reference types="node" />
+
+type DOMEvent = Event;
+type GlobalResponse = Response;
+type GlobalRequest = Request;
+
+declare namespace Electron {
+ const NodeEventEmitter: typeof import('events').EventEmitter;
+
+ type Accelerator = string;
+ type Event<Params extends object = {}> = {
+ preventDefault: () => void;
+ readonly defaultPrevented: boolean;
+ } & Params;
+
+ interface App extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/app
+
+ /**
+ * Emitted when Chrome's accessibility support changes. This event fires when
+ * assistive technologies, such as screen readers, are enabled or disabled. See
+ * https://www.chromium.org/developers/design-documents/accessibility for more
+ * details.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'accessibility-support-changed', listener: (event: Event,
+ /**
+ * `true` when Chrome's accessibility support is enabled, `false` otherwise.
+ */
+ accessibilitySupportEnabled: boolean) => void): this;
+ once(event: 'accessibility-support-changed', listener: (event: Event,
+ /**
+ * `true` when Chrome's accessibility support is enabled, `false` otherwise.
+ */
+ accessibilitySupportEnabled: boolean) => void): this;
+ addListener(event: 'accessibility-support-changed', listener: (event: Event,
+ /**
+ * `true` when Chrome's accessibility support is enabled, `false` otherwise.
+ */
+ accessibilitySupportEnabled: boolean) => void): this;
+ removeListener(event: 'accessibility-support-changed', listener: (event: Event,
+ /**
+ * `true` when Chrome's accessibility support is enabled, `false` otherwise.
+ */
+ accessibilitySupportEnabled: boolean) => void): this;
+ /**
+ * Emitted when the application is activated. Various actions can trigger this
+ * event, such as launching the application for the first time, attempting to
+ * re-launch the application when it's already running, or clicking on the
+ * application's dock or taskbar icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'activate', listener: (event: Event,
+ hasVisibleWindows: boolean) => void): this;
+ once(event: 'activate', listener: (event: Event,
+ hasVisibleWindows: boolean) => void): this;
+ addListener(event: 'activate', listener: (event: Event,
+ hasVisibleWindows: boolean) => void): this;
+ removeListener(event: 'activate', listener: (event: Event,
+ hasVisibleWindows: boolean) => void): this;
+ /**
+ * Emitted during Handoff after an activity from this device was successfully
+ * resumed on another one.
+ *
+ * @platform darwin
+ */
+ on(event: 'activity-was-continued', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ once(event: 'activity-was-continued', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ addListener(event: 'activity-was-continued', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ removeListener(event: 'activity-was-continued', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ /**
+ * Emitted before the application starts closing its windows. Calling
+ * `event.preventDefault()` will prevent the default behavior, which is terminating
+ * the application.
+ *
+ * **Note:** If application quit was initiated by `autoUpdater.quitAndInstall()`,
+ * then `before-quit` is emitted _after_ emitting `close` event on all windows and
+ * closing them.
+ *
+ * **Note:** On Windows, this event will not be emitted if the app is closed due to
+ * a shutdown/restart of the system or a user logout.
+ */
+ on(event: 'before-quit', listener: (event: Event) => void): this;
+ once(event: 'before-quit', listener: (event: Event) => void): this;
+ addListener(event: 'before-quit', listener: (event: Event) => void): this;
+ removeListener(event: 'before-quit', listener: (event: Event) => void): this;
+ /**
+ * Emitted when a browserWindow gets blurred.
+ */
+ on(event: 'browser-window-blur', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ once(event: 'browser-window-blur', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ addListener(event: 'browser-window-blur', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ removeListener(event: 'browser-window-blur', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ /**
+ * Emitted when a new browserWindow is created.
+ */
+ on(event: 'browser-window-created', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ once(event: 'browser-window-created', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ addListener(event: 'browser-window-created', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ removeListener(event: 'browser-window-created', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ /**
+ * Emitted when a browserWindow gets focused.
+ */
+ on(event: 'browser-window-focus', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ once(event: 'browser-window-focus', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ addListener(event: 'browser-window-focus', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ removeListener(event: 'browser-window-focus', listener: (event: Event,
+ window: BrowserWindow) => void): this;
+ /**
+ * Emitted when failed to verify the `certificate` for `url`, to trust the
+ * certificate you should prevent the default behavior with
+ * `event.preventDefault()` and call `callback(true)`.
+ */
+ on(event: 'certificate-error', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ /**
+ * The error code
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ once(event: 'certificate-error', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ /**
+ * The error code
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ addListener(event: 'certificate-error', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ /**
+ * The error code
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ removeListener(event: 'certificate-error', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ /**
+ * The error code
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ /**
+ * Emitted when the child process unexpectedly disappears. This is normally because
+ * it was crashed or killed. It does not include renderer processes.
+ */
+ on(event: 'child-process-gone', listener: (event: Event,
+ details: Details) => void): this;
+ once(event: 'child-process-gone', listener: (event: Event,
+ details: Details) => void): this;
+ addListener(event: 'child-process-gone', listener: (event: Event,
+ details: Details) => void): this;
+ removeListener(event: 'child-process-gone', listener: (event: Event,
+ details: Details) => void): this;
+ /**
+ * Emitted during Handoff when an activity from a different device wants to be
+ * resumed. You should call `event.preventDefault()` if you want to handle this
+ * event.
+ *
+ * A user activity can be continued only in an app that has the same developer Team
+ * ID as the activity's source app and that supports the activity's type. Supported
+ * activity types are specified in the app's `Info.plist` under the
+ * `NSUserActivityTypes` key.
+ *
+ * @platform darwin
+ */
+ on(event: 'continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity on another device.
+ */
+ userInfo: unknown,
+ details: ContinueActivityDetails) => void): this;
+ once(event: 'continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity on another device.
+ */
+ userInfo: unknown,
+ details: ContinueActivityDetails) => void): this;
+ addListener(event: 'continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity on another device.
+ */
+ userInfo: unknown,
+ details: ContinueActivityDetails) => void): this;
+ removeListener(event: 'continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity on another device.
+ */
+ userInfo: unknown,
+ details: ContinueActivityDetails) => void): this;
+ /**
+ * Emitted during Handoff when an activity from a different device fails to be
+ * resumed.
+ *
+ * @platform darwin
+ */
+ on(event: 'continue-activity-error', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * A string with the error's localized description.
+ */
+ error: string) => void): this;
+ once(event: 'continue-activity-error', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * A string with the error's localized description.
+ */
+ error: string) => void): this;
+ addListener(event: 'continue-activity-error', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * A string with the error's localized description.
+ */
+ error: string) => void): this;
+ removeListener(event: 'continue-activity-error', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * A string with the error's localized description.
+ */
+ error: string) => void): this;
+ /**
+ * Emitted when the application becomes active. This differs from the `activate`
+ * event in that `did-become-active` is emitted every time the app becomes active,
+ * not only when Dock icon is clicked or application is re-launched. It is also
+ * emitted when a user switches to the app via the macOS App Switcher.
+ *
+ * @platform darwin
+ */
+ on(event: 'did-become-active', listener: (event: Event) => void): this;
+ once(event: 'did-become-active', listener: (event: Event) => void): this;
+ addListener(event: 'did-become-active', listener: (event: Event) => void): this;
+ removeListener(event: 'did-become-active', listener: (event: Event) => void): this;
+ /**
+ * Emitted when the app is no longer active and doesn’t have focus. This can be
+ * triggered, for example, by clicking on another application or by using the macOS
+ * App Switcher to switch to another application.
+ *
+ * @platform darwin
+ */
+ on(event: 'did-resign-active', listener: (event: Event) => void): this;
+ once(event: 'did-resign-active', listener: (event: Event) => void): this;
+ addListener(event: 'did-resign-active', listener: (event: Event) => void): this;
+ removeListener(event: 'did-resign-active', listener: (event: Event) => void): this;
+ /**
+ * Emitted whenever there is a GPU info update.
+ */
+ on(event: 'gpu-info-update', listener: Function): this;
+ once(event: 'gpu-info-update', listener: Function): this;
+ addListener(event: 'gpu-info-update', listener: Function): this;
+ removeListener(event: 'gpu-info-update', listener: Function): this;
+ /**
+ * Emitted when the GPU process crashes or is killed.
+ *
+ * **Deprecated:** This event is superceded by the `child-process-gone` event which
+ * contains more information about why the child process disappeared. It isn't
+ * always because it crashed. The `killed` boolean can be replaced by checking
+ * `reason === 'killed'` when you switch to that event.
+ *
+ * @deprecated
+ */
+ on(event: 'gpu-process-crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ once(event: 'gpu-process-crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ addListener(event: 'gpu-process-crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ removeListener(event: 'gpu-process-crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ /**
+ * Emitted when `webContents` wants to do basic auth.
+ *
+ * The default behavior is to cancel all authentications. To override this you
+ * should prevent the default behavior with `event.preventDefault()` and call
+ * `callback(username, password)` with the credentials.
+ *
+ * If `callback` is called without a username or password, the authentication
+ * request will be cancelled and the authentication error will be returned to the
+ * page.
+ */
+ on(event: 'login', listener: (event: Event,
+ webContents: WebContents,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ once(event: 'login', listener: (event: Event,
+ webContents: WebContents,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ addListener(event: 'login', listener: (event: Event,
+ webContents: WebContents,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ removeListener(event: 'login', listener: (event: Event,
+ webContents: WebContents,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ /**
+ * Emitted when the user clicks the native macOS new tab button. The new tab button
+ * is only visible if the current `BrowserWindow` has a `tabbingIdentifier`
+ *
+ * @platform darwin
+ */
+ on(event: 'new-window-for-tab', listener: (event: Event) => void): this;
+ once(event: 'new-window-for-tab', listener: (event: Event) => void): this;
+ addListener(event: 'new-window-for-tab', listener: (event: Event) => void): this;
+ removeListener(event: 'new-window-for-tab', listener: (event: Event) => void): this;
+ /**
+ * Emitted when the user wants to open a file with the application. The `open-file`
+ * event is usually emitted when the application is already open and the OS wants
+ * to reuse the application to open the file. `open-file` is also emitted when a
+ * file is dropped onto the dock and the application is not yet running. Make sure
+ * to listen for the `open-file` event very early in your application startup to
+ * handle this case (even before the `ready` event is emitted).
+ *
+ * You should call `event.preventDefault()` if you want to handle this event.
+ *
+ * On Windows, you have to parse `process.argv` (in the main process) to get the
+ * filepath.
+ *
+ * @platform darwin
+ */
+ on(event: 'open-file', listener: (event: Event,
+ path: string) => void): this;
+ once(event: 'open-file', listener: (event: Event,
+ path: string) => void): this;
+ addListener(event: 'open-file', listener: (event: Event,
+ path: string) => void): this;
+ removeListener(event: 'open-file', listener: (event: Event,
+ path: string) => void): this;
+ /**
+ * Emitted when the user wants to open a URL with the application. Your
+ * application's `Info.plist` file must define the URL scheme within the
+ * `CFBundleURLTypes` key, and set `NSPrincipalClass` to `AtomApplication`.
+ *
+ * As with the `open-file` event, be sure to register a listener for the `open-url`
+ * event early in your application startup to detect if the application is being
+ * opened to handle a URL. If you register the listener in response to a `ready`
+ * event, you'll miss URLs that trigger the launch of your application.
+ *
+ * @platform darwin
+ */
+ on(event: 'open-url', listener: (event: Event,
+ url: string) => void): this;
+ once(event: 'open-url', listener: (event: Event,
+ url: string) => void): this;
+ addListener(event: 'open-url', listener: (event: Event,
+ url: string) => void): this;
+ removeListener(event: 'open-url', listener: (event: Event,
+ url: string) => void): this;
+ /**
+ * Emitted when the application is quitting.
+ *
+ * **Note:** On Windows, this event will not be emitted if the app is closed due to
+ * a shutdown/restart of the system or a user logout.
+ */
+ on(event: 'quit', listener: (event: Event,
+ exitCode: number) => void): this;
+ once(event: 'quit', listener: (event: Event,
+ exitCode: number) => void): this;
+ addListener(event: 'quit', listener: (event: Event,
+ exitCode: number) => void): this;
+ removeListener(event: 'quit', listener: (event: Event,
+ exitCode: number) => void): this;
+ /**
+ * Emitted once, when Electron has finished initializing. On macOS, `launchInfo`
+ * holds the `userInfo` of the `NSUserNotification` or information from
+ * `UNNotificationResponse` that was used to open the application, if it was
+ * launched from Notification Center. You can also call `app.isReady()` to check if
+ * this event has already fired and `app.whenReady()` to get a Promise that is
+ * fulfilled when Electron is initialized.
+ */
+ on(event: 'ready', listener: (event: Event,
+ /**
+ * @platform darwin
+ */
+ launchInfo: (Record<string, any>) | (NotificationResponse)) => void): this;
+ once(event: 'ready', listener: (event: Event,
+ /**
+ * @platform darwin
+ */
+ launchInfo: (Record<string, any>) | (NotificationResponse)) => void): this;
+ addListener(event: 'ready', listener: (event: Event,
+ /**
+ * @platform darwin
+ */
+ launchInfo: (Record<string, any>) | (NotificationResponse)) => void): this;
+ removeListener(event: 'ready', listener: (event: Event,
+ /**
+ * @platform darwin
+ */
+ launchInfo: (Record<string, any>) | (NotificationResponse)) => void): this;
+ /**
+ * Emitted when the renderer process unexpectedly disappears. This is normally
+ * because it was crashed or killed.
+ */
+ on(event: 'render-process-gone', listener: (event: Event,
+ webContents: WebContents,
+ details: RenderProcessGoneDetails) => void): this;
+ once(event: 'render-process-gone', listener: (event: Event,
+ webContents: WebContents,
+ details: RenderProcessGoneDetails) => void): this;
+ addListener(event: 'render-process-gone', listener: (event: Event,
+ webContents: WebContents,
+ details: RenderProcessGoneDetails) => void): this;
+ removeListener(event: 'render-process-gone', listener: (event: Event,
+ webContents: WebContents,
+ details: RenderProcessGoneDetails) => void): this;
+ /**
+ * Emitted when the renderer process of `webContents` crashes or is killed.
+ *
+ * **Deprecated:** This event is superceded by the `render-process-gone` event
+ * which contains more information about why the render process disappeared. It
+ * isn't always because it crashed. The `killed` boolean can be replaced by
+ * checking `reason === 'killed'` when you switch to that event.
+ *
+ * @deprecated
+ */
+ on(event: 'renderer-process-crashed', listener: (event: Event,
+ webContents: WebContents,
+ killed: boolean) => void): this;
+ once(event: 'renderer-process-crashed', listener: (event: Event,
+ webContents: WebContents,
+ killed: boolean) => void): this;
+ addListener(event: 'renderer-process-crashed', listener: (event: Event,
+ webContents: WebContents,
+ killed: boolean) => void): this;
+ removeListener(event: 'renderer-process-crashed', listener: (event: Event,
+ webContents: WebContents,
+ killed: boolean) => void): this;
+ /**
+ * This event will be emitted inside the primary instance of your application when
+ * a second instance has been executed and calls `app.requestSingleInstanceLock()`.
+ *
+ * `argv` is an Array of the second instance's command line arguments, and
+ * `workingDirectory` is its current working directory. Usually applications
+ * respond to this by making their primary window focused and non-minimized.
+ *
+ * **Note:** `argv` will not be exactly the same list of arguments as those passed
+ * to the second instance. The order might change and additional arguments might be
+ * appended. If you need to maintain the exact same arguments, it's advised to use
+ * `additionalData` instead.
+ *
+ * **Note:** If the second instance is started by a different user than the first,
+ * the `argv` array will not include the arguments.
+ *
+ * This event is guaranteed to be emitted after the `ready` event of `app` gets
+ * emitted.
+ *
+ * **Note:** Extra command line arguments might be added by Chromium, such as
+ * `--original-process-start-time`.
+ */
+ on(event: 'second-instance', listener: (event: Event,
+ /**
+ * An array of the second instance's command line arguments
+ */
+ argv: string[],
+ /**
+ * The second instance's working directory
+ */
+ workingDirectory: string,
+ /**
+ * A JSON object of additional data passed from the second instance
+ */
+ additionalData: unknown) => void): this;
+ once(event: 'second-instance', listener: (event: Event,
+ /**
+ * An array of the second instance's command line arguments
+ */
+ argv: string[],
+ /**
+ * The second instance's working directory
+ */
+ workingDirectory: string,
+ /**
+ * A JSON object of additional data passed from the second instance
+ */
+ additionalData: unknown) => void): this;
+ addListener(event: 'second-instance', listener: (event: Event,
+ /**
+ * An array of the second instance's command line arguments
+ */
+ argv: string[],
+ /**
+ * The second instance's working directory
+ */
+ workingDirectory: string,
+ /**
+ * A JSON object of additional data passed from the second instance
+ */
+ additionalData: unknown) => void): this;
+ removeListener(event: 'second-instance', listener: (event: Event,
+ /**
+ * An array of the second instance's command line arguments
+ */
+ argv: string[],
+ /**
+ * The second instance's working directory
+ */
+ workingDirectory: string,
+ /**
+ * A JSON object of additional data passed from the second instance
+ */
+ additionalData: unknown) => void): this;
+ /**
+ * Emitted when a client certificate is requested.
+ *
+ * The `url` corresponds to the navigation entry requesting the client certificate
+ * and `callback` can be called with an entry filtered from the list. Using
+ * `event.preventDefault()` prevents the application from using the first
+ * certificate from the store.
+ */
+ on(event: 'select-client-certificate', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate?: Certificate) => void) => void): this;
+ once(event: 'select-client-certificate', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate?: Certificate) => void) => void): this;
+ addListener(event: 'select-client-certificate', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate?: Certificate) => void) => void): this;
+ removeListener(event: 'select-client-certificate', listener: (event: Event,
+ webContents: WebContents,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate?: Certificate) => void) => void): this;
+ /**
+ * Emitted when Electron has created a new `session`.
+ */
+ on(event: 'session-created', listener: (session: Session) => void): this;
+ once(event: 'session-created', listener: (session: Session) => void): this;
+ addListener(event: 'session-created', listener: (session: Session) => void): this;
+ removeListener(event: 'session-created', listener: (session: Session) => void): this;
+ /**
+ * Emitted when Handoff is about to be resumed on another device. If you need to
+ * update the state to be transferred, you should call `event.preventDefault()`
+ * immediately, construct a new `userInfo` dictionary and call
+ * `app.updateCurrentActivity()` in a timely manner. Otherwise, the operation will
+ * fail and `continue-activity-error` will be called.
+ *
+ * @platform darwin
+ */
+ on(event: 'update-activity-state', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ once(event: 'update-activity-state', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ addListener(event: 'update-activity-state', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ removeListener(event: 'update-activity-state', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string,
+ /**
+ * Contains app-specific state stored by the activity.
+ */
+ userInfo: unknown) => void): this;
+ /**
+ * Emitted when a new webContents is created.
+ */
+ on(event: 'web-contents-created', listener: (event: Event,
+ webContents: WebContents) => void): this;
+ once(event: 'web-contents-created', listener: (event: Event,
+ webContents: WebContents) => void): this;
+ addListener(event: 'web-contents-created', listener: (event: Event,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'web-contents-created', listener: (event: Event,
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted during Handoff before an activity from a different device wants to be
+ * resumed. You should call `event.preventDefault()` if you want to handle this
+ * event.
+ *
+ * @platform darwin
+ */
+ on(event: 'will-continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string) => void): this;
+ once(event: 'will-continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string) => void): this;
+ addListener(event: 'will-continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string) => void): this;
+ removeListener(event: 'will-continue-activity', listener: (event: Event,
+ /**
+ * A string identifying the activity. Maps to `NSUserActivity.activityType`.
+ */
+ type: string) => void): this;
+ /**
+ * Emitted when the application has finished basic startup. On Windows and Linux,
+ * the `will-finish-launching` event is the same as the `ready` event; on macOS,
+ * this event represents the `applicationWillFinishLaunching` notification of
+ * `NSApplication`.
+ *
+ * In most cases, you should do everything in the `ready` event handler.
+ */
+ on(event: 'will-finish-launching', listener: Function): this;
+ once(event: 'will-finish-launching', listener: Function): this;
+ addListener(event: 'will-finish-launching', listener: Function): this;
+ removeListener(event: 'will-finish-launching', listener: Function): this;
+ /**
+ * Emitted when all windows have been closed and the application will quit. Calling
+ * `event.preventDefault()` will prevent the default behavior, which is terminating
+ * the application.
+ *
+ * See the description of the `window-all-closed` event for the differences between
+ * the `will-quit` and `window-all-closed` events.
+ *
+ * **Note:** On Windows, this event will not be emitted if the app is closed due to
+ * a shutdown/restart of the system or a user logout.
+ */
+ on(event: 'will-quit', listener: (event: Event) => void): this;
+ once(event: 'will-quit', listener: (event: Event) => void): this;
+ addListener(event: 'will-quit', listener: (event: Event) => void): this;
+ removeListener(event: 'will-quit', listener: (event: Event) => void): this;
+ /**
+ * Emitted when all windows have been closed.
+ *
+ * If you do not subscribe to this event and all windows are closed, the default
+ * behavior is to quit the app; however, if you subscribe, you control whether the
+ * app quits or not. If the user pressed `Cmd + Q`, or the developer called
+ * `app.quit()`, Electron will first try to close all the windows and then emit the
+ * `will-quit` event, and in this case the `window-all-closed` event would not be
+ * emitted.
+ */
+ on(event: 'window-all-closed', listener: Function): this;
+ once(event: 'window-all-closed', listener: Function): this;
+ addListener(event: 'window-all-closed', listener: Function): this;
+ removeListener(event: 'window-all-closed', listener: Function): this;
+ /**
+ * Adds `path` to the recent documents list.
+ *
+ * This list is managed by the OS. On Windows, you can visit the list from the task
+ * bar, and on macOS, you can visit it from dock menu.
+ *
+ * @platform darwin,win32
+ */
+ addRecentDocument(path: string): void;
+ /**
+ * Clears the recent documents list.
+ *
+ * @platform darwin,win32
+ */
+ clearRecentDocuments(): void;
+ /**
+ * Configures host resolution (DNS and DNS-over-HTTPS). By default, the following
+ * resolvers will be used, in order:
+ *
+ * * DNS-over-HTTPS, if the DNS provider supports it, then
+ * * the built-in resolver (enabled on macOS only by default), then
+ * * the system's resolver (e.g. `getaddrinfo`).
+ *
+ * This can be configured to either restrict usage of non-encrypted DNS
+ * (`secureDnsMode: "secure"`), or disable DNS-over-HTTPS (`secureDnsMode: "off"`).
+ * It is also possible to enable or disable the built-in resolver.
+ *
+ * To disable insecure DNS, you can specify a `secureDnsMode` of `"secure"`. If you
+ * do so, you should make sure to provide a list of DNS-over-HTTPS servers to use,
+ * in case the user's DNS configuration does not include a provider that supports
+ * DoH.
+ *
+ * This API must be called after the `ready` event is emitted.
+ */
+ configureHostResolver(options: ConfigureHostResolverOptions): void;
+ /**
+ * By default, Chromium disables 3D APIs (e.g. WebGL) until restart on a per domain
+ * basis if the GPU processes crashes too frequently. This function disables that
+ * behavior.
+ *
+ * This method can only be called before app is ready.
+ */
+ disableDomainBlockingFor3DAPIs(): void;
+ /**
+ * Disables hardware acceleration for current app.
+ *
+ * This method can only be called before app is ready.
+ */
+ disableHardwareAcceleration(): void;
+ /**
+ * Enables full sandbox mode on the app. This means that all renderers will be
+ * launched sandboxed, regardless of the value of the `sandbox` flag in
+ * `WebPreferences`.
+ *
+ * This method can only be called before app is ready.
+ */
+ enableSandbox(): void;
+ /**
+ * Exits immediately with `exitCode`. `exitCode` defaults to 0.
+ *
+ * All windows will be closed immediately without asking the user, and the
+ * `before-quit` and `will-quit` events will not be emitted.
+ */
+ exit(exitCode?: number): void;
+ /**
+ * On Linux, focuses on the first visible window. On macOS, makes the application
+ * the active app. On Windows, focuses on the application's first window.
+ *
+ * You should seek to use the `steal` option as sparingly as possible.
+ */
+ focus(options?: FocusOptions): void;
+ /**
+ * Resolve with an object containing the following:
+ *
+ * * `icon` NativeImage - the display icon of the app handling the protocol.
+ * * `path` string - installation path of the app handling the protocol.
+ * * `name` string - display name of the app handling the protocol.
+ *
+ * This method returns a promise that contains the application name, icon and path
+ * of the default handler for the protocol (aka URI scheme) of a URL.
+ *
+ * @platform darwin,win32
+ */
+ getApplicationInfoForProtocol(url: string): Promise<Electron.ApplicationInfoForProtocolReturnValue>;
+ /**
+ * Name of the application handling the protocol, or an empty string if there is no
+ * handler. For instance, if Electron is the default handler of the URL, this could
+ * be `Electron` on Windows and Mac. However, don't rely on the precise format
+ * which is not guaranteed to remain unchanged. Expect a different format on Linux,
+ * possibly with a `.desktop` suffix.
+ *
+ * This method returns the application name of the default handler for the protocol
+ * (aka URI scheme) of a URL.
+ */
+ getApplicationNameForProtocol(url: string): string;
+ /**
+ * Array of `ProcessMetric` objects that correspond to memory and CPU usage
+ * statistics of all the processes associated with the app.
+ */
+ getAppMetrics(): ProcessMetric[];
+ /**
+ * The current application directory.
+ */
+ getAppPath(): string;
+ /**
+ * The current value displayed in the counter badge.
+ *
+ * @platform linux,darwin
+ */
+ getBadgeCount(): number;
+ /**
+ * The type of the currently running activity.
+ *
+ * @platform darwin
+ */
+ getCurrentActivityType(): string;
+ /**
+ * fulfilled with the app's icon, which is a NativeImage.
+ *
+ * Fetches a path's associated icon.
+ *
+ * On _Windows_, there a 2 kinds of icons:
+ *
+ * * Icons associated with certain file extensions, like `.mp3`, `.png`, etc.
+ * * Icons inside the file itself, like `.exe`, `.dll`, `.ico`.
+ *
+ * On _Linux_ and _macOS_, icons depend on the application associated with file
+ * mime type.
+ */
+ getFileIcon(path: string, options?: FileIconOptions): Promise<Electron.NativeImage>;
+ /**
+ * The Graphics Feature Status from `chrome://gpu/`.
+ *
+ * **Note:** This information is only usable after the `gpu-info-update` event is
+ * emitted.
+ */
+ getGPUFeatureStatus(): GPUFeatureStatus;
+ /**
+ * For `infoType` equal to `complete`: Promise is fulfilled with `Object`
+ * containing all the GPU Information as in chromium's GPUInfo object. This
+ * includes the version and driver information that's shown on `chrome://gpu` page.
+ *
+ * For `infoType` equal to `basic`: Promise is fulfilled with `Object` containing
+ * fewer attributes than when requested with `complete`. Here's an example of basic
+ * response:
+ *
+ * Using `basic` should be preferred if only basic information like `vendorId` or
+ * `deviceId` is needed.
+ */
+ getGPUInfo(infoType: 'basic' | 'complete'): Promise<unknown>;
+ /**
+ * * `minItems` Integer - The minimum number of items that will be shown in the
+ * Jump List (for a more detailed description of this value see the MSDN docs).
+ * * `removedItems` JumpListItem[] - Array of `JumpListItem` objects that
+ * correspond to items that the user has explicitly removed from custom categories
+ * in the Jump List. These items must not be re-added to the Jump List in the
+ * **next** call to `app.setJumpList()`, Windows will not display any custom
+ * category that contains any of the removed items.
+ *
+ * @platform win32
+ */
+ getJumpListSettings(): JumpListSettings;
+ /**
+ * The current application locale, fetched using Chromium's `l10n_util` library.
+ * Possible return values are documented here.
+ *
+ * To set the locale, you'll want to use a command line switch at app startup,
+ * which may be found here.
+ *
+ * **Note:** When distributing your packaged app, you have to also ship the
+ * `locales` folder.
+ *
+ * **Note:** This API must be called after the `ready` event is emitted.
+ *
+ * **Note:** To see example return values of this API compared to other locale and
+ * language APIs, see `app.getPreferredSystemLanguages()`.
+ */
+ getLocale(): string;
+ /**
+ * User operating system's locale two-letter ISO 3166 country code. The value is
+ * taken from native OS APIs.
+ *
+ * **Note:** When unable to detect locale country code, it returns empty string.
+ */
+ getLocaleCountryCode(): string;
+ /**
+ * If you provided `path` and `args` options to `app.setLoginItemSettings`, then
+ * you need to pass the same arguments here for `openAtLogin` to be set correctly.
+ *
+ *
+ * * `openAtLogin` boolean - `true` if the app is set to open at login.
+ * * `openAsHidden` boolean _macOS_ - `true` if the app is set to open as hidden at
+ * login. This setting is not available on MAS builds.
+ * * `wasOpenedAtLogin` boolean _macOS_ - `true` if the app was opened at login
+ * automatically. This setting is not available on MAS builds.
+ * * `wasOpenedAsHidden` boolean _macOS_ - `true` if the app was opened as a hidden
+ * login item. This indicates that the app should not open any windows at startup.
+ * This setting is not available on MAS builds.
+ * * `restoreState` boolean _macOS_ - `true` if the app was opened as a login item
+ * that should restore the state from the previous session. This indicates that the
+ * app should restore the windows that were open the last time the app was closed.
+ * This setting is not available on MAS builds.
+ * * `executableWillLaunchAtLogin` boolean _Windows_ - `true` if app is set to open
+ * at login and its run key is not deactivated. This differs from `openAtLogin` as
+ * it ignores the `args` option, this property will be true if the given executable
+ * would be launched at login with **any** arguments.
+ * * `launchItems` Object[] _Windows_
+ * * `name` string _Windows_ - name value of a registry entry.
+ * * `path` string _Windows_ - The executable to an app that corresponds to a
+ * registry entry.
+ * * `args` string[] _Windows_ - the command-line arguments to pass to the
+ * executable.
+ * * `scope` string _Windows_ - one of `user` or `machine`. Indicates whether the
+ * registry entry is under `HKEY_CURRENT USER` or `HKEY_LOCAL_MACHINE`.
+ * * `enabled` boolean _Windows_ - `true` if the app registry key is startup
+ * approved and therefore shows as `enabled` in Task Manager and Windows settings.
+ *
+ * @platform darwin,win32
+ */
+ getLoginItemSettings(options?: LoginItemSettingsOptions): LoginItemSettings;
+ /**
+ * The current application's name, which is the name in the application's
+ * `package.json` file.
+ *
+ * Usually the `name` field of `package.json` is a short lowercase name, according
+ * to the npm modules spec. You should usually also specify a `productName` field,
+ * which is your application's full capitalized name, and which will be preferred
+ * over `name` by Electron.
+ */
+ getName(): string;
+ /**
+ * A path to a special directory or file associated with `name`. On failure, an
+ * `Error` is thrown.
+ *
+ * If `app.getPath('logs')` is called without called `app.setAppLogsPath()` being
+ * called first, a default log directory will be created equivalent to calling
+ * `app.setAppLogsPath()` without a `path` parameter.
+ */
+ getPath(name: 'home' | 'appData' | 'userData' | 'sessionData' | 'temp' | 'exe' | 'module' | 'desktop' | 'documents' | 'downloads' | 'music' | 'pictures' | 'videos' | 'recent' | 'logs' | 'crashDumps'): string;
+ /**
+ * The user's preferred system languages from most preferred to least preferred,
+ * including the country codes if applicable. A user can modify and add to this
+ * list on Windows or macOS through the Language and Region settings.
+ *
+ * The API uses `GlobalizationPreferences` (with a fallback to
+ * `GetSystemPreferredUILanguages`) on Windows, `\[NSLocale preferredLanguages\]`
+ * on macOS, and `g_get_language_names` on Linux.
+ *
+ * This API can be used for purposes such as deciding what language to present the
+ * application in.
+ *
+ * Here are some examples of return values of the various language and locale APIs
+ * with different configurations:
+ *
+ * On Windows, given application locale is German, the regional format is Finnish
+ * (Finland), and the preferred system languages from most to least preferred are
+ * French (Canada), English (US), Simplified Chinese (China), Finnish, and Spanish
+ * (Latin America):
+ *
+ * On macOS, given the application locale is German, the region is Finland, and the
+ * preferred system languages from most to least preferred are French (Canada),
+ * English (US), Simplified Chinese, and Spanish (Latin America):
+ *
+ * Both the available languages and regions and the possible return values differ
+ * between the two operating systems.
+ *
+ * As can be seen with the example above, on Windows, it is possible that a
+ * preferred system language has no country code, and that one of the preferred
+ * system languages corresponds with the language used for the regional format. On
+ * macOS, the region serves more as a default country code: the user doesn't need
+ * to have Finnish as a preferred language to use Finland as the region,and the
+ * country code `FI` is used as the country code for preferred system languages
+ * that do not have associated countries in the language name.
+ */
+ getPreferredSystemLanguages(): string[];
+ /**
+ * The current system locale. On Windows and Linux, it is fetched using Chromium's
+ * `i18n` library. On macOS, `[NSLocale currentLocale]` is used instead. To get the
+ * user's current system language, which is not always the same as the locale, it
+ * is better to use `app.getPreferredSystemLanguages()`.
+ *
+ * Different operating systems also use the regional data differently:
+ *
+ * * Windows 11 uses the regional format for numbers, dates, and times.
+ * * macOS Monterey uses the region for formatting numbers, dates, times, and for
+ * selecting the currency symbol to use.
+ *
+ * Therefore, this API can be used for purposes such as choosing a format for
+ * rendering dates and times in a calendar app, especially when the developer wants
+ * the format to be consistent with the OS.
+ *
+ * **Note:** This API must be called after the `ready` event is emitted.
+ *
+ * **Note:** To see example return values of this API compared to other locale and
+ * language APIs, see `app.getPreferredSystemLanguages()`.
+ */
+ getSystemLocale(): string;
+ /**
+ * The version of the loaded application. If no version is found in the
+ * application's `package.json` file, the version of the current bundle or
+ * executable is returned.
+ */
+ getVersion(): string;
+ /**
+ * This method returns whether or not this instance of your app is currently
+ * holding the single instance lock. You can request the lock with
+ * `app.requestSingleInstanceLock()` and release with
+ * `app.releaseSingleInstanceLock()`
+ */
+ hasSingleInstanceLock(): boolean;
+ /**
+ * Hides all application windows without minimizing them.
+ *
+ * @platform darwin
+ */
+ hide(): void;
+ /**
+ * Imports the certificate in pkcs12 format into the platform certificate store.
+ * `callback` is called with the `result` of import operation, a value of `0`
+ * indicates success while any other value indicates failure according to Chromium
+ * net_error_list.
+ *
+ * @platform linux
+ */
+ importCertificate(options: ImportCertificateOptions, callback: (result: number) => void): void;
+ /**
+ * Invalidates the current Handoff user activity.
+ *
+ * @platform darwin
+ */
+ invalidateCurrentActivity(): void;
+ /**
+ * `true` if Chrome's accessibility support is enabled, `false` otherwise. This API
+ * will return `true` if the use of assistive technologies, such as screen readers,
+ * has been detected. See
+ * https://www.chromium.org/developers/design-documents/accessibility for more
+ * details.
+ *
+ * @platform darwin,win32
+ */
+ isAccessibilitySupportEnabled(): boolean;
+ /**
+ * Whether the current executable is the default handler for a protocol (aka URI
+ * scheme).
+ *
+ * **Note:** On macOS, you can use this method to check if the app has been
+ * registered as the default protocol handler for a protocol. You can also verify
+ * this by checking `~/Library/Preferences/com.apple.LaunchServices.plist` on the
+ * macOS machine. Please refer to Apple's documentation for details.
+ *
+ * The API uses the Windows Registry and `LSCopyDefaultHandlerForURLScheme`
+ * internally.
+ */
+ isDefaultProtocolClient(protocol: string, path?: string, args?: string[]): boolean;
+ /**
+ * whether or not the current OS version allows for native emoji pickers.
+ */
+ isEmojiPanelSupported(): boolean;
+ /**
+ * `true` if the application—including all of its windows—is hidden (e.g. with
+ * `Command-H`), `false` otherwise.
+ *
+ * @platform darwin
+ */
+ isHidden(): boolean;
+ /**
+ * Whether the application is currently running from the systems Application
+ * folder. Use in combination with `app.moveToApplicationsFolder()`
+ *
+ * @platform darwin
+ */
+ isInApplicationsFolder(): boolean;
+ /**
+ * `true` if Electron has finished initializing, `false` otherwise. See also
+ * `app.whenReady()`.
+ */
+ isReady(): boolean;
+ /**
+ * whether `Secure Keyboard Entry` is enabled.
+ *
+ * By default this API will return `false`.
+ *
+ * @platform darwin
+ */
+ isSecureKeyboardEntryEnabled(): boolean;
+ /**
+ * Whether the current desktop environment is Unity launcher.
+ *
+ * @platform linux
+ */
+ isUnityRunning(): boolean;
+ /**
+ * Whether the move was successful. Please note that if the move is successful,
+ * your application will quit and relaunch.
+ *
+ * No confirmation dialog will be presented by default. If you wish to allow the
+ * user to confirm the operation, you may do so using the `dialog` API.
+ *
+ * **NOTE:** This method throws errors if anything other than the user causes the
+ * move to fail. For instance if the user cancels the authorization dialog, this
+ * method returns false. If we fail to perform the copy, then this method will
+ * throw an error. The message in the error should be informative and tell you
+ * exactly what went wrong.
+ *
+ * By default, if an app of the same name as the one being moved exists in the
+ * Applications directory and is _not_ running, the existing app will be trashed
+ * and the active app moved into its place. If it _is_ running, the preexisting
+ * running app will assume focus and the previously active app will quit itself.
+ * This behavior can be changed by providing the optional conflict handler, where
+ * the boolean returned by the handler determines whether or not the move conflict
+ * is resolved with default behavior. i.e. returning `false` will ensure no
+ * further action is taken, returning `true` will result in the default behavior
+ * and the method continuing.
+ *
+ * For example:
+ *
+ * Would mean that if an app already exists in the user directory, if the user
+ * chooses to 'Continue Move' then the function would continue with its default
+ * behavior and the existing app will be trashed and the active app moved into its
+ * place.
+ *
+ * @platform darwin
+ */
+ moveToApplicationsFolder(options?: MoveToApplicationsFolderOptions): boolean;
+ /**
+ * Try to close all windows. The `before-quit` event will be emitted first. If all
+ * windows are successfully closed, the `will-quit` event will be emitted and by
+ * default the application will terminate.
+ *
+ * This method guarantees that all `beforeunload` and `unload` event handlers are
+ * correctly executed. It is possible that a window cancels the quitting by
+ * returning `false` in the `beforeunload` event handler.
+ */
+ quit(): void;
+ /**
+ * Relaunches the app when current instance exits.
+ *
+ * By default, the new instance will use the same working directory and command
+ * line arguments with current instance. When `args` is specified, the `args` will
+ * be passed as command line arguments instead. When `execPath` is specified, the
+ * `execPath` will be executed for relaunch instead of current app.
+ *
+ * Note that this method does not quit the app when executed, you have to call
+ * `app.quit` or `app.exit` after calling `app.relaunch` to make the app restart.
+ *
+ * When `app.relaunch` is called for multiple times, multiple instances will be
+ * started after current instance exited.
+ *
+ * An example of restarting current instance immediately and adding a new command
+ * line argument to the new instance:
+ */
+ relaunch(options?: RelaunchOptions): void;
+ /**
+ * Releases all locks that were created by `requestSingleInstanceLock`. This will
+ * allow multiple instances of the application to once again run side by side.
+ */
+ releaseSingleInstanceLock(): void;
+ /**
+ * Whether the call succeeded.
+ *
+ * This method checks if the current executable as the default handler for a
+ * protocol (aka URI scheme). If so, it will remove the app as the default handler.
+ *
+ * @platform darwin,win32
+ */
+ removeAsDefaultProtocolClient(protocol: string, path?: string, args?: string[]): boolean;
+ /**
+ * The return value of this method indicates whether or not this instance of your
+ * application successfully obtained the lock. If it failed to obtain the lock,
+ * you can assume that another instance of your application is already running with
+ * the lock and exit immediately.
+ *
+ * I.e. This method returns `true` if your process is the primary instance of your
+ * application and your app should continue loading. It returns `false` if your
+ * process should immediately quit as it has sent its parameters to another
+ * instance that has already acquired the lock.
+ *
+ * On macOS, the system enforces single instance automatically when users try to
+ * open a second instance of your app in Finder, and the `open-file` and `open-url`
+ * events will be emitted for that. However when users start your app in command
+ * line, the system's single instance mechanism will be bypassed, and you have to
+ * use this method to ensure single instance.
+ *
+ * An example of activating the window of primary instance when a second instance
+ * starts:
+ */
+ requestSingleInstanceLock(additionalData?: Record<any, any>): boolean;
+ /**
+ * Marks the current Handoff user activity as inactive without invalidating it.
+ *
+ * @platform darwin
+ */
+ resignCurrentActivity(): void;
+ /**
+ * Set the about panel options. This will override the values defined in the app's
+ * `.plist` file on macOS. See the Apple docs for more details. On Linux, values
+ * must be set in order to be shown; there are no defaults.
+ *
+ * If you do not set `credits` but still wish to surface them in your app, AppKit
+ * will look for a file named "Credits.html", "Credits.rtf", and "Credits.rtfd", in
+ * that order, in the bundle returned by the NSBundle class method main. The first
+ * file found is used, and if none is found, the info area is left blank. See Apple
+ * documentation for more information.
+ */
+ setAboutPanelOptions(options: AboutPanelOptionsOptions): void;
+ /**
+ * Manually enables Chrome's accessibility support, allowing to expose
+ * accessibility switch to users in application settings. See Chromium's
+ * accessibility docs for more details. Disabled by default.
+ *
+ * This API must be called after the `ready` event is emitted.
+ *
+ * **Note:** Rendering accessibility tree can significantly affect the performance
+ * of your app. It should not be enabled by default.
+ *
+ * @platform darwin,win32
+ */
+ setAccessibilitySupportEnabled(enabled: boolean): void;
+ /**
+ * Sets the activation policy for a given app.
+ *
+ * Activation policy types:
+ *
+ * * 'regular' - The application is an ordinary app that appears in the Dock and
+ * may have a user interface.
+ * * 'accessory' - The application doesn’t appear in the Dock and doesn’t have a
+ * menu bar, but it may be activated programmatically or by clicking on one of its
+ * windows.
+ * * 'prohibited' - The application doesn’t appear in the Dock and may not create
+ * windows or be activated.
+ *
+ * @platform darwin
+ */
+ setActivationPolicy(policy: 'regular' | 'accessory' | 'prohibited'): void;
+ /**
+ * Sets or creates a directory your app's logs which can then be manipulated with
+ * `app.getPath()` or `app.setPath(pathName, newPath)`.
+ *
+ * Calling `app.setAppLogsPath()` without a `path` parameter will result in this
+ * directory being set to `~/Library/Logs/YourAppName` on _macOS_, and inside the
+ * `userData` directory on _Linux_ and _Windows_.
+ */
+ setAppLogsPath(path?: string): void;
+ /**
+ * Changes the Application User Model ID to `id`.
+ *
+ * @platform win32
+ */
+ setAppUserModelId(id: string): void;
+ /**
+ * Whether the call succeeded.
+ *
+ * Sets the current executable as the default handler for a protocol (aka URI
+ * scheme). It allows you to integrate your app deeper into the operating system.
+ * Once registered, all links with `your-protocol://` will be opened with the
+ * current executable. The whole link, including protocol, will be passed to your
+ * application as a parameter.
+ *
+ * **Note:** On macOS, you can only register protocols that have been added to your
+ * app's `info.plist`, which cannot be modified at runtime. However, you can change
+ * the file during build time via Electron Forge, Electron Packager, or by editing
+ * `info.plist` with a text editor. Please refer to Apple's documentation for
+ * details.
+ *
+ * **Note:** In a Windows Store environment (when packaged as an `appx`) this API
+ * will return `true` for all calls but the registry key it sets won't be
+ * accessible by other applications. In order to register your Windows Store
+ * application as a default protocol handler you must declare the protocol in your
+ * manifest.
+ *
+ * The API uses the Windows Registry and `LSSetDefaultHandlerForURLScheme`
+ * internally.
+ */
+ setAsDefaultProtocolClient(protocol: string, path?: string, args?: string[]): boolean;
+ /**
+ * Whether the call succeeded.
+ *
+ * Sets the counter badge for current app. Setting the count to `0` will hide the
+ * badge.
+ *
+ * On macOS, it shows on the dock icon. On Linux, it only works for Unity launcher.
+ *
+ * **Note:** Unity launcher requires a `.desktop` file to work. For more
+ * information, please read the Unity integration documentation.
+ *
+ * **Note:** On macOS, you need to ensure that your application has the permission
+ * to display notifications for this method to work.
+ *
+ * @platform linux,darwin
+ */
+ setBadgeCount(count?: number): boolean;
+ /**
+ * Sets or removes a custom Jump List for the application, and returns one of the
+ * following strings:
+ *
+ * * `ok` - Nothing went wrong.
+ * * `error` - One or more errors occurred, enable runtime logging to figure out
+ * the likely cause.
+ * * `invalidSeparatorError` - An attempt was made to add a separator to a custom
+ * category in the Jump List. Separators are only allowed in the standard `Tasks`
+ * category.
+ * * `fileTypeRegistrationError` - An attempt was made to add a file link to the
+ * Jump List for a file type the app isn't registered to handle.
+ * * `customCategoryAccessDeniedError` - Custom categories can't be added to the
+ * Jump List due to user privacy or group policy settings.
+ *
+ * If `categories` is `null` the previously set custom Jump List (if any) will be
+ * replaced by the standard Jump List for the app (managed by Windows).
+ *
+ * **Note:** If a `JumpListCategory` object has neither the `type` nor the `name`
+ * property set then its `type` is assumed to be `tasks`. If the `name` property is
+ * set but the `type` property is omitted then the `type` is assumed to be
+ * `custom`.
+ *
+ * **Note:** Users can remove items from custom categories, and Windows will not
+ * allow a removed item to be added back into a custom category until **after** the
+ * next successful call to `app.setJumpList(categories)`. Any attempt to re-add a
+ * removed item to a custom category earlier than that will result in the entire
+ * custom category being omitted from the Jump List. The list of removed items can
+ * be obtained using `app.getJumpListSettings()`.
+ *
+ * **Note:** The maximum length of a Jump List item's `description` property is 260
+ * characters. Beyond this limit, the item will not be added to the Jump List, nor
+ * will it be displayed.
+ *
+ * Here's a very simple example of creating a custom Jump List:
+ *
+ * @platform win32
+ */
+ setJumpList(categories: (JumpListCategory[]) | (null)): ('ok' | 'error' | 'invalidSeparatorError' | 'fileTypeRegistrationError' | 'customCategoryAccessDeniedError');
+ /**
+ * To work with Electron's `autoUpdater` on Windows, which uses Squirrel, you'll
+ * want to set the launch path to Update.exe, and pass arguments that specify your
+ * application name. For example:
+ *
+ * @platform darwin,win32
+ */
+ setLoginItemSettings(settings: Settings): void;
+ /**
+ * Overrides the current application's name.
+ *
+ * **Note:** This function overrides the name used internally by Electron; it does
+ * not affect the name that the OS uses.
+ */
+ setName(name: string): void;
+ /**
+ * Overrides the `path` to a special directory or file associated with `name`. If
+ * the path specifies a directory that does not exist, an `Error` is thrown. In
+ * that case, the directory should be created with `fs.mkdirSync` or similar.
+ *
+ * You can only override paths of a `name` defined in `app.getPath`.
+ *
+ * By default, web pages' cookies and caches will be stored under the `sessionData`
+ * directory. If you want to change this location, you have to override the
+ * `sessionData` path before the `ready` event of the `app` module is emitted.
+ */
+ setPath(name: string, path: string): void;
+ /**
+ * Set the `Secure Keyboard Entry` is enabled in your application.
+ *
+ * By using this API, important information such as password and other sensitive
+ * information can be prevented from being intercepted by other processes.
+ *
+ * See Apple's documentation for more details.
+ *
+ * **Note:** Enable `Secure Keyboard Entry` only when it is needed and disable it
+ * when it is no longer needed.
+ *
+ * @platform darwin
+ */
+ setSecureKeyboardEntryEnabled(enabled: boolean): void;
+ /**
+ * Creates an `NSUserActivity` and sets it as the current activity. The activity is
+ * eligible for Handoff to another device afterward.
+ *
+ * @platform darwin
+ */
+ setUserActivity(type: string, userInfo: any, webpageURL?: string): void;
+ /**
+ * Adds `tasks` to the Tasks category of the Jump List on Windows.
+ *
+ * `tasks` is an array of `Task` objects.
+ *
+ * Whether the call succeeded.
+ *
+ * **Note:** If you'd like to customize the Jump List even more use
+ * `app.setJumpList(categories)` instead.
+ *
+ * @platform win32
+ */
+ setUserTasks(tasks: Task[]): boolean;
+ /**
+ * Shows application windows after they were hidden. Does not automatically focus
+ * them.
+ *
+ * @platform darwin
+ */
+ show(): void;
+ /**
+ * Show the app's about panel options. These options can be overridden with
+ * `app.setAboutPanelOptions(options)`. This function runs asynchronously.
+ */
+ showAboutPanel(): void;
+ /**
+ * Show the platform's native emoji picker.
+ *
+ * @platform darwin,win32
+ */
+ showEmojiPanel(): void;
+ /**
+ * This function **must** be called once you have finished accessing the security
+ * scoped file. If you do not remember to stop accessing the bookmark, kernel
+ * resources will be leaked and your app will lose its ability to reach outside the
+ * sandbox completely, until your app is restarted.
+ *
+ * Start accessing a security scoped resource. With this method Electron
+ * applications that are packaged for the Mac App Store may reach outside their
+ * sandbox to access files chosen by the user. See Apple's documentation for a
+ * description of how this system works.
+ *
+ * @platform mas
+ */
+ startAccessingSecurityScopedResource(bookmarkData: string): Function;
+ /**
+ * Updates the current activity if its type matches `type`, merging the entries
+ * from `userInfo` into its current `userInfo` dictionary.
+ *
+ * @platform darwin
+ */
+ updateCurrentActivity(type: string, userInfo: any): void;
+ /**
+ * fulfilled when Electron is initialized. May be used as a convenient alternative
+ * to checking `app.isReady()` and subscribing to the `ready` event if the app is
+ * not ready yet.
+ */
+ whenReady(): Promise<void>;
+ /**
+ * A `boolean` property that's `true` if Chrome's accessibility support is enabled,
+ * `false` otherwise. This property will be `true` if the use of assistive
+ * technologies, such as screen readers, has been detected. Setting this property
+ * to `true` manually enables Chrome's accessibility support, allowing developers
+ * to expose accessibility switch to users in application settings.
+ *
+ * See Chromium's accessibility docs for more details. Disabled by default.
+ *
+ * This API must be called after the `ready` event is emitted.
+ *
+ * **Note:** Rendering accessibility tree can significantly affect the performance
+ * of your app. It should not be enabled by default.
+ *
+ * @platform darwin,win32
+ */
+ accessibilitySupportEnabled: boolean;
+ /**
+ * A `Menu | null` property that returns `Menu` if one has been set and `null`
+ * otherwise. Users can pass a Menu to set this property.
+ */
+ applicationMenu: (Menu) | (null);
+ /**
+ * An `Integer` property that returns the badge count for current app. Setting the
+ * count to `0` will hide the badge.
+ *
+ * On macOS, setting this with any nonzero integer shows on the dock icon. On
+ * Linux, this property only works for Unity launcher.
+ *
+ * **Note:** Unity launcher requires a `.desktop` file to work. For more
+ * information, please read the Unity integration documentation.
+ *
+ * **Note:** On macOS, you need to ensure that your application has the permission
+ * to display notifications for this property to take effect.
+ *
+ * @platform linux,darwin
+ */
+ badgeCount: number;
+ /**
+ * A `CommandLine` object that allows you to read and manipulate the command line
+ * arguments that Chromium uses.
+ *
+ */
+ readonly commandLine: CommandLine;
+ /**
+ * A `Dock` `| undefined` object that allows you to perform actions on your app
+ * icon in the user's dock on macOS.
+ *
+ * @platform darwin
+ */
+ readonly dock: Dock;
+ /**
+ * A `boolean` property that returns `true` if the app is packaged, `false`
+ * otherwise. For many apps, this property can be used to distinguish development
+ * and production environments.
+ *
+ */
+ readonly isPackaged: boolean;
+ /**
+ * A `string` property that indicates the current application's name, which is the
+ * name in the application's `package.json` file.
+ *
+ * Usually the `name` field of `package.json` is a short lowercase name, according
+ * to the npm modules spec. You should usually also specify a `productName` field,
+ * which is your application's full capitalized name, and which will be preferred
+ * over `name` by Electron.
+ */
+ name: string;
+ /**
+ * A `boolean` which when `true` indicates that the app is currently running under
+ * an ARM64 translator (like the macOS Rosetta Translator Environment or Windows
+ * WOW).
+ *
+ * You can use this property to prompt users to download the arm64 version of your
+ * application when they are mistakenly running the x64 version under Rosetta or
+ * WOW.
+ *
+ * @platform darwin,win32
+ */
+ readonly runningUnderARM64Translation: boolean;
+ /**
+ * A `boolean` which when `true` indicates that the app is currently running under
+ * the Rosetta Translator Environment.
+ *
+ * You can use this property to prompt users to download the arm64 version of your
+ * application when they are running the x64 version under Rosetta incorrectly.
+ *
+ * **Deprecated:** This property is superceded by the
+ * `runningUnderARM64Translation` property which detects when the app is being
+ * translated to ARM64 in both macOS and Windows.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ readonly runningUnderRosettaTranslation: boolean;
+ /**
+ * A `string` which is the user agent string Electron will use as a global
+ * fallback.
+ *
+ * This is the user agent that will be used when no user agent is set at the
+ * `webContents` or `session` level. It is useful for ensuring that your entire
+ * app has the same user agent. Set to a custom value as early as possible in your
+ * app's initialization to ensure that your overridden value is used.
+ */
+ userAgentFallback: string;
+ }
+
+ interface AutoUpdater extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/auto-updater
+
+ /**
+ * This event is emitted after a user calls `quitAndInstall()`.
+ *
+ * When this API is called, the `before-quit` event is not emitted before all
+ * windows are closed. As a result you should listen to this event if you wish to
+ * perform actions before the windows are closed while a process is quitting, as
+ * well as listening to `before-quit`.
+ */
+ on(event: 'before-quit-for-update', listener: Function): this;
+ once(event: 'before-quit-for-update', listener: Function): this;
+ addListener(event: 'before-quit-for-update', listener: Function): this;
+ removeListener(event: 'before-quit-for-update', listener: Function): this;
+ /**
+ * Emitted when checking if an update has started.
+ */
+ on(event: 'checking-for-update', listener: Function): this;
+ once(event: 'checking-for-update', listener: Function): this;
+ addListener(event: 'checking-for-update', listener: Function): this;
+ removeListener(event: 'checking-for-update', listener: Function): this;
+ /**
+ * Emitted when there is an error while updating.
+ */
+ on(event: 'error', listener: (error: Error) => void): this;
+ once(event: 'error', listener: (error: Error) => void): this;
+ addListener(event: 'error', listener: (error: Error) => void): this;
+ removeListener(event: 'error', listener: (error: Error) => void): this;
+ /**
+ * Emitted when there is an available update. The update is downloaded
+ * automatically.
+ */
+ on(event: 'update-available', listener: Function): this;
+ once(event: 'update-available', listener: Function): this;
+ addListener(event: 'update-available', listener: Function): this;
+ removeListener(event: 'update-available', listener: Function): this;
+ /**
+ * Emitted when an update has been downloaded.
+ *
+ * On Windows only `releaseName` is available.
+ *
+ * **Note:** It is not strictly necessary to handle this event. A successfully
+ * downloaded update will still be applied the next time the application starts.
+ */
+ on(event: 'update-downloaded', listener: (event: Event,
+ releaseNotes: string,
+ releaseName: string,
+ releaseDate: Date,
+ updateURL: string) => void): this;
+ once(event: 'update-downloaded', listener: (event: Event,
+ releaseNotes: string,
+ releaseName: string,
+ releaseDate: Date,
+ updateURL: string) => void): this;
+ addListener(event: 'update-downloaded', listener: (event: Event,
+ releaseNotes: string,
+ releaseName: string,
+ releaseDate: Date,
+ updateURL: string) => void): this;
+ removeListener(event: 'update-downloaded', listener: (event: Event,
+ releaseNotes: string,
+ releaseName: string,
+ releaseDate: Date,
+ updateURL: string) => void): this;
+ /**
+ * Emitted when there is no available update.
+ */
+ on(event: 'update-not-available', listener: Function): this;
+ once(event: 'update-not-available', listener: Function): this;
+ addListener(event: 'update-not-available', listener: Function): this;
+ removeListener(event: 'update-not-available', listener: Function): this;
+ /**
+ * Asks the server whether there is an update. You must call `setFeedURL` before
+ * using this API.
+ *
+ * **Note:** If an update is available it will be downloaded automatically. Calling
+ * `autoUpdater.checkForUpdates()` twice will download the update two times.
+ */
+ checkForUpdates(): void;
+ /**
+ * The current update feed URL.
+ */
+ getFeedURL(): string;
+ /**
+ * Restarts the app and installs the update after it has been downloaded. It should
+ * only be called after `update-downloaded` has been emitted.
+ *
+ * Under the hood calling `autoUpdater.quitAndInstall()` will close all application
+ * windows first, and automatically call `app.quit()` after all windows have been
+ * closed.
+ *
+ * **Note:** It is not strictly necessary to call this function to apply an update,
+ * as a successfully downloaded update will always be applied the next time the
+ * application starts.
+ */
+ quitAndInstall(): void;
+ /**
+ * Sets the `url` and initialize the auto updater.
+ */
+ setFeedURL(options: FeedURLOptions): void;
+ }
+
+ interface BluetoothDevice {
+
+ // Docs: https://electronjs.org/docs/api/structures/bluetooth-device
+
+ deviceId: string;
+ deviceName: string;
+ }
+
+ class BrowserView {
+
+ // Docs: https://electronjs.org/docs/api/browser-view
+
+ /**
+ * BrowserView
+ */
+ constructor(options?: BrowserViewConstructorOptions);
+ /**
+ * The `bounds` of this BrowserView instance as `Object`.
+ *
+ * @experimental
+ */
+ getBounds(): Rectangle;
+ /**
+ * @experimental
+ */
+ setAutoResize(options: AutoResizeOptions): void;
+ /**
+ * Examples of valid `color` values:
+ *
+ * * Hex
+ * * #fff (RGB)
+ * * #ffff (ARGB)
+ * * #ffffff (RRGGBB)
+ * * #ffffffff (AARRGGBB)
+ * * RGB
+ * * rgb(([\d]+),\s*([\d]+),\s*([\d]+))
+ * * e.g. rgb(255, 255, 255)
+ * * RGBA
+ * * rgba(([\d]+),\s*([\d]+),\s*([\d]+),\s*([\d.]+))
+ * * e.g. rgba(255, 255, 255, 1.0)
+ * * HSL
+ * * hsl((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%)
+ * * e.g. hsl(200, 20%, 50%)
+ * * HSLA
+ * * hsla((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+))
+ * * e.g. hsla(200, 20%, 50%, 0.5)
+ * * Color name
+ * * Options are listed in SkParseColor.cpp
+ * * Similar to CSS Color Module Level 3 keywords, but case-sensitive.
+ * * e.g. `blueviolet` or `red`
+ *
+ * **Note:** Hex format with alpha takes `AARRGGBB` or `ARGB`, _not_ `RRGGBBA` or
+ * `RGA`.
+ *
+ * @experimental
+ */
+ setBackgroundColor(color: string): void;
+ /**
+ * Resizes and moves the view to the supplied bounds relative to the window.
+ *
+ * @experimental
+ */
+ setBounds(bounds: Rectangle): void;
+ /**
+ * A `WebContents` object owned by this view.
+ *
+ * @experimental
+ */
+ webContents: WebContents;
+ }
+
+ class BrowserWindow extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/browser-window
+
+ /**
+ * Emitted when the window is set or unset to show always on top of other windows.
+ */
+ on(event: 'always-on-top-changed', listener: (event: Event,
+ isAlwaysOnTop: boolean) => void): this;
+ once(event: 'always-on-top-changed', listener: (event: Event,
+ isAlwaysOnTop: boolean) => void): this;
+ addListener(event: 'always-on-top-changed', listener: (event: Event,
+ isAlwaysOnTop: boolean) => void): this;
+ removeListener(event: 'always-on-top-changed', listener: (event: Event,
+ isAlwaysOnTop: boolean) => void): this;
+ /**
+ * Emitted when an App Command is invoked. These are typically related to keyboard
+ * media keys or browser commands, as well as the "Back" button built into some
+ * mice on Windows.
+ *
+ * Commands are lowercased, underscores are replaced with hyphens, and the
+ * `APPCOMMAND_` prefix is stripped off. e.g. `APPCOMMAND_BROWSER_BACKWARD` is
+ * emitted as `browser-backward`.
+ *
+ * The following app commands are explicitly supported on Linux:
+ *
+ * * `browser-backward`
+ * * `browser-forward`
+ *
+ * @platform win32,linux
+ */
+ on(event: 'app-command', listener: (event: Event,
+ command: string) => void): this;
+ once(event: 'app-command', listener: (event: Event,
+ command: string) => void): this;
+ addListener(event: 'app-command', listener: (event: Event,
+ command: string) => void): this;
+ removeListener(event: 'app-command', listener: (event: Event,
+ command: string) => void): this;
+ /**
+ * Emitted when the window loses focus.
+ */
+ on(event: 'blur', listener: Function): this;
+ once(event: 'blur', listener: Function): this;
+ addListener(event: 'blur', listener: Function): this;
+ removeListener(event: 'blur', listener: Function): this;
+ /**
+ * Emitted when the window is going to be closed. It's emitted before the
+ * `beforeunload` and `unload` event of the DOM. Calling `event.preventDefault()`
+ * will cancel the close.
+ *
+ * Usually you would want to use the `beforeunload` handler to decide whether the
+ * window should be closed, which will also be called when the window is reloaded.
+ * In Electron, returning any value other than `undefined` would cancel the close.
+ * For example:
+ *
+ * _**Note**: There is a subtle difference between the behaviors of
+ * `window.onbeforeunload = handler` and `window.addEventListener('beforeunload',
+ * handler)`. It is recommended to always set the `event.returnValue` explicitly,
+ * instead of only returning a value, as the former works more consistently within
+ * Electron._
+ */
+ on(event: 'close', listener: (event: Event) => void): this;
+ once(event: 'close', listener: (event: Event) => void): this;
+ addListener(event: 'close', listener: (event: Event) => void): this;
+ removeListener(event: 'close', listener: (event: Event) => void): this;
+ /**
+ * Emitted when the window is closed. After you have received this event you should
+ * remove the reference to the window and avoid using it any more.
+ */
+ on(event: 'closed', listener: Function): this;
+ once(event: 'closed', listener: Function): this;
+ addListener(event: 'closed', listener: Function): this;
+ removeListener(event: 'closed', listener: Function): this;
+ /**
+ * Emitted when the window enters a full-screen state.
+ */
+ on(event: 'enter-full-screen', listener: Function): this;
+ once(event: 'enter-full-screen', listener: Function): this;
+ addListener(event: 'enter-full-screen', listener: Function): this;
+ removeListener(event: 'enter-full-screen', listener: Function): this;
+ /**
+ * Emitted when the window enters a full-screen state triggered by HTML API.
+ */
+ on(event: 'enter-html-full-screen', listener: Function): this;
+ once(event: 'enter-html-full-screen', listener: Function): this;
+ addListener(event: 'enter-html-full-screen', listener: Function): this;
+ removeListener(event: 'enter-html-full-screen', listener: Function): this;
+ /**
+ * Emitted when the window gains focus.
+ */
+ on(event: 'focus', listener: Function): this;
+ once(event: 'focus', listener: Function): this;
+ addListener(event: 'focus', listener: Function): this;
+ removeListener(event: 'focus', listener: Function): this;
+ /**
+ * Emitted when the window is hidden.
+ */
+ on(event: 'hide', listener: Function): this;
+ once(event: 'hide', listener: Function): this;
+ addListener(event: 'hide', listener: Function): this;
+ removeListener(event: 'hide', listener: Function): this;
+ /**
+ * Emitted when the window leaves a full-screen state.
+ */
+ on(event: 'leave-full-screen', listener: Function): this;
+ once(event: 'leave-full-screen', listener: Function): this;
+ addListener(event: 'leave-full-screen', listener: Function): this;
+ removeListener(event: 'leave-full-screen', listener: Function): this;
+ /**
+ * Emitted when the window leaves a full-screen state triggered by HTML API.
+ */
+ on(event: 'leave-html-full-screen', listener: Function): this;
+ once(event: 'leave-html-full-screen', listener: Function): this;
+ addListener(event: 'leave-html-full-screen', listener: Function): this;
+ removeListener(event: 'leave-html-full-screen', listener: Function): this;
+ /**
+ * Emitted when window is maximized.
+ */
+ on(event: 'maximize', listener: Function): this;
+ once(event: 'maximize', listener: Function): this;
+ addListener(event: 'maximize', listener: Function): this;
+ removeListener(event: 'maximize', listener: Function): this;
+ /**
+ * Emitted when the window is minimized.
+ */
+ on(event: 'minimize', listener: Function): this;
+ once(event: 'minimize', listener: Function): this;
+ addListener(event: 'minimize', listener: Function): this;
+ removeListener(event: 'minimize', listener: Function): this;
+ /**
+ * Emitted when the window is being moved to a new position.
+ */
+ on(event: 'move', listener: Function): this;
+ once(event: 'move', listener: Function): this;
+ addListener(event: 'move', listener: Function): this;
+ removeListener(event: 'move', listener: Function): this;
+ /**
+ * Emitted once when the window is moved to a new position.
+ *
+ * **Note**: On macOS this event is an alias of `move`.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'moved', listener: Function): this;
+ once(event: 'moved', listener: Function): this;
+ addListener(event: 'moved', listener: Function): this;
+ removeListener(event: 'moved', listener: Function): this;
+ /**
+ * Emitted when the native new tab button is clicked.
+ *
+ * @platform darwin
+ */
+ on(event: 'new-window-for-tab', listener: Function): this;
+ once(event: 'new-window-for-tab', listener: Function): this;
+ addListener(event: 'new-window-for-tab', listener: Function): this;
+ removeListener(event: 'new-window-for-tab', listener: Function): this;
+ /**
+ * Emitted when the document changed its title, calling `event.preventDefault()`
+ * will prevent the native window's title from changing. `explicitSet` is false
+ * when title is synthesized from file URL.
+ */
+ on(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ once(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ addListener(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ removeListener(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ /**
+ * Emitted when the web page has been rendered (while not being shown) and window
+ * can be displayed without a visual flash.
+ *
+ * Please note that using this event implies that the renderer will be considered
+ * "visible" and paint even though `show` is false. This event will never fire if
+ * you use `paintWhenInitiallyHidden: false`
+ */
+ on(event: 'ready-to-show', listener: Function): this;
+ once(event: 'ready-to-show', listener: Function): this;
+ addListener(event: 'ready-to-show', listener: Function): this;
+ removeListener(event: 'ready-to-show', listener: Function): this;
+ /**
+ * Emitted after the window has been resized.
+ */
+ on(event: 'resize', listener: Function): this;
+ once(event: 'resize', listener: Function): this;
+ addListener(event: 'resize', listener: Function): this;
+ removeListener(event: 'resize', listener: Function): this;
+ /**
+ * Emitted once when the window has finished being resized.
+ *
+ * This is usually emitted when the window has been resized manually. On macOS,
+ * resizing the window with `setBounds`/`setSize` and setting the `animate`
+ * parameter to `true` will also emit this event once resizing has finished.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'resized', listener: Function): this;
+ once(event: 'resized', listener: Function): this;
+ addListener(event: 'resized', listener: Function): this;
+ removeListener(event: 'resized', listener: Function): this;
+ /**
+ * Emitted when the unresponsive web page becomes responsive again.
+ */
+ on(event: 'responsive', listener: Function): this;
+ once(event: 'responsive', listener: Function): this;
+ addListener(event: 'responsive', listener: Function): this;
+ removeListener(event: 'responsive', listener: Function): this;
+ /**
+ * Emitted when the window is restored from a minimized state.
+ */
+ on(event: 'restore', listener: Function): this;
+ once(event: 'restore', listener: Function): this;
+ addListener(event: 'restore', listener: Function): this;
+ removeListener(event: 'restore', listener: Function): this;
+ /**
+ * Emitted on trackpad rotation gesture. Continually emitted until rotation gesture
+ * is ended. The `rotation` value on each emission is the angle in degrees rotated
+ * since the last emission. The last emitted event upon a rotation gesture will
+ * always be of value `0`. Counter-clockwise rotation values are positive, while
+ * clockwise ones are negative.
+ *
+ * @platform darwin
+ */
+ on(event: 'rotate-gesture', listener: (event: Event,
+ rotation: number) => void): this;
+ once(event: 'rotate-gesture', listener: (event: Event,
+ rotation: number) => void): this;
+ addListener(event: 'rotate-gesture', listener: (event: Event,
+ rotation: number) => void): this;
+ removeListener(event: 'rotate-gesture', listener: (event: Event,
+ rotation: number) => void): this;
+ /**
+ * Emitted when scroll wheel event phase has begun.
+ *
+ * > **Note** This event is deprecated beginning in Electron 22.0.0. See Breaking
+ * Changes for details of how to migrate to using the WebContents `input-event`
+ * event.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ on(event: 'scroll-touch-begin', listener: Function): this;
+ once(event: 'scroll-touch-begin', listener: Function): this;
+ addListener(event: 'scroll-touch-begin', listener: Function): this;
+ removeListener(event: 'scroll-touch-begin', listener: Function): this;
+ /**
+ * Emitted when scroll wheel event phase filed upon reaching the edge of element.
+ *
+ * > **Note** This event is deprecated beginning in Electron 22.0.0. See Breaking
+ * Changes for details of how to migrate to using the WebContents `input-event`
+ * event.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ on(event: 'scroll-touch-edge', listener: Function): this;
+ once(event: 'scroll-touch-edge', listener: Function): this;
+ addListener(event: 'scroll-touch-edge', listener: Function): this;
+ removeListener(event: 'scroll-touch-edge', listener: Function): this;
+ /**
+ * Emitted when scroll wheel event phase has ended.
+ *
+ * > **Note** This event is deprecated beginning in Electron 22.0.0. See Breaking
+ * Changes for details of how to migrate to using the WebContents `input-event`
+ * event.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ on(event: 'scroll-touch-end', listener: Function): this;
+ once(event: 'scroll-touch-end', listener: Function): this;
+ addListener(event: 'scroll-touch-end', listener: Function): this;
+ removeListener(event: 'scroll-touch-end', listener: Function): this;
+ /**
+ * Emitted when window session is going to end due to force shutdown or machine
+ * restart or session log off.
+ *
+ * @platform win32
+ */
+ on(event: 'session-end', listener: Function): this;
+ once(event: 'session-end', listener: Function): this;
+ addListener(event: 'session-end', listener: Function): this;
+ removeListener(event: 'session-end', listener: Function): this;
+ /**
+ * Emitted when the window opens a sheet.
+ *
+ * @platform darwin
+ */
+ on(event: 'sheet-begin', listener: Function): this;
+ once(event: 'sheet-begin', listener: Function): this;
+ addListener(event: 'sheet-begin', listener: Function): this;
+ removeListener(event: 'sheet-begin', listener: Function): this;
+ /**
+ * Emitted when the window has closed a sheet.
+ *
+ * @platform darwin
+ */
+ on(event: 'sheet-end', listener: Function): this;
+ once(event: 'sheet-end', listener: Function): this;
+ addListener(event: 'sheet-end', listener: Function): this;
+ removeListener(event: 'sheet-end', listener: Function): this;
+ /**
+ * Emitted when the window is shown.
+ */
+ on(event: 'show', listener: Function): this;
+ once(event: 'show', listener: Function): this;
+ addListener(event: 'show', listener: Function): this;
+ removeListener(event: 'show', listener: Function): this;
+ /**
+ * Emitted on 3-finger swipe. Possible directions are `up`, `right`, `down`,
+ * `left`.
+ *
+ * The method underlying this event is built to handle older macOS-style trackpad
+ * swiping, where the content on the screen doesn't move with the swipe. Most macOS
+ * trackpads are not configured to allow this kind of swiping anymore, so in order
+ * for it to emit properly the 'Swipe between pages' preference in `System
+ * Preferences > Trackpad > More Gestures` must be set to 'Swipe with two or three
+ * fingers'.
+ *
+ * @platform darwin
+ */
+ on(event: 'swipe', listener: (event: Event,
+ direction: string) => void): this;
+ once(event: 'swipe', listener: (event: Event,
+ direction: string) => void): this;
+ addListener(event: 'swipe', listener: (event: Event,
+ direction: string) => void): this;
+ removeListener(event: 'swipe', listener: (event: Event,
+ direction: string) => void): this;
+ /**
+ * Emitted when the system context menu is triggered on the window, this is
+ * normally only triggered when the user right clicks on the non-client area of
+ * your window. This is the window titlebar or any area you have declared as
+ * `-webkit-app-region: drag` in a frameless window.
+ *
+ * Calling `event.preventDefault()` will prevent the menu from being displayed.
+ *
+ * @platform win32
+ */
+ on(event: 'system-context-menu', listener: (event: Event,
+ /**
+ * The screen coordinates the context menu was triggered at
+ */
+ point: Point) => void): this;
+ once(event: 'system-context-menu', listener: (event: Event,
+ /**
+ * The screen coordinates the context menu was triggered at
+ */
+ point: Point) => void): this;
+ addListener(event: 'system-context-menu', listener: (event: Event,
+ /**
+ * The screen coordinates the context menu was triggered at
+ */
+ point: Point) => void): this;
+ removeListener(event: 'system-context-menu', listener: (event: Event,
+ /**
+ * The screen coordinates the context menu was triggered at
+ */
+ point: Point) => void): this;
+ /**
+ * Emitted when the window exits from a maximized state.
+ */
+ on(event: 'unmaximize', listener: Function): this;
+ once(event: 'unmaximize', listener: Function): this;
+ addListener(event: 'unmaximize', listener: Function): this;
+ removeListener(event: 'unmaximize', listener: Function): this;
+ /**
+ * Emitted when the web page becomes unresponsive.
+ */
+ on(event: 'unresponsive', listener: Function): this;
+ once(event: 'unresponsive', listener: Function): this;
+ addListener(event: 'unresponsive', listener: Function): this;
+ removeListener(event: 'unresponsive', listener: Function): this;
+ /**
+ * Emitted before the window is moved. On Windows, calling `event.preventDefault()`
+ * will prevent the window from being moved.
+ *
+ * Note that this is only emitted when the window is being moved manually. Moving
+ * the window with `setPosition`/`setBounds`/`center` will not emit this event.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'will-move', listener: (event: Event,
+ /**
+ * Location the window is being moved to.
+ */
+ newBounds: Rectangle) => void): this;
+ once(event: 'will-move', listener: (event: Event,
+ /**
+ * Location the window is being moved to.
+ */
+ newBounds: Rectangle) => void): this;
+ addListener(event: 'will-move', listener: (event: Event,
+ /**
+ * Location the window is being moved to.
+ */
+ newBounds: Rectangle) => void): this;
+ removeListener(event: 'will-move', listener: (event: Event,
+ /**
+ * Location the window is being moved to.
+ */
+ newBounds: Rectangle) => void): this;
+ /**
+ * Emitted before the window is resized. Calling `event.preventDefault()` will
+ * prevent the window from being resized.
+ *
+ * Note that this is only emitted when the window is being resized manually.
+ * Resizing the window with `setBounds`/`setSize` will not emit this event.
+ *
+ * The possible values and behaviors of the `edge` option are platform dependent.
+ * Possible values are:
+ *
+ * * On Windows, possible values are `bottom`, `top`, `left`, `right`, `top-left`,
+ * `top-right`, `bottom-left`, `bottom-right`.
+ * * On macOS, possible values are `bottom` and `right`.
+ * * The value `bottom` is used to denote vertical resizing.
+ * * The value `right` is used to denote horizontal resizing.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'will-resize', listener: (event: Event,
+ /**
+ * Size the window is being resized to.
+ */
+ newBounds: Rectangle,
+ details: WillResizeDetails) => void): this;
+ once(event: 'will-resize', listener: (event: Event,
+ /**
+ * Size the window is being resized to.
+ */
+ newBounds: Rectangle,
+ details: WillResizeDetails) => void): this;
+ addListener(event: 'will-resize', listener: (event: Event,
+ /**
+ * Size the window is being resized to.
+ */
+ newBounds: Rectangle,
+ details: WillResizeDetails) => void): this;
+ removeListener(event: 'will-resize', listener: (event: Event,
+ /**
+ * Size the window is being resized to.
+ */
+ newBounds: Rectangle,
+ details: WillResizeDetails) => void): this;
+ /**
+ * BrowserWindow
+ */
+ constructor(options?: BrowserWindowConstructorOptions);
+ /**
+ * The window that owns the given `browserView`. If the given view is not attached
+ * to any window, returns `null`.
+ */
+ static fromBrowserView(browserView: BrowserView): (BrowserWindow) | (null);
+ /**
+ * The window with the given `id`.
+ */
+ static fromId(id: number): (BrowserWindow) | (null);
+ /**
+ * The window that owns the given `webContents` or `null` if the contents are not
+ * owned by a window.
+ */
+ static fromWebContents(webContents: WebContents): (BrowserWindow) | (null);
+ /**
+ * An array of all opened browser windows.
+ */
+ static getAllWindows(): BrowserWindow[];
+ /**
+ * The window that is focused in this application, otherwise returns `null`.
+ */
+ static getFocusedWindow(): (BrowserWindow) | (null);
+ /**
+ * Replacement API for setBrowserView supporting work with multi browser views.
+ *
+ * @experimental
+ */
+ addBrowserView(browserView: BrowserView): void;
+ /**
+ * Adds a window as a tab on this window, after the tab for the window instance.
+ *
+ * @platform darwin
+ */
+ addTabbedWindow(browserWindow: BrowserWindow): void;
+ /**
+ * Removes focus from the window.
+ */
+ blur(): void;
+ blurWebView(): void;
+ /**
+ * Resolves with a NativeImage
+ *
+ * Captures a snapshot of the page within `rect`. Omitting `rect` will capture the
+ * whole visible page. If the page is not visible, `rect` may be empty. The page is
+ * considered visible when its browser window is hidden and the capturer count is
+ * non-zero. If you would like the page to stay hidden, you should ensure that
+ * `stayHidden` is set to true.
+ */
+ capturePage(rect?: Rectangle, opts?: Opts): Promise<Electron.NativeImage>;
+ /**
+ * Moves window to the center of the screen.
+ */
+ center(): void;
+ /**
+ * Try to close the window. This has the same effect as a user manually clicking
+ * the close button of the window. The web page may cancel the close though. See
+ * the close event.
+ */
+ close(): void;
+ /**
+ * Closes the currently open Quick Look panel.
+ *
+ * @platform darwin
+ */
+ closeFilePreview(): void;
+ /**
+ * Force closing the window, the `unload` and `beforeunload` event won't be emitted
+ * for the web page, and `close` event will also not be emitted for this window,
+ * but it guarantees the `closed` event will be emitted.
+ */
+ destroy(): void;
+ /**
+ * Starts or stops flashing the window to attract user's attention.
+ */
+ flashFrame(flag: boolean): void;
+ /**
+ * Focuses on the window.
+ */
+ focus(): void;
+ focusOnWebView(): void;
+ /**
+ * Gets the background color of the window in Hex (`#RRGGBB`) format.
+ *
+ * See Setting `backgroundColor`.
+ *
+ * **Note:** The alpha value is _not_ returned alongside the red, green, and blue
+ * values.
+ */
+ getBackgroundColor(): string;
+ /**
+ * The `bounds` of the window as `Object`.
+ *
+ * **Note:** On macOS, the y-coordinate value returned will be at minimum the Tray
+ * height. For example, calling `win.setBounds({ x: 25, y: 20, width: 800, height:
+ * 600 })` with a tray height of 38 means that `win.getBounds()` will return `{ x:
+ * 25, y: 38, width: 800, height: 600 }`.
+ */
+ getBounds(): Rectangle;
+ /**
+ * The `BrowserView` attached to `win`. Returns `null` if one is not attached.
+ * Throws an error if multiple `BrowserView`s are attached.
+ *
+ * @experimental
+ */
+ getBrowserView(): (BrowserView) | (null);
+ /**
+ * a sorted by z-index array of all BrowserViews that have been attached with
+ * `addBrowserView` or `setBrowserView`. The top-most BrowserView is the last
+ * element of the array.
+ *
+ * **Note:** The BrowserView API is currently experimental and may change or be
+ * removed in future Electron releases.
+ *
+ * @experimental
+ */
+ getBrowserViews(): BrowserView[];
+ /**
+ * All child windows.
+ */
+ getChildWindows(): BrowserWindow[];
+ /**
+ * The `bounds` of the window's client area as `Object`.
+ */
+ getContentBounds(): Rectangle;
+ /**
+ * Contains the window's client area's width and height.
+ */
+ getContentSize(): number[];
+ /**
+ * Contains the window's maximum width and height.
+ */
+ getMaximumSize(): number[];
+ /**
+ * Window id in the format of DesktopCapturerSource's id. For example
+ * "window:1324:0".
+ *
+ * More precisely the format is `window:id:other_id` where `id` is `HWND` on
+ * Windows, `CGWindowID` (`uint64_t`) on macOS and `Window` (`unsigned long`) on
+ * Linux. `other_id` is used to identify web contents (tabs) so within the same top
+ * level window.
+ */
+ getMediaSourceId(): string;
+ /**
+ * Contains the window's minimum width and height.
+ */
+ getMinimumSize(): number[];
+ /**
+ * The platform-specific handle of the window.
+ *
+ * The native type of the handle is `HWND` on Windows, `NSView*` on macOS, and
+ * `Window` (`unsigned long`) on Linux.
+ */
+ getNativeWindowHandle(): Buffer;
+ /**
+ * Contains the window bounds of the normal state
+ *
+ * **Note:** whatever the current state of the window : maximized, minimized or in
+ * fullscreen, this function always returns the position and size of the window in
+ * normal state. In normal state, getBounds and getNormalBounds returns the same
+ * `Rectangle`.
+ */
+ getNormalBounds(): Rectangle;
+ /**
+ * between 0.0 (fully transparent) and 1.0 (fully opaque). On Linux, always returns
+ * 1.
+ */
+ getOpacity(): number;
+ /**
+ * The parent window or `null` if there is no parent.
+ */
+ getParentWindow(): (BrowserWindow) | (null);
+ /**
+ * Contains the window's current position.
+ */
+ getPosition(): number[];
+ /**
+ * The pathname of the file the window represents.
+ *
+ * @platform darwin
+ */
+ getRepresentedFilename(): string;
+ /**
+ * Contains the window's width and height.
+ */
+ getSize(): number[];
+ /**
+ * The title of the native window.
+ *
+ * **Note:** The title of the web page can be different from the title of the
+ * native window.
+ */
+ getTitle(): string;
+ /**
+ * The custom position for the traffic light buttons in frameless window, `{ x: 0,
+ * y: 0 }` will be returned when there is no custom position.
+ *
+ * > **Note** This function is deprecated. Use getWindowButtonPosition instead.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ getTrafficLightPosition(): Point;
+ /**
+ * The custom position for the traffic light buttons in frameless window, `null`
+ * will be returned when there is no custom position.
+ *
+ * @platform darwin
+ */
+ getWindowButtonPosition(): (Point) | (null);
+ /**
+ * Whether the window has a shadow.
+ */
+ hasShadow(): boolean;
+ /**
+ * Hides the window.
+ */
+ hide(): void;
+ /**
+ * Hooks a windows message. The `callback` is called when the message is received
+ * in the WndProc.
+ *
+ * @platform win32
+ */
+ hookWindowMessage(message: number, callback: (wParam: Buffer, lParam: Buffer) => void): void;
+ /**
+ * Invalidates the window shadow so that it is recomputed based on the current
+ * window shape.
+ *
+ * `BrowserWindows` that are transparent can sometimes leave behind visual
+ * artifacts on macOS. This method can be used to clear these artifacts when, for
+ * example, performing an animation.
+ *
+ * @platform darwin
+ */
+ invalidateShadow(): void;
+ /**
+ * Whether the window is always on top of other windows.
+ */
+ isAlwaysOnTop(): boolean;
+ /**
+ * Whether the window can be manually closed by user.
+ *
+ * On Linux always returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ isClosable(): boolean;
+ /**
+ * Whether the window is destroyed.
+ */
+ isDestroyed(): boolean;
+ /**
+ * Whether the window's document has been edited.
+ *
+ * @platform darwin
+ */
+ isDocumentEdited(): boolean;
+ /**
+ * whether the window is enabled.
+ */
+ isEnabled(): boolean;
+ /**
+ * Whether the window can be focused.
+ *
+ * @platform darwin,win32
+ */
+ isFocusable(): boolean;
+ /**
+ * Whether the window is focused.
+ */
+ isFocused(): boolean;
+ /**
+ * Whether the window is in fullscreen mode.
+ */
+ isFullScreen(): boolean;
+ /**
+ * Whether the maximize/zoom window button toggles fullscreen mode or maximizes the
+ * window.
+ */
+ isFullScreenable(): boolean;
+ /**
+ * Whether the window will be hidden when the user toggles into mission control.
+ *
+ * @platform darwin
+ */
+ isHiddenInMissionControl(): boolean;
+ /**
+ * Whether the window is in kiosk mode.
+ */
+ isKiosk(): boolean;
+ /**
+ * Whether the window can be manually maximized by user.
+ *
+ * On Linux always returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ isMaximizable(): boolean;
+ /**
+ * Whether the window is maximized.
+ */
+ isMaximized(): boolean;
+ /**
+ * Whether menu bar automatically hides itself.
+ *
+ * @platform win32,linux
+ */
+ isMenuBarAutoHide(): boolean;
+ /**
+ * Whether the menu bar is visible.
+ *
+ * @platform win32,linux
+ */
+ isMenuBarVisible(): boolean;
+ /**
+ * Whether the window can be manually minimized by the user.
+ *
+ * On Linux always returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ isMinimizable(): boolean;
+ /**
+ * Whether the window is minimized.
+ */
+ isMinimized(): boolean;
+ /**
+ * Whether current window is a modal window.
+ */
+ isModal(): boolean;
+ /**
+ * Whether the window can be moved by user.
+ *
+ * On Linux always returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ isMovable(): boolean;
+ /**
+ * Whether the window is in normal state (not maximized, not minimized, not in
+ * fullscreen mode).
+ */
+ isNormal(): boolean;
+ /**
+ * Whether the window can be manually resized by the user.
+ */
+ isResizable(): boolean;
+ /**
+ * Whether the window is in simple (pre-Lion) fullscreen mode.
+ *
+ * @platform darwin
+ */
+ isSimpleFullScreen(): boolean;
+ /**
+ * Whether the window is in Windows 10 tablet mode.
+ *
+ * Since Windows 10 users can use their PC as tablet, under this mode apps can
+ * choose to optimize their UI for tablets, such as enlarging the titlebar and
+ * hiding titlebar buttons.
+ *
+ * This API returns whether the window is in tablet mode, and the `resize` event
+ * can be be used to listen to changes to tablet mode.
+ *
+ * @platform win32
+ */
+ isTabletMode(): boolean;
+ /**
+ * Whether the window is visible to the user in the foreground of the app.
+ */
+ isVisible(): boolean;
+ /**
+ * Whether the window is visible on all workspaces.
+ *
+ * **Note:** This API always returns false on Windows.
+ *
+ * @platform darwin,linux
+ */
+ isVisibleOnAllWorkspaces(): boolean;
+ /**
+ * `true` or `false` depending on whether the message is hooked.
+ *
+ * @platform win32
+ */
+ isWindowMessageHooked(message: number): boolean;
+ /**
+ * the promise will resolve when the page has finished loading (see
+ * `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).
+ *
+ * Same as `webContents.loadFile`, `filePath` should be a path to an HTML file
+ * relative to the root of your application. See the `webContents` docs for more
+ * information.
+ */
+ loadFile(filePath: string, options?: LoadFileOptions): Promise<void>;
+ /**
+ * the promise will resolve when the page has finished loading (see
+ * `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).
+ *
+ * Same as `webContents.loadURL(url[, options])`.
+ *
+ * The `url` can be a remote address (e.g. `http://`) or a path to a local HTML
+ * file using the `file://` protocol.
+ *
+ * To ensure that file URLs are properly formatted, it is recommended to use Node's
+ * `url.format` method:
+ *
+ * You can load a URL using a `POST` request with URL-encoded data by doing the
+ * following:
+ */
+ loadURL(url: string, options?: LoadURLOptions): Promise<void>;
+ /**
+ * Maximizes the window. This will also show (but not focus) the window if it isn't
+ * being displayed already.
+ */
+ maximize(): void;
+ /**
+ * Merges all windows into one window with multiple tabs when native tabs are
+ * enabled and there is more than one open window.
+ *
+ * @platform darwin
+ */
+ mergeAllWindows(): void;
+ /**
+ * Minimizes the window. On some platforms the minimized window will be shown in
+ * the Dock.
+ */
+ minimize(): void;
+ /**
+ * Moves window above the source window in the sense of z-order. If the
+ * `mediaSourceId` is not of type window or if the window does not exist then this
+ * method throws an error.
+ */
+ moveAbove(mediaSourceId: string): void;
+ /**
+ * Moves the current tab into a new window if native tabs are enabled and there is
+ * more than one tab in the current window.
+ *
+ * @platform darwin
+ */
+ moveTabToNewWindow(): void;
+ /**
+ * Moves window to top(z-order) regardless of focus
+ */
+ moveTop(): void;
+ /**
+ * Uses Quick Look to preview a file at a given path.
+ *
+ * @platform darwin
+ */
+ previewFile(path: string, displayName?: string): void;
+ /**
+ * Same as `webContents.reload`.
+ */
+ reload(): void;
+ /**
+ * @experimental
+ */
+ removeBrowserView(browserView: BrowserView): void;
+ /**
+ * Remove the window's menu bar.
+ *
+ * @platform linux,win32
+ */
+ removeMenu(): void;
+ /**
+ * Restores the window from minimized state to its previous state.
+ */
+ restore(): void;
+ /**
+ * Selects the next tab when native tabs are enabled and there are other tabs in
+ * the window.
+ *
+ * @platform darwin
+ */
+ selectNextTab(): void;
+ /**
+ * Selects the previous tab when native tabs are enabled and there are other tabs
+ * in the window.
+ *
+ * @platform darwin
+ */
+ selectPreviousTab(): void;
+ /**
+ * Sets whether the window should show always on top of other windows. After
+ * setting this, the window is still a normal window, not a toolbox window which
+ * can not be focused on.
+ */
+ setAlwaysOnTop(flag: boolean, level?: 'normal' | 'floating' | 'torn-off-menu' | 'modal-panel' | 'main-menu' | 'status' | 'pop-up-menu' | 'screen-saver', relativeLevel?: number): void;
+ /**
+ * Sets the properties for the window's taskbar button.
+ *
+ * **Note:** `relaunchCommand` and `relaunchDisplayName` must always be set
+ * together. If one of those properties is not set, then neither will be used.
+ *
+ * @platform win32
+ */
+ setAppDetails(options: AppDetailsOptions): void;
+ /**
+ * This will make a window maintain an aspect ratio. The extra size allows a
+ * developer to have space, specified in pixels, not included within the aspect
+ * ratio calculations. This API already takes into account the difference between a
+ * window's size and its content size.
+ *
+ * Consider a normal window with an HD video player and associated controls.
+ * Perhaps there are 15 pixels of controls on the left edge, 25 pixels of controls
+ * on the right edge and 50 pixels of controls below the player. In order to
+ * maintain a 16:9 aspect ratio (standard aspect ratio for HD @1920x1080) within
+ * the player itself we would call this function with arguments of 16/9 and {
+ * width: 40, height: 50 }. The second argument doesn't care where the extra width
+ * and height are within the content view--only that they exist. Sum any extra
+ * width and height areas you have within the overall content view.
+ *
+ * The aspect ratio is not respected when window is resized programmatically with
+ * APIs like `win.setSize`.
+ *
+ * To reset an aspect ratio, pass 0 as the `aspectRatio` value:
+ * `win.setAspectRatio(0)`.
+ */
+ setAspectRatio(aspectRatio: number, extraSize?: Size): void;
+ /**
+ * Controls whether to hide cursor when typing.
+ *
+ * @platform darwin
+ */
+ setAutoHideCursor(autoHide: boolean): void;
+ /**
+ * Sets whether the window menu bar should hide itself automatically. Once set the
+ * menu bar will only show when users press the single `Alt` key.
+ *
+ * If the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't
+ * hide it immediately.
+ *
+ * @platform win32,linux
+ */
+ setAutoHideMenuBar(hide: boolean): void;
+ /**
+ * Examples of valid `backgroundColor` values:
+ *
+ * * Hex
+ * * #fff (shorthand RGB)
+ * * #ffff (shorthand ARGB)
+ * * #ffffff (RGB)
+ * * #ffffffff (ARGB)
+ * * RGB
+ * * rgb(([\d]+),\s*([\d]+),\s*([\d]+))
+ * * e.g. rgb(255, 255, 255)
+ * * RGBA
+ * * rgba(([\d]+),\s*([\d]+),\s*([\d]+),\s*([\d.]+))
+ * * e.g. rgba(255, 255, 255, 1.0)
+ * * HSL
+ * * hsl((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%)
+ * * e.g. hsl(200, 20%, 50%)
+ * * HSLA
+ * * hsla((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+))
+ * * e.g. hsla(200, 20%, 50%, 0.5)
+ * * Color name
+ * * Options are listed in SkParseColor.cpp
+ * * Similar to CSS Color Module Level 3 keywords, but case-sensitive.
+ * * e.g. `blueviolet` or `red`
+ *
+ * Sets the background color of the window. See Setting `backgroundColor`.
+ */
+ setBackgroundColor(backgroundColor: string): void;
+ /**
+ * This method sets the browser window's system-drawn background material,
+ * including behind the non-client area.
+ *
+ * See the Windows documentation for more details.
+ *
+ * **Note:** This method is only supported on Windows 11 22H2 and up.
+ *
+ * @platform win32
+ */
+ setBackgroundMaterial(material: 'auto' | 'none' | 'mica' | 'acrylic' | 'tabbed'): void;
+ /**
+ * Resizes and moves the window to the supplied bounds. Any properties that are not
+ * supplied will default to their current values.
+ *
+ * **Note:** On macOS, the y-coordinate value cannot be smaller than the Tray
+ * height. The tray height has changed over time and depends on the operating
+ * system, but is between 20-40px. Passing a value lower than the tray height will
+ * result in a window that is flush to the tray.
+ */
+ setBounds(bounds: Partial<Rectangle>, animate?: boolean): void;
+ /**
+ * @experimental
+ */
+ setBrowserView(browserView: (BrowserView) | (null)): void;
+ /**
+ * Sets whether the window can be manually closed by user. On Linux does nothing.
+ *
+ * @platform darwin,win32
+ */
+ setClosable(closable: boolean): void;
+ /**
+ * Resizes and moves the window's client area (e.g. the web page) to the supplied
+ * bounds.
+ */
+ setContentBounds(bounds: Rectangle, animate?: boolean): void;
+ /**
+ * Prevents the window contents from being captured by other apps.
+ *
+ * On macOS it sets the NSWindow's sharingType to NSWindowSharingNone. On Windows
+ * it calls SetWindowDisplayAffinity with `WDA_EXCLUDEFROMCAPTURE`. For Windows 10
+ * version 2004 and up the window will be removed from capture entirely, older
+ * Windows versions behave as if `WDA_MONITOR` is applied capturing a black window.
+ *
+ * @platform darwin,win32
+ */
+ setContentProtection(enable: boolean): void;
+ /**
+ * Resizes the window's client area (e.g. the web page) to `width` and `height`.
+ */
+ setContentSize(width: number, height: number, animate?: boolean): void;
+ /**
+ * Specifies whether the window’s document has been edited, and the icon in title
+ * bar will become gray when set to `true`.
+ *
+ * @platform darwin
+ */
+ setDocumentEdited(edited: boolean): void;
+ /**
+ * Disable or enable the window.
+ */
+ setEnabled(enable: boolean): void;
+ /**
+ * Changes whether the window can be focused.
+ *
+ * On macOS it does not remove the focus from the window.
+ *
+ * @platform darwin,win32
+ */
+ setFocusable(focusable: boolean): void;
+ /**
+ * Sets whether the window should be in fullscreen mode.
+ *
+ * **Note:** On macOS, fullscreen transitions take place asynchronously. If further
+ * actions depend on the fullscreen state, use the 'enter-full-screen' or
+ * 'leave-full-screen' events.
+ */
+ setFullScreen(flag: boolean): void;
+ /**
+ * Sets whether the maximize/zoom window button toggles fullscreen mode or
+ * maximizes the window.
+ */
+ setFullScreenable(fullscreenable: boolean): void;
+ /**
+ * Sets whether the window should have a shadow.
+ */
+ setHasShadow(hasShadow: boolean): void;
+ /**
+ * Sets whether the window will be hidden when the user toggles into mission
+ * control.
+ *
+ * @platform darwin
+ */
+ setHiddenInMissionControl(hidden: boolean): void;
+ /**
+ * Changes window icon.
+ *
+ * @platform win32,linux
+ */
+ setIcon(icon: (NativeImage) | (string)): void;
+ /**
+ * Makes the window ignore all mouse events.
+ *
+ * All mouse events happened in this window will be passed to the window below this
+ * window, but if this window has focus, it will still receive keyboard events.
+ */
+ setIgnoreMouseEvents(ignore: boolean, options?: IgnoreMouseEventsOptions): void;
+ /**
+ * Enters or leaves kiosk mode.
+ */
+ setKiosk(flag: boolean): void;
+ /**
+ * Sets whether the window can be manually maximized by user. On Linux does
+ * nothing.
+ *
+ * @platform darwin,win32
+ */
+ setMaximizable(maximizable: boolean): void;
+ /**
+ * Sets the maximum size of window to `width` and `height`.
+ */
+ setMaximumSize(width: number, height: number): void;
+ /**
+ * Sets the `menu` as the window's menu bar.
+ *
+ * @platform linux,win32
+ */
+ setMenu(menu: (Menu) | (null)): void;
+ /**
+ * Sets whether the menu bar should be visible. If the menu bar is auto-hide, users
+ * can still bring up the menu bar by pressing the single `Alt` key.
+ *
+ * @platform win32,linux
+ */
+ setMenuBarVisibility(visible: boolean): void;
+ /**
+ * Sets whether the window can be manually minimized by user. On Linux does
+ * nothing.
+ *
+ * @platform darwin,win32
+ */
+ setMinimizable(minimizable: boolean): void;
+ /**
+ * Sets the minimum size of window to `width` and `height`.
+ */
+ setMinimumSize(width: number, height: number): void;
+ /**
+ * Sets whether the window can be moved by user. On Linux does nothing.
+ *
+ * @platform darwin,win32
+ */
+ setMovable(movable: boolean): void;
+ /**
+ * Sets the opacity of the window. On Linux, does nothing. Out of bound number
+ * values are clamped to the [0, 1] range.
+ *
+ * @platform win32,darwin
+ */
+ setOpacity(opacity: number): void;
+ /**
+ * Sets a 16 x 16 pixel overlay onto the current taskbar icon, usually used to
+ * convey some sort of application status or to passively notify the user.
+ *
+ * @platform win32
+ */
+ setOverlayIcon(overlay: (NativeImage) | (null), description: string): void;
+ /**
+ * Sets `parent` as current window's parent window, passing `null` will turn
+ * current window into a top-level window.
+ */
+ setParentWindow(parent: (BrowserWindow) | (null)): void;
+ /**
+ * Moves window to `x` and `y`.
+ */
+ setPosition(x: number, y: number, animate?: boolean): void;
+ /**
+ * Sets progress value in progress bar. Valid range is [0, 1.0].
+ *
+ * Remove progress bar when progress < 0; Change to indeterminate mode when
+ * progress > 1.
+ *
+ * On Linux platform, only supports Unity desktop environment, you need to specify
+ * the `*.desktop` file name to `desktopName` field in `package.json`. By default,
+ * it will assume `{app.name}.desktop`.
+ *
+ * On Windows, a mode can be passed. Accepted values are `none`, `normal`,
+ * `indeterminate`, `error`, and `paused`. If you call `setProgressBar` without a
+ * mode set (but with a value within the valid range), `normal` will be assumed.
+ */
+ setProgressBar(progress: number, options?: ProgressBarOptions): void;
+ /**
+ * Sets the pathname of the file the window represents, and the icon of the file
+ * will show in window's title bar.
+ *
+ * @platform darwin
+ */
+ setRepresentedFilename(filename: string): void;
+ /**
+ * Sets whether the window can be manually resized by the user.
+ */
+ setResizable(resizable: boolean): void;
+ /**
+ * Setting a window shape determines the area within the window where the system
+ * permits drawing and user interaction. Outside of the given region, no pixels
+ * will be drawn and no mouse events will be registered. Mouse events outside of
+ * the region will not be received by that window, but will fall through to
+ * whatever is behind the window.
+ *
+ * @experimental
+ * @platform win32,linux
+ */
+ setShape(rects: Rectangle[]): void;
+ /**
+ * Changes the attachment point for sheets on macOS. By default, sheets are
+ * attached just below the window frame, but you may want to display them beneath a
+ * HTML-rendered toolbar. For example:
+ *
+ * @platform darwin
+ */
+ setSheetOffset(offsetY: number, offsetX?: number): void;
+ /**
+ * Enters or leaves simple fullscreen mode.
+ *
+ * Simple fullscreen mode emulates the native fullscreen behavior found in versions
+ * of macOS prior to Lion (10.7).
+ *
+ * @platform darwin
+ */
+ setSimpleFullScreen(flag: boolean): void;
+ /**
+ * Resizes the window to `width` and `height`. If `width` or `height` are below any
+ * set minimum size constraints the window will snap to its minimum size.
+ */
+ setSize(width: number, height: number, animate?: boolean): void;
+ /**
+ * Makes the window not show in the taskbar.
+ *
+ * @platform darwin,win32
+ */
+ setSkipTaskbar(skip: boolean): void;
+ /**
+ * Whether the buttons were added successfully
+ *
+ * Add a thumbnail toolbar with a specified set of buttons to the thumbnail image
+ * of a window in a taskbar button layout. Returns a `boolean` object indicates
+ * whether the thumbnail has been added successfully.
+ *
+ * The number of buttons in thumbnail toolbar should be no greater than 7 due to
+ * the limited room. Once you setup the thumbnail toolbar, the toolbar cannot be
+ * removed due to the platform's limitation. But you can call the API with an empty
+ * array to clean the buttons.
+ *
+ * The `buttons` is an array of `Button` objects:
+ *
+ * * `Button` Object
+ * * `icon` NativeImage - The icon showing in thumbnail toolbar.
+ * * `click` Function
+ * * `tooltip` string (optional) - The text of the button's tooltip.
+ * * `flags` string[] (optional) - Control specific states and behaviors of the
+ * button. By default, it is `['enabled']`.
+ *
+ * The `flags` is an array that can include following `string`s:
+ *
+ * * `enabled` - The button is active and available to the user.
+ * * `disabled` - The button is disabled. It is present, but has a visual state
+ * indicating it will not respond to user action.
+ * * `dismissonclick` - When the button is clicked, the thumbnail window closes
+ * immediately.
+ * * `nobackground` - Do not draw a button border, use only the image.
+ * * `hidden` - The button is not shown to the user.
+ * * `noninteractive` - The button is enabled but not interactive; no pressed
+ * button state is drawn. This value is intended for instances where the button is
+ * used in a notification.
+ *
+ * @platform win32
+ */
+ setThumbarButtons(buttons: ThumbarButton[]): boolean;
+ /**
+ * Sets the region of the window to show as the thumbnail image displayed when
+ * hovering over the window in the taskbar. You can reset the thumbnail to be the
+ * entire window by specifying an empty region: `{ x: 0, y: 0, width: 0, height: 0
+ * }`.
+ *
+ * @platform win32
+ */
+ setThumbnailClip(region: Rectangle): void;
+ /**
+ * Sets the toolTip that is displayed when hovering over the window thumbnail in
+ * the taskbar.
+ *
+ * @platform win32
+ */
+ setThumbnailToolTip(toolTip: string): void;
+ /**
+ * Changes the title of native window to `title`.
+ */
+ setTitle(title: string): void;
+ /**
+ * On a Window with Window Controls Overlay already enabled, this method updates
+ * the style of the title bar overlay.
+ *
+ * @platform win32
+ */
+ setTitleBarOverlay(options: TitleBarOverlayOptions): void;
+ /**
+ * Raises `browserView` above other `BrowserView`s attached to `win`. Throws an
+ * error if `browserView` is not attached to `win`.
+ *
+ * @experimental
+ */
+ setTopBrowserView(browserView: BrowserView): void;
+ /**
+ * Sets the touchBar layout for the current window. Specifying `null` or
+ * `undefined` clears the touch bar. This method only has an effect if the machine
+ * has a touch bar.
+ *
+ * **Note:** The TouchBar API is currently experimental and may change or be
+ * removed in future Electron releases.
+ *
+ * @platform darwin
+ */
+ setTouchBar(touchBar: (TouchBar) | (null)): void;
+ /**
+ * Set a custom position for the traffic light buttons in frameless window. Passing
+ * `{ x: 0, y: 0 }` will reset the position to default.
+ *
+ * > **Note** This function is deprecated. Use setWindowButtonPosition instead.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ setTrafficLightPosition(position: Point): void;
+ /**
+ * Adds a vibrancy effect to the browser window. Passing `null` or an empty string
+ * will remove the vibrancy effect on the window.
+ *
+ * @platform darwin
+ */
+ setVibrancy(type: (('titlebar' | 'selection' | 'menu' | 'popover' | 'sidebar' | 'header' | 'sheet' | 'window' | 'hud' | 'fullscreen-ui' | 'tooltip' | 'content' | 'under-window' | 'under-page')) | (null)): void;
+ /**
+ * Sets whether the window should be visible on all workspaces.
+ *
+ * **Note:** This API does nothing on Windows.
+ *
+ * @platform darwin,linux
+ */
+ setVisibleOnAllWorkspaces(visible: boolean, options?: VisibleOnAllWorkspacesOptions): void;
+ /**
+ * Set a custom position for the traffic light buttons in frameless window. Passing
+ * `null` will reset the position to default.
+ *
+ * @platform darwin
+ */
+ setWindowButtonPosition(position: (Point) | (null)): void;
+ /**
+ * Sets whether the window traffic light buttons should be visible.
+ *
+ * @platform darwin
+ */
+ setWindowButtonVisibility(visible: boolean): void;
+ /**
+ * Shows and gives focus to the window.
+ */
+ show(): void;
+ /**
+ * Shows or hides the tab overview when native tabs are enabled.
+ *
+ * @platform darwin
+ */
+ showAllTabs(): void;
+ /**
+ * Same as `webContents.showDefinitionForSelection()`.
+ *
+ * @platform darwin
+ */
+ showDefinitionForSelection(): void;
+ /**
+ * Shows the window but doesn't focus on it.
+ */
+ showInactive(): void;
+ /**
+ * Toggles the visibility of the tab bar if native tabs are enabled and there is
+ * only one tab in the current window.
+ *
+ * @platform darwin
+ */
+ toggleTabBar(): void;
+ /**
+ * Unhooks all of the window messages.
+ *
+ * @platform win32
+ */
+ unhookAllWindowMessages(): void;
+ /**
+ * Unhook the window message.
+ *
+ * @platform win32
+ */
+ unhookWindowMessage(message: number): void;
+ /**
+ * Unmaximizes the window.
+ */
+ unmaximize(): void;
+ /**
+ * A `string` property that defines an alternative title provided only to
+ * accessibility tools such as screen readers. This string is not directly visible
+ * to users.
+ */
+ accessibleTitle: string;
+ /**
+ * A `boolean` property that determines whether the window menu bar should hide
+ * itself automatically. Once set, the menu bar will only show when users press the
+ * single `Alt` key.
+ *
+ * If the menu bar is already visible, setting this property to `true` won't hide
+ * it immediately.
+ */
+ autoHideMenuBar: boolean;
+ /**
+ * A `boolean` property that determines whether the window can be manually closed
+ * by user.
+ *
+ * On Linux the setter is a no-op, although the getter returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ closable: boolean;
+ /**
+ * A `boolean` property that specifies whether the window’s document has been
+ * edited.
+ *
+ * The icon in title bar will become gray when set to `true`.
+ *
+ * @platform darwin
+ */
+ documentEdited: boolean;
+ /**
+ * A `boolean` property that determines whether the window is excluded from the
+ * application’s Windows menu. `false` by default.
+ *
+ * @platform darwin
+ */
+ excludedFromShownWindowsMenu: boolean;
+ /**
+ * A `boolean` property that determines whether the window is focusable.
+ *
+ * @platform win32,darwin
+ */
+ focusable: boolean;
+ /**
+ * A `boolean` property that determines whether the window is in fullscreen mode.
+ */
+ fullScreen: boolean;
+ /**
+ * A `boolean` property that determines whether the maximize/zoom window button
+ * toggles fullscreen mode or maximizes the window.
+ */
+ fullScreenable: boolean;
+ /**
+ * A `Integer` property representing the unique ID of the window. Each ID is unique
+ * among all `BrowserWindow` instances of the entire Electron application.
+ *
+ */
+ readonly id: number;
+ /**
+ * A `boolean` property that determines whether the window is in kiosk mode.
+ */
+ kiosk: boolean;
+ /**
+ * A `boolean` property that determines whether the window can be manually
+ * maximized by user.
+ *
+ * On Linux the setter is a no-op, although the getter returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ maximizable: boolean;
+ /**
+ * A `boolean` property that determines whether the menu bar should be visible.
+ *
+ * **Note:** If the menu bar is auto-hide, users can still bring up the menu bar by
+ * pressing the single `Alt` key.
+ *
+ * @platform win32,linux
+ */
+ menuBarVisible: boolean;
+ /**
+ * A `boolean` property that determines whether the window can be manually
+ * minimized by user.
+ *
+ * On Linux the setter is a no-op, although the getter returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ minimizable: boolean;
+ /**
+ * A `boolean` property that determines Whether the window can be moved by user.
+ *
+ * On Linux the setter is a no-op, although the getter returns `true`.
+ *
+ * @platform darwin,win32
+ */
+ movable: boolean;
+ /**
+ * A `string` property that determines the pathname of the file the window
+ * represents, and the icon of the file will show in window's title bar.
+ *
+ * @platform darwin
+ */
+ representedFilename: string;
+ /**
+ * A `boolean` property that determines whether the window can be manually resized
+ * by user.
+ */
+ resizable: boolean;
+ /**
+ * A `boolean` property that determines whether the window has a shadow.
+ */
+ shadow: boolean;
+ /**
+ * A `boolean` property that determines whether the window is in simple (pre-Lion)
+ * fullscreen mode.
+ */
+ simpleFullScreen: boolean;
+ /**
+ * A `string` (optional) property that is equal to the `tabbingIdentifier` passed
+ * to the `BrowserWindow` constructor or `undefined` if none was set.
+ *
+ * @platform darwin
+ */
+ readonly tabbingIdentifier?: string;
+ /**
+ * A `string` property that determines the title of the native window.
+ *
+ * **Note:** The title of the web page can be different from the title of the
+ * native window.
+ */
+ title: string;
+ /**
+ * A `boolean` property that determines whether the window is visible on all
+ * workspaces.
+ *
+ * **Note:** Always returns false on Windows.
+ *
+ * @platform darwin,linux
+ */
+ visibleOnAllWorkspaces: boolean;
+ /**
+ * A `WebContents` object this window owns. All web page related events and
+ * operations will be done via it.
+ *
+ * See the `webContents` documentation for its methods and events.
+ *
+ */
+ readonly webContents: WebContents;
+ }
+
+ interface BrowserWindowConstructorOptions {
+
+ // Docs: https://electronjs.org/docs/api/structures/browser-window-options
+
+ /**
+ * Whether clicking an inactive window will also click through to the web contents.
+ * Default is `false` on macOS. This option is not configurable on other platforms.
+ *
+ * @platform darwin
+ */
+ acceptFirstMouse?: boolean;
+ /**
+ * Whether the window should always stay on top of other windows. Default is
+ * `false`.
+ */
+ alwaysOnTop?: boolean;
+ /**
+ * Auto hide the menu bar unless the `Alt` key is pressed. Default is `false`.
+ */
+ autoHideMenuBar?: boolean;
+ /**
+ * The window's background color in Hex, RGB, RGBA, HSL, HSLA or named CSS color
+ * format. Alpha in #AARRGGBB format is supported if `transparent` is set to
+ * `true`. Default is `#FFF` (white). See win.setBackgroundColor for more
+ * information.
+ */
+ backgroundColor?: string;
+ /**
+ * Set the window's system-drawn background material, including behind the
+ * non-client area. Can be `auto`, `none`, `mica`, `acrylic` or `tabbed`. See
+ * win.setBackgroundMaterial for more information.
+ *
+ * @platform win32
+ */
+ backgroundMaterial?: ('auto' | 'none' | 'mica' | 'acrylic' | 'tabbed');
+ /**
+ * Show window in the center of the screen. Default is `false`.
+ */
+ center?: boolean;
+ /**
+ * Whether window is closable. This is not implemented on Linux. Default is `true`.
+ *
+ * @platform darwin,win32
+ */
+ closable?: boolean;
+ /**
+ * Forces using dark theme for the window, only works on some GTK+3 desktop
+ * environments. Default is `false`.
+ */
+ darkTheme?: boolean;
+ /**
+ * Whether to hide cursor when typing. Default is `false`.
+ */
+ disableAutoHideCursor?: boolean;
+ /**
+ * Enable the window to be resized larger than screen. Only relevant for macOS, as
+ * other OSes allow larger-than-screen windows by default. Default is `false`.
+ *
+ * @platform darwin
+ */
+ enableLargerThanScreen?: boolean;
+ /**
+ * Whether the window can be focused. Default is `true`. On Windows setting
+ * `focusable: false` also implies setting `skipTaskbar: true`. On Linux setting
+ * `focusable: false` makes the window stop interacting with wm, so the window will
+ * always stay on top in all workspaces.
+ */
+ focusable?: boolean;
+ /**
+ * Specify `false` to create a frameless window. Default is `true`.
+ */
+ frame?: boolean;
+ /**
+ * Whether the window should show in fullscreen. When explicitly set to `false` the
+ * fullscreen button will be hidden or disabled on macOS. Default is `false`.
+ */
+ fullscreen?: boolean;
+ /**
+ * Whether the window can be put into fullscreen mode. On macOS, also whether the
+ * maximize/zoom button should toggle full screen mode or maximize window. Default
+ * is `true`.
+ */
+ fullscreenable?: boolean;
+ /**
+ * Shows the title in the title bar in full screen mode on macOS for `hiddenInset`
+ * titleBarStyle. Default is `false`.
+ *
+ * @deprecated
+ * @platform darwin
+ */
+ fullscreenWindowTitle?: boolean;
+ /**
+ * Whether window should have a shadow. Default is `true`.
+ */
+ hasShadow?: boolean;
+ /**
+ * Window's height in pixels. Default is `600`.
+ */
+ height?: number;
+ /**
+ * Whether window should be hidden when the user toggles into mission control.
+ *
+ * @platform darwin
+ */
+ hiddenInMissionControl?: boolean;
+ /**
+ * The window icon. On Windows it is recommended to use `ICO` icons to get best
+ * visual effects, you can also leave it undefined so the executable's icon will be
+ * used.
+ */
+ icon?: (NativeImage) | (string);
+ /**
+ * Whether the window is in kiosk mode. Default is `false`.
+ */
+ kiosk?: boolean;
+ /**
+ * Window's maximum height. Default is no limit.
+ */
+ maxHeight?: number;
+ /**
+ * Whether window is maximizable. This is not implemented on Linux. Default is
+ * `true`.
+ *
+ * @platform darwin,win32
+ */
+ maximizable?: boolean;
+ /**
+ * Window's maximum width. Default is no limit.
+ */
+ maxWidth?: number;
+ /**
+ * Window's minimum height. Default is `0`.
+ */
+ minHeight?: number;
+ /**
+ * Whether window is minimizable. This is not implemented on Linux. Default is
+ * `true`.
+ *
+ * @platform darwin,win32
+ */
+ minimizable?: boolean;
+ /**
+ * Window's minimum width. Default is `0`.
+ */
+ minWidth?: number;
+ /**
+ * Whether this is a modal window. This only works when the window is a child
+ * window. Default is `false`.
+ */
+ modal?: boolean;
+ /**
+ * Whether window is movable. This is not implemented on Linux. Default is `true`.
+ *
+ * @platform darwin,win32
+ */
+ movable?: boolean;
+ /**
+ * Set the initial opacity of the window, between 0.0 (fully transparent) and 1.0
+ * (fully opaque). This is only implemented on Windows and macOS.
+ *
+ * @platform darwin,win32
+ */
+ opacity?: number;
+ /**
+ * Whether the renderer should be active when `show` is `false` and it has just
+ * been created. In order for `document.visibilityState` to work correctly on
+ * first load with `show: false` you should set this to `false`. Setting this to
+ * `false` will cause the `ready-to-show` event to not fire. Default is `true`.
+ */
+ paintWhenInitiallyHidden?: boolean;
+ /**
+ * Specify parent window. Default is `null`.
+ */
+ parent?: BrowserWindow;
+ /**
+ * Whether window is resizable. Default is `true`.
+ */
+ resizable?: boolean;
+ /**
+ * Whether frameless window should have rounded corners on macOS. Default is
+ * `true`. Setting this property to `false` will prevent the window from being
+ * fullscreenable.
+ *
+ * @platform darwin
+ */
+ roundedCorners?: boolean;
+ /**
+ * Whether window should be shown when created. Default is `true`.
+ */
+ show?: boolean;
+ /**
+ * Use pre-Lion fullscreen on macOS. Default is `false`.
+ *
+ * @platform darwin
+ */
+ simpleFullscreen?: boolean;
+ /**
+ * Whether to show the window in taskbar. Default is `false`.
+ *
+ * @platform darwin,win32
+ */
+ skipTaskbar?: boolean;
+ /**
+ * Tab group name, allows opening the window as a native tab. Windows with the same
+ * tabbing identifier will be grouped together. This also adds a native new tab
+ * button to your window's tab bar and allows your `app` and window to receive the
+ * `new-window-for-tab` event.
+ *
+ * @platform darwin
+ */
+ tabbingIdentifier?: string;
+ /**
+ * Use `WS_THICKFRAME` style for frameless windows on Windows, which adds standard
+ * window frame. Setting it to `false` will remove window shadow and window
+ * animations. Default is `true`.
+ */
+ thickFrame?: boolean;
+ /**
+ * Default window title. Default is `"Electron"`. If the HTML tag `<title>` is
+ * defined in the HTML file loaded by `loadURL()`, this property will be ignored.
+ */
+ title?: string;
+ /**
+ * When using a frameless window in conjunction with
+ * `win.setWindowButtonVisibility(true)` on macOS or using a `titleBarStyle` so
+ * that the standard window controls ("traffic lights" on macOS) are visible, this
+ * property enables the Window Controls Overlay JavaScript APIs and CSS Environment
+ * Variables. Specifying `true` will result in an overlay with default system
+ * colors. Default is `false`.
+ */
+ titleBarOverlay?: (TitleBarOverlay) | (boolean);
+ /**
+ * The style of window title bar. Default is `default`. Possible values are:
+ *
+ * @platform darwin,win32
+ */
+ titleBarStyle?: ('default' | 'hidden' | 'hiddenInset' | 'customButtonsOnHover');
+ /**
+ * Set a custom position for the traffic light buttons in frameless windows.
+ *
+ * @platform darwin
+ */
+ trafficLightPosition?: Point;
+ /**
+ * Makes the window transparent. Default is `false`. On Windows, does not work
+ * unless the window is frameless.
+ */
+ transparent?: boolean;
+ /**
+ * The type of window, default is normal window. See more about this below.
+ */
+ type?: string;
+ /**
+ * The `width` and `height` would be used as web page's size, which means the
+ * actual window's size will include window frame's size and be slightly larger.
+ * Default is `false`.
+ */
+ useContentSize?: boolean;
+ /**
+ * Add a type of vibrancy effect to the window, only on macOS. Can be
+ * `appearance-based`, `titlebar`, `selection`, `menu`, `popover`, `sidebar`,
+ * `header`, `sheet`, `window`, `hud`, `fullscreen-ui`, `tooltip`, `content`,
+ * `under-window`, or `under-page`.
+ *
+ * @platform darwin
+ */
+ vibrancy?: ('appearance-based' | 'titlebar' | 'selection' | 'menu' | 'popover' | 'sidebar' | 'header' | 'sheet' | 'window' | 'hud' | 'fullscreen-ui' | 'tooltip' | 'content' | 'under-window' | 'under-page');
+ /**
+ * Specify how the material appearance should reflect window activity state on
+ * macOS. Must be used with the `vibrancy` property. Possible values are:
+ *
+ * @platform darwin
+ */
+ visualEffectState?: ('followWindow' | 'active' | 'inactive');
+ /**
+ * Settings of web page's features.
+ */
+ webPreferences?: WebPreferences;
+ /**
+ * Window's width in pixels. Default is `800`.
+ */
+ width?: number;
+ /**
+ * (**required** if y is used) Window's left offset from screen. Default is to
+ * center the window.
+ */
+ x?: number;
+ /**
+ * (**required** if x is used) Window's top offset from screen. Default is to
+ * center the window.
+ */
+ y?: number;
+ /**
+ * Controls the behavior on macOS when option-clicking the green stoplight button
+ * on the toolbar or by clicking the Window > Zoom menu item. If `true`, the window
+ * will grow to the preferred width of the web page when zoomed, `false` will cause
+ * it to zoom to the width of the screen. This will also affect the behavior when
+ * calling `maximize()` directly. Default is `false`.
+ *
+ * @platform darwin
+ */
+ zoomToPageWidth?: boolean;
+ }
+
+ interface Certificate {
+
+ // Docs: https://electronjs.org/docs/api/structures/certificate
+
+ /**
+ * PEM encoded data
+ */
+ data: string;
+ /**
+ * Fingerprint of the certificate
+ */
+ fingerprint: string;
+ /**
+ * Issuer principal
+ */
+ issuer: CertificatePrincipal;
+ /**
+ * Issuer certificate (if not self-signed)
+ */
+ issuerCert: Certificate;
+ /**
+ * Issuer's Common Name
+ */
+ issuerName: string;
+ /**
+ * Hex value represented string
+ */
+ serialNumber: string;
+ /**
+ * Subject principal
+ */
+ subject: CertificatePrincipal;
+ /**
+ * Subject's Common Name
+ */
+ subjectName: string;
+ /**
+ * End date of the certificate being valid in seconds
+ */
+ validExpiry: number;
+ /**
+ * Start date of the certificate being valid in seconds
+ */
+ validStart: number;
+ }
+
+ interface CertificatePrincipal {
+
+ // Docs: https://electronjs.org/docs/api/structures/certificate-principal
+
+ /**
+ * Common Name.
+ */
+ commonName: string;
+ /**
+ * Country or region.
+ */
+ country: string;
+ /**
+ * Locality.
+ */
+ locality: string;
+ /**
+ * Organization names.
+ */
+ organizations: string[];
+ /**
+ * Organization Unit names.
+ */
+ organizationUnits: string[];
+ /**
+ * State or province.
+ */
+ state: string;
+ }
+
+ class ClientRequest extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/client-request
+
+ /**
+ * Emitted when the `request` is aborted. The `abort` event will not be fired if
+ * the `request` is already closed.
+ */
+ on(event: 'abort', listener: Function): this;
+ once(event: 'abort', listener: Function): this;
+ addListener(event: 'abort', listener: Function): this;
+ removeListener(event: 'abort', listener: Function): this;
+ /**
+ * Emitted as the last event in the HTTP request-response transaction. The `close`
+ * event indicates that no more events will be emitted on either the `request` or
+ * `response` objects.
+ */
+ on(event: 'close', listener: Function): this;
+ once(event: 'close', listener: Function): this;
+ addListener(event: 'close', listener: Function): this;
+ removeListener(event: 'close', listener: Function): this;
+ /**
+ * Emitted when the `net` module fails to issue a network request. Typically when
+ * the `request` object emits an `error` event, a `close` event will subsequently
+ * follow and no response object will be provided.
+ */
+ on(event: 'error', listener: (
+ /**
+ * an error object providing some information about the failure.
+ */
+ error: Error) => void): this;
+ once(event: 'error', listener: (
+ /**
+ * an error object providing some information about the failure.
+ */
+ error: Error) => void): this;
+ addListener(event: 'error', listener: (
+ /**
+ * an error object providing some information about the failure.
+ */
+ error: Error) => void): this;
+ removeListener(event: 'error', listener: (
+ /**
+ * an error object providing some information about the failure.
+ */
+ error: Error) => void): this;
+ /**
+ * Emitted just after the last chunk of the `request`'s data has been written into
+ * the `request` object.
+ */
+ on(event: 'finish', listener: Function): this;
+ once(event: 'finish', listener: Function): this;
+ addListener(event: 'finish', listener: Function): this;
+ removeListener(event: 'finish', listener: Function): this;
+ /**
+ * Emitted when an authenticating proxy is asking for user credentials.
+ *
+ * The `callback` function is expected to be called back with user credentials:
+ *
+ * * `username` string
+ * * `password` string
+ *
+ * Providing empty credentials will cancel the request and report an authentication
+ * error on the response object:
+ */
+ on(event: 'login', listener: (authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ once(event: 'login', listener: (authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ addListener(event: 'login', listener: (authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ removeListener(event: 'login', listener: (authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ /**
+ * Emitted when the server returns a redirect response (e.g. 301 Moved
+ * Permanently). Calling `request.followRedirect` will continue with the
+ * redirection. If this event is handled, `request.followRedirect` must be called
+ * **synchronously**, otherwise the request will be cancelled.
+ */
+ on(event: 'redirect', listener: (statusCode: number,
+ method: string,
+ redirectUrl: string,
+ responseHeaders: Record<string, string[]>) => void): this;
+ once(event: 'redirect', listener: (statusCode: number,
+ method: string,
+ redirectUrl: string,
+ responseHeaders: Record<string, string[]>) => void): this;
+ addListener(event: 'redirect', listener: (statusCode: number,
+ method: string,
+ redirectUrl: string,
+ responseHeaders: Record<string, string[]>) => void): this;
+ removeListener(event: 'redirect', listener: (statusCode: number,
+ method: string,
+ redirectUrl: string,
+ responseHeaders: Record<string, string[]>) => void): this;
+ on(event: 'response', listener: (
+ /**
+ * An object representing the HTTP response message.
+ */
+ response: IncomingMessage) => void): this;
+ once(event: 'response', listener: (
+ /**
+ * An object representing the HTTP response message.
+ */
+ response: IncomingMessage) => void): this;
+ addListener(event: 'response', listener: (
+ /**
+ * An object representing the HTTP response message.
+ */
+ response: IncomingMessage) => void): this;
+ removeListener(event: 'response', listener: (
+ /**
+ * An object representing the HTTP response message.
+ */
+ response: IncomingMessage) => void): this;
+ /**
+ * ClientRequest
+ */
+ constructor(options: (ClientRequestConstructorOptions) | (string));
+ /**
+ * Cancels an ongoing HTTP transaction. If the request has already emitted the
+ * `close` event, the abort operation will have no effect. Otherwise an ongoing
+ * event will emit `abort` and `close` events. Additionally, if there is an ongoing
+ * response object,it will emit the `aborted` event.
+ */
+ abort(): void;
+ /**
+ * Sends the last chunk of the request data. Subsequent write or end operations
+ * will not be allowed. The `finish` event is emitted just after the end operation.
+ */
+ end(chunk?: (string) | (Buffer), encoding?: string, callback?: () => void): this;
+ /**
+ * Continues any pending redirection. Can only be called during a `'redirect'`
+ * event.
+ */
+ followRedirect(): void;
+ /**
+ * The value of a previously set extra header name.
+ */
+ getHeader(name: string): string;
+ /**
+ * * `active` boolean - Whether the request is currently active. If this is false
+ * no other properties will be set
+ * * `started` boolean - Whether the upload has started. If this is false both
+ * `current` and `total` will be set to 0.
+ * * `current` Integer - The number of bytes that have been uploaded so far
+ * * `total` Integer - The number of bytes that will be uploaded this request
+ *
+ * You can use this method in conjunction with `POST` requests to get the progress
+ * of a file upload or other data transfer.
+ */
+ getUploadProgress(): UploadProgress;
+ /**
+ * Removes a previously set extra header name. This method can be called only
+ * before first write. Trying to call it after the first write will throw an error.
+ */
+ removeHeader(name: string): void;
+ /**
+ * Adds an extra HTTP header. The header name will be issued as-is without
+ * lowercasing. It can be called only before first write. Calling this method after
+ * the first write will throw an error. If the passed value is not a `string`, its
+ * `toString()` method will be called to obtain the final value.
+ *
+ * Certain headers are restricted from being set by apps. These headers are listed
+ * below. More information on restricted headers can be found in Chromium's header
+ * utils.
+ *
+ * * `Content-Length`
+ * * `Host`
+ * * `Trailer` or `Te`
+ * * `Upgrade`
+ * * `Cookie2`
+ * * `Keep-Alive`
+ * * `Transfer-Encoding`
+ *
+ * Additionally, setting the `Connection` header to the value `upgrade` is also
+ * disallowed.
+ */
+ setHeader(name: string, value: string): void;
+ /**
+ * `callback` is essentially a dummy function introduced in the purpose of keeping
+ * similarity with the Node.js API. It is called asynchronously in the next tick
+ * after `chunk` content have been delivered to the Chromium networking layer.
+ * Contrary to the Node.js implementation, it is not guaranteed that `chunk`
+ * content have been flushed on the wire before `callback` is called.
+ *
+ * Adds a chunk of data to the request body. The first write operation may cause
+ * the request headers to be issued on the wire. After the first write operation,
+ * it is not allowed to add or remove a custom header.
+ */
+ write(chunk: (string) | (Buffer), encoding?: string, callback?: () => void): void;
+ /**
+ * A `boolean` specifying whether the request will use HTTP chunked transfer
+ * encoding or not. Defaults to false. The property is readable and writable,
+ * however it can be set only before the first write operation as the HTTP headers
+ * are not yet put on the wire. Trying to set the `chunkedEncoding` property after
+ * the first write will throw an error.
+ *
+ * Using chunked encoding is strongly recommended if you need to send a large
+ * request body as data will be streamed in small chunks instead of being
+ * internally buffered inside Electron process memory.
+ */
+ chunkedEncoding: boolean;
+ }
+
+ interface Clipboard {
+
+ // Docs: https://electronjs.org/docs/api/clipboard
+
+ /**
+ * An array of supported formats for the clipboard `type`.
+ */
+ availableFormats(type?: 'selection' | 'clipboard'): string[];
+ /**
+ * Clears the clipboard content.
+ */
+ clear(type?: 'selection' | 'clipboard'): void;
+ /**
+ * Whether the clipboard supports the specified `format`.
+ *
+ * @experimental
+ */
+ has(format: string, type?: 'selection' | 'clipboard'): boolean;
+ /**
+ * Reads `format` type from the clipboard.
+ *
+ * `format` should contain valid ASCII characters and have `/` separator. `a/c`,
+ * `a/bc` are valid formats while `/abc`, `abc/`, `a/`, `/a`, `a` are not valid.
+ *
+ * @experimental
+ */
+ read(format: string): string;
+ /**
+ * * `title` string
+ * * `url` string
+ *
+ * Returns an Object containing `title` and `url` keys representing the bookmark in
+ * the clipboard. The `title` and `url` values will be empty strings when the
+ * bookmark is unavailable. The `title` value will always be empty on Windows.
+ *
+ * @platform darwin,win32
+ */
+ readBookmark(): ReadBookmark;
+ /**
+ * Reads `format` type from the clipboard.
+ *
+ * @experimental
+ */
+ readBuffer(format: string): Buffer;
+ /**
+ * The text on the find pasteboard, which is the pasteboard that holds information
+ * about the current state of the active application’s find panel.
+ *
+ * This method uses synchronous IPC when called from the renderer process. The
+ * cached value is reread from the find pasteboard whenever the application is
+ * activated.
+ *
+ * @platform darwin
+ */
+ readFindText(): string;
+ /**
+ * The content in the clipboard as markup.
+ */
+ readHTML(type?: 'selection' | 'clipboard'): string;
+ /**
+ * The image content in the clipboard.
+ */
+ readImage(type?: 'selection' | 'clipboard'): NativeImage;
+ /**
+ * The content in the clipboard as RTF.
+ */
+ readRTF(type?: 'selection' | 'clipboard'): string;
+ /**
+ * The content in the clipboard as plain text.
+ */
+ readText(type?: 'selection' | 'clipboard'): string;
+ /**
+ * Writes `data` to the clipboard.
+ */
+ write(data: Data, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes the `title` (macOS only) and `url` into the clipboard as a bookmark.
+ *
+ * **Note:** Most apps on Windows don't support pasting bookmarks into them so you
+ * can use `clipboard.write` to write both a bookmark and fallback text to the
+ * clipboard.
+ *
+ * @platform darwin,win32
+ */
+ writeBookmark(title: string, url: string, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes the `buffer` into the clipboard as `format`.
+ *
+ * @experimental
+ */
+ writeBuffer(format: string, buffer: Buffer, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes the `text` into the find pasteboard (the pasteboard that holds
+ * information about the current state of the active application’s find panel) as
+ * plain text. This method uses synchronous IPC when called from the renderer
+ * process.
+ *
+ * @platform darwin
+ */
+ writeFindText(text: string): void;
+ /**
+ * Writes `markup` to the clipboard.
+ */
+ writeHTML(markup: string, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes `image` to the clipboard.
+ */
+ writeImage(image: NativeImage, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes the `text` into the clipboard in RTF.
+ */
+ writeRTF(text: string, type?: 'selection' | 'clipboard'): void;
+ /**
+ * Writes the `text` into the clipboard as plain text.
+ */
+ writeText(text: string, type?: 'selection' | 'clipboard'): void;
+ }
+
+ class CommandLine {
+
+ // Docs: https://electronjs.org/docs/api/command-line
+
+ /**
+ * Append an argument to Chromium's command line. The argument will be quoted
+ * correctly. Switches will precede arguments regardless of appending order.
+ *
+ * If you're appending an argument like `--switch=value`, consider using
+ * `appendSwitch('switch', 'value')` instead.
+ *
+ * **Note:** This will not affect `process.argv`. The intended usage of this
+ * function is to control Chromium's behavior.
+ */
+ appendArgument(value: string): void;
+ /**
+ * Append a switch (with optional `value`) to Chromium's command line.
+ *
+ * **Note:** This will not affect `process.argv`. The intended usage of this
+ * function is to control Chromium's behavior.
+ */
+ appendSwitch(the_switch: string, value?: string): void;
+ /**
+ * The command-line switch value.
+ *
+ * **Note:** When the switch is not present or has no value, it returns empty
+ * string.
+ */
+ getSwitchValue(the_switch: string): string;
+ /**
+ * Whether the command-line switch is present.
+ */
+ hasSwitch(the_switch: string): boolean;
+ /**
+ * Removes the specified switch from Chromium's command line.
+ *
+ * **Note:** This will not affect `process.argv`. The intended usage of this
+ * function is to control Chromium's behavior.
+ */
+ removeSwitch(the_switch: string): void;
+ }
+
+ interface ContentTracing {
+
+ // Docs: https://electronjs.org/docs/api/content-tracing
+
+ /**
+ * resolves with an array of category groups once all child processes have
+ * acknowledged the `getCategories` request
+ *
+ * Get a set of category groups. The category groups can change as new code paths
+ * are reached. See also the list of built-in tracing categories.
+ *
+ * > **NOTE:** Electron adds a non-default tracing category called `"electron"`.
+ * This category can be used to capture Electron-specific tracing events.
+ */
+ getCategories(): Promise<string[]>;
+ /**
+ * Resolves with an object containing the `value` and `percentage` of trace buffer
+ * maximum usage
+ *
+ * * `value` number
+ * * `percentage` number
+ *
+ * Get the maximum usage across processes of trace buffer as a percentage of the
+ * full state.
+ */
+ getTraceBufferUsage(): Promise<Electron.TraceBufferUsageReturnValue>;
+ /**
+ * resolved once all child processes have acknowledged the `startRecording`
+ * request.
+ *
+ * Start recording on all processes.
+ *
+ * Recording begins immediately locally and asynchronously on child processes as
+ * soon as they receive the EnableRecording request.
+ *
+ * If a recording is already running, the promise will be immediately resolved, as
+ * only one trace operation can be in progress at a time.
+ */
+ startRecording(options: (TraceConfig) | (TraceCategoriesAndOptions)): Promise<void>;
+ /**
+ * resolves with a path to a file that contains the traced data once all child
+ * processes have acknowledged the `stopRecording` request
+ *
+ * Stop recording on all processes.
+ *
+ * Child processes typically cache trace data and only rarely flush and send trace
+ * data back to the main process. This helps to minimize the runtime overhead of
+ * tracing since sending trace data over IPC can be an expensive operation. So, to
+ * end tracing, Chromium asynchronously asks all child processes to flush any
+ * pending trace data.
+ *
+ * Trace data will be written into `resultFilePath`. If `resultFilePath` is empty
+ * or not provided, trace data will be written to a temporary file, and the path
+ * will be returned in the promise.
+ */
+ stopRecording(resultFilePath?: string): Promise<string>;
+ }
+
+ interface ContextBridge {
+
+ // Docs: https://electronjs.org/docs/api/context-bridge
+
+ exposeInIsolatedWorld(worldId: number, apiKey: string, api: any): void;
+ exposeInMainWorld(apiKey: string, api: any): void;
+ }
+
+ interface Cookie {
+
+ // Docs: https://electronjs.org/docs/api/structures/cookie
+
+ /**
+ * The domain of the cookie; this will be normalized with a preceding dot so that
+ * it's also valid for subdomains.
+ */
+ domain?: string;
+ /**
+ * The expiration date of the cookie as the number of seconds since the UNIX epoch.
+ * Not provided for session cookies.
+ */
+ expirationDate?: number;
+ /**
+ * Whether the cookie is a host-only cookie; this will only be `true` if no domain
+ * was passed.
+ */
+ hostOnly?: boolean;
+ /**
+ * Whether the cookie is marked as HTTP only.
+ */
+ httpOnly?: boolean;
+ /**
+ * The name of the cookie.
+ */
+ name: string;
+ /**
+ * The path of the cookie.
+ */
+ path?: string;
+ /**
+ * The Same Site policy applied to this cookie. Can be `unspecified`,
+ * `no_restriction`, `lax` or `strict`.
+ */
+ sameSite: ('unspecified' | 'no_restriction' | 'lax' | 'strict');
+ /**
+ * Whether the cookie is marked as secure.
+ */
+ secure?: boolean;
+ /**
+ * Whether the cookie is a session cookie or a persistent cookie with an expiration
+ * date.
+ */
+ session?: boolean;
+ /**
+ * The value of the cookie.
+ */
+ value: string;
+ }
+
+ class Cookies extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/cookies
+
+ /**
+ * Emitted when a cookie is changed because it was added, edited, removed, or
+ * expired.
+ */
+ on(event: 'changed', listener: (event: Event,
+ /**
+ * The cookie that was changed.
+ */
+ cookie: Cookie,
+ /**
+ * The cause of the change with one of the following values:
+ */
+ cause: ('explicit' | 'overwrite' | 'expired' | 'evicted' | 'expired-overwrite'),
+ /**
+ * `true` if the cookie was removed, `false` otherwise.
+ */
+ removed: boolean) => void): this;
+ once(event: 'changed', listener: (event: Event,
+ /**
+ * The cookie that was changed.
+ */
+ cookie: Cookie,
+ /**
+ * The cause of the change with one of the following values:
+ */
+ cause: ('explicit' | 'overwrite' | 'expired' | 'evicted' | 'expired-overwrite'),
+ /**
+ * `true` if the cookie was removed, `false` otherwise.
+ */
+ removed: boolean) => void): this;
+ addListener(event: 'changed', listener: (event: Event,
+ /**
+ * The cookie that was changed.
+ */
+ cookie: Cookie,
+ /**
+ * The cause of the change with one of the following values:
+ */
+ cause: ('explicit' | 'overwrite' | 'expired' | 'evicted' | 'expired-overwrite'),
+ /**
+ * `true` if the cookie was removed, `false` otherwise.
+ */
+ removed: boolean) => void): this;
+ removeListener(event: 'changed', listener: (event: Event,
+ /**
+ * The cookie that was changed.
+ */
+ cookie: Cookie,
+ /**
+ * The cause of the change with one of the following values:
+ */
+ cause: ('explicit' | 'overwrite' | 'expired' | 'evicted' | 'expired-overwrite'),
+ /**
+ * `true` if the cookie was removed, `false` otherwise.
+ */
+ removed: boolean) => void): this;
+ /**
+ * A promise which resolves when the cookie store has been flushed
+ *
+ * Writes any unwritten cookies data to disk
+ *
+ * Cookies written by any method will not be written to disk immediately, but will
+ * be written every 30 seconds or 512 operations
+ *
+ * Calling this method can cause the cookie to be written to disk immediately.
+ */
+ flushStore(): Promise<void>;
+ /**
+ * A promise which resolves an array of cookie objects.
+ *
+ * Sends a request to get all cookies matching `filter`, and resolves a promise
+ * with the response.
+ */
+ get(filter: CookiesGetFilter): Promise<Electron.Cookie[]>;
+ /**
+ * A promise which resolves when the cookie has been removed
+ *
+ * Removes the cookies matching `url` and `name`
+ */
+ remove(url: string, name: string): Promise<void>;
+ /**
+ * A promise which resolves when the cookie has been set
+ *
+ * Sets a cookie with `details`.
+ */
+ set(details: CookiesSetDetails): Promise<void>;
+ }
+
+ interface CPUUsage {
+
+ // Docs: https://electronjs.org/docs/api/structures/cpu-usage
+
+ /**
+ * The number of average idle CPU wakeups per second since the last call to
+ * getCPUUsage. First call returns 0. Will always return 0 on Windows.
+ */
+ idleWakeupsPerSecond: number;
+ /**
+ * Percentage of CPU used since the last call to getCPUUsage. First call returns 0.
+ */
+ percentCPUUsage: number;
+ }
+
+ interface CrashReport {
+
+ // Docs: https://electronjs.org/docs/api/structures/crash-report
+
+ date: Date;
+ id: string;
+ }
+
+ interface CrashReporter {
+
+ // Docs: https://electronjs.org/docs/api/crash-reporter
+
+ /**
+ * Set an extra parameter to be sent with the crash report. The values specified
+ * here will be sent in addition to any values set via the `extra` option when
+ * `start` was called.
+ *
+ * Parameters added in this fashion (or via the `extra` parameter to
+ * `crashReporter.start`) are specific to the calling process. Adding extra
+ * parameters in the main process will not cause those parameters to be sent along
+ * with crashes from renderer or other child processes. Similarly, adding extra
+ * parameters in a renderer process will not result in those parameters being sent
+ * with crashes that occur in other renderer processes or in the main process.
+ *
+ * **Note:** Parameters have limits on the length of the keys and values. Key names
+ * must be no longer than 39 bytes, and values must be no longer than 20320 bytes.
+ * Keys with names longer than the maximum will be silently ignored. Key values
+ * longer than the maximum length will be truncated.
+ */
+ addExtraParameter(key: string, value: string): void;
+ /**
+ * The date and ID of the last crash report. Only crash reports that have been
+ * uploaded will be returned; even if a crash report is present on disk it will not
+ * be returned until it is uploaded. In the case that there are no uploaded
+ * reports, `null` is returned.
+ *
+ * **Note:** This method is only available in the main process.
+ */
+ getLastCrashReport(): CrashReport;
+ /**
+ * The current 'extra' parameters of the crash reporter.
+ */
+ getParameters(): Record<string, string>;
+ /**
+ * Returns all uploaded crash reports. Each report contains the date and uploaded
+ * ID.
+ *
+ * **Note:** This method is only available in the main process.
+ */
+ getUploadedReports(): CrashReport[];
+ /**
+ * Whether reports should be submitted to the server. Set through the `start`
+ * method or `setUploadToServer`.
+ *
+ * **Note:** This method is only available in the main process.
+ */
+ getUploadToServer(): boolean;
+ /**
+ * Remove an extra parameter from the current set of parameters. Future crashes
+ * will not include this parameter.
+ */
+ removeExtraParameter(key: string): void;
+ /**
+ * This would normally be controlled by user preferences. This has no effect if
+ * called before `start` is called.
+ *
+ * **Note:** This method is only available in the main process.
+ */
+ setUploadToServer(uploadToServer: boolean): void;
+ /**
+ * This method must be called before using any other `crashReporter` APIs. Once
+ * initialized this way, the crashpad handler collects crashes from all
+ * subsequently created processes. The crash reporter cannot be disabled once
+ * started.
+ *
+ * This method should be called as early as possible in app startup, preferably
+ * before `app.on('ready')`. If the crash reporter is not initialized at the time a
+ * renderer process is created, then that renderer process will not be monitored by
+ * the crash reporter.
+ *
+ * **Note:** You can test out the crash reporter by generating a crash using
+ * `process.crash()`.
+ *
+ * **Note:** If you need to send additional/updated `extra` parameters after your
+ * first call `start` you can call `addExtraParameter`.
+ *
+ * **Note:** Parameters passed in `extra`, `globalExtra` or set with
+ * `addExtraParameter` have limits on the length of the keys and values. Key names
+ * must be at most 39 bytes long, and values must be no longer than 127 bytes. Keys
+ * with names longer than the maximum will be silently ignored. Key values longer
+ * than the maximum length will be truncated.
+ *
+ * **Note:** This method is only available in the main process.
+ */
+ start(options: CrashReporterStartOptions): void;
+ }
+
+ interface CustomScheme {
+
+ // Docs: https://electronjs.org/docs/api/structures/custom-scheme
+
+ privileges?: Privileges;
+ /**
+ * Custom schemes to be registered with options.
+ */
+ scheme: string;
+ }
+
+ class Debugger extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/debugger
+
+ /**
+ * Emitted when the debugging session is terminated. This happens either when
+ * `webContents` is closed or devtools is invoked for the attached `webContents`.
+ */
+ on(event: 'detach', listener: (event: Event,
+ /**
+ * Reason for detaching debugger.
+ */
+ reason: string) => void): this;
+ once(event: 'detach', listener: (event: Event,
+ /**
+ * Reason for detaching debugger.
+ */
+ reason: string) => void): this;
+ addListener(event: 'detach', listener: (event: Event,
+ /**
+ * Reason for detaching debugger.
+ */
+ reason: string) => void): this;
+ removeListener(event: 'detach', listener: (event: Event,
+ /**
+ * Reason for detaching debugger.
+ */
+ reason: string) => void): this;
+ /**
+ * Emitted whenever the debugging target issues an instrumentation event.
+ */
+ on(event: 'message', listener: (event: Event,
+ /**
+ * Method name.
+ */
+ method: string,
+ /**
+ * Event parameters defined by the 'parameters' attribute in the remote debugging
+ * protocol.
+ */
+ params: any,
+ /**
+ * Unique identifier of attached debugging session, will match the value sent from
+ * `debugger.sendCommand`.
+ */
+ sessionId: string) => void): this;
+ once(event: 'message', listener: (event: Event,
+ /**
+ * Method name.
+ */
+ method: string,
+ /**
+ * Event parameters defined by the 'parameters' attribute in the remote debugging
+ * protocol.
+ */
+ params: any,
+ /**
+ * Unique identifier of attached debugging session, will match the value sent from
+ * `debugger.sendCommand`.
+ */
+ sessionId: string) => void): this;
+ addListener(event: 'message', listener: (event: Event,
+ /**
+ * Method name.
+ */
+ method: string,
+ /**
+ * Event parameters defined by the 'parameters' attribute in the remote debugging
+ * protocol.
+ */
+ params: any,
+ /**
+ * Unique identifier of attached debugging session, will match the value sent from
+ * `debugger.sendCommand`.
+ */
+ sessionId: string) => void): this;
+ removeListener(event: 'message', listener: (event: Event,
+ /**
+ * Method name.
+ */
+ method: string,
+ /**
+ * Event parameters defined by the 'parameters' attribute in the remote debugging
+ * protocol.
+ */
+ params: any,
+ /**
+ * Unique identifier of attached debugging session, will match the value sent from
+ * `debugger.sendCommand`.
+ */
+ sessionId: string) => void): this;
+ /**
+ * Attaches the debugger to the `webContents`.
+ */
+ attach(protocolVersion?: string): void;
+ /**
+ * Detaches the debugger from the `webContents`.
+ */
+ detach(): void;
+ /**
+ * Whether a debugger is attached to the `webContents`.
+ */
+ isAttached(): boolean;
+ /**
+ * A promise that resolves with the response defined by the 'returns' attribute of
+ * the command description in the remote debugging protocol or is rejected
+ * indicating the failure of the command.
+ *
+ * Send given command to the debugging target.
+ */
+ sendCommand(method: string, commandParams?: any, sessionId?: string): Promise<any>;
+ }
+
+ interface DesktopCapturer {
+
+ // Docs: https://electronjs.org/docs/api/desktop-capturer
+
+ /**
+ * Resolves with an array of `DesktopCapturerSource` objects, each
+ * `DesktopCapturerSource` represents a screen or an individual window that can be
+ * captured.
+ *
+ * **Note** Capturing the screen contents requires user consent on macOS 10.15
+ * Catalina or higher, which can detected by
+ * `systemPreferences.getMediaAccessStatus`.
+ */
+ getSources(options: SourcesOptions): Promise<Electron.DesktopCapturerSource[]>;
+ }
+
+ interface DesktopCapturerSource {
+
+ // Docs: https://electronjs.org/docs/api/structures/desktop-capturer-source
+
+ /**
+ * An icon image of the application that owns the window or null if the source has
+ * a type screen. The size of the icon is not known in advance and depends on what
+ * the application provides.
+ */
+ appIcon: NativeImage;
+ /**
+ * A unique identifier that will correspond to the `id` of the matching Display
+ * returned by the Screen API. On some platforms, this is equivalent to the `XX`
+ * portion of the `id` field above and on others it will differ. It will be an
+ * empty string if not available.
+ */
+ display_id: string;
+ /**
+ * The identifier of a window or screen that can be used as a `chromeMediaSourceId`
+ * constraint when calling `navigator.getUserMedia`. The format of the identifier
+ * will be `window:XX:YY` or `screen:ZZ:0`. XX is the windowID/handle. YY is 1 for
+ * the current process, and 0 for all others. ZZ is a sequential number that
+ * represents the screen, and it does not equal to the index in the source's name.
+ */
+ id: string;
+ /**
+ * A screen source will be named either `Entire Screen` or `Screen <index>`, while
+ * the name of a window source will match the window title.
+ */
+ name: string;
+ /**
+ * A thumbnail image. **Note:** There is no guarantee that the size of the
+ * thumbnail is the same as the `thumbnailSize` specified in the `options` passed
+ * to `desktopCapturer.getSources`. The actual size depends on the scale of the
+ * screen or window.
+ */
+ thumbnail: NativeImage;
+ }
+
+ interface Dialog {
+
+ // Docs: https://electronjs.org/docs/api/dialog
+
+ /**
+ * resolves when the certificate trust dialog is shown.
+ *
+ * On macOS, this displays a modal dialog that shows a message and certificate
+ * information, and gives the user the option of trusting/importing the
+ * certificate. If you provide a `browserWindow` argument the dialog will be
+ * attached to the parent window, making it modal.
+ *
+ * On Windows the options are more limited, due to the Win32 APIs used:
+ *
+ * * The `message` argument is not used, as the OS provides its own confirmation
+ * dialog.
+ * * The `browserWindow` argument is ignored since it is not possible to make this
+ * confirmation dialog modal.
+ *
+ * @platform darwin,win32
+ */
+ showCertificateTrustDialog(browserWindow: BrowserWindow, options: CertificateTrustDialogOptions): Promise<void>;
+ /**
+ * resolves when the certificate trust dialog is shown.
+ *
+ * On macOS, this displays a modal dialog that shows a message and certificate
+ * information, and gives the user the option of trusting/importing the
+ * certificate. If you provide a `browserWindow` argument the dialog will be
+ * attached to the parent window, making it modal.
+ *
+ * On Windows the options are more limited, due to the Win32 APIs used:
+ *
+ * * The `message` argument is not used, as the OS provides its own confirmation
+ * dialog.
+ * * The `browserWindow` argument is ignored since it is not possible to make this
+ * confirmation dialog modal.
+ *
+ * @platform darwin,win32
+ */
+ showCertificateTrustDialog(options: CertificateTrustDialogOptions): Promise<void>;
+ /**
+ * Displays a modal dialog that shows an error message.
+ *
+ * This API can be called safely before the `ready` event the `app` module emits,
+ * it is usually used to report errors in early stage of startup. If called before
+ * the app `ready`event on Linux, the message will be emitted to stderr, and no GUI
+ * dialog will appear.
+ */
+ showErrorBox(title: string, content: string): void;
+ /**
+ * resolves with a promise containing the following properties:
+ *
+ * * `response` number - The index of the clicked button.
+ * * `checkboxChecked` boolean - The checked state of the checkbox if
+ * `checkboxLabel` was set. Otherwise `false`.
+ *
+ * Shows a message box.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ */
+ showMessageBox(browserWindow: BrowserWindow, options: MessageBoxOptions): Promise<Electron.MessageBoxReturnValue>;
+ /**
+ * resolves with a promise containing the following properties:
+ *
+ * * `response` number - The index of the clicked button.
+ * * `checkboxChecked` boolean - The checked state of the checkbox if
+ * `checkboxLabel` was set. Otherwise `false`.
+ *
+ * Shows a message box.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ */
+ showMessageBox(options: MessageBoxOptions): Promise<Electron.MessageBoxReturnValue>;
+ /**
+ * the index of the clicked button.
+ *
+ * Shows a message box, it will block the process until the message box is closed.
+ * It returns the index of the clicked button.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal. If `browserWindow` is not shown dialog will not be
+ * attached to it. In such case it will be displayed as an independent window.
+ */
+ showMessageBoxSync(browserWindow: BrowserWindow, options: MessageBoxSyncOptions): number;
+ /**
+ * the index of the clicked button.
+ *
+ * Shows a message box, it will block the process until the message box is closed.
+ * It returns the index of the clicked button.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal. If `browserWindow` is not shown dialog will not be
+ * attached to it. In such case it will be displayed as an independent window.
+ */
+ showMessageBoxSync(options: MessageBoxSyncOptions): number;
+ /**
+ * Resolve with an object containing the following:
+ *
+ * * `canceled` boolean - whether or not the dialog was canceled.
+ * * `filePaths` string[] - An array of file paths chosen by the user. If the
+ * dialog is cancelled this will be an empty array.
+ * * `bookmarks` string[] (optional) _macOS_ _mas_ - An array matching the
+ * `filePaths` array of base64 encoded strings which contains security scoped
+ * bookmark data. `securityScopedBookmarks` must be enabled for this to be
+ * populated. (For return values, see table here.)
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed or selected
+ * when you want to limit the user to a specific type. For example:
+ *
+ * The `extensions` array should contain extensions without wildcards or dots (e.g.
+ * `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the
+ * `'*'` wildcard (no other wildcard is supported).
+ *
+ * **Note:** On Windows and Linux an open dialog can not be both a file selector
+ * and a directory selector, so if you set `properties` to `['openFile',
+ * 'openDirectory']` on these platforms, a directory selector will be shown.
+ */
+ showOpenDialog(browserWindow: BrowserWindow, options: OpenDialogOptions): Promise<Electron.OpenDialogReturnValue>;
+ /**
+ * Resolve with an object containing the following:
+ *
+ * * `canceled` boolean - whether or not the dialog was canceled.
+ * * `filePaths` string[] - An array of file paths chosen by the user. If the
+ * dialog is cancelled this will be an empty array.
+ * * `bookmarks` string[] (optional) _macOS_ _mas_ - An array matching the
+ * `filePaths` array of base64 encoded strings which contains security scoped
+ * bookmark data. `securityScopedBookmarks` must be enabled for this to be
+ * populated. (For return values, see table here.)
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed or selected
+ * when you want to limit the user to a specific type. For example:
+ *
+ * The `extensions` array should contain extensions without wildcards or dots (e.g.
+ * `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the
+ * `'*'` wildcard (no other wildcard is supported).
+ *
+ * **Note:** On Windows and Linux an open dialog can not be both a file selector
+ * and a directory selector, so if you set `properties` to `['openFile',
+ * 'openDirectory']` on these platforms, a directory selector will be shown.
+ */
+ showOpenDialog(options: OpenDialogOptions): Promise<Electron.OpenDialogReturnValue>;
+ /**
+ * the file paths chosen by the user; if the dialog is cancelled it returns
+ * `undefined`.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed or selected
+ * when you want to limit the user to a specific type. For example:
+ *
+ * The `extensions` array should contain extensions without wildcards or dots (e.g.
+ * `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the
+ * `'*'` wildcard (no other wildcard is supported).
+ *
+ * **Note:** On Windows and Linux an open dialog can not be both a file selector
+ * and a directory selector, so if you set `properties` to `['openFile',
+ * 'openDirectory']` on these platforms, a directory selector will be shown.
+ */
+ showOpenDialogSync(browserWindow: BrowserWindow, options: OpenDialogSyncOptions): (string[]) | (undefined);
+ /**
+ * the file paths chosen by the user; if the dialog is cancelled it returns
+ * `undefined`.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed or selected
+ * when you want to limit the user to a specific type. For example:
+ *
+ * The `extensions` array should contain extensions without wildcards or dots (e.g.
+ * `'png'` is good but `'.png'` and `'*.png'` are bad). To show all files, use the
+ * `'*'` wildcard (no other wildcard is supported).
+ *
+ * **Note:** On Windows and Linux an open dialog can not be both a file selector
+ * and a directory selector, so if you set `properties` to `['openFile',
+ * 'openDirectory']` on these platforms, a directory selector will be shown.
+ */
+ showOpenDialogSync(options: OpenDialogSyncOptions): (string[]) | (undefined);
+ /**
+ * Resolve with an object containing the following:
+ *
+ * * `canceled` boolean - whether or not the dialog was canceled.
+ * * `filePath` string (optional) - If the dialog is canceled, this will be
+ * `undefined`.
+ * * `bookmark` string (optional) _macOS_ _mas_ - Base64 encoded string which
+ * contains the security scoped bookmark data for the saved file.
+ * `securityScopedBookmarks` must be enabled for this to be present. (For return
+ * values, see table here.)
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed, see
+ * `dialog.showOpenDialog` for an example.
+ *
+ * **Note:** On macOS, using the asynchronous version is recommended to avoid
+ * issues when expanding and collapsing the dialog.
+ */
+ showSaveDialog(browserWindow: BrowserWindow, options: SaveDialogOptions): Promise<Electron.SaveDialogReturnValue>;
+ /**
+ * Resolve with an object containing the following:
+ *
+ * * `canceled` boolean - whether or not the dialog was canceled.
+ * * `filePath` string (optional) - If the dialog is canceled, this will be
+ * `undefined`.
+ * * `bookmark` string (optional) _macOS_ _mas_ - Base64 encoded string which
+ * contains the security scoped bookmark data for the saved file.
+ * `securityScopedBookmarks` must be enabled for this to be present. (For return
+ * values, see table here.)
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed, see
+ * `dialog.showOpenDialog` for an example.
+ *
+ * **Note:** On macOS, using the asynchronous version is recommended to avoid
+ * issues when expanding and collapsing the dialog.
+ */
+ showSaveDialog(options: SaveDialogOptions): Promise<Electron.SaveDialogReturnValue>;
+ /**
+ * the path of the file chosen by the user; if the dialog is cancelled it returns
+ * `undefined`.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed, see
+ * `dialog.showOpenDialog` for an example.
+ */
+ showSaveDialogSync(browserWindow: BrowserWindow, options: SaveDialogSyncOptions): (string) | (undefined);
+ /**
+ * the path of the file chosen by the user; if the dialog is cancelled it returns
+ * `undefined`.
+ *
+ * The `browserWindow` argument allows the dialog to attach itself to a parent
+ * window, making it modal.
+ *
+ * The `filters` specifies an array of file types that can be displayed, see
+ * `dialog.showOpenDialog` for an example.
+ */
+ showSaveDialogSync(options: SaveDialogSyncOptions): (string) | (undefined);
+ }
+
+ interface Display {
+
+ // Docs: https://electronjs.org/docs/api/structures/display
+
+ /**
+ * Can be `available`, `unavailable`, `unknown`.
+ */
+ accelerometerSupport: ('available' | 'unavailable' | 'unknown');
+ /**
+ * the bounds of the display in DIP points.
+ */
+ bounds: Rectangle;
+ /**
+ * The number of bits per pixel.
+ */
+ colorDepth: number;
+ /**
+ * represent a color space (three-dimensional object which contains all realizable
+ * color combinations) for the purpose of color conversions
+ */
+ colorSpace: string;
+ /**
+ * The number of bits per color component.
+ */
+ depthPerComponent: number;
+ /**
+ * The display refresh rate.
+ */
+ displayFrequency: number;
+ /**
+ * Unique identifier associated with the display.
+ */
+ id: number;
+ /**
+ * `true` for an internal display and `false` for an external display
+ */
+ internal: boolean;
+ /**
+ * User-friendly label, determined by the platform.
+ */
+ label: string;
+ /**
+ * Whether or not the display is a monochrome display.
+ */
+ monochrome: boolean;
+ /**
+ * Can be 0, 90, 180, 270, represents screen rotation in clock-wise degrees.
+ */
+ rotation: number;
+ /**
+ * Output device's pixel scale factor.
+ */
+ scaleFactor: number;
+ size: Size;
+ /**
+ * Can be `available`, `unavailable`, `unknown`.
+ */
+ touchSupport: ('available' | 'unavailable' | 'unknown');
+ /**
+ * the work area of the display in DIP points.
+ */
+ workArea: Rectangle;
+ workAreaSize: Size;
+ }
+
+ class Dock {
+
+ // Docs: https://electronjs.org/docs/api/dock
+
+ /**
+ * an ID representing the request.
+ *
+ * When `critical` is passed, the dock icon will bounce until either the
+ * application becomes active or the request is canceled.
+ *
+ * When `informational` is passed, the dock icon will bounce for one second.
+ * However, the request remains active until either the application becomes active
+ * or the request is canceled.
+ *
+ * **Note:** This method can only be used while the app is not focused; when the
+ * app is focused it will return -1.
+ *
+ * @platform darwin
+ */
+ bounce(type?: 'critical' | 'informational'): number;
+ /**
+ * Cancel the bounce of `id`.
+ *
+ * @platform darwin
+ */
+ cancelBounce(id: number): void;
+ /**
+ * Bounces the Downloads stack if the filePath is inside the Downloads folder.
+ *
+ * @platform darwin
+ */
+ downloadFinished(filePath: string): void;
+ /**
+ * The badge string of the dock.
+ *
+ * @platform darwin
+ */
+ getBadge(): string;
+ /**
+ * The application's dock menu.
+ *
+ * @platform darwin
+ */
+ getMenu(): (Menu) | (null);
+ /**
+ * Hides the dock icon.
+ *
+ * @platform darwin
+ */
+ hide(): void;
+ /**
+ * Whether the dock icon is visible.
+ *
+ * @platform darwin
+ */
+ isVisible(): boolean;
+ /**
+ * Sets the string to be displayed in the dock’s badging area.
+ *
+ * @platform darwin
+ */
+ setBadge(text: string): void;
+ /**
+ * Sets the `image` associated with this dock icon.
+ *
+ * @platform darwin
+ */
+ setIcon(image: (NativeImage) | (string)): void;
+ /**
+ * Sets the application's dock menu.
+ *
+ * @platform darwin
+ */
+ setMenu(menu: Menu): void;
+ /**
+ * Resolves when the dock icon is shown.
+ *
+ * @platform darwin
+ */
+ show(): Promise<void>;
+ }
+
+ class DownloadItem extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/download-item
+
+ /**
+ * Emitted when the download is in a terminal state. This includes a completed
+ * download, a cancelled download (via `downloadItem.cancel()`), and interrupted
+ * download that can't be resumed.
+ *
+ * The `state` can be one of following:
+ *
+ * * `completed` - The download completed successfully.
+ * * `cancelled` - The download has been cancelled.
+ * * `interrupted` - The download has interrupted and can not resume.
+ */
+ on(event: 'done', listener: (event: Event,
+ /**
+ * Can be `completed`, `cancelled` or `interrupted`.
+ */
+ state: ('completed' | 'cancelled' | 'interrupted')) => void): this;
+ once(event: 'done', listener: (event: Event,
+ /**
+ * Can be `completed`, `cancelled` or `interrupted`.
+ */
+ state: ('completed' | 'cancelled' | 'interrupted')) => void): this;
+ addListener(event: 'done', listener: (event: Event,
+ /**
+ * Can be `completed`, `cancelled` or `interrupted`.
+ */
+ state: ('completed' | 'cancelled' | 'interrupted')) => void): this;
+ removeListener(event: 'done', listener: (event: Event,
+ /**
+ * Can be `completed`, `cancelled` or `interrupted`.
+ */
+ state: ('completed' | 'cancelled' | 'interrupted')) => void): this;
+ /**
+ * Emitted when the download has been updated and is not done.
+ *
+ * The `state` can be one of following:
+ *
+ * * `progressing` - The download is in-progress.
+ * * `interrupted` - The download has interrupted and can be resumed.
+ */
+ on(event: 'updated', listener: (event: Event,
+ /**
+ * Can be `progressing` or `interrupted`.
+ */
+ state: ('progressing' | 'interrupted')) => void): this;
+ once(event: 'updated', listener: (event: Event,
+ /**
+ * Can be `progressing` or `interrupted`.
+ */
+ state: ('progressing' | 'interrupted')) => void): this;
+ addListener(event: 'updated', listener: (event: Event,
+ /**
+ * Can be `progressing` or `interrupted`.
+ */
+ state: ('progressing' | 'interrupted')) => void): this;
+ removeListener(event: 'updated', listener: (event: Event,
+ /**
+ * Can be `progressing` or `interrupted`.
+ */
+ state: ('progressing' | 'interrupted')) => void): this;
+ /**
+ * Cancels the download operation.
+ */
+ cancel(): void;
+ /**
+ * Whether the download can resume.
+ */
+ canResume(): boolean;
+ /**
+ * The Content-Disposition field from the response header.
+ */
+ getContentDisposition(): string;
+ /**
+ * ETag header value.
+ */
+ getETag(): string;
+ /**
+ * The file name of the download item.
+ *
+ * **Note:** The file name is not always the same as the actual one saved in local
+ * disk. If user changes the file name in a prompted download saving dialog, the
+ * actual name of saved file will be different.
+ */
+ getFilename(): string;
+ /**
+ * Last-Modified header value.
+ */
+ getLastModifiedTime(): string;
+ /**
+ * The files mime type.
+ */
+ getMimeType(): string;
+ /**
+ * The received bytes of the download item.
+ */
+ getReceivedBytes(): number;
+ /**
+ * Returns the object previously set by
+ * `downloadItem.setSaveDialogOptions(options)`.
+ */
+ getSaveDialogOptions(): SaveDialogOptions;
+ /**
+ * The save path of the download item. This will be either the path set via
+ * `downloadItem.setSavePath(path)` or the path selected from the shown save
+ * dialog.
+ */
+ getSavePath(): string;
+ /**
+ * Number of seconds since the UNIX epoch when the download was started.
+ */
+ getStartTime(): number;
+ /**
+ * The current state. Can be `progressing`, `completed`, `cancelled` or
+ * `interrupted`.
+ *
+ * **Note:** The following methods are useful specifically to resume a `cancelled`
+ * item when session is restarted.
+ */
+ getState(): ('progressing' | 'completed' | 'cancelled' | 'interrupted');
+ /**
+ * The total size in bytes of the download item.
+ *
+ * If the size is unknown, it returns 0.
+ */
+ getTotalBytes(): number;
+ /**
+ * The origin URL where the item is downloaded from.
+ */
+ getURL(): string;
+ /**
+ * The complete URL chain of the item including any redirects.
+ */
+ getURLChain(): string[];
+ /**
+ * Whether the download has user gesture.
+ */
+ hasUserGesture(): boolean;
+ /**
+ * Whether the download is paused.
+ */
+ isPaused(): boolean;
+ /**
+ * Pauses the download.
+ */
+ pause(): void;
+ /**
+ * Resumes the download that has been paused.
+ *
+ * **Note:** To enable resumable downloads the server you are downloading from must
+ * support range requests and provide both `Last-Modified` and `ETag` header
+ * values. Otherwise `resume()` will dismiss previously received bytes and restart
+ * the download from the beginning.
+ */
+ resume(): void;
+ /**
+ * This API allows the user to set custom options for the save dialog that opens
+ * for the download item by default. The API is only available in session's
+ * `will-download` callback function.
+ */
+ setSaveDialogOptions(options: SaveDialogOptions): void;
+ /**
+ * The API is only available in session's `will-download` callback function. If
+ * `path` doesn't exist, Electron will try to make the directory recursively. If
+ * user doesn't set the save path via the API, Electron will use the original
+ * routine to determine the save path; this usually prompts a save dialog.
+ */
+ setSavePath(path: string): void;
+ /**
+ * A `string` property that determines the save file path of the download item.
+ *
+ * The property is only available in session's `will-download` callback function.
+ * If user doesn't set the save path via the property, Electron will use the
+ * original routine to determine the save path; this usually prompts a save dialog.
+ */
+ savePath: string;
+ }
+
+ interface Extension {
+
+ // Docs: https://electronjs.org/docs/api/structures/extension
+
+ id: string;
+ /**
+ * Copy of the extension's manifest data.
+ */
+ manifest: any;
+ name: string;
+ /**
+ * The extension's file path.
+ */
+ path: string;
+ /**
+ * The extension's `chrome-extension://` URL.
+ */
+ url: string;
+ version: string;
+ }
+
+ interface ExtensionInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/extension-info
+
+ name: string;
+ version: string;
+ }
+
+ interface FileFilter {
+
+ // Docs: https://electronjs.org/docs/api/structures/file-filter
+
+ extensions: string[];
+ name: string;
+ }
+
+ interface FilePathWithHeaders {
+
+ // Docs: https://electronjs.org/docs/api/structures/file-path-with-headers
+
+ /**
+ * Additional headers to be sent.
+ */
+ headers?: Record<string, string>;
+ /**
+ * The path to the file to send.
+ */
+ path: string;
+ }
+
+ interface GlobalShortcut {
+
+ // Docs: https://electronjs.org/docs/api/global-shortcut
+
+ /**
+ * Whether this application has registered `accelerator`.
+ *
+ * When the accelerator is already taken by other applications, this call will
+ * still return `false`. This behavior is intended by operating systems, since they
+ * don't want applications to fight for global shortcuts.
+ */
+ isRegistered(accelerator: Accelerator): boolean;
+ /**
+ * Whether or not the shortcut was registered successfully.
+ *
+ * Registers a global shortcut of `accelerator`. The `callback` is called when the
+ * registered shortcut is pressed by the user.
+ *
+ * When the accelerator is already taken by other applications, this call will
+ * silently fail. This behavior is intended by operating systems, since they don't
+ * want applications to fight for global shortcuts.
+ *
+ * The following accelerators will not be registered successfully on macOS 10.14
+ * Mojave unless the app has been authorized as a trusted accessibility client:
+ *
+ * * "Media Play/Pause"
+ * * "Media Next Track"
+ * * "Media Previous Track"
+ * * "Media Stop"
+ */
+ register(accelerator: Accelerator, callback: () => void): boolean;
+ /**
+ * Registers a global shortcut of all `accelerator` items in `accelerators`. The
+ * `callback` is called when any of the registered shortcuts are pressed by the
+ * user.
+ *
+ * When a given accelerator is already taken by other applications, this call will
+ * silently fail. This behavior is intended by operating systems, since they don't
+ * want applications to fight for global shortcuts.
+ *
+ * The following accelerators will not be registered successfully on macOS 10.14
+ * Mojave unless the app has been authorized as a trusted accessibility client:
+ *
+ * * "Media Play/Pause"
+ * * "Media Next Track"
+ * * "Media Previous Track"
+ * * "Media Stop"
+ */
+ registerAll(accelerators: Accelerator[], callback: () => void): void;
+ /**
+ * Unregisters the global shortcut of `accelerator`.
+ */
+ unregister(accelerator: Accelerator): void;
+ /**
+ * Unregisters all of the global shortcuts.
+ */
+ unregisterAll(): void;
+ }
+
+ interface GPUFeatureStatus {
+
+ // Docs: https://electronjs.org/docs/api/structures/gpu-feature-status
+
+ /**
+ * Canvas.
+ */
+ '2d_canvas': string;
+ /**
+ * Flash.
+ */
+ flash_3d: string;
+ /**
+ * Flash Stage3D.
+ */
+ flash_stage3d: string;
+ /**
+ * Flash Stage3D Baseline profile.
+ */
+ flash_stage3d_baseline: string;
+ /**
+ * Compositing.
+ */
+ gpu_compositing: string;
+ /**
+ * Multiple Raster Threads.
+ */
+ multiple_raster_threads: string;
+ /**
+ * Native GpuMemoryBuffers.
+ */
+ native_gpu_memory_buffers: string;
+ /**
+ * Rasterization.
+ */
+ rasterization: string;
+ /**
+ * Video Decode.
+ */
+ video_decode: string;
+ /**
+ * Video Encode.
+ */
+ video_encode: string;
+ /**
+ * VPx Video Decode.
+ */
+ vpx_decode: string;
+ /**
+ * WebGL.
+ */
+ webgl: string;
+ /**
+ * WebGL2.
+ */
+ webgl2: string;
+ }
+
+ interface HIDDevice {
+
+ // Docs: https://electronjs.org/docs/api/structures/hid-device
+
+ /**
+ * Unique identifier for the device.
+ */
+ deviceId: string;
+ /**
+ * Unique identifier for the HID interface. A device may have multiple HID
+ * interfaces.
+ */
+ guid?: string;
+ /**
+ * Name of the device.
+ */
+ name: string;
+ /**
+ * The USB product ID.
+ */
+ productId: number;
+ /**
+ * The USB device serial number.
+ */
+ serialNumber?: string;
+ /**
+ * The USB vendor ID.
+ */
+ vendorId: number;
+ }
+
+ interface InAppPurchase extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/in-app-purchase
+
+ on(event: 'transactions-updated', listener: Function): this;
+ once(event: 'transactions-updated', listener: Function): this;
+ addListener(event: 'transactions-updated', listener: Function): this;
+ removeListener(event: 'transactions-updated', listener: Function): this;
+ /**
+ * whether a user can make a payment.
+ */
+ canMakePayments(): boolean;
+ /**
+ * Completes all pending transactions.
+ */
+ finishAllTransactions(): void;
+ /**
+ * Completes the pending transactions corresponding to the date.
+ */
+ finishTransactionByDate(date: string): void;
+ /**
+ * Resolves with an array of `Product` objects.
+ *
+ * Retrieves the product descriptions.
+ */
+ getProducts(productIDs: string[]): Promise<Electron.Product[]>;
+ /**
+ * the path to the receipt.
+ */
+ getReceiptURL(): string;
+ /**
+ * Returns `true` if the product is valid and added to the payment queue.
+ *
+ * You should listen for the `transactions-updated` event as soon as possible and
+ * certainly before you call `purchaseProduct`.
+ */
+ purchaseProduct(productID: string, opts?: (number) | (PurchaseProductOpts)): Promise<boolean>;
+ /**
+ * Restores finished transactions. This method can be called either to install
+ * purchases on additional devices, or to restore purchases for an application that
+ * the user deleted and reinstalled.
+ *
+ * The payment queue delivers a new transaction for each previously completed
+ * transaction that can be restored. Each transaction includes a copy of the
+ * original transaction.
+ */
+ restoreCompletedTransactions(): void;
+ }
+
+ class IncomingMessage extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/incoming-message
+
+ /**
+ * Emitted when a request has been canceled during an ongoing HTTP transaction.
+ */
+ on(event: 'aborted', listener: Function): this;
+ once(event: 'aborted', listener: Function): this;
+ addListener(event: 'aborted', listener: Function): this;
+ removeListener(event: 'aborted', listener: Function): this;
+ /**
+ * The `data` event is the usual method of transferring response data into
+ * applicative code.
+ */
+ on(event: 'data', listener: (
+ /**
+ * A chunk of response body's data.
+ */
+ chunk: Buffer) => void): this;
+ once(event: 'data', listener: (
+ /**
+ * A chunk of response body's data.
+ */
+ chunk: Buffer) => void): this;
+ addListener(event: 'data', listener: (
+ /**
+ * A chunk of response body's data.
+ */
+ chunk: Buffer) => void): this;
+ removeListener(event: 'data', listener: (
+ /**
+ * A chunk of response body's data.
+ */
+ chunk: Buffer) => void): this;
+ /**
+ * Indicates that response body has ended. Must be placed before 'data' event.
+ */
+ on(event: 'end', listener: Function): this;
+ once(event: 'end', listener: Function): this;
+ addListener(event: 'end', listener: Function): this;
+ removeListener(event: 'end', listener: Function): this;
+ /**
+ * Returns:
+ *
+ * `error` Error - Typically holds an error string identifying failure root cause.
+ *
+ * Emitted when an error was encountered while streaming response data events. For
+ * instance, if the server closes the underlying while the response is still
+ * streaming, an `error` event will be emitted on the response object and a `close`
+ * event will subsequently follow on the request object.
+ */
+ on(event: 'error', listener: Function): this;
+ once(event: 'error', listener: Function): this;
+ addListener(event: 'error', listener: Function): this;
+ removeListener(event: 'error', listener: Function): this;
+ /**
+ * A `Record<string, string | string[]>` representing the HTTP response headers.
+ * The `headers` object is formatted as follows:
+ *
+ * * All header names are lowercased.
+ * * Duplicates of `age`, `authorization`, `content-length`, `content-type`,
+ * `etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`,
+ * `last-modified`, `location`, `max-forwards`, `proxy-authorization`, `referer`,
+ * `retry-after`, `server`, or `user-agent` are discarded.
+ * * `set-cookie` is always an array. Duplicates are added to the array.
+ * * For duplicate `cookie` headers, the values are joined together with '; '.
+ * * For all other headers, the values are joined together with ', '.
+ */
+ headers: Record<string, (string) | (string[])>;
+ /**
+ * A `string` indicating the HTTP protocol version number. Typical values are '1.0'
+ * or '1.1'. Additionally `httpVersionMajor` and `httpVersionMinor` are two
+ * Integer-valued readable properties that return respectively the HTTP major and
+ * minor version numbers.
+ */
+ httpVersion: string;
+ /**
+ * An `Integer` indicating the HTTP protocol major version number.
+ */
+ httpVersionMajor: number;
+ /**
+ * An `Integer` indicating the HTTP protocol minor version number.
+ */
+ httpVersionMinor: number;
+ /**
+ * A `string[]` containing the raw HTTP response headers exactly as they were
+ * received. The keys and values are in the same list. It is not a list of tuples.
+ * So, the even-numbered offsets are key values, and the odd-numbered offsets are
+ * the associated values. Header names are not lowercased, and duplicates are not
+ * merged.
+ */
+ rawHeaders: string[];
+ /**
+ * An `Integer` indicating the HTTP response status code.
+ */
+ statusCode: number;
+ /**
+ * A `string` representing the HTTP status message.
+ */
+ statusMessage: string;
+ }
+
+ interface InputEvent {
+
+ // Docs: https://electronjs.org/docs/api/structures/input-event
+
+ /**
+ * An array of modifiers of the event, can be `shift`, `control`, `ctrl`, `alt`,
+ * `meta`, `command`, `cmd`, `isKeypad`, `isAutoRepeat`, `leftButtonDown`,
+ * `middleButtonDown`, `rightButtonDown`, `capsLock`, `numLock`, `left`, `right`.
+ */
+ modifiers?: Array<'shift' | 'control' | 'ctrl' | 'alt' | 'meta' | 'command' | 'cmd' | 'isKeypad' | 'isAutoRepeat' | 'leftButtonDown' | 'middleButtonDown' | 'rightButtonDown' | 'capsLock' | 'numLock' | 'left' | 'right'>;
+ /**
+ * Can be `undefined`, `mouseDown`, `mouseUp`, `mouseMove`, `mouseEnter`,
+ * `mouseLeave`, `contextMenu`, `mouseWheel`, `rawKeyDown`, `keyDown`, `keyUp`,
+ * `char`, `gestureScrollBegin`, `gestureScrollEnd`, `gestureScrollUpdate`,
+ * `gestureFlingStart`, `gestureFlingCancel`, `gesturePinchBegin`,
+ * `gesturePinchEnd`, `gesturePinchUpdate`, `gestureTapDown`, `gestureShowPress`,
+ * `gestureTap`, `gestureTapCancel`, `gestureShortPress`, `gestureLongPress`,
+ * `gestureLongTap`, `gestureTwoFingerTap`, `gestureTapUnconfirmed`,
+ * `gestureDoubleTap`, `touchStart`, `touchMove`, `touchEnd`, `touchCancel`,
+ * `touchScrollStarted`, `pointerDown`, `pointerUp`, `pointerMove`,
+ * `pointerRawUpdate`, `pointerCancel` or `pointerCausedUaAction`.
+ */
+ type: ('undefined' | 'mouseDown' | 'mouseUp' | 'mouseMove' | 'mouseEnter' | 'mouseLeave' | 'contextMenu' | 'mouseWheel' | 'rawKeyDown' | 'keyDown' | 'keyUp' | 'char' | 'gestureScrollBegin' | 'gestureScrollEnd' | 'gestureScrollUpdate' | 'gestureFlingStart' | 'gestureFlingCancel' | 'gesturePinchBegin' | 'gesturePinchEnd' | 'gesturePinchUpdate' | 'gestureTapDown' | 'gestureShowPress' | 'gestureTap' | 'gestureTapCancel' | 'gestureShortPress' | 'gestureLongPress' | 'gestureLongTap' | 'gestureTwoFingerTap' | 'gestureTapUnconfirmed' | 'gestureDoubleTap' | 'touchStart' | 'touchMove' | 'touchEnd' | 'touchCancel' | 'touchScrollStarted' | 'pointerDown' | 'pointerUp' | 'pointerMove' | 'pointerRawUpdate' | 'pointerCancel' | 'pointerCausedUaAction');
+ }
+
+ interface IOCounters {
+
+ // Docs: https://electronjs.org/docs/api/structures/io-counters
+
+ /**
+ * Then number of I/O other operations.
+ */
+ otherOperationCount: number;
+ /**
+ * Then number of I/O other transfers.
+ */
+ otherTransferCount: number;
+ /**
+ * The number of I/O read operations.
+ */
+ readOperationCount: number;
+ /**
+ * The number of I/O read transfers.
+ */
+ readTransferCount: number;
+ /**
+ * The number of I/O write operations.
+ */
+ writeOperationCount: number;
+ /**
+ * The number of I/O write transfers.
+ */
+ writeTransferCount: number;
+ }
+
+ interface IpcMain extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/ipc-main
+
+ /**
+ * Adds a handler for an `invoke`able IPC. This handler will be called whenever a
+ * renderer calls `ipcRenderer.invoke(channel, ...args)`.
+ *
+ * If `listener` returns a Promise, the eventual result of the promise will be
+ * returned as a reply to the remote caller. Otherwise, the return value of the
+ * listener will be used as the value of the reply.
+ *
+ * The `event` that is passed as the first argument to the handler is the same as
+ * that passed to a regular event listener. It includes information about which
+ * WebContents is the source of the invoke request.
+ *
+ * Errors thrown through `handle` in the main process are not transparent as they
+ * are serialized and only the `message` property from the original error is
+ * provided to the renderer process. Please refer to #24427 for details.
+ */
+ handle(channel: string, listener: (event: IpcMainInvokeEvent, ...args: any[]) => (Promise<any>) | (any)): void;
+ /**
+ * Handles a single `invoke`able IPC message, then removes the listener. See
+ * `ipcMain.handle(channel, listener)`.
+ */
+ handleOnce(channel: string, listener: (event: IpcMainInvokeEvent, ...args: any[]) => (Promise<any>) | (any)): void;
+ /**
+ * Listens to `channel`, when a new message arrives `listener` would be called with
+ * `listener(event, args...)`.
+ */
+ on(channel: string, listener: (event: IpcMainEvent, ...args: any[]) => void): this;
+ /**
+ * Adds a one time `listener` function for the event. This `listener` is invoked
+ * only the next time a message is sent to `channel`, after which it is removed.
+ */
+ once(channel: string, listener: (event: IpcMainEvent, ...args: any[]) => void): this;
+ /**
+ * Removes listeners of the specified `channel`.
+ */
+ removeAllListeners(channel?: string): this;
+ /**
+ * Removes any handler for `channel`, if present.
+ */
+ removeHandler(channel: string): void;
+ /**
+ * Removes the specified `listener` from the listener array for the specified
+ * `channel`.
+ */
+ removeListener(channel: string, listener: (...args: any[]) => void): this;
+ }
+
+ interface IpcMainEvent extends Event {
+
+ // Docs: https://electronjs.org/docs/api/structures/ipc-main-event
+
+ /**
+ * The ID of the renderer frame that sent this message
+ */
+ frameId: number;
+ /**
+ * A list of MessagePorts that were transferred with this message
+ */
+ ports: MessagePortMain[];
+ /**
+ * The internal ID of the renderer process that sent this message
+ */
+ processId: number;
+ /**
+ * A function that will send an IPC message to the renderer frame that sent the
+ * original message that you are currently handling. You should use this method to
+ * "reply" to the sent message in order to guarantee the reply will go to the
+ * correct process and frame.
+ */
+ reply: (channel: string, ...args: any[]) => void;
+ /**
+ * Set this to the value to be returned in a synchronous message
+ */
+ returnValue: any;
+ /**
+ * Returns the `webContents` that sent the message
+ */
+ sender: WebContents;
+ /**
+ * The frame that sent this message
+ *
+ */
+ readonly senderFrame: WebFrameMain;
+ }
+
+ interface IpcMainInvokeEvent extends Event {
+
+ // Docs: https://electronjs.org/docs/api/structures/ipc-main-invoke-event
+
+ /**
+ * The ID of the renderer frame that sent this message
+ */
+ frameId: number;
+ /**
+ * The internal ID of the renderer process that sent this message
+ */
+ processId: number;
+ /**
+ * Returns the `webContents` that sent the message
+ */
+ sender: WebContents;
+ /**
+ * The frame that sent this message
+ *
+ */
+ readonly senderFrame: WebFrameMain;
+ }
+
+ interface IpcRenderer extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/ipc-renderer
+
+ /**
+ * Resolves with the response from the main process.
+ *
+ * Send a message to the main process via `channel` and expect a result
+ * asynchronously. Arguments will be serialized with the Structured Clone
+ * Algorithm, just like `window.postMessage`, so prototype chains will not be
+ * included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw
+ * an exception.
+ *
+ * The main process should listen for `channel` with `ipcMain.handle()`.
+ *
+ * For example:
+ *
+ * If you need to transfer a `MessagePort` to the main process, use
+ * `ipcRenderer.postMessage`.
+ *
+ * If you do not need a response to the message, consider using `ipcRenderer.send`.
+ *
+ * > **Note** Sending non-standard JavaScript types such as DOM objects or special
+ * Electron objects will throw an exception.
+ *
+ * Since the main process does not have support for DOM objects such as
+ * `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over
+ * Electron's IPC to the main process, as the main process would have no way to
+ * decode them. Attempting to send such objects over IPC will result in an error.
+ *
+ * > **Note** If the handler in the main process throws an error, the promise
+ * returned by `invoke` will reject. However, the `Error` object in the renderer
+ * process will not be the same as the one thrown in the main process.
+ */
+ invoke(channel: string, ...args: any[]): Promise<any>;
+ /**
+ * Listens to `channel`, when a new message arrives `listener` would be called with
+ * `listener(event, args...)`.
+ */
+ on(channel: string, listener: (event: IpcRendererEvent, ...args: any[]) => void): this;
+ /**
+ * Adds a one time `listener` function for the event. This `listener` is invoked
+ * only the next time a message is sent to `channel`, after which it is removed.
+ */
+ once(channel: string, listener: (event: IpcRendererEvent, ...args: any[]) => void): this;
+ /**
+ * Send a message to the main process, optionally transferring ownership of zero or
+ * more `MessagePort` objects.
+ *
+ * The transferred `MessagePort` objects will be available in the main process as
+ * `MessagePortMain` objects by accessing the `ports` property of the emitted
+ * event.
+ *
+ * For example:
+ *
+ * For more information on using `MessagePort` and `MessageChannel`, see the MDN
+ * documentation.
+ */
+ postMessage(channel: string, message: any, transfer?: MessagePort[]): void;
+ /**
+ * Removes all listeners, or those of the specified `channel`.
+ */
+ removeAllListeners(channel: string): this;
+ /**
+ * Removes the specified `listener` from the listener array for the specified
+ * `channel`.
+ */
+ removeListener(channel: string, listener: (...args: any[]) => void): this;
+ /**
+ * Send an asynchronous message to the main process via `channel`, along with
+ * arguments. Arguments will be serialized with the Structured Clone Algorithm,
+ * just like `window.postMessage`, so prototype chains will not be included.
+ * Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an
+ * exception.
+ *
+ * > **NOTE:** Sending non-standard JavaScript types such as DOM objects or special
+ * Electron objects will throw an exception.
+ *
+ * Since the main process does not have support for DOM objects such as
+ * `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over
+ * Electron's IPC to the main process, as the main process would have no way to
+ * decode them. Attempting to send such objects over IPC will result in an error.
+ *
+ * The main process handles it by listening for `channel` with the `ipcMain`
+ * module.
+ *
+ * If you need to transfer a `MessagePort` to the main process, use
+ * `ipcRenderer.postMessage`.
+ *
+ * If you want to receive a single response from the main process, like the result
+ * of a method call, consider using `ipcRenderer.invoke`.
+ */
+ send(channel: string, ...args: any[]): void;
+ /**
+ * The value sent back by the `ipcMain` handler.
+ *
+ * Send a message to the main process via `channel` and expect a result
+ * synchronously. Arguments will be serialized with the Structured Clone Algorithm,
+ * just like `window.postMessage`, so prototype chains will not be included.
+ * Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an
+ * exception.
+ *
+ * > **NOTE:** Sending non-standard JavaScript types such as DOM objects or special
+ * Electron objects will throw an exception.
+ *
+ * Since the main process does not have support for DOM objects such as
+ * `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over
+ * Electron's IPC to the main process, as the main process would have no way to
+ * decode them. Attempting to send such objects over IPC will result in an error.
+ *
+ * The main process handles it by listening for `channel` with `ipcMain` module,
+ * and replies by setting `event.returnValue`.
+ *
+ * > :warning: **WARNING**: Sending a synchronous message will block the whole
+ * renderer process until the reply is received, so use this method only as a last
+ * resort. It's much better to use the asynchronous version, `invoke()`.
+ */
+ sendSync(channel: string, ...args: any[]): any;
+ /**
+ * Sends a message to a window with `webContentsId` via `channel`.
+ *
+ * @deprecated
+ */
+ sendTo(webContentsId: number, channel: string, ...args: any[]): void;
+ /**
+ * Like `ipcRenderer.send` but the event will be sent to the `<webview>` element in
+ * the host page instead of the main process.
+ */
+ sendToHost(channel: string, ...args: any[]): void;
+ }
+
+ interface IpcRendererEvent extends Event {
+
+ // Docs: https://electronjs.org/docs/api/structures/ipc-renderer-event
+
+ /**
+ * A list of MessagePorts that were transferred with this message
+ */
+ ports: MessagePort[];
+ /**
+ * The `IpcRenderer` instance that emitted the event originally
+ */
+ sender: IpcRenderer;
+ /**
+ * The `webContents.id` that sent the message, you can call
+ * `event.sender.sendTo(event.senderId, ...)` to reply to the message, see
+ * ipcRenderer.sendTo for more information. This only applies to messages sent from
+ * a different renderer. Messages sent directly from the main process set
+ * `event.senderId` to `0`.
+ *
+ * @deprecated
+ */
+ senderId: number;
+ /**
+ * Whether the message sent via ipcRenderer.sendTo was sent by the main frame. This
+ * is relevant when `nodeIntegrationInSubFrames` is enabled in the originating
+ * `webContents`.
+ *
+ * @deprecated
+ */
+ senderIsMainFrame?: boolean;
+ }
+
+ interface JumpListCategory {
+
+ // Docs: https://electronjs.org/docs/api/structures/jump-list-category
+
+ /**
+ * Array of `JumpListItem` objects if `type` is `tasks` or `custom`, otherwise it
+ * should be omitted.
+ */
+ items?: JumpListItem[];
+ /**
+ * Must be set if `type` is `custom`, otherwise it should be omitted.
+ */
+ name?: string;
+ /**
+ * One of the following:
+ */
+ type?: ('tasks' | 'frequent' | 'recent' | 'custom');
+ }
+
+ interface JumpListItem {
+
+ // Docs: https://electronjs.org/docs/api/structures/jump-list-item
+
+ /**
+ * The command line arguments when `program` is executed. Should only be set if
+ * `type` is `task`.
+ */
+ args?: string;
+ /**
+ * Description of the task (displayed in a tooltip). Should only be set if `type`
+ * is `task`. Maximum length 260 characters.
+ */
+ description?: string;
+ /**
+ * The index of the icon in the resource file. If a resource file contains multiple
+ * icons this value can be used to specify the zero-based index of the icon that
+ * should be displayed for this task. If a resource file contains only one icon,
+ * this property should be set to zero.
+ */
+ iconIndex?: number;
+ /**
+ * The absolute path to an icon to be displayed in a Jump List, which can be an
+ * arbitrary resource file that contains an icon (e.g. `.ico`, `.exe`, `.dll`). You
+ * can usually specify `process.execPath` to show the program icon.
+ */
+ iconPath?: string;
+ /**
+ * Path of the file to open, should only be set if `type` is `file`.
+ */
+ path?: string;
+ /**
+ * Path of the program to execute, usually you should specify `process.execPath`
+ * which opens the current program. Should only be set if `type` is `task`.
+ */
+ program?: string;
+ /**
+ * The text to be displayed for the item in the Jump List. Should only be set if
+ * `type` is `task`.
+ */
+ title?: string;
+ /**
+ * One of the following:
+ */
+ type?: ('task' | 'separator' | 'file');
+ /**
+ * The working directory. Default is empty.
+ */
+ workingDirectory?: string;
+ }
+
+ interface KeyboardEvent {
+
+ // Docs: https://electronjs.org/docs/api/structures/keyboard-event
+
+ /**
+ * whether an Alt key was used in an accelerator to trigger the Event
+ */
+ altKey?: boolean;
+ /**
+ * whether the Control key was used in an accelerator to trigger the Event
+ */
+ ctrlKey?: boolean;
+ /**
+ * whether a meta key was used in an accelerator to trigger the Event
+ */
+ metaKey?: boolean;
+ /**
+ * whether a Shift key was used in an accelerator to trigger the Event
+ */
+ shiftKey?: boolean;
+ /**
+ * whether an accelerator was used to trigger the event as opposed to another user
+ * gesture like mouse click
+ */
+ triggeredByAccelerator?: boolean;
+ }
+
+ interface KeyboardInputEvent extends InputEvent {
+
+ // Docs: https://electronjs.org/docs/api/structures/keyboard-input-event
+
+ /**
+ * The character that will be sent as the keyboard event. Should only use the valid
+ * key codes in Accelerator.
+ */
+ keyCode: string;
+ /**
+ * The type of the event, can be `rawKeyDown`, `keyDown`, `keyUp` or `char`.
+ */
+ type: ('rawKeyDown' | 'keyDown' | 'keyUp' | 'char');
+ }
+
+ interface MemoryInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/memory-info
+
+ /**
+ * The maximum amount of memory that has ever been pinned to actual physical RAM.
+ */
+ peakWorkingSetSize: number;
+ /**
+ * The amount of memory not shared by other processes, such as JS heap or HTML
+ * content.
+ *
+ * @platform win32
+ */
+ privateBytes?: number;
+ /**
+ * The amount of memory currently pinned to actual physical RAM.
+ */
+ workingSetSize: number;
+ }
+
+ interface MemoryUsageDetails {
+
+ // Docs: https://electronjs.org/docs/api/structures/memory-usage-details
+
+ count: number;
+ liveSize: number;
+ size: number;
+ }
+
+ class Menu extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/menu
+
+ /**
+ * Emitted when a popup is closed either manually or with `menu.closePopup()`.
+ */
+ on(event: 'menu-will-close', listener: (event: Event) => void): this;
+ once(event: 'menu-will-close', listener: (event: Event) => void): this;
+ addListener(event: 'menu-will-close', listener: (event: Event) => void): this;
+ removeListener(event: 'menu-will-close', listener: (event: Event) => void): this;
+ /**
+ * Emitted when `menu.popup()` is called.
+ */
+ on(event: 'menu-will-show', listener: (event: Event) => void): this;
+ once(event: 'menu-will-show', listener: (event: Event) => void): this;
+ addListener(event: 'menu-will-show', listener: (event: Event) => void): this;
+ removeListener(event: 'menu-will-show', listener: (event: Event) => void): this;
+ /**
+ * Menu
+ */
+ constructor();
+ /**
+ * Generally, the `template` is an array of `options` for constructing a MenuItem.
+ * The usage can be referenced above.
+ *
+ * You can also attach other fields to the element of the `template` and they will
+ * become properties of the constructed menu items.
+ */
+ static buildFromTemplate(template: Array<(MenuItemConstructorOptions) | (MenuItem)>): Menu;
+ /**
+ * The application menu, if set, or `null`, if not set.
+ *
+ * **Note:** The returned `Menu` instance doesn't support dynamic addition or
+ * removal of menu items. Instance properties can still be dynamically modified.
+ */
+ static getApplicationMenu(): (Menu) | (null);
+ /**
+ * Sends the `action` to the first responder of application. This is used for
+ * emulating default macOS menu behaviors. Usually you would use the `role`
+ * property of a `MenuItem`.
+ *
+ * See the macOS Cocoa Event Handling Guide for more information on macOS' native
+ * actions.
+ *
+ * @platform darwin
+ */
+ static sendActionToFirstResponder(action: string): void;
+ /**
+ * Sets `menu` as the application menu on macOS. On Windows and Linux, the `menu`
+ * will be set as each window's top menu.
+ *
+ * Also on Windows and Linux, you can use a `&` in the top-level item name to
+ * indicate which letter should get a generated accelerator. For example, using
+ * `&File` for the file menu would result in a generated `Alt-F` accelerator that
+ * opens the associated menu. The indicated character in the button label then gets
+ * an underline, and the `&` character is not displayed on the button label.
+ *
+ * In order to escape the `&` character in an item name, add a proceeding `&`. For
+ * example, `&&File` would result in `&File` displayed on the button label.
+ *
+ * Passing `null` will suppress the default menu. On Windows and Linux, this has
+ * the additional effect of removing the menu bar from the window.
+ *
+ * **Note:** The default menu will be created automatically if the app does not set
+ * one. It contains standard items such as `File`, `Edit`, `View`, `Window` and
+ * `Help`.
+ */
+ static setApplicationMenu(menu: (Menu) | (null)): void;
+ /**
+ * Appends the `menuItem` to the menu.
+ */
+ append(menuItem: MenuItem): void;
+ /**
+ * Closes the context menu in the `browserWindow`.
+ */
+ closePopup(browserWindow?: BrowserWindow): void;
+ /**
+ * the item with the specified `id`
+ */
+ getMenuItemById(id: string): (MenuItem) | (null);
+ /**
+ * Inserts the `menuItem` to the `pos` position of the menu.
+ */
+ insert(pos: number, menuItem: MenuItem): void;
+ /**
+ * Pops up this menu as a context menu in the `BrowserWindow`.
+ */
+ popup(options?: PopupOptions): void;
+ /**
+ * A `MenuItem[]` array containing the menu's items.
+ *
+ * Each `Menu` consists of multiple `MenuItem`s and each `MenuItem` can have a
+ * submenu.
+ */
+ items: MenuItem[];
+ }
+
+ class MenuItem {
+
+ // Docs: https://electronjs.org/docs/api/menu-item
+
+ /**
+ * MenuItem
+ */
+ constructor(options: MenuItemConstructorOptions);
+ /**
+ * An `Accelerator` (optional) indicating the item's accelerator, if set.
+ */
+ accelerator?: Accelerator;
+ /**
+ * A `boolean` indicating whether the item is checked, this property can be
+ * dynamically changed.
+ *
+ * A `checkbox` menu item will toggle the `checked` property on and off when
+ * selected.
+ *
+ * A `radio` menu item will turn on its `checked` property when clicked, and will
+ * turn off that property for all adjacent items in the same menu.
+ *
+ * You can add a `click` function for additional behavior.
+ */
+ checked: boolean;
+ /**
+ * A `Function` that is fired when the MenuItem receives a click event. It can be
+ * called with `menuItem.click(event, focusedWindow, focusedWebContents)`.
+ *
+ * * `event` KeyboardEvent
+ * * `focusedWindow` BrowserWindow
+ * * `focusedWebContents` WebContents
+ */
+ click: Function;
+ /**
+ * A `number` indicating an item's sequential unique id.
+ */
+ commandId: number;
+ /**
+ * A `boolean` indicating whether the item is enabled, this property can be
+ * dynamically changed.
+ */
+ enabled: boolean;
+ /**
+ * A `NativeImage | string` (optional) indicating the item's icon, if set.
+ */
+ icon?: (NativeImage) | (string);
+ /**
+ * A `string` indicating the item's unique id, this property can be dynamically
+ * changed.
+ */
+ id: string;
+ /**
+ * A `string` indicating the item's visible label.
+ */
+ label: string;
+ /**
+ * A `Menu` that the item is a part of.
+ */
+ menu: Menu;
+ /**
+ * A `boolean` indicating if the accelerator should be registered with the system
+ * or just displayed.
+ *
+ * This property can be dynamically changed.
+ */
+ registerAccelerator: boolean;
+ /**
+ * A `string` (optional) indicating the item's role, if set. Can be `undo`, `redo`,
+ * `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`,
+ * `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`,
+ * `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`, `close`, `help`,
+ * `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`,
+ * `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`,
+ * `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`,
+ * `selectPreviousTab`, `showAllTabs`, `mergeAllWindows`, `clearRecentDocuments`,
+ * `moveTabToNewWindow` or `windowMenu`
+ */
+ role?: ('undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'pasteAndMatchStyle' | 'delete' | 'selectAll' | 'reload' | 'forceReload' | 'toggleDevTools' | 'resetZoom' | 'zoomIn' | 'zoomOut' | 'toggleSpellChecker' | 'togglefullscreen' | 'window' | 'minimize' | 'close' | 'help' | 'about' | 'services' | 'hide' | 'hideOthers' | 'unhide' | 'quit' | 'startSpeaking' | 'stopSpeaking' | 'zoom' | 'front' | 'appMenu' | 'fileMenu' | 'editMenu' | 'viewMenu' | 'shareMenu' | 'recentDocuments' | 'toggleTabBar' | 'selectNextTab' | 'selectPreviousTab' | 'showAllTabs' | 'mergeAllWindows' | 'clearRecentDocuments' | 'moveTabToNewWindow' | 'windowMenu');
+ /**
+ * A `SharingItem` indicating the item to share when the `role` is `shareMenu`.
+ *
+ * This property can be dynamically changed.
+ *
+ * @platform darwin
+ */
+ sharingItem: SharingItem;
+ /**
+ * A `string` indicating the item's sublabel.
+ */
+ sublabel: string;
+ /**
+ * A `Menu` (optional) containing the menu item's submenu, if present.
+ */
+ submenu?: Menu;
+ /**
+ * A `string` indicating the item's hover text.
+ *
+ * @platform darwin
+ */
+ toolTip: string;
+ /**
+ * A `string` indicating the type of the item. Can be `normal`, `separator`,
+ * `submenu`, `checkbox` or `radio`.
+ */
+ type: ('normal' | 'separator' | 'submenu' | 'checkbox' | 'radio');
+ /**
+ * An `Accelerator | null` indicating the item's user-assigned accelerator for the
+ * menu item.
+ *
+ * **Note:** This property is only initialized after the `MenuItem` has been added
+ * to a `Menu`. Either via `Menu.buildFromTemplate` or via
+ * `Menu.append()/insert()`. Accessing before initialization will just return
+ * `null`.
+ *
+ * @platform darwin
+ */
+ readonly userAccelerator: (Accelerator) | (null);
+ /**
+ * A `boolean` indicating whether the item is visible, this property can be
+ * dynamically changed.
+ */
+ visible: boolean;
+ }
+
+ class MessageChannelMain extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/message-channel-main
+
+ /**
+ * A `MessagePortMain` property.
+ */
+ port1: MessagePortMain;
+ /**
+ * A `MessagePortMain` property.
+ */
+ port2: MessagePortMain;
+ }
+
+ class MessagePortMain extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/message-port-main
+
+ /**
+ * Emitted when the remote end of a MessagePortMain object becomes disconnected.
+ */
+ on(event: 'close', listener: Function): this;
+ once(event: 'close', listener: Function): this;
+ addListener(event: 'close', listener: Function): this;
+ removeListener(event: 'close', listener: Function): this;
+ /**
+ * Emitted when a MessagePortMain object receives a message.
+ */
+ on(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ once(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ addListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ removeListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ /**
+ * Disconnects the port, so it is no longer active.
+ */
+ close(): void;
+ /**
+ * Sends a message from the port, and optionally, transfers ownership of objects to
+ * other browsing contexts.
+ */
+ postMessage(message: any, transfer?: MessagePortMain[]): void;
+ /**
+ * Starts the sending of messages queued on the port. Messages will be queued until
+ * this method is called.
+ */
+ start(): void;
+ }
+
+ interface MimeTypedBuffer {
+
+ // Docs: https://electronjs.org/docs/api/structures/mime-typed-buffer
+
+ /**
+ * Charset of the buffer.
+ */
+ charset?: string;
+ /**
+ * The actual Buffer content.
+ */
+ data: Buffer;
+ /**
+ * MIME type of the buffer.
+ */
+ mimeType?: string;
+ }
+
+ interface MouseInputEvent extends InputEvent {
+
+ // Docs: https://electronjs.org/docs/api/structures/mouse-input-event
+
+ /**
+ * The button pressed, can be `left`, `middle`, `right`.
+ */
+ button?: ('left' | 'middle' | 'right');
+ clickCount?: number;
+ globalX?: number;
+ globalY?: number;
+ movementX?: number;
+ movementY?: number;
+ /**
+ * The type of the event, can be `mouseDown`, `mouseUp`, `mouseEnter`,
+ * `mouseLeave`, `contextMenu`, `mouseWheel` or `mouseMove`.
+ */
+ type: ('mouseDown' | 'mouseUp' | 'mouseEnter' | 'mouseLeave' | 'contextMenu' | 'mouseWheel' | 'mouseMove');
+ x: number;
+ y: number;
+ }
+
+ interface MouseWheelInputEvent extends MouseInputEvent {
+
+ // Docs: https://electronjs.org/docs/api/structures/mouse-wheel-input-event
+
+ accelerationRatioX?: number;
+ accelerationRatioY?: number;
+ canScroll?: boolean;
+ deltaX?: number;
+ deltaY?: number;
+ hasPreciseScrollingDeltas?: boolean;
+ /**
+ * The type of the event, can be `mouseWheel`.
+ */
+ type: ('mouseWheel');
+ wheelTicksX?: number;
+ wheelTicksY?: number;
+ }
+
+ class NativeImage {
+
+ // Docs: https://electronjs.org/docs/api/native-image
+
+ /**
+ * Creates an empty `NativeImage` instance.
+ */
+ static createEmpty(): NativeImage;
+ /**
+ * Creates a new `NativeImage` instance from `buffer` that contains the raw bitmap
+ * pixel data returned by `toBitmap()`. The specific format is platform-dependent.
+ */
+ static createFromBitmap(buffer: Buffer, options: CreateFromBitmapOptions): NativeImage;
+ /**
+ * Creates a new `NativeImage` instance from `buffer`. Tries to decode as PNG or
+ * JPEG first.
+ */
+ static createFromBuffer(buffer: Buffer, options?: CreateFromBufferOptions): NativeImage;
+ /**
+ * Creates a new `NativeImage` instance from `dataURL`.
+ */
+ static createFromDataURL(dataURL: string): NativeImage;
+ /**
+ * Creates a new `NativeImage` instance from the NSImage that maps to the given
+ * image name. See `System Icons` for a list of possible values.
+ *
+ * The `hslShift` is applied to the image with the following rules:
+ *
+ * * `hsl_shift[0]` (hue): The absolute hue value for the image - 0 and 1 map to 0
+ * and 360 on the hue color wheel (red).
+ * * `hsl_shift[1]` (saturation): A saturation shift for the image, with the
+ * following key values: 0 = remove all color. 0.5 = leave unchanged. 1 = fully
+ * saturate the image.
+ * * `hsl_shift[2]` (lightness): A lightness shift for the image, with the
+ * following key values: 0 = remove all lightness (make all pixels black). 0.5 =
+ * leave unchanged. 1 = full lightness (make all pixels white).
+ *
+ * This means that `[-1, 0, 1]` will make the image completely white and `[-1, 1,
+ * 0]` will make the image completely black.
+ *
+ * In some cases, the `NSImageName` doesn't match its string representation; one
+ * example of this is `NSFolderImageName`, whose string representation would
+ * actually be `NSFolder`. Therefore, you'll need to determine the correct string
+ * representation for your image before passing it in. This can be done with the
+ * following:
+ *
+ * `echo -e '#import <Cocoa/Cocoa.h>\nint main() { NSLog(@"%@", SYSTEM_IMAGE_NAME);
+ * }' | clang -otest -x objective-c -framework Cocoa - && ./test`
+ *
+ * where `SYSTEM_IMAGE_NAME` should be replaced with any value from this list.
+ *
+ * @platform darwin
+ */
+ static createFromNamedImage(imageName: string, hslShift?: number[]): NativeImage;
+ /**
+ * Creates a new `NativeImage` instance from a file located at `path`. This method
+ * returns an empty image if the `path` does not exist, cannot be read, or is not a
+ * valid image.
+ */
+ static createFromPath(path: string): NativeImage;
+ /**
+ * fulfilled with the file's thumbnail preview image, which is a NativeImage.
+ *
+ * Note: The Windows implementation will ignore `size.height` and scale the height
+ * according to `size.width`.
+ *
+ * @platform darwin,win32
+ */
+ static createThumbnailFromPath(path: string, size: Size): Promise<Electron.NativeImage>;
+ /**
+ * Add an image representation for a specific scale factor. This can be used to
+ * explicitly add different scale factor representations to an image. This can be
+ * called on empty images.
+ */
+ addRepresentation(options: AddRepresentationOptions): void;
+ /**
+ * The cropped image.
+ */
+ crop(rect: Rectangle): NativeImage;
+ /**
+ * The image's aspect ratio.
+ *
+ * If `scaleFactor` is passed, this will return the aspect ratio corresponding to
+ * the image representation most closely matching the passed value.
+ */
+ getAspectRatio(scaleFactor?: number): number;
+ /**
+ * A Buffer that contains the image's raw bitmap pixel data.
+ *
+ * The difference between `getBitmap()` and `toBitmap()` is that `getBitmap()` does
+ * not copy the bitmap data, so you have to use the returned Buffer immediately in
+ * current event loop tick; otherwise the data might be changed or destroyed.
+ */
+ getBitmap(options?: BitmapOptions): Buffer;
+ /**
+ * A Buffer that stores C pointer to underlying native handle of the image. On
+ * macOS, a pointer to `NSImage` instance would be returned.
+ *
+ * Notice that the returned pointer is a weak pointer to the underlying native
+ * image instead of a copy, so you _must_ ensure that the associated `nativeImage`
+ * instance is kept around.
+ *
+ * @platform darwin
+ */
+ getNativeHandle(): Buffer;
+ /**
+ * An array of all scale factors corresponding to representations for a given
+ * nativeImage.
+ */
+ getScaleFactors(): number[];
+ /**
+ * If `scaleFactor` is passed, this will return the size corresponding to the image
+ * representation most closely matching the passed value.
+ */
+ getSize(scaleFactor?: number): Size;
+ /**
+ * Whether the image is empty.
+ */
+ isEmpty(): boolean;
+ /**
+ * Whether the image is a template image.
+ */
+ isTemplateImage(): boolean;
+ /**
+ * The resized image.
+ *
+ * If only the `height` or the `width` are specified then the current aspect ratio
+ * will be preserved in the resized image.
+ */
+ resize(options: ResizeOptions): NativeImage;
+ /**
+ * Marks the image as a template image.
+ */
+ setTemplateImage(option: boolean): void;
+ /**
+ * A Buffer that contains a copy of the image's raw bitmap pixel data.
+ */
+ toBitmap(options?: ToBitmapOptions): Buffer;
+ /**
+ * The data URL of the image.
+ */
+ toDataURL(options?: ToDataURLOptions): string;
+ /**
+ * A Buffer that contains the image's `JPEG` encoded data.
+ */
+ toJPEG(quality: number): Buffer;
+ /**
+ * A Buffer that contains the image's `PNG` encoded data.
+ */
+ toPNG(options?: ToPNGOptions): Buffer;
+ /**
+ * A `boolean` property that determines whether the image is considered a template
+ * image.
+ *
+ * Please note that this property only has an effect on macOS.
+ *
+ * @platform darwin
+ */
+ isMacTemplateImage: boolean;
+ }
+
+ interface NativeTheme extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/native-theme
+
+ /**
+ * Emitted when something in the underlying NativeTheme has changed. This normally
+ * means that either the value of `shouldUseDarkColors`,
+ * `shouldUseHighContrastColors` or `shouldUseInvertedColorScheme` has changed. You
+ * will have to check them to determine which one has changed.
+ */
+ on(event: 'updated', listener: Function): this;
+ once(event: 'updated', listener: Function): this;
+ addListener(event: 'updated', listener: Function): this;
+ removeListener(event: 'updated', listener: Function): this;
+ /**
+ * A `boolean` indicating whether Chromium is in forced colors mode, controlled by
+ * system accessibility settings. Currently, Windows high contrast is the only
+ * system setting that triggers forced colors mode.
+ *
+ * @platform win32
+ */
+ readonly inForcedColorsMode: boolean;
+ /**
+ * A `boolean` for if the OS / Chromium currently has a dark mode enabled or is
+ * being instructed to show a dark-style UI. If you want to modify this value you
+ * should use `themeSource` below.
+ *
+ */
+ readonly shouldUseDarkColors: boolean;
+ /**
+ * A `boolean` for if the OS / Chromium currently has high-contrast mode enabled or
+ * is being instructed to show a high-contrast UI.
+ *
+ * @platform darwin,win32
+ */
+ readonly shouldUseHighContrastColors: boolean;
+ /**
+ * A `boolean` for if the OS / Chromium currently has an inverted color scheme or
+ * is being instructed to use an inverted color scheme.
+ *
+ * @platform darwin,win32
+ */
+ readonly shouldUseInvertedColorScheme: boolean;
+ /**
+ * A `string` property that can be `system`, `light` or `dark`. It is used to
+ * override and supersede the value that Chromium has chosen to use internally.
+ *
+ * Setting this property to `system` will remove the override and everything will
+ * be reset to the OS default. By default `themeSource` is `system`.
+ *
+ * Settings this property to `dark` will have the following effects:
+ *
+ * * `nativeTheme.shouldUseDarkColors` will be `true` when accessed
+ * * Any UI Electron renders on Linux and Windows including context menus,
+ * devtools, etc. will use the dark UI.
+ * * Any UI the OS renders on macOS including menus, window frames, etc. will use
+ * the dark UI.
+ * * The `prefers-color-scheme` CSS query will match `dark` mode.
+ * * The `updated` event will be emitted
+ *
+ * Settings this property to `light` will have the following effects:
+ *
+ * * `nativeTheme.shouldUseDarkColors` will be `false` when accessed
+ * * Any UI Electron renders on Linux and Windows including context menus,
+ * devtools, etc. will use the light UI.
+ * * Any UI the OS renders on macOS including menus, window frames, etc. will use
+ * the light UI.
+ * * The `prefers-color-scheme` CSS query will match `light` mode.
+ * * The `updated` event will be emitted
+ *
+ * The usage of this property should align with a classic "dark mode" state machine
+ * in your application where the user has three options.
+ *
+ * * `Follow OS` --> `themeSource = 'system'`
+ * * `Dark Mode` --> `themeSource = 'dark'`
+ * * `Light Mode` --> `themeSource = 'light'`
+ *
+ * Your application should then always use `shouldUseDarkColors` to determine what
+ * CSS to apply.
+ */
+ themeSource: ('system' | 'light' | 'dark');
+ }
+
+ interface Net {
+
+ // Docs: https://electronjs.org/docs/api/net
+
+ /**
+ * see Response.
+ *
+ * Sends a request, similarly to how `fetch()` works in the renderer, using
+ * Chrome's network stack. This differs from Node's `fetch()`, which uses Node.js's
+ * HTTP stack.
+ *
+ * Example:
+ *
+ * This method will issue requests from the default session. To send a `fetch`
+ * request from another session, use ses.fetch().
+ *
+ * See the MDN documentation for `fetch()` for more details.
+ *
+ * Limitations:
+ *
+ * * `net.fetch()` does not support the `data:` or `blob:` schemes.
+ * * The value of the `integrity` option is ignored.
+ * * The `.type` and `.url` values of the returned `Response` object are incorrect.
+ *
+ * By default, requests made with `net.fetch` can be made to custom protocols as
+ * well as `file:`, and will trigger webRequest handlers if present. When the
+ * non-standard `bypassCustomProtocolHandlers` option is set in RequestInit, custom
+ * protocol handlers will not be called for this request. This allows forwarding an
+ * intercepted request to the built-in handler. webRequest handlers will still be
+ * triggered when bypassing custom protocols.
+ */
+ fetch(input: (string) | (GlobalRequest), init?: RequestInit & { bypassCustomProtocolHandlers?: boolean }): Promise<GlobalResponse>;
+ /**
+ * Whether there is currently internet connection.
+ *
+ * A return value of `false` is a pretty strong indicator that the user won't be
+ * able to connect to remote sites. However, a return value of `true` is
+ * inconclusive; even if some link is up, it is uncertain whether a particular
+ * connection attempt to a particular remote site will be successful.
+ */
+ isOnline(): boolean;
+ /**
+ * Creates a `ClientRequest` instance using the provided `options` which are
+ * directly forwarded to the `ClientRequest` constructor. The `net.request` method
+ * would be used to issue both secure and insecure HTTP requests according to the
+ * specified protocol scheme in the `options` object.
+ */
+ request(options: (ClientRequestConstructorOptions) | (string)): ClientRequest;
+ /**
+ * Resolves with the resolved IP addresses for the `host`.
+ *
+ * This method will resolve hosts from the default session. To resolve a host from
+ * another session, use ses.resolveHost().
+ */
+ resolveHost(host: string, options?: ResolveHostOptions): Promise<Electron.ResolvedHost>;
+ /**
+ * A `boolean` property. Whether there is currently internet connection.
+ *
+ * A return value of `false` is a pretty strong indicator that the user won't be
+ * able to connect to remote sites. However, a return value of `true` is
+ * inconclusive; even if some link is up, it is uncertain whether a particular
+ * connection attempt to a particular remote site will be successful.
+ *
+ */
+ readonly online: boolean;
+ }
+
+ interface NetLog {
+
+ // Docs: https://electronjs.org/docs/api/net-log
+
+ /**
+ * resolves when the net log has begun recording.
+ *
+ * Starts recording network events to `path`.
+ */
+ startLogging(path: string, options?: StartLoggingOptions): Promise<void>;
+ /**
+ * resolves when the net log has been flushed to disk.
+ *
+ * Stops recording network events. If not called, net logging will automatically
+ * end when app quits.
+ */
+ stopLogging(): Promise<void>;
+ /**
+ * A `boolean` property that indicates whether network logs are currently being
+ * recorded.
+ *
+ */
+ readonly currentlyLogging: boolean;
+ }
+
+ class Notification extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/notification
+
+ /**
+ * @platform darwin
+ */
+ on(event: 'action', listener: (event: Event,
+ /**
+ * The index of the action that was activated.
+ */
+ index: number) => void): this;
+ once(event: 'action', listener: (event: Event,
+ /**
+ * The index of the action that was activated.
+ */
+ index: number) => void): this;
+ addListener(event: 'action', listener: (event: Event,
+ /**
+ * The index of the action that was activated.
+ */
+ index: number) => void): this;
+ removeListener(event: 'action', listener: (event: Event,
+ /**
+ * The index of the action that was activated.
+ */
+ index: number) => void): this;
+ /**
+ * Emitted when the notification is clicked by the user.
+ */
+ on(event: 'click', listener: (event: Event) => void): this;
+ once(event: 'click', listener: (event: Event) => void): this;
+ addListener(event: 'click', listener: (event: Event) => void): this;
+ removeListener(event: 'click', listener: (event: Event) => void): this;
+ /**
+ * Emitted when the notification is closed by manual intervention from the user.
+ *
+ * This event is not guaranteed to be emitted in all cases where the notification
+ * is closed.
+ *
+ * On Windows, the `close` event can be emitted in one of three ways: programmatic
+ * dismissal with `notification.close()`, by the user closing the notification, or
+ * via system timeout. If a notification is in the Action Center after the initial
+ * `close` event is emitted, a call to `notification.close()` will remove the
+ * notification from the action center but the `close` event will not be emitted
+ * again.
+ */
+ on(event: 'close', listener: (event: Event) => void): this;
+ once(event: 'close', listener: (event: Event) => void): this;
+ addListener(event: 'close', listener: (event: Event) => void): this;
+ removeListener(event: 'close', listener: (event: Event) => void): this;
+ /**
+ * Emitted when an error is encountered while creating and showing the native
+ * notification.
+ *
+ * @platform win32
+ */
+ on(event: 'failed', listener: (event: Event,
+ /**
+ * The error encountered during execution of the `show()` method.
+ */
+ error: string) => void): this;
+ once(event: 'failed', listener: (event: Event,
+ /**
+ * The error encountered during execution of the `show()` method.
+ */
+ error: string) => void): this;
+ addListener(event: 'failed', listener: (event: Event,
+ /**
+ * The error encountered during execution of the `show()` method.
+ */
+ error: string) => void): this;
+ removeListener(event: 'failed', listener: (event: Event,
+ /**
+ * The error encountered during execution of the `show()` method.
+ */
+ error: string) => void): this;
+ /**
+ * Emitted when the user clicks the "Reply" button on a notification with
+ * `hasReply: true`.
+ *
+ * @platform darwin
+ */
+ on(event: 'reply', listener: (event: Event,
+ /**
+ * The string the user entered into the inline reply field.
+ */
+ reply: string) => void): this;
+ once(event: 'reply', listener: (event: Event,
+ /**
+ * The string the user entered into the inline reply field.
+ */
+ reply: string) => void): this;
+ addListener(event: 'reply', listener: (event: Event,
+ /**
+ * The string the user entered into the inline reply field.
+ */
+ reply: string) => void): this;
+ removeListener(event: 'reply', listener: (event: Event,
+ /**
+ * The string the user entered into the inline reply field.
+ */
+ reply: string) => void): this;
+ /**
+ * Emitted when the notification is shown to the user. Note that this event can be
+ * fired multiple times as a notification can be shown multiple times through the
+ * `show()` method.
+ */
+ on(event: 'show', listener: (event: Event) => void): this;
+ once(event: 'show', listener: (event: Event) => void): this;
+ addListener(event: 'show', listener: (event: Event) => void): this;
+ removeListener(event: 'show', listener: (event: Event) => void): this;
+ /**
+ * Notification
+ */
+ constructor(options?: NotificationConstructorOptions);
+ /**
+ * Whether or not desktop notifications are supported on the current system
+ */
+ static isSupported(): boolean;
+ /**
+ * Dismisses the notification.
+ *
+ * On Windows, calling `notification.close()` while the notification is visible on
+ * screen will dismiss the notification and remove it from the Action Center. If
+ * `notification.close()` is called after the notification is no longer visible on
+ * screen, calling `notification.close()` will try remove it from the Action
+ * Center.
+ */
+ close(): void;
+ /**
+ * Immediately shows the notification to the user. Unlike the web notification API,
+ * instantiating a `new Notification()` does not immediately show it to the user.
+ * Instead, you need to call this method before the OS will display it.
+ *
+ * If the notification has been shown before, this method will dismiss the
+ * previously shown notification and create a new one with identical properties.
+ */
+ show(): void;
+ /**
+ * A `NotificationAction[]` property representing the actions of the notification.
+ */
+ actions: NotificationAction[];
+ /**
+ * A `string` property representing the body of the notification.
+ */
+ body: string;
+ /**
+ * A `string` property representing the close button text of the notification.
+ */
+ closeButtonText: string;
+ /**
+ * A `boolean` property representing whether the notification has a reply action.
+ */
+ hasReply: boolean;
+ /**
+ * A `string` property representing the reply placeholder of the notification.
+ */
+ replyPlaceholder: string;
+ /**
+ * A `boolean` property representing whether the notification is silent.
+ */
+ silent: boolean;
+ /**
+ * A `string` property representing the sound of the notification.
+ */
+ sound: string;
+ /**
+ * A `string` property representing the subtitle of the notification.
+ */
+ subtitle: string;
+ /**
+ * A `string` property representing the type of timeout duration for the
+ * notification. Can be 'default' or 'never'.
+ *
+ * If `timeoutType` is set to 'never', the notification never expires. It stays
+ * open until closed by the calling API or the user.
+ *
+ * @platform linux,win32
+ */
+ timeoutType: ('default' | 'never');
+ /**
+ * A `string` property representing the title of the notification.
+ */
+ title: string;
+ /**
+ * A `string` property representing the custom Toast XML of the notification.
+ *
+ * @platform win32
+ */
+ toastXml: string;
+ /**
+ * A `string` property representing the urgency level of the notification. Can be
+ * 'normal', 'critical', or 'low'.
+ *
+ * Default is 'low' - see NotifyUrgency for more information.
+ *
+ * @platform linux
+ */
+ urgency: ('normal' | 'critical' | 'low');
+ }
+
+ interface NotificationAction {
+
+ // Docs: https://electronjs.org/docs/api/structures/notification-action
+
+ /**
+ * The label for the given action.
+ */
+ text?: string;
+ /**
+ * The type of action, can be `button`.
+ */
+ type: ('button');
+ }
+
+ interface NotificationResponse {
+
+ // Docs: https://electronjs.org/docs/api/structures/notification-response
+
+ /**
+ * The identifier string of the action that the user selected.
+ */
+ actionIdentifier: string;
+ /**
+ * The delivery date of the notification.
+ */
+ date: number;
+ /**
+ * The unique identifier for this notification request.
+ */
+ identifier: string;
+ /**
+ * A dictionary of custom information associated with the notification.
+ */
+ userInfo: Record<string, any>;
+ /**
+ * The text entered or chosen by the user.
+ */
+ userText?: string;
+ }
+
+ interface ParentPort extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/parent-port
+
+ /**
+ * Emitted when the process receives a message. Messages received on this port will
+ * be queued up until a handler is registered for this event.
+ */
+ on(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ once(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ addListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ removeListener(event: 'message', listener: (messageEvent: MessageEvent) => void): this;
+ /**
+ * Sends a message from the process to its parent.
+ */
+ postMessage(message: any): void;
+ }
+
+ interface PaymentDiscount {
+
+ // Docs: https://electronjs.org/docs/api/structures/payment-discount
+
+ /**
+ * A string used to uniquely identify a discount offer for a product.
+ */
+ identifier: string;
+ /**
+ * A string that identifies the key used to generate the signature.
+ */
+ keyIdentifier: string;
+ /**
+ * A universally unique ID (UUID) value that you define.
+ */
+ nonce: string;
+ /**
+ * A UTF-8 string representing the properties of a specific discount offer,
+ * cryptographically signed.
+ */
+ signature: string;
+ /**
+ * The date and time of the signature's creation in milliseconds, formatted in Unix
+ * epoch time.
+ */
+ timestamp: number;
+ }
+
+ interface Point {
+
+ // Docs: https://electronjs.org/docs/api/structures/point
+
+ x: number;
+ y: number;
+ }
+
+ interface PostBody {
+
+ // Docs: https://electronjs.org/docs/api/structures/post-body
+
+ /**
+ * The boundary used to separate multiple parts of the message. Only valid when
+ * `contentType` is `multipart/form-data`.
+ */
+ boundary?: string;
+ /**
+ * The `content-type` header used for the data. One of
+ * `application/x-www-form-urlencoded` or `multipart/form-data`. Corresponds to the
+ * `enctype` attribute of the submitted HTML form.
+ */
+ contentType: string;
+ /**
+ * The post data to be sent to the new window.
+ */
+ data: Array<(UploadRawData) | (UploadFile)>;
+ }
+
+ interface PowerMonitor extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/power-monitor
+
+ /**
+ * Emitted when the system is about to lock the screen.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'lock-screen', listener: Function): this;
+ once(event: 'lock-screen', listener: Function): this;
+ addListener(event: 'lock-screen', listener: Function): this;
+ removeListener(event: 'lock-screen', listener: Function): this;
+ /**
+ * Emitted when the system changes to AC power.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'on-ac', listener: Function): this;
+ once(event: 'on-ac', listener: Function): this;
+ addListener(event: 'on-ac', listener: Function): this;
+ removeListener(event: 'on-ac', listener: Function): this;
+ /**
+ * Emitted when system changes to battery power.
+ *
+ * @platform darwin
+ */
+ on(event: 'on-battery', listener: Function): this;
+ once(event: 'on-battery', listener: Function): this;
+ addListener(event: 'on-battery', listener: Function): this;
+ removeListener(event: 'on-battery', listener: Function): this;
+ /**
+ * Emitted when system is resuming.
+ */
+ on(event: 'resume', listener: Function): this;
+ once(event: 'resume', listener: Function): this;
+ addListener(event: 'resume', listener: Function): this;
+ removeListener(event: 'resume', listener: Function): this;
+ /**
+ * Emitted when the system is about to reboot or shut down. If the event handler
+ * invokes `e.preventDefault()`, Electron will attempt to delay system shutdown in
+ * order for the app to exit cleanly. If `e.preventDefault()` is called, the app
+ * should exit as soon as possible by calling something like `app.quit()`.
+ *
+ * @platform linux,darwin
+ */
+ on(event: 'shutdown', listener: Function): this;
+ once(event: 'shutdown', listener: Function): this;
+ addListener(event: 'shutdown', listener: Function): this;
+ removeListener(event: 'shutdown', listener: Function): this;
+ /**
+ * Notification of a change in the operating system's advertised speed limit for
+ * CPUs, in percent. Values below 100 indicate that the system is impairing
+ * processing power due to thermal management.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'speed-limit-change', listener: Function): this;
+ once(event: 'speed-limit-change', listener: Function): this;
+ addListener(event: 'speed-limit-change', listener: Function): this;
+ removeListener(event: 'speed-limit-change', listener: Function): this;
+ /**
+ * Emitted when the system is suspending.
+ */
+ on(event: 'suspend', listener: Function): this;
+ once(event: 'suspend', listener: Function): this;
+ addListener(event: 'suspend', listener: Function): this;
+ removeListener(event: 'suspend', listener: Function): this;
+ /**
+ * Emitted when the thermal state of the system changes. Notification of a change
+ * in the thermal status of the system, such as entering a critical temperature
+ * range. Depending on the severity, the system might take steps to reduce said
+ * temperature, for example, throttling the CPU or switching on the fans if
+ * available.
+ *
+ * Apps may react to the new state by reducing expensive computing tasks (e.g.
+ * video encoding), or notifying the user. The same state might be received
+ * repeatedly.
+ *
+ * See
+ * https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/RespondToThermalStateChanges.html
+ *
+ * @platform darwin
+ */
+ on(event: 'thermal-state-change', listener: Function): this;
+ once(event: 'thermal-state-change', listener: Function): this;
+ addListener(event: 'thermal-state-change', listener: Function): this;
+ removeListener(event: 'thermal-state-change', listener: Function): this;
+ /**
+ * Emitted as soon as the systems screen is unlocked.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'unlock-screen', listener: Function): this;
+ once(event: 'unlock-screen', listener: Function): this;
+ addListener(event: 'unlock-screen', listener: Function): this;
+ removeListener(event: 'unlock-screen', listener: Function): this;
+ /**
+ * Emitted when a login session is activated. See documentation for more
+ * information.
+ *
+ * @platform darwin
+ */
+ on(event: 'user-did-become-active', listener: Function): this;
+ once(event: 'user-did-become-active', listener: Function): this;
+ addListener(event: 'user-did-become-active', listener: Function): this;
+ removeListener(event: 'user-did-become-active', listener: Function): this;
+ /**
+ * Emitted when a login session is deactivated. See documentation for more
+ * information.
+ *
+ * @platform darwin
+ */
+ on(event: 'user-did-resign-active', listener: Function): this;
+ once(event: 'user-did-resign-active', listener: Function): this;
+ addListener(event: 'user-did-resign-active', listener: Function): this;
+ removeListener(event: 'user-did-resign-active', listener: Function): this;
+ /**
+ * The system's current thermal state. Can be `unknown`, `nominal`, `fair`,
+ * `serious`, or `critical`.
+ *
+ * @platform darwin
+ */
+ getCurrentThermalState(): ('unknown' | 'nominal' | 'fair' | 'serious' | 'critical');
+ /**
+ * The system's current idle state. Can be `active`, `idle`, `locked` or `unknown`.
+ *
+ * Calculate the system idle state. `idleThreshold` is the amount of time (in
+ * seconds) before considered idle. `locked` is available on supported systems
+ * only.
+ */
+ getSystemIdleState(idleThreshold: number): ('active' | 'idle' | 'locked' | 'unknown');
+ /**
+ * Idle time in seconds
+ *
+ * Calculate system idle time in seconds.
+ */
+ getSystemIdleTime(): number;
+ /**
+ * Whether the system is on battery power.
+ *
+ * To monitor for changes in this property, use the `on-battery` and `on-ac`
+ * events.
+ */
+ isOnBatteryPower(): boolean;
+ /**
+ * A `boolean` property. True if the system is on battery power.
+ *
+ * See `powerMonitor.isOnBatteryPower()`.
+ */
+ onBatteryPower: boolean;
+ }
+
+ interface PowerSaveBlocker {
+
+ // Docs: https://electronjs.org/docs/api/power-save-blocker
+
+ /**
+ * Whether the corresponding `powerSaveBlocker` has started.
+ */
+ isStarted(id: number): boolean;
+ /**
+ * The blocker ID that is assigned to this power blocker.
+ *
+ * Starts preventing the system from entering lower-power mode. Returns an integer
+ * identifying the power save blocker.
+ *
+ * **Note:** `prevent-display-sleep` has higher precedence over
+ * `prevent-app-suspension`. Only the highest precedence type takes effect. In
+ * other words, `prevent-display-sleep` always takes precedence over
+ * `prevent-app-suspension`.
+ *
+ * For example, an API calling A requests for `prevent-app-suspension`, and another
+ * calling B requests for `prevent-display-sleep`. `prevent-display-sleep` will be
+ * used until B stops its request. After that, `prevent-app-suspension` is used.
+ */
+ start(type: 'prevent-app-suspension' | 'prevent-display-sleep'): number;
+ /**
+ * Stops the specified power save blocker.
+ *
+ * Whether the specified `powerSaveBlocker` has been stopped.
+ */
+ stop(id: number): boolean;
+ }
+
+ interface PrinterInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/printer-info
+
+ /**
+ * a longer description of the printer's type.
+ */
+ description: string;
+ /**
+ * the name of the printer as shown in Print Preview.
+ */
+ displayName: string;
+ /**
+ * whether or not a given printer is set as the default printer on the OS.
+ */
+ isDefault: boolean;
+ /**
+ * the name of the printer as understood by the OS.
+ */
+ name: string;
+ /**
+ * an object containing a variable number of platform-specific printer information.
+ */
+ options: Options;
+ /**
+ * the current status of the printer.
+ */
+ status: number;
+ }
+
+ interface ProcessMemoryInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/process-memory-info
+
+ /**
+ * The amount of memory not shared by other processes, such as JS heap or HTML
+ * content in Kilobytes.
+ */
+ private: number;
+ /**
+ * The amount of memory currently pinned to actual physical RAM in Kilobytes.
+ *
+ * @platform linux,win32
+ */
+ residentSet: number;
+ /**
+ * The amount of memory shared between processes, typically memory consumed by the
+ * Electron code itself in Kilobytes.
+ */
+ shared: number;
+ }
+
+ interface ProcessMetric {
+
+ // Docs: https://electronjs.org/docs/api/structures/process-metric
+
+ /**
+ * CPU usage of the process.
+ */
+ cpu: CPUUsage;
+ /**
+ * Creation time for this process. The time is represented as number of
+ * milliseconds since epoch. Since the `pid` can be reused after a process dies, it
+ * is useful to use both the `pid` and the `creationTime` to uniquely identify a
+ * process.
+ */
+ creationTime: number;
+ /**
+ * One of the following values:
+ *
+ * @platform win32
+ */
+ integrityLevel?: ('untrusted' | 'low' | 'medium' | 'high' | 'unknown');
+ /**
+ * Memory information for the process.
+ */
+ memory: MemoryInfo;
+ /**
+ * The name of the process. Examples for utility: `Audio Service`, `Content
+ * Decryption Module Service`, `Network Service`, `Video Capture`, etc.
+ */
+ name?: string;
+ /**
+ * Process id of the process.
+ */
+ pid: number;
+ /**
+ * Whether the process is sandboxed on OS level.
+ *
+ * @platform darwin,win32
+ */
+ sandboxed?: boolean;
+ /**
+ * The non-localized name of the process.
+ */
+ serviceName?: string;
+ /**
+ * Process type. One of the following values:
+ */
+ type: ('Browser' | 'Tab' | 'Utility' | 'Zygote' | 'Sandbox helper' | 'GPU' | 'Pepper Plugin' | 'Pepper Plugin Broker' | 'Unknown');
+ }
+
+ interface Product {
+
+ // Docs: https://electronjs.org/docs/api/structures/product
+
+ /**
+ * 3 character code presenting a product's currency based on the ISO 4217 standard.
+ */
+ currencyCode: string;
+ /**
+ * An array of discount offers
+ */
+ discounts: ProductDiscount[];
+ /**
+ * The total size of the content, in bytes.
+ */
+ downloadContentLengths: number[];
+ /**
+ * A string that identifies the version of the content.
+ */
+ downloadContentVersion: string;
+ /**
+ * The locale formatted price of the product.
+ */
+ formattedPrice: string;
+ /**
+ * The object containing introductory price information for the product. available
+ * for the product.
+ */
+ introductoryPrice?: ProductDiscount;
+ /**
+ * A boolean value that indicates whether the App Store has downloadable content
+ * for this product. `true` if at least one file has been associated with the
+ * product.
+ */
+ isDownloadable: boolean;
+ /**
+ * A description of the product.
+ */
+ localizedDescription: string;
+ /**
+ * The name of the product.
+ */
+ localizedTitle: string;
+ /**
+ * The cost of the product in the local currency.
+ */
+ price: number;
+ /**
+ * The string that identifies the product to the Apple App Store.
+ */
+ productIdentifier: string;
+ /**
+ * The identifier of the subscription group to which the subscription belongs.
+ */
+ subscriptionGroupIdentifier: string;
+ /**
+ * The period details for products that are subscriptions.
+ */
+ subscriptionPeriod?: ProductSubscriptionPeriod;
+ }
+
+ interface ProductDiscount {
+
+ // Docs: https://electronjs.org/docs/api/structures/product-discount
+
+ /**
+ * A string used to uniquely identify a discount offer for a product.
+ */
+ identifier: string;
+ /**
+ * An integer that indicates the number of periods the product discount is
+ * available.
+ */
+ numberOfPeriods: number;
+ /**
+ * The payment mode for this product discount. Can be `payAsYouGo`, `payUpFront`,
+ * or `freeTrial`.
+ */
+ paymentMode: ('payAsYouGo' | 'payUpFront' | 'freeTrial');
+ /**
+ * The discount price of the product in the local currency.
+ */
+ price: number;
+ /**
+ * The locale used to format the discount price of the product.
+ */
+ priceLocale: string;
+ /**
+ * An object that defines the period for the product discount.
+ */
+ subscriptionPeriod?: ProductSubscriptionPeriod;
+ /**
+ * The type of discount offer.
+ */
+ type: number;
+ }
+
+ interface ProductSubscriptionPeriod {
+
+ // Docs: https://electronjs.org/docs/api/structures/product-subscription-period
+
+ /**
+ * The number of units per subscription period.
+ */
+ numberOfUnits: number;
+ /**
+ * The increment of time that a subscription period is specified in. Can be `day`,
+ * `week`, `month`, `year`.
+ */
+ unit: ('day' | 'week' | 'month' | 'year');
+ }
+
+ interface Protocol {
+
+ // Docs: https://electronjs.org/docs/api/protocol
+
+ /**
+ * Register a protocol handler for `scheme`. Requests made to URLs with this scheme
+ * will delegate to this handler to determine what response should be sent.
+ *
+ * Either a `Response` or a `Promise<Response>` can be returned.
+ *
+ * Example:
+ *
+ * See the MDN docs for `Request` and `Response` for more details.
+ */
+ handle(scheme: string, handler: (request: GlobalRequest) => (GlobalResponse) | (Promise<GlobalResponse>)): void;
+ /**
+ * Whether the protocol was successfully intercepted
+ *
+ * Intercepts `scheme` protocol and uses `handler` as the protocol's new handler
+ * which sends a `Buffer` as a response.
+ *
+ * @deprecated
+ */
+ interceptBufferProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (Buffer) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully intercepted
+ *
+ * Intercepts `scheme` protocol and uses `handler` as the protocol's new handler
+ * which sends a file as a response.
+ *
+ * @deprecated
+ */
+ interceptFileProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (string) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully intercepted
+ *
+ * Intercepts `scheme` protocol and uses `handler` as the protocol's new handler
+ * which sends a new HTTP request as a response.
+ *
+ * @deprecated
+ */
+ interceptHttpProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: ProtocolResponse) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully intercepted
+ *
+ * Same as `protocol.registerStreamProtocol`, except that it replaces an existing
+ * protocol handler.
+ *
+ * @deprecated
+ */
+ interceptStreamProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (NodeJS.ReadableStream) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully intercepted
+ *
+ * Intercepts `scheme` protocol and uses `handler` as the protocol's new handler
+ * which sends a `string` as a response.
+ *
+ * @deprecated
+ */
+ interceptStringProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (string) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether `scheme` is already handled.
+ */
+ isProtocolHandled(scheme: string): boolean;
+ /**
+ * Whether `scheme` is already intercepted.
+ *
+ * @deprecated
+ */
+ isProtocolIntercepted(scheme: string): boolean;
+ /**
+ * Whether `scheme` is already registered.
+ *
+ * @deprecated
+ */
+ isProtocolRegistered(scheme: string): boolean;
+ /**
+ * Whether the protocol was successfully registered
+ *
+ * Registers a protocol of `scheme` that will send a `Buffer` as a response.
+ *
+ * The usage is the same with `registerFileProtocol`, except that the `callback`
+ * should be called with either a `Buffer` object or an object that has the `data`
+ * property.
+ *
+ * Example:
+ *
+ * @deprecated
+ */
+ registerBufferProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (Buffer) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully registered
+ *
+ * Registers a protocol of `scheme` that will send a file as the response. The
+ * `handler` will be called with `request` and `callback` where `request` is an
+ * incoming request for the `scheme`.
+ *
+ * To handle the `request`, the `callback` should be called with either the file's
+ * path or an object that has a `path` property, e.g. `callback(filePath)` or
+ * `callback({ path: filePath })`. The `filePath` must be an absolute path.
+ *
+ * By default the `scheme` is treated like `http:`, which is parsed differently
+ * from protocols that follow the "generic URI syntax" like `file:`.
+ *
+ * @deprecated
+ */
+ registerFileProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (string) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully registered
+ *
+ * Registers a protocol of `scheme` that will send an HTTP request as a response.
+ *
+ * The usage is the same with `registerFileProtocol`, except that the `callback`
+ * should be called with an object that has the `url` property.
+ *
+ * @deprecated
+ */
+ registerHttpProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: ProtocolResponse) => void) => void): boolean;
+ /**
+ * **Note:** This method can only be used before the `ready` event of the `app`
+ * module gets emitted and can be called only once.
+ *
+ * Registers the `scheme` as standard, secure, bypasses content security policy for
+ * resources, allows registering ServiceWorker, supports fetch API, and streaming
+ * video/audio. Specify a privilege with the value of `true` to enable the
+ * capability.
+ *
+ * An example of registering a privileged scheme, that bypasses Content Security
+ * Policy:
+ *
+ * A standard scheme adheres to what RFC 3986 calls generic URI syntax. For example
+ * `http` and `https` are standard schemes, while `file` is not.
+ *
+ * Registering a scheme as standard allows relative and absolute resources to be
+ * resolved correctly when served. Otherwise the scheme will behave like the `file`
+ * protocol, but without the ability to resolve relative URLs.
+ *
+ * For example when you load following page with custom protocol without
+ * registering it as standard scheme, the image will not be loaded because
+ * non-standard schemes can not recognize relative URLs:
+ *
+ * Registering a scheme as standard will allow access to files through the
+ * FileSystem API. Otherwise the renderer will throw a security error for the
+ * scheme.
+ *
+ * By default web storage apis (localStorage, sessionStorage, webSQL, indexedDB,
+ * cookies) are disabled for non standard schemes. So in general if you want to
+ * register a custom protocol to replace the `http` protocol, you have to register
+ * it as a standard scheme.
+ *
+ * Protocols that use streams (http and stream protocols) should set `stream:
+ * true`. The `<video>` and `<audio>` HTML elements expect protocols to buffer
+ * their responses by default. The `stream` flag configures those elements to
+ * correctly expect streaming responses.
+ */
+ registerSchemesAsPrivileged(customSchemes: CustomScheme[]): void;
+ /**
+ * Whether the protocol was successfully registered
+ *
+ * Registers a protocol of `scheme` that will send a stream as a response.
+ *
+ * The usage is the same with `registerFileProtocol`, except that the `callback`
+ * should be called with either a `ReadableStream` object or an object that has the
+ * `data` property.
+ *
+ * Example:
+ *
+ * It is possible to pass any object that implements the readable stream API (emits
+ * `data`/`end`/`error` events). For example, here's how a file could be returned:
+ *
+ * @deprecated
+ */
+ registerStreamProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (NodeJS.ReadableStream) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Whether the protocol was successfully registered
+ *
+ * Registers a protocol of `scheme` that will send a `string` as a response.
+ *
+ * The usage is the same with `registerFileProtocol`, except that the `callback`
+ * should be called with either a `string` or an object that has the `data`
+ * property.
+ *
+ * @deprecated
+ */
+ registerStringProtocol(scheme: string, handler: (request: ProtocolRequest, callback: (response: (string) | (ProtocolResponse)) => void) => void): boolean;
+ /**
+ * Removes a protocol handler registered with `protocol.handle`.
+ */
+ unhandle(scheme: string): void;
+ /**
+ * Whether the protocol was successfully unintercepted
+ *
+ * Remove the interceptor installed for `scheme` and restore its original handler.
+ *
+ * @deprecated
+ */
+ uninterceptProtocol(scheme: string): boolean;
+ /**
+ * Whether the protocol was successfully unregistered
+ *
+ * Unregisters the custom protocol of `scheme`.
+ *
+ * @deprecated
+ */
+ unregisterProtocol(scheme: string): boolean;
+ }
+
+ interface ProtocolRequest {
+
+ // Docs: https://electronjs.org/docs/api/structures/protocol-request
+
+ headers: Record<string, string>;
+ method: string;
+ referrer: string;
+ uploadData?: UploadData[];
+ url: string;
+ }
+
+ interface ProtocolResponse {
+
+ // Docs: https://electronjs.org/docs/api/structures/protocol-response
+
+ /**
+ * The charset of response body, default is `"utf-8"`.
+ */
+ charset?: string;
+ /**
+ * The response body. When returning stream as response, this is a Node.js readable
+ * stream representing the response body. When returning `Buffer` as response, this
+ * is a `Buffer`. When returning `string` as response, this is a `string`. This is
+ * ignored for other types of responses.
+ */
+ data?: (Buffer) | (string) | (NodeJS.ReadableStream);
+ /**
+ * When assigned, the `request` will fail with the `error` number . For the
+ * available error numbers you can use, please see the net error list.
+ */
+ error?: number;
+ /**
+ * An object containing the response headers. The keys must be string, and values
+ * must be either string or Array of string.
+ */
+ headers?: Record<string, (string) | (string[])>;
+ /**
+ * The HTTP `method`. This is only used for file and URL responses.
+ */
+ method?: string;
+ /**
+ * The MIME type of response body, default is `"text/html"`. Setting `mimeType`
+ * would implicitly set the `content-type` header in response, but if
+ * `content-type` is already set in `headers`, the `mimeType` would be ignored.
+ */
+ mimeType?: string;
+ /**
+ * Path to the file which would be sent as response body. This is only used for
+ * file responses.
+ */
+ path?: string;
+ /**
+ * The `referrer` URL. This is only used for file and URL responses.
+ */
+ referrer?: string;
+ /**
+ * The session used for requesting URL, by default the HTTP request will reuse the
+ * current session. Setting `session` to `null` would use a random independent
+ * session. This is only used for URL responses.
+ */
+ session?: Session;
+ /**
+ * The HTTP response code, default is 200.
+ */
+ statusCode?: number;
+ /**
+ * The data used as upload data. This is only used for URL responses when `method`
+ * is `"POST"`.
+ */
+ uploadData?: ProtocolResponseUploadData;
+ /**
+ * Download the `url` and pipe the result as response body. This is only used for
+ * URL responses.
+ */
+ url?: string;
+ }
+
+ interface ProtocolResponseUploadData {
+
+ // Docs: https://electronjs.org/docs/api/structures/protocol-response-upload-data
+
+ /**
+ * MIME type of the content.
+ */
+ contentType: string;
+ /**
+ * Content to be sent.
+ */
+ data: (string) | (Buffer);
+ }
+
+ interface PushNotifications extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/push-notifications
+
+ /**
+ * Emitted when the app receives a remote notification while running. See:
+ * https://developer.apple.com/documentation/appkit/nsapplicationdelegate/1428430-application?language=objc
+ *
+ * @platform darwin
+ */
+ on(event: 'received-apns-notification', listener: (event: Event,
+ userInfo: Record<string, any>) => void): this;
+ once(event: 'received-apns-notification', listener: (event: Event,
+ userInfo: Record<string, any>) => void): this;
+ addListener(event: 'received-apns-notification', listener: (event: Event,
+ userInfo: Record<string, any>) => void): this;
+ removeListener(event: 'received-apns-notification', listener: (event: Event,
+ userInfo: Record<string, any>) => void): this;
+ /**
+ * Registers the app with Apple Push Notification service (APNS) to receive Badge,
+ * Sound, and Alert notifications. If registration is successful, the promise will
+ * be resolved with the APNS device token. Otherwise, the promise will be rejected
+ * with an error message. See:
+ * https://developer.apple.com/documentation/appkit/nsapplication/1428476-registerforremotenotificationtyp?language=objc
+ *
+ * @platform darwin
+ */
+ registerForAPNSNotifications(): Promise<string>;
+ /**
+ * Unregisters the app from notifications received from APNS. See:
+ * https://developer.apple.com/documentation/appkit/nsapplication/1428747-unregisterforremotenotifications?language=objc
+ *
+ * @platform darwin
+ */
+ unregisterForAPNSNotifications(): void;
+ }
+
+ interface Rectangle {
+
+ // Docs: https://electronjs.org/docs/api/structures/rectangle
+
+ /**
+ * The height of the rectangle (must be an integer).
+ */
+ height: number;
+ /**
+ * The width of the rectangle (must be an integer).
+ */
+ width: number;
+ /**
+ * The x coordinate of the origin of the rectangle (must be an integer).
+ */
+ x: number;
+ /**
+ * The y coordinate of the origin of the rectangle (must be an integer).
+ */
+ y: number;
+ }
+
+ interface Referrer {
+
+ // Docs: https://electronjs.org/docs/api/structures/referrer
+
+ /**
+ * Can be `default`, `unsafe-url`, `no-referrer-when-downgrade`, `no-referrer`,
+ * `origin`, `strict-origin-when-cross-origin`, `same-origin` or `strict-origin`.
+ * See the Referrer-Policy spec for more details on the meaning of these values.
+ */
+ policy: ('default' | 'unsafe-url' | 'no-referrer-when-downgrade' | 'no-referrer' | 'origin' | 'strict-origin-when-cross-origin' | 'same-origin' | 'strict-origin');
+ /**
+ * HTTP Referrer URL.
+ */
+ url: string;
+ }
+
+ interface RenderProcessGoneDetails {
+
+ // Docs: https://electronjs.org/docs/api/structures/render-process-gone-details
+
+ /**
+ * The exit code of the process, unless `reason` is `launch-failed`, in which case
+ * `exitCode` will be a platform-specific launch failure error code.
+ */
+ exitCode: number;
+ /**
+ * The reason the render process is gone. Possible values:
+ */
+ reason: ('clean-exit' | 'abnormal-exit' | 'killed' | 'crashed' | 'oom' | 'launch-failed' | 'integrity-failure');
+ }
+
+ interface ResolvedEndpoint {
+
+ // Docs: https://electronjs.org/docs/api/structures/resolved-endpoint
+
+ address: string;
+ /**
+ * One of the following:
+ */
+ family: ('ipv4' | 'ipv6' | 'unspec');
+ }
+
+ interface ResolvedHost {
+
+ // Docs: https://electronjs.org/docs/api/structures/resolved-host
+
+ /**
+ * resolved DNS entries for the hostname
+ */
+ endpoints: ResolvedEndpoint[];
+ }
+
+ interface SafeStorage extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/safe-storage
+
+ /**
+ * the decrypted string. Decrypts the encrypted buffer obtained with
+ * `safeStorage.encryptString` back into a string.
+ *
+ * This function will throw an error if decryption fails.
+ */
+ decryptString(encrypted: Buffer): string;
+ /**
+ * An array of bytes representing the encrypted string.
+ *
+ * This function will throw an error if encryption fails.
+ */
+ encryptString(plainText: string): Buffer;
+ /**
+ * User friendly name of the password manager selected on Linux.
+ *
+ * This function will return one of the following values:
+ *
+ * * `basic_text` - When the desktop environment is not recognised or if the
+ * following command line flag is provided `--password-store="basic"`.
+ * * `gnome_libsecret` - When the desktop environment is `X-Cinnamon`, `Deepin`,
+ * `GNOME`, `Pantheon`, `XFCE`, `UKUI`, `unity` or if the following command line
+ * flag is provided `--password-store="gnome-libsecret"`.
+ * * `kwallet` - When the desktop session is `kde4` or if the following command
+ * line flag is provided `--password-store="kwallet"`.
+ * * `kwallet5` - When the desktop session is `kde5` or if the following command
+ * line flag is provided `--password-store="kwallet5"`.
+ * * `kwallet6` - When the desktop session is `kde6`.
+ * * `unknown` - When the function is called before app has emitted the `ready`
+ * event.
+ *
+ * @platform linux
+ */
+ getSelectedStorageBackend(): ('basic_text' | 'gnome_libsecret' | 'kwallet' | 'kwallet5' | 'kwallet6' | 'unknown');
+ /**
+ * Whether encryption is available.
+ *
+ * On Linux, returns true if the app has emitted the `ready` event and the secret
+ * key is available. On MacOS, returns true if Keychain is available. On Windows,
+ * returns true once the app has emitted the `ready` event.
+ */
+ isEncryptionAvailable(): boolean;
+ /**
+ * This function on Linux will force the module to use an in memory password for
+ * creating symmetric key that is used for encrypt/decrypt functions when a valid
+ * OS password manager cannot be determined for the current active desktop
+ * environment. This function is a no-op on Windows and MacOS.
+ */
+ setUsePlainTextEncryption(usePlainText: boolean): void;
+ }
+
+ interface Screen extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/screen
+
+ /**
+ * Emitted when `newDisplay` has been added.
+ */
+ on(event: 'display-added', listener: (event: Event,
+ newDisplay: Display) => void): this;
+ once(event: 'display-added', listener: (event: Event,
+ newDisplay: Display) => void): this;
+ addListener(event: 'display-added', listener: (event: Event,
+ newDisplay: Display) => void): this;
+ removeListener(event: 'display-added', listener: (event: Event,
+ newDisplay: Display) => void): this;
+ /**
+ * Emitted when one or more metrics change in a `display`. The `changedMetrics` is
+ * an array of strings that describe the changes. Possible changes are `bounds`,
+ * `workArea`, `scaleFactor` and `rotation`.
+ */
+ on(event: 'display-metrics-changed', listener: (event: Event,
+ display: Display,
+ changedMetrics: string[]) => void): this;
+ once(event: 'display-metrics-changed', listener: (event: Event,
+ display: Display,
+ changedMetrics: string[]) => void): this;
+ addListener(event: 'display-metrics-changed', listener: (event: Event,
+ display: Display,
+ changedMetrics: string[]) => void): this;
+ removeListener(event: 'display-metrics-changed', listener: (event: Event,
+ display: Display,
+ changedMetrics: string[]) => void): this;
+ /**
+ * Emitted when `oldDisplay` has been removed.
+ */
+ on(event: 'display-removed', listener: (event: Event,
+ oldDisplay: Display) => void): this;
+ once(event: 'display-removed', listener: (event: Event,
+ oldDisplay: Display) => void): this;
+ addListener(event: 'display-removed', listener: (event: Event,
+ oldDisplay: Display) => void): this;
+ removeListener(event: 'display-removed', listener: (event: Event,
+ oldDisplay: Display) => void): this;
+ /**
+ * Converts a screen DIP point to a screen physical point. The DPI scale is
+ * performed relative to the display containing the DIP point.
+ *
+ * @platform win32
+ */
+ dipToScreenPoint(point: Point): Point;
+ /**
+ * Converts a screen DIP rect to a screen physical rect. The DPI scale is performed
+ * relative to the display nearest to `window`. If `window` is null, scaling will
+ * be performed to the display nearest to `rect`.
+ *
+ * @platform win32
+ */
+ dipToScreenRect(window: (BrowserWindow) | (null), rect: Rectangle): Rectangle;
+ /**
+ * An array of displays that are currently available.
+ */
+ getAllDisplays(): Display[];
+ /**
+ * The current absolute position of the mouse pointer.
+ *
+ * **Note:** The return value is a DIP point, not a screen physical point.
+ */
+ getCursorScreenPoint(): Point;
+ /**
+ * The display that most closely intersects the provided bounds.
+ */
+ getDisplayMatching(rect: Rectangle): Display;
+ /**
+ * The display nearest the specified point.
+ */
+ getDisplayNearestPoint(point: Point): Display;
+ /**
+ * The primary display.
+ */
+ getPrimaryDisplay(): Display;
+ /**
+ * Converts a screen physical point to a screen DIP point. The DPI scale is
+ * performed relative to the display containing the physical point.
+ *
+ * @platform win32
+ */
+ screenToDipPoint(point: Point): Point;
+ /**
+ * Converts a screen physical rect to a screen DIP rect. The DPI scale is performed
+ * relative to the display nearest to `window`. If `window` is null, scaling will
+ * be performed to the display nearest to `rect`.
+ *
+ * @platform win32
+ */
+ screenToDipRect(window: (BrowserWindow) | (null), rect: Rectangle): Rectangle;
+ }
+
+ interface ScrubberItem {
+
+ // Docs: https://electronjs.org/docs/api/structures/scrubber-item
+
+ /**
+ * The image to appear in this item.
+ */
+ icon?: NativeImage;
+ /**
+ * The text to appear in this item.
+ */
+ label?: string;
+ }
+
+ interface SegmentedControlSegment {
+
+ // Docs: https://electronjs.org/docs/api/structures/segmented-control-segment
+
+ /**
+ * Whether this segment is selectable. Default: true.
+ */
+ enabled?: boolean;
+ /**
+ * The image to appear in this segment.
+ */
+ icon?: NativeImage;
+ /**
+ * The text to appear in this segment.
+ */
+ label?: string;
+ }
+
+ interface SerialPort {
+
+ // Docs: https://electronjs.org/docs/api/structures/serial-port
+
+ /**
+ * A stable identifier on Windows that can be used for device permissions.
+ *
+ * @platform win32
+ */
+ deviceInstanceId?: string;
+ /**
+ * A string suitable for display to the user for describing this device.
+ */
+ displayName?: string;
+ /**
+ * Unique identifier for the port.
+ */
+ portId: string;
+ /**
+ * Name of the port.
+ */
+ portName: string;
+ /**
+ * The USB product ID.
+ */
+ productId?: string;
+ /**
+ * The USB device serial number.
+ */
+ serialNumber?: string;
+ /**
+ * Represents a single serial port on macOS can be enumerated by multiple drivers.
+ *
+ * @platform darwin
+ */
+ usbDriverName?: string;
+ /**
+ * The USB vendor ID.
+ */
+ vendorId?: string;
+ }
+
+ interface ServiceWorkerInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/service-worker-info
+
+ /**
+ * The virtual ID of the process that this service worker is running in. This is
+ * not an OS level PID. This aligns with the ID set used for
+ * `webContents.getProcessId()`.
+ */
+ renderProcessId: number;
+ /**
+ * The base URL that this service worker is active for.
+ */
+ scope: string;
+ /**
+ * The full URL to the script that this service worker runs
+ */
+ scriptUrl: string;
+ }
+
+ class ServiceWorkers extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/service-workers
+
+ /**
+ * Emitted when a service worker logs something to the console.
+ */
+ on(event: 'console-message', listener: (event: Event,
+ /**
+ * Information about the console message
+ */
+ messageDetails: MessageDetails) => void): this;
+ once(event: 'console-message', listener: (event: Event,
+ /**
+ * Information about the console message
+ */
+ messageDetails: MessageDetails) => void): this;
+ addListener(event: 'console-message', listener: (event: Event,
+ /**
+ * Information about the console message
+ */
+ messageDetails: MessageDetails) => void): this;
+ removeListener(event: 'console-message', listener: (event: Event,
+ /**
+ * Information about the console message
+ */
+ messageDetails: MessageDetails) => void): this;
+ /**
+ * Emitted when a service worker has been registered. Can occur after a call to
+ * `navigator.serviceWorker.register('/sw.js')` successfully resolves or when a
+ * Chrome extension is loaded.
+ */
+ on(event: 'registration-completed', listener: (event: Event,
+ /**
+ * Information about the registered service worker
+ */
+ details: RegistrationCompletedDetails) => void): this;
+ once(event: 'registration-completed', listener: (event: Event,
+ /**
+ * Information about the registered service worker
+ */
+ details: RegistrationCompletedDetails) => void): this;
+ addListener(event: 'registration-completed', listener: (event: Event,
+ /**
+ * Information about the registered service worker
+ */
+ details: RegistrationCompletedDetails) => void): this;
+ removeListener(event: 'registration-completed', listener: (event: Event,
+ /**
+ * Information about the registered service worker
+ */
+ details: RegistrationCompletedDetails) => void): this;
+ /**
+ * A ServiceWorkerInfo object where the keys are the service worker version ID and
+ * the values are the information about that service worker.
+ */
+ getAllRunning(): Record<number, ServiceWorkerInfo>;
+ /**
+ * Information about this service worker
+ *
+ * If the service worker does not exist or is not running this method will throw an
+ * exception.
+ */
+ getFromVersionID(versionId: number): ServiceWorkerInfo;
+ }
+
+ class Session extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/session
+
+ /**
+ * A session instance from `partition` string. When there is an existing `Session`
+ * with the same `partition`, it will be returned; otherwise a new `Session`
+ * instance will be created with `options`.
+ *
+ * If `partition` starts with `persist:`, the page will use a persistent session
+ * available to all pages in the app with the same `partition`. if there is no
+ * `persist:` prefix, the page will use an in-memory session. If the `partition` is
+ * empty then default session of the app will be returned.
+ *
+ * To create a `Session` with `options`, you have to ensure the `Session` with the
+ * `partition` has never been used before. There is no way to change the `options`
+ * of an existing `Session` object.
+ */
+ static fromPartition(partition: string, options?: FromPartitionOptions): Session;
+ /**
+ * A session instance from the absolute path as specified by the `path` string.
+ * When there is an existing `Session` with the same absolute path, it will be
+ * returned; otherwise a new `Session` instance will be created with `options`. The
+ * call will throw an error if the path is not an absolute path. Additionally, an
+ * error will be thrown if an empty string is provided.
+ *
+ * To create a `Session` with `options`, you have to ensure the `Session` with the
+ * `path` has never been used before. There is no way to change the `options` of an
+ * existing `Session` object.
+ */
+ static fromPath(path: string, options?: FromPathOptions): Session;
+ /**
+ * A `Session` object, the default session object of the app.
+ */
+ static defaultSession: Session;
+ /**
+ * Emitted after an extension is loaded. This occurs whenever an extension is added
+ * to the "enabled" set of extensions. This includes:
+ *
+ * * Extensions being loaded from `Session.loadExtension`.
+ * * Extensions being reloaded:
+ * * from a crash.
+ * * if the extension requested it (`chrome.runtime.reload()`).
+ */
+ on(event: 'extension-loaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ once(event: 'extension-loaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ addListener(event: 'extension-loaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ removeListener(event: 'extension-loaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ /**
+ * Emitted after an extension is loaded and all necessary browser state is
+ * initialized to support the start of the extension's background page.
+ */
+ on(event: 'extension-ready', listener: (event: Event,
+ extension: Extension) => void): this;
+ once(event: 'extension-ready', listener: (event: Event,
+ extension: Extension) => void): this;
+ addListener(event: 'extension-ready', listener: (event: Event,
+ extension: Extension) => void): this;
+ removeListener(event: 'extension-ready', listener: (event: Event,
+ extension: Extension) => void): this;
+ /**
+ * Emitted after an extension is unloaded. This occurs when
+ * `Session.removeExtension` is called.
+ */
+ on(event: 'extension-unloaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ once(event: 'extension-unloaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ addListener(event: 'extension-unloaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ removeListener(event: 'extension-unloaded', listener: (event: Event,
+ extension: Extension) => void): this;
+ /**
+ * Emitted after `navigator.hid.requestDevice` has been called and
+ * `select-hid-device` has fired if a new device becomes available before the
+ * callback from `select-hid-device` is called. This event is intended for use
+ * when using a UI to ask users to pick a device so that the UI can be updated with
+ * the newly added device.
+ */
+ on(event: 'hid-device-added', listener: (event: Event,
+ details: HidDeviceAddedDetails) => void): this;
+ once(event: 'hid-device-added', listener: (event: Event,
+ details: HidDeviceAddedDetails) => void): this;
+ addListener(event: 'hid-device-added', listener: (event: Event,
+ details: HidDeviceAddedDetails) => void): this;
+ removeListener(event: 'hid-device-added', listener: (event: Event,
+ details: HidDeviceAddedDetails) => void): this;
+ /**
+ * Emitted after `navigator.hid.requestDevice` has been called and
+ * `select-hid-device` has fired if a device has been removed before the callback
+ * from `select-hid-device` is called. This event is intended for use when using a
+ * UI to ask users to pick a device so that the UI can be updated to remove the
+ * specified device.
+ */
+ on(event: 'hid-device-removed', listener: (event: Event,
+ details: HidDeviceRemovedDetails) => void): this;
+ once(event: 'hid-device-removed', listener: (event: Event,
+ details: HidDeviceRemovedDetails) => void): this;
+ addListener(event: 'hid-device-removed', listener: (event: Event,
+ details: HidDeviceRemovedDetails) => void): this;
+ removeListener(event: 'hid-device-removed', listener: (event: Event,
+ details: HidDeviceRemovedDetails) => void): this;
+ /**
+ * Emitted after `HIDDevice.forget()` has been called. This event can be used to
+ * help maintain persistent storage of permissions when
+ * `setDevicePermissionHandler` is used.
+ */
+ on(event: 'hid-device-revoked', listener: (event: Event,
+ details: HidDeviceRevokedDetails) => void): this;
+ once(event: 'hid-device-revoked', listener: (event: Event,
+ details: HidDeviceRevokedDetails) => void): this;
+ addListener(event: 'hid-device-revoked', listener: (event: Event,
+ details: HidDeviceRevokedDetails) => void): this;
+ removeListener(event: 'hid-device-revoked', listener: (event: Event,
+ details: HidDeviceRevokedDetails) => void): this;
+ /**
+ * Emitted when a render process requests preconnection to a URL, generally due to
+ * a resource hint.
+ */
+ on(event: 'preconnect', listener: (event: Event,
+ /**
+ * The URL being requested for preconnection by the renderer.
+ */
+ preconnectUrl: string,
+ /**
+ * True if the renderer is requesting that the connection include credentials (see
+ * the spec for more details.)
+ */
+ allowCredentials: boolean) => void): this;
+ once(event: 'preconnect', listener: (event: Event,
+ /**
+ * The URL being requested for preconnection by the renderer.
+ */
+ preconnectUrl: string,
+ /**
+ * True if the renderer is requesting that the connection include credentials (see
+ * the spec for more details.)
+ */
+ allowCredentials: boolean) => void): this;
+ addListener(event: 'preconnect', listener: (event: Event,
+ /**
+ * The URL being requested for preconnection by the renderer.
+ */
+ preconnectUrl: string,
+ /**
+ * True if the renderer is requesting that the connection include credentials (see
+ * the spec for more details.)
+ */
+ allowCredentials: boolean) => void): this;
+ removeListener(event: 'preconnect', listener: (event: Event,
+ /**
+ * The URL being requested for preconnection by the renderer.
+ */
+ preconnectUrl: string,
+ /**
+ * True if the renderer is requesting that the connection include credentials (see
+ * the spec for more details.)
+ */
+ allowCredentials: boolean) => void): this;
+ /**
+ * Emitted when a HID device needs to be selected when a call to
+ * `navigator.hid.requestDevice` is made. `callback` should be called with
+ * `deviceId` to be selected; passing no arguments to `callback` will cancel the
+ * request. Additionally, permissioning on `navigator.hid` can be further managed
+ * by using `ses.setPermissionCheckHandler(handler)` and
+ * `ses.setDevicePermissionHandler(handler)`.
+ */
+ on(event: 'select-hid-device', listener: (event: Event,
+ details: SelectHidDeviceDetails,
+ callback: (deviceId?: (string) | (null)) => void) => void): this;
+ once(event: 'select-hid-device', listener: (event: Event,
+ details: SelectHidDeviceDetails,
+ callback: (deviceId?: (string) | (null)) => void) => void): this;
+ addListener(event: 'select-hid-device', listener: (event: Event,
+ details: SelectHidDeviceDetails,
+ callback: (deviceId?: (string) | (null)) => void) => void): this;
+ removeListener(event: 'select-hid-device', listener: (event: Event,
+ details: SelectHidDeviceDetails,
+ callback: (deviceId?: (string) | (null)) => void) => void): this;
+ /**
+ * Emitted when a serial port needs to be selected when a call to
+ * `navigator.serial.requestPort` is made. `callback` should be called with
+ * `portId` to be selected, passing an empty string to `callback` will cancel the
+ * request. Additionally, permissioning on `navigator.serial` can be managed by
+ * using ses.setPermissionCheckHandler(handler) with the `serial` permission.
+ */
+ on(event: 'select-serial-port', listener: (event: Event,
+ portList: SerialPort[],
+ webContents: WebContents,
+ callback: (portId: string) => void) => void): this;
+ once(event: 'select-serial-port', listener: (event: Event,
+ portList: SerialPort[],
+ webContents: WebContents,
+ callback: (portId: string) => void) => void): this;
+ addListener(event: 'select-serial-port', listener: (event: Event,
+ portList: SerialPort[],
+ webContents: WebContents,
+ callback: (portId: string) => void) => void): this;
+ removeListener(event: 'select-serial-port', listener: (event: Event,
+ portList: SerialPort[],
+ webContents: WebContents,
+ callback: (portId: string) => void) => void): this;
+ /**
+ * Emitted when a USB device needs to be selected when a call to
+ * `navigator.usb.requestDevice` is made. `callback` should be called with
+ * `deviceId` to be selected; passing no arguments to `callback` will cancel the
+ * request. Additionally, permissioning on `navigator.usb` can be further managed
+ * by using `ses.setPermissionCheckHandler(handler)` and
+ * `ses.setDevicePermissionHandler(handler)`.
+ */
+ on(event: 'select-usb-device', listener: (event: Event,
+ details: SelectUsbDeviceDetails,
+ callback: (deviceId?: string) => void) => void): this;
+ once(event: 'select-usb-device', listener: (event: Event,
+ details: SelectUsbDeviceDetails,
+ callback: (deviceId?: string) => void) => void): this;
+ addListener(event: 'select-usb-device', listener: (event: Event,
+ details: SelectUsbDeviceDetails,
+ callback: (deviceId?: string) => void) => void): this;
+ removeListener(event: 'select-usb-device', listener: (event: Event,
+ details: SelectUsbDeviceDetails,
+ callback: (deviceId?: string) => void) => void): this;
+ /**
+ * Emitted after `navigator.serial.requestPort` has been called and
+ * `select-serial-port` has fired if a new serial port becomes available before the
+ * callback from `select-serial-port` is called. This event is intended for use
+ * when using a UI to ask users to pick a port so that the UI can be updated with
+ * the newly added port.
+ */
+ on(event: 'serial-port-added', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ once(event: 'serial-port-added', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ addListener(event: 'serial-port-added', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'serial-port-added', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted after `navigator.serial.requestPort` has been called and
+ * `select-serial-port` has fired if a serial port has been removed before the
+ * callback from `select-serial-port` is called. This event is intended for use
+ * when using a UI to ask users to pick a port so that the UI can be updated to
+ * remove the specified port.
+ */
+ on(event: 'serial-port-removed', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ once(event: 'serial-port-removed', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ addListener(event: 'serial-port-removed', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'serial-port-removed', listener: (event: Event,
+ port: SerialPort,
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted after `SerialPort.forget()` has been called. This event can be used to
+ * help maintain persistent storage of permissions when
+ * `setDevicePermissionHandler` is used.
+ */
+ on(event: 'serial-port-revoked', listener: (event: Event,
+ details: SerialPortRevokedDetails) => void): this;
+ once(event: 'serial-port-revoked', listener: (event: Event,
+ details: SerialPortRevokedDetails) => void): this;
+ addListener(event: 'serial-port-revoked', listener: (event: Event,
+ details: SerialPortRevokedDetails) => void): this;
+ removeListener(event: 'serial-port-revoked', listener: (event: Event,
+ details: SerialPortRevokedDetails) => void): this;
+ /**
+ * Emitted when a hunspell dictionary file starts downloading
+ */
+ on(event: 'spellcheck-dictionary-download-begin', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ once(event: 'spellcheck-dictionary-download-begin', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ addListener(event: 'spellcheck-dictionary-download-begin', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ removeListener(event: 'spellcheck-dictionary-download-begin', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ /**
+ * Emitted when a hunspell dictionary file download fails. For details on the
+ * failure you should collect a netlog and inspect the download request.
+ */
+ on(event: 'spellcheck-dictionary-download-failure', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ once(event: 'spellcheck-dictionary-download-failure', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ addListener(event: 'spellcheck-dictionary-download-failure', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ removeListener(event: 'spellcheck-dictionary-download-failure', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ /**
+ * Emitted when a hunspell dictionary file has been successfully downloaded
+ */
+ on(event: 'spellcheck-dictionary-download-success', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ once(event: 'spellcheck-dictionary-download-success', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ addListener(event: 'spellcheck-dictionary-download-success', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ removeListener(event: 'spellcheck-dictionary-download-success', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ /**
+ * Emitted when a hunspell dictionary file has been successfully initialized. This
+ * occurs after the file has been downloaded.
+ */
+ on(event: 'spellcheck-dictionary-initialized', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ once(event: 'spellcheck-dictionary-initialized', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ addListener(event: 'spellcheck-dictionary-initialized', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ removeListener(event: 'spellcheck-dictionary-initialized', listener: (event: Event,
+ /**
+ * The language code of the dictionary file
+ */
+ languageCode: string) => void): this;
+ /**
+ * Emitted after `navigator.usb.requestDevice` has been called and
+ * `select-usb-device` has fired if a new device becomes available before the
+ * callback from `select-usb-device` is called. This event is intended for use
+ * when using a UI to ask users to pick a device so that the UI can be updated with
+ * the newly added device.
+ */
+ on(event: 'usb-device-added', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ once(event: 'usb-device-added', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ addListener(event: 'usb-device-added', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'usb-device-added', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted after `navigator.usb.requestDevice` has been called and
+ * `select-usb-device` has fired if a device has been removed before the callback
+ * from `select-usb-device` is called. This event is intended for use when using a
+ * UI to ask users to pick a device so that the UI can be updated to remove the
+ * specified device.
+ */
+ on(event: 'usb-device-removed', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ once(event: 'usb-device-removed', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ addListener(event: 'usb-device-removed', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'usb-device-removed', listener: (event: Event,
+ device: USBDevice,
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted after `USBDevice.forget()` has been called. This event can be used to
+ * help maintain persistent storage of permissions when
+ * `setDevicePermissionHandler` is used.
+ */
+ on(event: 'usb-device-revoked', listener: (event: Event,
+ details: UsbDeviceRevokedDetails) => void): this;
+ once(event: 'usb-device-revoked', listener: (event: Event,
+ details: UsbDeviceRevokedDetails) => void): this;
+ addListener(event: 'usb-device-revoked', listener: (event: Event,
+ details: UsbDeviceRevokedDetails) => void): this;
+ removeListener(event: 'usb-device-revoked', listener: (event: Event,
+ details: UsbDeviceRevokedDetails) => void): this;
+ /**
+ * Emitted when Electron is about to download `item` in `webContents`.
+ *
+ * Calling `event.preventDefault()` will cancel the download and `item` will not be
+ * available from next tick of the process.
+ */
+ on(event: 'will-download', listener: (event: Event,
+ item: DownloadItem,
+ webContents: WebContents) => void): this;
+ once(event: 'will-download', listener: (event: Event,
+ item: DownloadItem,
+ webContents: WebContents) => void): this;
+ addListener(event: 'will-download', listener: (event: Event,
+ item: DownloadItem,
+ webContents: WebContents) => void): this;
+ removeListener(event: 'will-download', listener: (event: Event,
+ item: DownloadItem,
+ webContents: WebContents) => void): this;
+ /**
+ * Whether the word was successfully written to the custom dictionary. This API
+ * will not work on non-persistent (in-memory) sessions.
+ *
+ * **Note:** On macOS and Windows 10 this word will be written to the OS custom
+ * dictionary as well
+ */
+ addWordToSpellCheckerDictionary(word: string): boolean;
+ /**
+ * Dynamically sets whether to always send credentials for HTTP NTLM or Negotiate
+ * authentication.
+ */
+ allowNTLMCredentialsForDomains(domains: string): void;
+ /**
+ * resolves when the session’s HTTP authentication cache has been cleared.
+ */
+ clearAuthCache(): Promise<void>;
+ /**
+ * resolves when the cache clear operation is complete.
+ *
+ * Clears the session’s HTTP cache.
+ */
+ clearCache(): Promise<void>;
+ /**
+ * resolves when the code cache clear operation is complete.
+ */
+ clearCodeCaches(options: ClearCodeCachesOptions): Promise<void>;
+ /**
+ * Resolves when the operation is complete.
+ *
+ * Clears the host resolver cache.
+ */
+ clearHostResolverCache(): Promise<void>;
+ /**
+ * resolves when the storage data has been cleared.
+ */
+ clearStorageData(options?: ClearStorageDataOptions): Promise<void>;
+ /**
+ * Resolves when all connections are closed.
+ *
+ * **Note:** It will terminate / fail all requests currently in flight.
+ */
+ closeAllConnections(): Promise<void>;
+ /**
+ * Allows resuming `cancelled` or `interrupted` downloads from previous `Session`.
+ * The API will generate a DownloadItem that can be accessed with the will-download
+ * event. The DownloadItem will not have any `WebContents` associated with it and
+ * the initial state will be `interrupted`. The download will start only when the
+ * `resume` API is called on the DownloadItem.
+ */
+ createInterruptedDownload(options: CreateInterruptedDownloadOptions): void;
+ /**
+ * Disables any network emulation already active for the `session`. Resets to the
+ * original network configuration.
+ */
+ disableNetworkEmulation(): void;
+ /**
+ * Initiates a download of the resource at `url`. The API will generate a
+ * DownloadItem that can be accessed with the will-download event.
+ *
+ * **Note:** This does not perform any security checks that relate to a page's
+ * origin, unlike `webContents.downloadURL`.
+ */
+ downloadURL(url: string, options?: DownloadURLOptions): void;
+ /**
+ * Emulates network with the given configuration for the `session`.
+ */
+ enableNetworkEmulation(options: EnableNetworkEmulationOptions): void;
+ /**
+ * see Response.
+ *
+ * Sends a request, similarly to how `fetch()` works in the renderer, using
+ * Chrome's network stack. This differs from Node's `fetch()`, which uses Node.js's
+ * HTTP stack.
+ *
+ * Example:
+ *
+ * See also `net.fetch()`, a convenience method which issues requests from the
+ * default session.
+ *
+ * See the MDN documentation for `fetch()` for more details.
+ *
+ * Limitations:
+ *
+ * * `net.fetch()` does not support the `data:` or `blob:` schemes.
+ * * The value of the `integrity` option is ignored.
+ * * The `.type` and `.url` values of the returned `Response` object are incorrect.
+ *
+ * By default, requests made with `net.fetch` can be made to custom protocols as
+ * well as `file:`, and will trigger webRequest handlers if present. When the
+ * non-standard `bypassCustomProtocolHandlers` option is set in RequestInit, custom
+ * protocol handlers will not be called for this request. This allows forwarding an
+ * intercepted request to the built-in handler. webRequest handlers will still be
+ * triggered when bypassing custom protocols.
+ */
+ fetch(input: (string) | (GlobalRequest), init?: RequestInit & { bypassCustomProtocolHandlers?: boolean }): Promise<GlobalResponse>;
+ /**
+ * Writes any unwritten DOMStorage data to disk.
+ */
+ flushStorageData(): void;
+ /**
+ * Resolves when the all internal states of proxy service is reset and the latest
+ * proxy configuration is reapplied if it's already available. The pac script will
+ * be fetched from `pacScript` again if the proxy mode is `pac_script`.
+ */
+ forceReloadProxyConfig(): Promise<void>;
+ /**
+ * A list of all loaded extensions.
+ *
+ * **Note:** This API cannot be called before the `ready` event of the `app` module
+ * is emitted.
+ */
+ getAllExtensions(): Extension[];
+ /**
+ * resolves with blob data.
+ */
+ getBlobData(identifier: string): Promise<Buffer>;
+ /**
+ * the session's current cache size, in bytes.
+ */
+ getCacheSize(): Promise<number>;
+ /**
+ * The loaded extension with the given ID.
+ *
+ * **Note:** This API cannot be called before the `ready` event of the `app` module
+ * is emitted.
+ */
+ getExtension(extensionId: string): (Extension) | (null);
+ /**
+ * an array of paths to preload scripts that have been registered.
+ */
+ getPreloads(): string[];
+ /**
+ * An array of language codes the spellchecker is enabled for. If this list is
+ * empty the spellchecker will fallback to using `en-US`. By default on launch if
+ * this setting is an empty list Electron will try to populate this setting with
+ * the current OS locale. This setting is persisted across restarts.
+ *
+ * **Note:** On macOS the OS spellchecker is used and has its own list of
+ * languages. On macOS, this API will return whichever languages have been
+ * configured by the OS.
+ */
+ getSpellCheckerLanguages(): string[];
+ /**
+ * The absolute file system path where data for this session is persisted on disk.
+ * For in memory sessions this returns `null`.
+ */
+ getStoragePath(): (string) | (null);
+ /**
+ * The user agent for this session.
+ */
+ getUserAgent(): string;
+ /**
+ * Whether or not this session is a persistent one. The default `webContents`
+ * session of a `BrowserWindow` is persistent. When creating a session from a
+ * partition, session prefixed with `persist:` will be persistent, while others
+ * will be temporary.
+ */
+ isPersistent(): boolean;
+ /**
+ * Whether the builtin spell checker is enabled.
+ */
+ isSpellCheckerEnabled(): boolean;
+ /**
+ * An array of all words in app's custom dictionary. Resolves when the full
+ * dictionary is loaded from disk.
+ */
+ listWordsInSpellCheckerDictionary(): Promise<string[]>;
+ /**
+ * resolves when the extension is loaded.
+ *
+ * This method will raise an exception if the extension could not be loaded. If
+ * there are warnings when installing the extension (e.g. if the extension requests
+ * an API that Electron does not support) then they will be logged to the console.
+ *
+ * Note that Electron does not support the full range of Chrome extensions APIs.
+ * See Supported Extensions APIs for more details on what is supported.
+ *
+ * Note that in previous versions of Electron, extensions that were loaded would be
+ * remembered for future runs of the application. This is no longer the case:
+ * `loadExtension` must be called on every boot of your app if you want the
+ * extension to be loaded.
+ *
+ * This API does not support loading packed (.crx) extensions.
+ *
+ * **Note:** This API cannot be called before the `ready` event of the `app` module
+ * is emitted.
+ *
+ * **Note:** Loading extensions into in-memory (non-persistent) sessions is not
+ * supported and will throw an error.
+ */
+ loadExtension(path: string, options?: LoadExtensionOptions): Promise<Electron.Extension>;
+ /**
+ * Preconnects the given number of sockets to an origin.
+ */
+ preconnect(options: PreconnectOptions): void;
+ /**
+ * Unloads an extension.
+ *
+ * **Note:** This API cannot be called before the `ready` event of the `app` module
+ * is emitted.
+ */
+ removeExtension(extensionId: string): void;
+ /**
+ * Whether the word was successfully removed from the custom dictionary. This API
+ * will not work on non-persistent (in-memory) sessions.
+ *
+ * **Note:** On macOS and Windows 10 this word will be removed from the OS custom
+ * dictionary as well
+ */
+ removeWordFromSpellCheckerDictionary(word: string): boolean;
+ /**
+ * Resolves with the resolved IP addresses for the `host`.
+ */
+ resolveHost(host: string, options?: ResolveHostOptions): Promise<Electron.ResolvedHost>;
+ /**
+ * Resolves with the proxy information for `url`.
+ */
+ resolveProxy(url: string): Promise<string>;
+ /**
+ * Sets a handler to respond to Bluetooth pairing requests. This handler allows
+ * developers to handle devices that require additional validation before pairing.
+ * When a handler is not defined, any pairing on Linux or Windows that requires
+ * additional validation will be automatically cancelled. macOS does not require a
+ * handler because macOS handles the pairing automatically. To clear the handler,
+ * call `setBluetoothPairingHandler(null)`.
+ *
+ * @platform win32,linux
+ */
+ setBluetoothPairingHandler(handler: ((details: BluetoothPairingHandlerHandlerDetails, callback: (response: Response) => void) => void) | (null)): void;
+ /**
+ * Sets the certificate verify proc for `session`, the `proc` will be called with
+ * `proc(request, callback)` whenever a server certificate verification is
+ * requested. Calling `callback(0)` accepts the certificate, calling `callback(-2)`
+ * rejects it.
+ *
+ * Calling `setCertificateVerifyProc(null)` will revert back to default certificate
+ * verify proc.
+ *
+ * > **NOTE:** The result of this procedure is cached by the network service.
+ */
+ setCertificateVerifyProc(proc: ((request: Request, callback: (verificationResult: number) => void) => void) | (null)): void;
+ /**
+ * Sets the directory to store the generated JS code cache for this session. The
+ * directory is not required to be created by the user before this call, the
+ * runtime will create if it does not exist otherwise will use the existing
+ * directory. If directory cannot be created, then code cache will not be used and
+ * all operations related to code cache will fail silently inside the runtime. By
+ * default, the directory will be `Code Cache` under the respective user data
+ * folder.
+ */
+ setCodeCachePath(path: string): void;
+ /**
+ * Sets the handler which can be used to respond to device permission checks for
+ * the `session`. Returning `true` will allow the device to be permitted and
+ * `false` will reject it. To clear the handler, call
+ * `setDevicePermissionHandler(null)`. This handler can be used to provide default
+ * permissioning to devices without first calling for permission to devices (eg via
+ * `navigator.hid.requestDevice`). If this handler is not defined, the default
+ * device permissions as granted through device selection (eg via
+ * `navigator.hid.requestDevice`) will be used. Additionally, the default behavior
+ * of Electron is to store granted device permision in memory. If longer term
+ * storage is needed, a developer can store granted device permissions (eg when
+ * handling the `select-hid-device` event) and then read from that storage with
+ * `setDevicePermissionHandler`.
+ */
+ setDevicePermissionHandler(handler: ((details: DevicePermissionHandlerHandlerDetails) => boolean) | (null)): void;
+ /**
+ * This handler will be called when web content requests access to display media
+ * via the `navigator.mediaDevices.getDisplayMedia` API. Use the desktopCapturer
+ * API to choose which stream(s) to grant access to.
+ *
+ * Passing a WebFrameMain object as a video or audio stream will capture the video
+ * or audio stream from that frame.
+ *
+ * Passing `null` instead of a function resets the handler to its default state.
+ */
+ setDisplayMediaRequestHandler(handler: ((request: DisplayMediaRequestHandlerHandlerRequest, callback: (streams: Streams) => void) => void) | (null)): void;
+ /**
+ * Sets download saving directory. By default, the download directory will be the
+ * `Downloads` under the respective app folder.
+ */
+ setDownloadPath(path: string): void;
+ /**
+ * Sets the handler which can be used to respond to permission checks for the
+ * `session`. Returning `true` will allow the permission and `false` will reject
+ * it. Please note that you must also implement `setPermissionRequestHandler` to
+ * get complete permission handling. Most web APIs do a permission check and then
+ * make a permission request if the check is denied. To clear the handler, call
+ * `setPermissionCheckHandler(null)`.
+ */
+ setPermissionCheckHandler(handler: ((webContents: (WebContents) | (null), permission: 'clipboard-read' | 'clipboard-sanitized-write' | 'geolocation' | 'fullscreen' | 'hid' | 'idle-detection' | 'media' | 'mediaKeySystem' | 'midi' | 'midiSysex' | 'notifications' | 'openExternal' | 'pointerLock' | 'serial' | 'usb', requestingOrigin: string, details: PermissionCheckHandlerHandlerDetails) => boolean) | (null)): void;
+ /**
+ * Sets the handler which can be used to respond to permission requests for the
+ * `session`. Calling `callback(true)` will allow the permission and
+ * `callback(false)` will reject it. To clear the handler, call
+ * `setPermissionRequestHandler(null)`. Please note that you must also implement
+ * `setPermissionCheckHandler` to get complete permission handling. Most web APIs
+ * do a permission check and then make a permission request if the check is denied.
+ */
+ setPermissionRequestHandler(handler: ((webContents: WebContents, permission: 'clipboard-read' | 'clipboard-sanitized-write' | 'display-capture' | 'fullscreen' | 'geolocation' | 'idle-detection' | 'media' | 'mediaKeySystem' | 'midi' | 'midiSysex' | 'notifications' | 'pointerLock' | 'keyboardLock' | 'openExternal' | 'window-management' | 'unknown', callback: (permissionGranted: boolean) => void, details: PermissionRequestHandlerHandlerDetails) => void) | (null)): void;
+ /**
+ * Adds scripts that will be executed on ALL web contents that are associated with
+ * this session just before normal `preload` scripts run.
+ */
+ setPreloads(preloads: string[]): void;
+ /**
+ * Resolves when the proxy setting process is complete.
+ *
+ * Sets the proxy settings.
+ *
+ * When `mode` is unspecified, `pacScript` and `proxyRules` are provided together,
+ * the `proxyRules` option is ignored and `pacScript` configuration is applied.
+ *
+ * You may need `ses.closeAllConnections` to close currently in flight connections
+ * to prevent pooled sockets using previous proxy from being reused by future
+ * requests.
+ *
+ * The `proxyRules` has to follow the rules below:
+ *
+ * For example:
+ *
+ * * `http=foopy:80;ftp=foopy2` - Use HTTP proxy `foopy:80` for `http://` URLs, and
+ * HTTP proxy `foopy2:80` for `ftp://` URLs.
+ * * `foopy:80` - Use HTTP proxy `foopy:80` for all URLs.
+ * * `foopy:80,bar,direct://` - Use HTTP proxy `foopy:80` for all URLs, failing
+ * over to `bar` if `foopy:80` is unavailable, and after that using no proxy.
+ * * `socks4://foopy` - Use SOCKS v4 proxy `foopy:1080` for all URLs.
+ * * `http=foopy,socks5://bar.com` - Use HTTP proxy `foopy` for http URLs, and fail
+ * over to the SOCKS5 proxy `bar.com` if `foopy` is unavailable.
+ * * `http=foopy,direct://` - Use HTTP proxy `foopy` for http URLs, and use no
+ * proxy if `foopy` is unavailable.
+ * * `http=foopy;socks=foopy2` - Use HTTP proxy `foopy` for http URLs, and use
+ * `socks4://foopy2` for all other URLs.
+ *
+ * The `proxyBypassRules` is a comma separated list of rules described below:
+ *
+ * * `[ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" <port> ]`
+ *
+ * Match all hostnames that match the pattern HOSTNAME_PATTERN.
+ *
+ * Examples: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99",
+ * "https://x.*.y.com:99"
+ * * `"." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]`
+ *
+ * Match a particular domain suffix.
+ *
+ * Examples: ".google.com", ".com", "http://.google.com"
+ * * `[ SCHEME "://" ] IP_LITERAL [ ":" PORT ]`
+ *
+ * Match URLs which are IP address literals.
+ *
+ * Examples: "127.0.1", "[0:0::1]", "[::1]", "http://[::1]:99"
+ * * `IP_LITERAL "/" PREFIX_LENGTH_IN_BITS`
+ *
+ * Match any URL that is to an IP literal that falls between the given range. IP
+ * range is specified using CIDR notation.
+ *
+ * Examples: "192.168.1.1/16", "fefe:13::abc/33".
+ * * `<local>`
+ *
+ * Match local addresses. The meaning of `<local>` is whether the host matches one
+ * of: "127.0.0.1", "::1", "localhost".
+ */
+ setProxy(config: Config): Promise<void>;
+ /**
+ * By default Electron will download hunspell dictionaries from the Chromium CDN.
+ * If you want to override this behavior you can use this API to point the
+ * dictionary downloader at your own hosted version of the hunspell dictionaries.
+ * We publish a `hunspell_dictionaries.zip` file with each release which contains
+ * the files you need to host here.
+ *
+ * The file server must be **case insensitive**. If you cannot do this, you must
+ * upload each file twice: once with the case it has in the ZIP file and once with
+ * the filename as all lowercase.
+ *
+ * If the files present in `hunspell_dictionaries.zip` are available at
+ * `https://example.com/dictionaries/language-code.bdic` then you should call this
+ * api with
+ * `ses.setSpellCheckerDictionaryDownloadURL('https://example.com/dictionaries/')`.
+ * Please note the trailing slash. The URL to the dictionaries is formed as
+ * `${url}${filename}`.
+ *
+ * **Note:** On macOS the OS spellchecker is used and therefore we do not download
+ * any dictionary files. This API is a no-op on macOS.
+ */
+ setSpellCheckerDictionaryDownloadURL(url: string): void;
+ /**
+ * Sets whether to enable the builtin spell checker.
+ */
+ setSpellCheckerEnabled(enable: boolean): void;
+ /**
+ * The built in spellchecker does not automatically detect what language a user is
+ * typing in. In order for the spell checker to correctly check their words you
+ * must call this API with an array of language codes. You can get the list of
+ * supported language codes with the `ses.availableSpellCheckerLanguages` property.
+ *
+ * **Note:** On macOS the OS spellchecker is used and will detect your language
+ * automatically. This API is a no-op on macOS.
+ */
+ setSpellCheckerLanguages(languages: string[]): void;
+ /**
+ * Sets the SSL configuration for the session. All subsequent network requests will
+ * use the new configuration. Existing network connections (such as WebSocket
+ * connections) will not be terminated, but old sockets in the pool will not be
+ * reused for new connections.
+ */
+ setSSLConfig(config: SSLConfigConfig): void;
+ /**
+ * Sets the handler which can be used to override which USB classes are protected.
+ * The return value for the handler is a string array of USB classes which should
+ * be considered protected (eg not available in the renderer). Valid values for
+ * the array are:
+ *
+ * * `audio`
+ * * `audio-video`
+ * * `hid`
+ * * `mass-storage`
+ * * `smart-card`
+ * * `video`
+ * * `wireless`
+ *
+ * Returning an empty string array from the handler will allow all USB classes;
+ * returning the passed in array will maintain the default list of protected USB
+ * classes (this is also the default behavior if a handler is not defined). To
+ * clear the handler, call `setUSBProtectedClassesHandler(null)`.
+ */
+ setUSBProtectedClassesHandler(handler: ((details: USBProtectedClassesHandlerHandlerDetails) => string[]) | (null)): void;
+ /**
+ * Overrides the `userAgent` and `acceptLanguages` for this session.
+ *
+ * The `acceptLanguages` must a comma separated ordered list of language codes, for
+ * example `"en-US,fr,de,ko,zh-CN,ja"`.
+ *
+ * This doesn't affect existing `WebContents`, and each `WebContents` can use
+ * `webContents.setUserAgent` to override the session-wide user agent.
+ */
+ setUserAgent(userAgent: string, acceptLanguages?: string): void;
+ /**
+ * A `string[]` array which consists of all the known available spell checker
+ * languages. Providing a language code to the `setSpellCheckerLanguages` API that
+ * isn't in this array will result in an error.
+ *
+ */
+ readonly availableSpellCheckerLanguages: string[];
+ /**
+ * A `Cookies` object for this session.
+ *
+ */
+ readonly cookies: Cookies;
+ /**
+ * A `NetLog` object for this session.
+ *
+ */
+ readonly netLog: NetLog;
+ /**
+ * A `Protocol` object for this session.
+ *
+ */
+ readonly protocol: Protocol;
+ /**
+ * A `ServiceWorkers` object for this session.
+ *
+ */
+ readonly serviceWorkers: ServiceWorkers;
+ /**
+ * A `boolean` indicating whether builtin spell checker is enabled.
+ */
+ spellCheckerEnabled: boolean;
+ /**
+ * A `string | null` indicating the absolute file system path where data for this
+ * session is persisted on disk. For in memory sessions this returns `null`.
+ *
+ */
+ readonly storagePath: (string) | (null);
+ /**
+ * A `WebRequest` object for this session.
+ *
+ */
+ readonly webRequest: WebRequest;
+ }
+
+ interface SharedWorkerInfo {
+
+ // Docs: https://electronjs.org/docs/api/structures/shared-worker-info
+
+ /**
+ * The unique id of the shared worker.
+ */
+ id: string;
+ /**
+ * The url of the shared worker.
+ */
+ url: string;
+ }
+
+ class ShareMenu extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/share-menu
+
+ /**
+ * ShareMenu
+ */
+ constructor(sharingItem: SharingItem);
+ /**
+ * Closes the context menu in the `browserWindow`.
+ */
+ closePopup(browserWindow?: BrowserWindow): void;
+ /**
+ * Pops up this menu as a context menu in the `BrowserWindow`.
+ */
+ popup(options?: PopupOptions): void;
+ }
+
+ interface SharingItem {
+
+ // Docs: https://electronjs.org/docs/api/structures/sharing-item
+
+ /**
+ * An array of files to share.
+ */
+ filePaths?: string[];
+ /**
+ * An array of text to share.
+ */
+ texts?: string[];
+ /**
+ * An array of URLs to share.
+ */
+ urls?: string[];
+ }
+
+ interface Shell {
+
+ // Docs: https://electronjs.org/docs/api/shell
+
+ /**
+ * Play the beep sound.
+ */
+ beep(): void;
+ /**
+ * Open the given external protocol URL in the desktop's default manner. (For
+ * example, mailto: URLs in the user's default mail agent).
+ */
+ openExternal(url: string, options?: OpenExternalOptions): Promise<void>;
+ /**
+ * Resolves with a string containing the error message corresponding to the failure
+ * if a failure occurred, otherwise "".
+ *
+ * Open the given file in the desktop's default manner.
+ */
+ openPath(path: string): Promise<string>;
+ /**
+ * Resolves the shortcut link at `shortcutPath`.
+ *
+ * An exception will be thrown when any error happens.
+ *
+ * @platform win32
+ */
+ readShortcutLink(shortcutPath: string): ShortcutDetails;
+ /**
+ * Show the given file in a file manager. If possible, select the file.
+ */
+ showItemInFolder(fullPath: string): void;
+ /**
+ * Resolves when the operation has been completed. Rejects if there was an error
+ * while deleting the requested item.
+ *
+ * This moves a path to the OS-specific trash location (Trash on macOS, Recycle Bin
+ * on Windows, and a desktop-environment-specific location on Linux).
+ */
+ trashItem(path: string): Promise<void>;
+ /**
+ * Whether the shortcut was created successfully.
+ *
+ * Creates or updates a shortcut link at `shortcutPath`.
+ *
+ * @platform win32
+ */
+ writeShortcutLink(shortcutPath: string, operation: 'create' | 'update' | 'replace', options: ShortcutDetails): boolean;
+ /**
+ * Whether the shortcut was created successfully.
+ *
+ * Creates or updates a shortcut link at `shortcutPath`.
+ *
+ * @platform win32
+ */
+ writeShortcutLink(shortcutPath: string, options: ShortcutDetails): boolean;
+ }
+
+ interface ShortcutDetails {
+
+ // Docs: https://electronjs.org/docs/api/structures/shortcut-details
+
+ /**
+ * The Application User Model ID. Default is empty.
+ */
+ appUserModelId?: string;
+ /**
+ * The arguments to be applied to `target` when launching from this shortcut.
+ * Default is empty.
+ */
+ args?: string;
+ /**
+ * The working directory. Default is empty.
+ */
+ cwd?: string;
+ /**
+ * The description of the shortcut. Default is empty.
+ */
+ description?: string;
+ /**
+ * The path to the icon, can be a DLL or EXE. `icon` and `iconIndex` have to be set
+ * together. Default is empty, which uses the target's icon.
+ */
+ icon?: string;
+ /**
+ * The resource ID of icon when `icon` is a DLL or EXE. Default is 0.
+ */
+ iconIndex?: number;
+ /**
+ * The target to launch from this shortcut.
+ */
+ target: string;
+ /**
+ * The Application Toast Activator CLSID. Needed for participating in Action
+ * Center.
+ */
+ toastActivatorClsid?: string;
+ }
+
+ interface Size {
+
+ // Docs: https://electronjs.org/docs/api/structures/size
+
+ height: number;
+ width: number;
+ }
+
+ interface SystemPreferences extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/system-preferences
+
+ /**
+ * @platform win32
+ */
+ on(event: 'accent-color-changed', listener: (event: Event,
+ /**
+ * The new RGBA color the user assigned to be their system accent color.
+ */
+ newColor: string) => void): this;
+ once(event: 'accent-color-changed', listener: (event: Event,
+ /**
+ * The new RGBA color the user assigned to be their system accent color.
+ */
+ newColor: string) => void): this;
+ addListener(event: 'accent-color-changed', listener: (event: Event,
+ /**
+ * The new RGBA color the user assigned to be their system accent color.
+ */
+ newColor: string) => void): this;
+ removeListener(event: 'accent-color-changed', listener: (event: Event,
+ /**
+ * The new RGBA color the user assigned to be their system accent color.
+ */
+ newColor: string) => void): this;
+ /**
+ * @platform win32
+ */
+ on(event: 'color-changed', listener: (event: Event) => void): this;
+ once(event: 'color-changed', listener: (event: Event) => void): this;
+ addListener(event: 'color-changed', listener: (event: Event) => void): this;
+ removeListener(event: 'color-changed', listener: (event: Event) => void): this;
+ /**
+ * A promise that resolves with `true` if consent was granted and `false` if it was
+ * denied. If an invalid `mediaType` is passed, the promise will be rejected. If an
+ * access request was denied and later is changed through the System Preferences
+ * pane, a restart of the app will be required for the new permissions to take
+ * effect. If access has already been requested and denied, it _must_ be changed
+ * through the preference pane; an alert will not pop up and the promise will
+ * resolve with the existing access status.
+ *
+ * **Important:** In order to properly leverage this API, you must set the
+ * `NSMicrophoneUsageDescription` and `NSCameraUsageDescription` strings in your
+ * app's `Info.plist` file. The values for these keys will be used to populate the
+ * permission dialogs so that the user will be properly informed as to the purpose
+ * of the permission request. See Electron Application Distribution for more
+ * information about how to set these in the context of Electron.
+ *
+ * This user consent was not required until macOS 10.14 Mojave, so this method will
+ * always return `true` if your system is running 10.13 High Sierra.
+ *
+ * @platform darwin
+ */
+ askForMediaAccess(mediaType: 'microphone' | 'camera'): Promise<boolean>;
+ /**
+ * whether or not this device has the ability to use Touch ID.
+ *
+ * @platform darwin
+ */
+ canPromptTouchID(): boolean;
+ /**
+ * The users current system wide accent color preference in RGBA hexadecimal form.
+ *
+ * This API is only available on macOS 10.14 Mojave or newer.
+ *
+ * @platform win32,darwin
+ */
+ getAccentColor(): string;
+ /**
+ * * `shouldRenderRichAnimation` boolean - Returns true if rich animations should
+ * be rendered. Looks at session type (e.g. remote desktop) and accessibility
+ * settings to give guidance for heavy animations.
+ * * `scrollAnimationsEnabledBySystem` boolean - Determines on a per-platform basis
+ * whether scroll animations (e.g. produced by home/end key) should be enabled.
+ * * `prefersReducedMotion` boolean - Determines whether the user desires reduced
+ * motion based on platform APIs.
+ *
+ * Returns an object with system animation settings.
+ */
+ getAnimationSettings(): AnimationSettings;
+ /**
+ * The system color setting in RGB hexadecimal form (`#ABCDEF`). See the Windows
+ * docs and the macOS docs for more details.
+ *
+ * The following colors are only available on macOS 10.14: `find-highlight`,
+ * `selected-content-background`, `separator`,
+ * `unemphasized-selected-content-background`,
+ * `unemphasized-selected-text-background`, and `unemphasized-selected-text`.
+ *
+ * @platform win32,darwin
+ */
+ getColor(color: '3d-dark-shadow' | '3d-face' | '3d-highlight' | '3d-light' | '3d-shadow' | 'active-border' | 'active-caption' | 'active-caption-gradient' | 'app-workspace' | 'button-text' | 'caption-text' | 'desktop' | 'disabled-text' | 'highlight' | 'highlight-text' | 'hotlight' | 'inactive-border' | 'inactive-caption' | 'inactive-caption-gradient' | 'inactive-caption-text' | 'info-background' | 'info-text' | 'menu' | 'menu-highlight' | 'menubar' | 'menu-text' | 'scrollbar' | 'window' | 'window-frame' | 'window-text' | 'control-background' | 'control' | 'control-text' | 'disabled-control-text' | 'find-highlight' | 'grid' | 'header-text' | 'highlight' | 'keyboard-focus-indicator' | 'label' | 'link' | 'placeholder-text' | 'quaternary-label' | 'scrubber-textured-background' | 'secondary-label' | 'selected-content-background' | 'selected-control' | 'selected-control-text' | 'selected-menu-item-text' | 'selected-text-background' | 'selected-text' | 'separator' | 'shadow' | 'tertiary-label' | 'text-background' | 'text' | 'under-page-background' | 'unemphasized-selected-content-background' | 'unemphasized-selected-text-background' | 'unemphasized-selected-text' | 'window-background' | 'window-frame-text'): string;
+ /**
+ * Can be `dark`, `light` or `unknown`.
+ *
+ * Gets the macOS appearance setting that is currently applied to your application,
+ * maps to NSApplication.effectiveAppearance
+ *
+ * @platform darwin
+ */
+ getEffectiveAppearance(): ('dark' | 'light' | 'unknown');
+ /**
+ * Can be `not-determined`, `granted`, `denied`, `restricted` or `unknown`.
+ *
+ * This user consent was not required on macOS 10.13 High Sierra so this method
+ * will always return `granted`. macOS 10.14 Mojave or higher requires consent for
+ * `microphone` and `camera` access. macOS 10.15 Catalina or higher requires
+ * consent for `screen` access.
+ *
+ * Windows 10 has a global setting controlling `microphone` and `camera` access for
+ * all win32 applications. It will always return `granted` for `screen` and for all
+ * media types on older versions of Windows.
+ *
+ * @platform win32,darwin
+ */
+ getMediaAccessStatus(mediaType: 'microphone' | 'camera' | 'screen'): ('not-determined' | 'granted' | 'denied' | 'restricted' | 'unknown');
+ /**
+ * The standard system color formatted as `#RRGGBBAA`.
+ *
+ * Returns one of several standard system colors that automatically adapt to
+ * vibrancy and changes in accessibility settings like 'Increase contrast' and
+ * 'Reduce transparency'. See Apple Documentation for more details.
+ *
+ * @platform darwin
+ */
+ getSystemColor(color: 'blue' | 'brown' | 'gray' | 'green' | 'orange' | 'pink' | 'purple' | 'red' | 'yellow'): string;
+ /**
+ * The value of `key` in `NSUserDefaults`.
+ *
+ * Some popular `key` and `type`s are:
+ *
+ * * `AppleInterfaceStyle`: `string`
+ * * `AppleAquaColorVariant`: `integer`
+ * * `AppleHighlightColor`: `string`
+ * * `AppleShowScrollBars`: `string`
+ * * `NSNavRecentPlaces`: `array`
+ * * `NSPreferredWebServices`: `dictionary`
+ * * `NSUserDictionaryReplacementItems`: `array`
+ *
+ * @platform darwin
+ */
+ getUserDefault<Type extends keyof UserDefaultTypes>(key: string, type: Type): UserDefaultTypes[Type];
+ /**
+ * `true` if DWM composition (Aero Glass) is enabled, and `false` otherwise.
+ *
+ * An example of using it to determine if you should create a transparent window or
+ * not (transparent windows won't work correctly when DWM composition is disabled):
+ *
+ * @platform win32
+ */
+ isAeroGlassEnabled(): boolean;
+ /**
+ * Whether the Swipe between pages setting is on.
+ *
+ * @platform darwin
+ */
+ isSwipeTrackingFromScrollEventsEnabled(): boolean;
+ /**
+ * `true` if the current process is a trusted accessibility client and `false` if
+ * it is not.
+ *
+ * @platform darwin
+ */
+ isTrustedAccessibilityClient(prompt: boolean): boolean;
+ /**
+ * Posts `event` as native notifications of macOS. The `userInfo` is an Object that
+ * contains the user information dictionary sent along with the notification.
+ *
+ * @platform darwin
+ */
+ postLocalNotification(event: string, userInfo: Record<string, any>): void;
+ /**
+ * Posts `event` as native notifications of macOS. The `userInfo` is an Object that
+ * contains the user information dictionary sent along with the notification.
+ *
+ * @platform darwin
+ */
+ postNotification(event: string, userInfo: Record<string, any>, deliverImmediately?: boolean): void;
+ /**
+ * Posts `event` as native notifications of macOS. The `userInfo` is an Object that
+ * contains the user information dictionary sent along with the notification.
+ *
+ * @platform darwin
+ */
+ postWorkspaceNotification(event: string, userInfo: Record<string, any>): void;
+ /**
+ * resolves if the user has successfully authenticated with Touch ID.
+ *
+ * This API itself will not protect your user data; rather, it is a mechanism to
+ * allow you to do so. Native apps will need to set Access Control Constants like
+ * `kSecAccessControlUserPresence` on their keychain entry so that reading it would
+ * auto-prompt for Touch ID biometric consent. This could be done with
+ * `node-keytar`, such that one would store an encryption key with `node-keytar`
+ * and only fetch it if `promptTouchID()` resolves.
+ *
+ * @platform darwin
+ */
+ promptTouchID(reason: string): Promise<void>;
+ /**
+ * Add the specified defaults to your application's `NSUserDefaults`.
+ *
+ * @platform darwin
+ */
+ registerDefaults(defaults: Record<string, (string) | (boolean) | (number)>): void;
+ /**
+ * Removes the `key` in `NSUserDefaults`. This can be used to restore the default
+ * or global value of a `key` previously set with `setUserDefault`.
+ *
+ * @platform darwin
+ */
+ removeUserDefault(key: string): void;
+ /**
+ * Set the value of `key` in `NSUserDefaults`.
+ *
+ * Note that `type` should match actual type of `value`. An exception is thrown if
+ * they don't.
+ *
+ * Some popular `key` and `type`s are:
+ *
+ * * `ApplePressAndHoldEnabled`: `boolean`
+ *
+ * @platform darwin
+ */
+ setUserDefault<Type extends keyof UserDefaultTypes>(key: string, type: Type, value: UserDefaultTypes[Type]): void;
+ /**
+ * The ID of this subscription
+ *
+ * Same as `subscribeNotification`, but uses `NSNotificationCenter` for local
+ * defaults. This is necessary for events such as
+ * `NSUserDefaultsDidChangeNotification`.
+ *
+ * If `event` is null, the `NSNotificationCenter` doesn’t use it as criteria for
+ * delivery to the observer. See docs for more information.
+ *
+ * @platform darwin
+ */
+ subscribeLocalNotification(event: (string) | (null), callback: (event: string, userInfo: Record<string, unknown>, object: string) => void): number;
+ /**
+ * The ID of this subscription
+ *
+ * Subscribes to native notifications of macOS, `callback` will be called with
+ * `callback(event, userInfo)` when the corresponding `event` happens. The
+ * `userInfo` is an Object that contains the user information dictionary sent along
+ * with the notification. The `object` is the sender of the notification, and only
+ * supports `NSString` values for now.
+ *
+ * The `id` of the subscriber is returned, which can be used to unsubscribe the
+ * `event`.
+ *
+ * Under the hood this API subscribes to `NSDistributedNotificationCenter`, example
+ * values of `event` are:
+ *
+ * * `AppleInterfaceThemeChangedNotification`
+ * * `AppleAquaColorVariantChanged`
+ * * `AppleColorPreferencesChangedNotification`
+ * * `AppleShowScrollBarsSettingChanged`
+ *
+ * If `event` is null, the `NSDistributedNotificationCenter` doesn’t use it as
+ * criteria for delivery to the observer. See docs for more information.
+ *
+ * @platform darwin
+ */
+ subscribeNotification(event: (string) | (null), callback: (event: string, userInfo: Record<string, unknown>, object: string) => void): number;
+ /**
+ * The ID of this subscription
+ *
+ * Same as `subscribeNotification`, but uses
+ * `NSWorkspace.sharedWorkspace.notificationCenter`. This is necessary for events
+ * such as `NSWorkspaceDidActivateApplicationNotification`.
+ *
+ * If `event` is null, the `NSWorkspaceNotificationCenter` doesn’t use it as
+ * criteria for delivery to the observer. See docs for more information.
+ *
+ * @platform darwin
+ */
+ subscribeWorkspaceNotification(event: (string) | (null), callback: (event: string, userInfo: Record<string, unknown>, object: string) => void): number;
+ /**
+ * Same as `unsubscribeNotification`, but removes the subscriber from
+ * `NSNotificationCenter`.
+ *
+ * @platform darwin
+ */
+ unsubscribeLocalNotification(id: number): void;
+ /**
+ * Removes the subscriber with `id`.
+ *
+ * @platform darwin
+ */
+ unsubscribeNotification(id: number): void;
+ /**
+ * Same as `unsubscribeNotification`, but removes the subscriber from
+ * `NSWorkspace.sharedWorkspace.notificationCenter`.
+ *
+ * @platform darwin
+ */
+ unsubscribeWorkspaceNotification(id: number): void;
+ /**
+ * A `boolean` property which determines whether the app avoids using
+ * semitransparent backgrounds. This maps to
+ * NSWorkspace.accessibilityDisplayShouldReduceTransparency
+ *
+ * @platform darwin
+ */
+ accessibilityDisplayShouldReduceTransparency(): boolean;
+ /**
+ * A `string` property that can be `dark`, `light` or `unknown`.
+ *
+ * Returns the macOS appearance setting that is currently applied to your
+ * application, maps to NSApplication.effectiveAppearance
+ *
+ * @platform darwin
+ */
+ readonly effectiveAppearance: ('dark' | 'light' | 'unknown');
+ }
+
+ interface Task {
+
+ // Docs: https://electronjs.org/docs/api/structures/task
+
+ /**
+ * The command line arguments when `program` is executed.
+ */
+ arguments: string;
+ /**
+ * Description of this task.
+ */
+ description: string;
+ /**
+ * The icon index in the icon file. If an icon file consists of two or more icons,
+ * set this value to identify the icon. If an icon file consists of one icon, this
+ * value is 0.
+ */
+ iconIndex: number;
+ /**
+ * The absolute path to an icon to be displayed in a JumpList, which can be an
+ * arbitrary resource file that contains an icon. You can usually specify
+ * `process.execPath` to show the icon of the program.
+ */
+ iconPath: string;
+ /**
+ * Path of the program to execute, usually you should specify `process.execPath`
+ * which opens the current program.
+ */
+ program: string;
+ /**
+ * The string to be displayed in a JumpList.
+ */
+ title: string;
+ /**
+ * The working directory. Default is empty.
+ */
+ workingDirectory?: string;
+ }
+
+ interface ThumbarButton {
+
+ // Docs: https://electronjs.org/docs/api/structures/thumbar-button
+
+ click: () => void;
+ /**
+ * Control specific states and behaviors of the button. By default, it is
+ * `['enabled']`.
+ */
+ flags?: string[];
+ /**
+ * The icon showing in thumbnail toolbar.
+ */
+ icon: NativeImage;
+ /**
+ * The text of the button's tooltip.
+ */
+ tooltip?: string;
+ }
+
+ class TouchBar {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar
+
+ /**
+ * TouchBar
+ */
+ constructor(options: TouchBarConstructorOptions);
+ /**
+ * A `TouchBarItem` that will replace the "esc" button on the touch bar when set.
+ * Setting to `null` restores the default "esc" button. Changing this value
+ * immediately updates the escape item in the touch bar.
+ */
+ escapeItem: (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer | null);
+ /**
+ * A `typeof TouchBarButton` reference to the `TouchBarButton` class.
+ */
+ static TouchBarButton: typeof TouchBarButton;
+ /**
+ * A `typeof TouchBarColorPicker` reference to the `TouchBarColorPicker` class.
+ */
+ static TouchBarColorPicker: typeof TouchBarColorPicker;
+ /**
+ * A `typeof TouchBarGroup` reference to the `TouchBarGroup` class.
+ */
+ static TouchBarGroup: typeof TouchBarGroup;
+ /**
+ * A `typeof TouchBarLabel` reference to the `TouchBarLabel` class.
+ */
+ static TouchBarLabel: typeof TouchBarLabel;
+ /**
+ * A `typeof TouchBarOtherItemsProxy` reference to the `TouchBarOtherItemsProxy`
+ * class.
+ */
+ static TouchBarOtherItemsProxy: typeof TouchBarOtherItemsProxy;
+ /**
+ * A `typeof TouchBarPopover` reference to the `TouchBarPopover` class.
+ */
+ static TouchBarPopover: typeof TouchBarPopover;
+ /**
+ * A `typeof TouchBarScrubber` reference to the `TouchBarScrubber` class.
+ */
+ static TouchBarScrubber: typeof TouchBarScrubber;
+ /**
+ * A `typeof TouchBarSegmentedControl` reference to the `TouchBarSegmentedControl`
+ * class.
+ */
+ static TouchBarSegmentedControl: typeof TouchBarSegmentedControl;
+ /**
+ * A `typeof TouchBarSlider` reference to the `TouchBarSlider` class.
+ */
+ static TouchBarSlider: typeof TouchBarSlider;
+ /**
+ * A `typeof TouchBarSpacer` reference to the `TouchBarSpacer` class.
+ */
+ static TouchBarSpacer: typeof TouchBarSpacer;
+ }
+
+ class TouchBarButton {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-button
+
+ /**
+ * TouchBarButton
+ */
+ constructor(options: TouchBarButtonConstructorOptions);
+ /**
+ * A `string` representing the description of the button to be read by a screen
+ * reader. Will only be read by screen readers if no label is set.
+ */
+ accessibilityLabel: string;
+ /**
+ * A `string` hex code representing the button's current background color. Changing
+ * this value immediately updates the button in the touch bar.
+ */
+ backgroundColor: string;
+ /**
+ * A `boolean` representing whether the button is in an enabled state.
+ */
+ enabled: boolean;
+ /**
+ * A `NativeImage` representing the button's current icon. Changing this value
+ * immediately updates the button in the touch bar.
+ */
+ icon: NativeImage;
+ /**
+ * A `string` - Can be `left`, `right` or `overlay`. Defaults to `overlay`.
+ */
+ iconPosition: ('left' | 'right' | 'overlay');
+ /**
+ * A `string` representing the button's current text. Changing this value
+ * immediately updates the button in the touch bar.
+ */
+ label: string;
+ }
+
+ class TouchBarColorPicker extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-color-picker
+
+ /**
+ * TouchBarColorPicker
+ */
+ constructor(options: TouchBarColorPickerConstructorOptions);
+ /**
+ * A `string[]` array representing the color picker's available colors to select.
+ * Changing this value immediately updates the color picker in the touch bar.
+ */
+ availableColors: string[];
+ /**
+ * A `string` hex code representing the color picker's currently selected color.
+ * Changing this value immediately updates the color picker in the touch bar.
+ */
+ selectedColor: string;
+ }
+
+ class TouchBarGroup extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-group
+
+ /**
+ * TouchBarGroup
+ */
+ constructor(options: TouchBarGroupConstructorOptions);
+ }
+
+ class TouchBarLabel extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-label
+
+ /**
+ * TouchBarLabel
+ */
+ constructor(options: TouchBarLabelConstructorOptions);
+ /**
+ * A `string` representing the description of the label to be read by a screen
+ * reader.
+ */
+ accessibilityLabel: string;
+ /**
+ * A `string` representing the label's current text. Changing this value
+ * immediately updates the label in the touch bar.
+ */
+ label: string;
+ /**
+ * A `string` hex code representing the label's current text color. Changing this
+ * value immediately updates the label in the touch bar.
+ */
+ textColor: string;
+ }
+
+ class TouchBarOtherItemsProxy extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-other-items-proxy
+
+ /**
+ * TouchBarOtherItemsProxy
+ */
+ constructor();
+ }
+
+ class TouchBarPopover extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-popover
+
+ /**
+ * TouchBarPopover
+ */
+ constructor(options: TouchBarPopoverConstructorOptions);
+ /**
+ * A `NativeImage` representing the popover's current button icon. Changing this
+ * value immediately updates the popover in the touch bar.
+ */
+ icon: NativeImage;
+ /**
+ * A `string` representing the popover's current button text. Changing this value
+ * immediately updates the popover in the touch bar.
+ */
+ label: string;
+ }
+
+ class TouchBarScrubber extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-scrubber
+
+ /**
+ * TouchBarScrubber
+ */
+ constructor(options: TouchBarScrubberConstructorOptions);
+ /**
+ * A `boolean` representing whether this scrubber is continuous or not. Updating
+ * this value immediately updates the control in the touch bar.
+ */
+ continuous: boolean;
+ /**
+ * A `ScrubberItem[]` array representing the items in this scrubber. Updating this
+ * value immediately updates the control in the touch bar. Updating deep properties
+ * inside this array **does not update the touch bar**.
+ */
+ items: ScrubberItem[];
+ /**
+ * A `string` representing the mode of this scrubber. Updating this value
+ * immediately updates the control in the touch bar. Possible values:
+ *
+ * * `fixed` - Maps to `NSScrubberModeFixed`.
+ * * `free` - Maps to `NSScrubberModeFree`.
+ */
+ mode: ('fixed' | 'free');
+ /**
+ * A `string` representing the style that selected items in the scrubber should
+ * have. This style is overlayed on top of the scrubber item instead of being
+ * placed behind it. Updating this value immediately updates the control in the
+ * touch bar. Possible values:
+ *
+ * * `background` - Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`.
+ * * `outline` - Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`.
+ * * `none` - Removes all styles.
+ */
+ overlayStyle: ('background' | 'outline' | 'none');
+ /**
+ * A `string` representing the style that selected items in the scrubber should
+ * have. Updating this value immediately updates the control in the touch bar.
+ * Possible values:
+ *
+ * * `background` - Maps to `[NSScrubberSelectionStyle roundedBackgroundStyle]`.
+ * * `outline` - Maps to `[NSScrubberSelectionStyle outlineOverlayStyle]`.
+ * * `none` - Removes all styles.
+ */
+ selectedStyle: ('background' | 'outline' | 'none');
+ /**
+ * A `boolean` representing whether to show the left / right selection arrows in
+ * this scrubber. Updating this value immediately updates the control in the touch
+ * bar.
+ */
+ showArrowButtons: boolean;
+ }
+
+ class TouchBarSegmentedControl extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-segmented-control
+
+ /**
+ * TouchBarSegmentedControl
+ */
+ constructor(options: TouchBarSegmentedControlConstructorOptions);
+ /**
+ * A `string` representing the current selection mode of the control. Can be
+ * `single`, `multiple` or `buttons`.
+ */
+ mode: ('single' | 'multiple' | 'buttons');
+ /**
+ * A `SegmentedControlSegment[]` array representing the segments in this control.
+ * Updating this value immediately updates the control in the touch bar. Updating
+ * deep properties inside this array **does not update the touch bar**.
+ */
+ segments: SegmentedControlSegment[];
+ /**
+ * A `string` representing the controls current segment style. Updating this value
+ * immediately updates the control in the touch bar.
+ */
+ segmentStyle: string;
+ /**
+ * An `Integer` representing the currently selected segment. Changing this value
+ * immediately updates the control in the touch bar. User interaction with the
+ * touch bar will update this value automatically.
+ */
+ selectedIndex: number;
+ }
+
+ class TouchBarSlider extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-slider
+
+ /**
+ * TouchBarSlider
+ */
+ constructor(options: TouchBarSliderConstructorOptions);
+ /**
+ * A `string` representing the slider's current text. Changing this value
+ * immediately updates the slider in the touch bar.
+ */
+ label: string;
+ /**
+ * A `number` representing the slider's current maximum value. Changing this value
+ * immediately updates the slider in the touch bar.
+ */
+ maxValue: number;
+ /**
+ * A `number` representing the slider's current minimum value. Changing this value
+ * immediately updates the slider in the touch bar.
+ */
+ minValue: number;
+ /**
+ * A `number` representing the slider's current value. Changing this value
+ * immediately updates the slider in the touch bar.
+ */
+ value: number;
+ }
+
+ class TouchBarSpacer extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/touch-bar-spacer
+
+ /**
+ * TouchBarSpacer
+ */
+ constructor(options: TouchBarSpacerConstructorOptions);
+ /**
+ * A `string` representing the size of the spacer. Can be `small`, `large` or
+ * `flexible`.
+ */
+ size: ('small' | 'large' | 'flexible');
+ }
+
+ interface TraceCategoriesAndOptions {
+
+ // Docs: https://electronjs.org/docs/api/structures/trace-categories-and-options
+
+ /**
+ * A filter to control what category groups should be traced. A filter can have an
+ * optional '-' prefix to exclude category groups that contain a matching category.
+ * Having both included and excluded category patterns in the same list is not
+ * supported. Examples: `test_MyTest*`, `test_MyTest*,test_OtherStuff`,
+ * `-excluded_category1,-excluded_category2`.
+ */
+ categoryFilter: string;
+ /**
+ * Controls what kind of tracing is enabled, it is a comma-delimited sequence of
+ * the following strings: `record-until-full`, `record-continuously`,
+ * `trace-to-console`, `enable-sampling`, `enable-systrace`, e.g.
+ * `'record-until-full,enable-sampling'`. The first 3 options are trace recording
+ * modes and hence mutually exclusive. If more than one trace recording modes
+ * appear in the `traceOptions` string, the last one takes precedence. If none of
+ * the trace recording modes are specified, recording mode is `record-until-full`.
+ * The trace option will first be reset to the default option (`record_mode` set to
+ * `record-until-full`, `enable_sampling` and `enable_systrace` set to `false`)
+ * before options parsed from `traceOptions` are applied on it.
+ */
+ traceOptions: string;
+ }
+
+ interface TraceConfig {
+
+ // Docs: https://electronjs.org/docs/api/structures/trace-config
+
+ /**
+ * if true, filter event data according to a specific list of events that have been
+ * manually vetted to not include any PII. See the implementation in Chromium for
+ * specifics.
+ */
+ enable_argument_filter?: boolean;
+ /**
+ * a list of tracing categories to exclude. Can include glob-like patterns using
+ * `*` at the end of the category name. See tracing categories for the list of
+ * categories.
+ */
+ excluded_categories?: string[];
+ /**
+ * a list of histogram names to report with the trace.
+ */
+ histogram_names?: string[];
+ /**
+ * a list of tracing categories to include. Can include glob-like patterns using
+ * `*` at the end of the category name. See tracing categories for the list of
+ * categories.
+ */
+ included_categories?: string[];
+ /**
+ * a list of process IDs to include in the trace. If not specified, trace all
+ * processes.
+ */
+ included_process_ids?: number[];
+ /**
+ * if the `disabled-by-default-memory-infra` category is enabled, this contains
+ * optional additional configuration for data collection. See the Chromium
+ * memory-infra docs for more information.
+ */
+ memory_dump_config?: Record<string, any>;
+ /**
+ * Can be `record-until-full`, `record-continuously`, `record-as-much-as-possible`
+ * or `trace-to-console`. Defaults to `record-until-full`.
+ */
+ recording_mode?: ('record-until-full' | 'record-continuously' | 'record-as-much-as-possible' | 'trace-to-console');
+ /**
+ * maximum size of the trace recording buffer in events.
+ */
+ trace_buffer_size_in_events?: number;
+ /**
+ * maximum size of the trace recording buffer in kilobytes. Defaults to 100MB.
+ */
+ trace_buffer_size_in_kb?: number;
+ }
+
+ interface Transaction {
+
+ // Docs: https://electronjs.org/docs/api/structures/transaction
+
+ /**
+ * The error code if an error occurred while processing the transaction.
+ */
+ errorCode: number;
+ /**
+ * The error message if an error occurred while processing the transaction.
+ */
+ errorMessage: string;
+ /**
+ * The identifier of the restored transaction by the App Store.
+ */
+ originalTransactionIdentifier: string;
+ payment: Payment;
+ /**
+ * The date the transaction was added to the App Store’s payment queue.
+ */
+ transactionDate: string;
+ /**
+ * A string that uniquely identifies a successful payment transaction.
+ */
+ transactionIdentifier: string;
+ /**
+ * The transaction state, can be `purchasing`, `purchased`, `failed`, `restored` or
+ * `deferred`.
+ */
+ transactionState: ('purchasing' | 'purchased' | 'failed' | 'restored' | 'deferred');
+ }
+
+ class Tray extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/tray
+
+ /**
+ * Emitted when the tray balloon is clicked.
+ *
+ * @platform win32
+ */
+ on(event: 'balloon-click', listener: Function): this;
+ once(event: 'balloon-click', listener: Function): this;
+ addListener(event: 'balloon-click', listener: Function): this;
+ removeListener(event: 'balloon-click', listener: Function): this;
+ /**
+ * Emitted when the tray balloon is closed because of timeout or user manually
+ * closes it.
+ *
+ * @platform win32
+ */
+ on(event: 'balloon-closed', listener: Function): this;
+ once(event: 'balloon-closed', listener: Function): this;
+ addListener(event: 'balloon-closed', listener: Function): this;
+ removeListener(event: 'balloon-closed', listener: Function): this;
+ /**
+ * Emitted when the tray balloon shows.
+ *
+ * @platform win32
+ */
+ on(event: 'balloon-show', listener: Function): this;
+ once(event: 'balloon-show', listener: Function): this;
+ addListener(event: 'balloon-show', listener: Function): this;
+ removeListener(event: 'balloon-show', listener: Function): this;
+ /**
+ * Emitted when the tray icon is clicked.
+ *
+ * Note that on Linux this event is emitted when the tray icon receives an
+ * activation, which might not necessarily be left mouse click.
+ */
+ on(event: 'click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the tray icon is double clicked.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'double-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ once(event: 'double-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ addListener(event: 'double-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ removeListener(event: 'double-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ /**
+ * Emitted when a drag operation ends on the tray or ends at another location.
+ *
+ * @platform darwin
+ */
+ on(event: 'drag-end', listener: Function): this;
+ once(event: 'drag-end', listener: Function): this;
+ addListener(event: 'drag-end', listener: Function): this;
+ removeListener(event: 'drag-end', listener: Function): this;
+ /**
+ * Emitted when a drag operation enters the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'drag-enter', listener: Function): this;
+ once(event: 'drag-enter', listener: Function): this;
+ addListener(event: 'drag-enter', listener: Function): this;
+ removeListener(event: 'drag-enter', listener: Function): this;
+ /**
+ * Emitted when a drag operation exits the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'drag-leave', listener: Function): this;
+ once(event: 'drag-leave', listener: Function): this;
+ addListener(event: 'drag-leave', listener: Function): this;
+ removeListener(event: 'drag-leave', listener: Function): this;
+ /**
+ * Emitted when any dragged items are dropped on the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'drop', listener: Function): this;
+ once(event: 'drop', listener: Function): this;
+ addListener(event: 'drop', listener: Function): this;
+ removeListener(event: 'drop', listener: Function): this;
+ /**
+ * Emitted when dragged files are dropped in the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'drop-files', listener: (event: Event,
+ /**
+ * The paths of the dropped files.
+ */
+ files: string[]) => void): this;
+ once(event: 'drop-files', listener: (event: Event,
+ /**
+ * The paths of the dropped files.
+ */
+ files: string[]) => void): this;
+ addListener(event: 'drop-files', listener: (event: Event,
+ /**
+ * The paths of the dropped files.
+ */
+ files: string[]) => void): this;
+ removeListener(event: 'drop-files', listener: (event: Event,
+ /**
+ * The paths of the dropped files.
+ */
+ files: string[]) => void): this;
+ /**
+ * Emitted when dragged text is dropped in the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'drop-text', listener: (event: Event,
+ /**
+ * the dropped text string.
+ */
+ text: string) => void): this;
+ once(event: 'drop-text', listener: (event: Event,
+ /**
+ * the dropped text string.
+ */
+ text: string) => void): this;
+ addListener(event: 'drop-text', listener: (event: Event,
+ /**
+ * the dropped text string.
+ */
+ text: string) => void): this;
+ removeListener(event: 'drop-text', listener: (event: Event,
+ /**
+ * the dropped text string.
+ */
+ text: string) => void): this;
+ /**
+ * Emitted when the mouse clicks the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'mouse-down', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'mouse-down', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'mouse-down', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'mouse-down', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the mouse enters the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'mouse-enter', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'mouse-enter', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'mouse-enter', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'mouse-enter', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the mouse exits the tray icon.
+ *
+ * @platform darwin
+ */
+ on(event: 'mouse-leave', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'mouse-leave', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'mouse-leave', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'mouse-leave', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the mouse moves in the tray icon.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'mouse-move', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'mouse-move', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'mouse-move', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'mouse-move', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the mouse is released from clicking the tray icon.
+ *
+ * Note: This will not be emitted if you have set a context menu for your Tray
+ * using `tray.setContextMenu`, as a result of macOS-level constraints.
+ *
+ * @platform darwin
+ */
+ on(event: 'mouse-up', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ once(event: 'mouse-up', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ addListener(event: 'mouse-up', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ removeListener(event: 'mouse-up', listener: (event: KeyboardEvent,
+ /**
+ * The position of the event.
+ */
+ position: Point) => void): this;
+ /**
+ * Emitted when the tray icon is right clicked.
+ *
+ * @platform darwin,win32
+ */
+ on(event: 'right-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ once(event: 'right-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ addListener(event: 'right-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ removeListener(event: 'right-click', listener: (event: KeyboardEvent,
+ /**
+ * The bounds of tray icon.
+ */
+ bounds: Rectangle) => void): this;
+ /**
+ * Tray
+ */
+ constructor(image: (NativeImage) | (string), guid?: string);
+ /**
+ * Closes an open context menu, as set by `tray.setContextMenu()`.
+ *
+ * @platform darwin,win32
+ */
+ closeContextMenu(): void;
+ /**
+ * Destroys the tray icon immediately.
+ */
+ destroy(): void;
+ /**
+ * Displays a tray balloon.
+ *
+ * @platform win32
+ */
+ displayBalloon(options: DisplayBalloonOptions): void;
+ /**
+ * Returns focus to the taskbar notification area. Notification area icons should
+ * use this message when they have completed their UI operation. For example, if
+ * the icon displays a shortcut menu, but the user presses ESC to cancel it, use
+ * `tray.focus()` to return focus to the notification area.
+ *
+ * @platform win32
+ */
+ focus(): void;
+ /**
+ * The `bounds` of this tray icon as `Object`.
+ *
+ * @platform darwin,win32
+ */
+ getBounds(): Rectangle;
+ /**
+ * Whether double click events will be ignored.
+ *
+ * @platform darwin
+ */
+ getIgnoreDoubleClickEvents(): boolean;
+ /**
+ * the title displayed next to the tray icon in the status bar
+ *
+ * @platform darwin
+ */
+ getTitle(): string;
+ /**
+ * Whether the tray icon is destroyed.
+ */
+ isDestroyed(): boolean;
+ /**
+ * Pops up the context menu of the tray icon. When `menu` is passed, the `menu`
+ * will be shown instead of the tray icon's context menu.
+ *
+ * The `position` is only available on Windows, and it is (0, 0) by default.
+ *
+ * @platform darwin,win32
+ */
+ popUpContextMenu(menu?: Menu, position?: Point): void;
+ /**
+ * Removes a tray balloon.
+ *
+ * @platform win32
+ */
+ removeBalloon(): void;
+ /**
+ * Sets the context menu for this icon.
+ */
+ setContextMenu(menu: (Menu) | (null)): void;
+ /**
+ * Sets the option to ignore double click events. Ignoring these events allows you
+ * to detect every individual click of the tray icon.
+ *
+ * This value is set to false by default.
+ *
+ * @platform darwin
+ */
+ setIgnoreDoubleClickEvents(ignore: boolean): void;
+ /**
+ * Sets the `image` associated with this tray icon.
+ */
+ setImage(image: (NativeImage) | (string)): void;
+ /**
+ * Sets the `image` associated with this tray icon when pressed on macOS.
+ *
+ * @platform darwin
+ */
+ setPressedImage(image: (NativeImage) | (string)): void;
+ /**
+ * Sets the title displayed next to the tray icon in the status bar (Support ANSI
+ * colors).
+ *
+ * @platform darwin
+ */
+ setTitle(title: string, options?: TitleOptions): void;
+ /**
+ * Sets the hover text for this tray icon.
+ */
+ setToolTip(toolTip: string): void;
+ }
+
+ interface UploadData {
+
+ // Docs: https://electronjs.org/docs/api/structures/upload-data
+
+ /**
+ * UUID of blob data. Use ses.getBlobData method to retrieve the data.
+ */
+ blobUUID?: string;
+ /**
+ * Content being sent.
+ */
+ bytes: Buffer;
+ /**
+ * Path of file being uploaded.
+ */
+ file?: string;
+ }
+
+ interface UploadFile {
+
+ // Docs: https://electronjs.org/docs/api/structures/upload-file
+
+ /**
+ * Path of file to be uploaded.
+ */
+ filePath: string;
+ /**
+ * Number of bytes to read from `offset`. Defaults to `0`.
+ */
+ length?: number;
+ /**
+ * Last Modification time in number of seconds since the UNIX epoch. Defaults to
+ * `0`.
+ */
+ modificationTime?: number;
+ /**
+ * Defaults to `0`.
+ */
+ offset?: number;
+ /**
+ * `file`.
+ */
+ type: 'file';
+ }
+
+ interface UploadRawData {
+
+ // Docs: https://electronjs.org/docs/api/structures/upload-raw-data
+
+ /**
+ * Data to be uploaded.
+ */
+ bytes: Buffer;
+ /**
+ * `rawData`.
+ */
+ type: 'rawData';
+ }
+
+ interface USBDevice {
+
+ // Docs: https://electronjs.org/docs/api/structures/usb-device
+
+ /**
+ * The device class for the communication interface supported by the device
+ */
+ deviceClass: number;
+ /**
+ * Unique identifier for the device.
+ */
+ deviceId: string;
+ /**
+ * The device protocol for the communication interface supported by the device
+ */
+ deviceProtocol: number;
+ /**
+ * The device subclass for the communication interface supported by the device
+ */
+ deviceSubclass: number;
+ /**
+ * The major version number of the device as defined by the device manufacturer.
+ */
+ deviceVersionMajor: number;
+ /**
+ * The minor version number of the device as defined by the device manufacturer.
+ */
+ deviceVersionMinor: number;
+ /**
+ * The subminor version number of the device as defined by the device manufacturer.
+ */
+ deviceVersionSubminor: number;
+ /**
+ * The manufacturer name of the device.
+ */
+ manufacturerName?: string;
+ /**
+ * The USB product ID.
+ */
+ productId: number;
+ /**
+ * Name of the device.
+ */
+ productName?: string;
+ /**
+ * The USB device serial number.
+ */
+ serialNumber?: string;
+ /**
+ * The USB protocol major version supported by the device
+ */
+ usbVersionMajor: number;
+ /**
+ * The USB protocol minor version supported by the device
+ */
+ usbVersionMinor: number;
+ /**
+ * The USB protocol subminor version supported by the device
+ */
+ usbVersionSubminor: number;
+ /**
+ * The USB vendor ID.
+ */
+ vendorId: number;
+ }
+
+ interface UserDefaultTypes {
+
+ // Docs: https://electronjs.org/docs/api/structures/user-default-types
+
+ array: Array<unknown>;
+ boolean: boolean;
+ dictionary: Record<string, unknown>;
+ double: number;
+ float: number;
+ integer: number;
+ string: string;
+ url: string;
+ }
+
+ class UtilityProcess extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/utility-process
+
+ static fork(modulePath: string, args?: string[], options?: ForkOptions): UtilityProcess;
+ /**
+ * Emitted after the child process ends.
+ */
+ on(event: 'exit', listener: (
+ /**
+ * Contains the exit code for the process obtained from waitpid on posix, or
+ * GetExitCodeProcess on windows.
+ */
+ code: number) => void): this;
+ once(event: 'exit', listener: (
+ /**
+ * Contains the exit code for the process obtained from waitpid on posix, or
+ * GetExitCodeProcess on windows.
+ */
+ code: number) => void): this;
+ addListener(event: 'exit', listener: (
+ /**
+ * Contains the exit code for the process obtained from waitpid on posix, or
+ * GetExitCodeProcess on windows.
+ */
+ code: number) => void): this;
+ removeListener(event: 'exit', listener: (
+ /**
+ * Contains the exit code for the process obtained from waitpid on posix, or
+ * GetExitCodeProcess on windows.
+ */
+ code: number) => void): this;
+ /**
+ * Emitted when the child process sends a message using
+ * `process.parentPort.postMessage()`.
+ */
+ on(event: 'message', listener: (message: any) => void): this;
+ once(event: 'message', listener: (message: any) => void): this;
+ addListener(event: 'message', listener: (message: any) => void): this;
+ removeListener(event: 'message', listener: (message: any) => void): this;
+ /**
+ * Emitted once the child process has spawned successfully.
+ */
+ on(event: 'spawn', listener: Function): this;
+ once(event: 'spawn', listener: Function): this;
+ addListener(event: 'spawn', listener: Function): this;
+ removeListener(event: 'spawn', listener: Function): this;
+ /**
+ * Terminates the process gracefully. On POSIX, it uses SIGTERM but will ensure the
+ * process is reaped on exit. This function returns true if the kill is successful,
+ * and false otherwise.
+ */
+ kill(): boolean;
+ /**
+ * Send a message to the child process, optionally transferring ownership of zero
+ * or more `MessagePortMain` objects.
+ *
+ * For example:
+ */
+ postMessage(message: any, transfer?: MessagePortMain[]): void;
+ /**
+ * A `Integer | undefined` representing the process identifier (PID) of the child
+ * process. If the child process fails to spawn due to errors, then the value is
+ * `undefined`. When the child process exits, then the value is `undefined` after
+ * the `exit` event is emitted.
+ */
+ pid: (number) | (undefined);
+ /**
+ * A `NodeJS.ReadableStream | null` that represents the child process's stderr. If
+ * the child was spawned with options.stdio[2] set to anything other than 'pipe',
+ * then this will be `null`. When the child process exits, then the value is `null`
+ * after the `exit` event is emitted.
+ */
+ stderr: (NodeJS.ReadableStream) | (null);
+ /**
+ * A `NodeJS.ReadableStream | null` that represents the child process's stdout. If
+ * the child was spawned with options.stdio[1] set to anything other than 'pipe',
+ * then this will be `null`. When the child process exits, then the value is `null`
+ * after the `exit` event is emitted.
+ */
+ stdout: (NodeJS.ReadableStream) | (null);
+ }
+
+ class WebContents extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/web-contents
+
+ /**
+ * A WebContents instance with the given TargetID, or `undefined` if there is no
+ * WebContents associated with the given TargetID.
+ *
+ * When communicating with the Chrome DevTools Protocol, it can be useful to lookup
+ * a WebContents instance based on its assigned TargetID.
+ */
+ static fromDevToolsTargetId(targetId: string): (WebContents) | (undefined);
+ /**
+ * A WebContents instance with the given WebFrameMain, or `undefined` if there is
+ * no WebContents associated with the given WebFrameMain.
+ */
+ static fromFrame(frame: WebFrameMain): (WebContents) | (undefined);
+ /**
+ * A WebContents instance with the given ID, or `undefined` if there is no
+ * WebContents associated with the given ID.
+ */
+ static fromId(id: number): (WebContents) | (undefined);
+ /**
+ * An array of all `WebContents` instances. This will contain web contents for all
+ * windows, webviews, opened devtools, and devtools extension background pages.
+ */
+ static getAllWebContents(): WebContents[];
+ /**
+ * The web contents that is focused in this application, otherwise returns `null`.
+ */
+ static getFocusedWebContents(): (WebContents) | (null);
+ /**
+ * Emitted when media becomes audible or inaudible.
+ */
+ on(event: 'audio-state-changed', listener: (event: Event<WebContentsAudioStateChangedEventParams>) => void): this;
+ once(event: 'audio-state-changed', listener: (event: Event<WebContentsAudioStateChangedEventParams>) => void): this;
+ addListener(event: 'audio-state-changed', listener: (event: Event<WebContentsAudioStateChangedEventParams>) => void): this;
+ removeListener(event: 'audio-state-changed', listener: (event: Event<WebContentsAudioStateChangedEventParams>) => void): this;
+ /**
+ * Emitted before dispatching the `keydown` and `keyup` events in the page. Calling
+ * `event.preventDefault` will prevent the page `keydown`/`keyup` events and the
+ * menu shortcuts.
+ *
+ * To only prevent the menu shortcuts, use `setIgnoreMenuShortcuts`:
+ */
+ on(event: 'before-input-event', listener: (event: Event,
+ /**
+ * Input properties.
+ */
+ input: Input) => void): this;
+ once(event: 'before-input-event', listener: (event: Event,
+ /**
+ * Input properties.
+ */
+ input: Input) => void): this;
+ addListener(event: 'before-input-event', listener: (event: Event,
+ /**
+ * Input properties.
+ */
+ input: Input) => void): this;
+ removeListener(event: 'before-input-event', listener: (event: Event,
+ /**
+ * Input properties.
+ */
+ input: Input) => void): this;
+ /**
+ * Emitted when the `WebContents` loses focus.
+ */
+ on(event: 'blur', listener: Function): this;
+ once(event: 'blur', listener: Function): this;
+ addListener(event: 'blur', listener: Function): this;
+ removeListener(event: 'blur', listener: Function): this;
+ /**
+ * Emitted when failed to verify the `certificate` for `url`.
+ *
+ * The usage is the same with the `certificate-error` event of `app`.
+ */
+ on(event: 'certificate-error', listener: (event: Event,
+ url: string,
+ /**
+ * The error code.
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ once(event: 'certificate-error', listener: (event: Event,
+ url: string,
+ /**
+ * The error code.
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ addListener(event: 'certificate-error', listener: (event: Event,
+ url: string,
+ /**
+ * The error code.
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ removeListener(event: 'certificate-error', listener: (event: Event,
+ url: string,
+ /**
+ * The error code.
+ */
+ error: string,
+ certificate: Certificate,
+ callback: (isTrusted: boolean) => void,
+ isMainFrame: boolean) => void): this;
+ /**
+ * Emitted when the associated window logs a console message.
+ */
+ on(event: 'console-message', listener: (event: Event,
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number,
+ /**
+ * The actual console message
+ */
+ message: string,
+ /**
+ * The line number of the source that triggered this console message
+ */
+ line: number,
+ sourceId: string) => void): this;
+ once(event: 'console-message', listener: (event: Event,
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number,
+ /**
+ * The actual console message
+ */
+ message: string,
+ /**
+ * The line number of the source that triggered this console message
+ */
+ line: number,
+ sourceId: string) => void): this;
+ addListener(event: 'console-message', listener: (event: Event,
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number,
+ /**
+ * The actual console message
+ */
+ message: string,
+ /**
+ * The line number of the source that triggered this console message
+ */
+ line: number,
+ sourceId: string) => void): this;
+ removeListener(event: 'console-message', listener: (event: Event,
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number,
+ /**
+ * The actual console message
+ */
+ message: string,
+ /**
+ * The line number of the source that triggered this console message
+ */
+ line: number,
+ sourceId: string) => void): this;
+ /**
+ * Emitted when the page calls `window.moveTo`, `window.resizeTo` or related APIs.
+ *
+ * By default, this will move the window. To prevent that behavior, call
+ * `event.preventDefault()`.
+ */
+ on(event: 'content-bounds-updated', listener: (event: Event,
+ /**
+ * requested new content bounds
+ */
+ bounds: Rectangle) => void): this;
+ once(event: 'content-bounds-updated', listener: (event: Event,
+ /**
+ * requested new content bounds
+ */
+ bounds: Rectangle) => void): this;
+ addListener(event: 'content-bounds-updated', listener: (event: Event,
+ /**
+ * requested new content bounds
+ */
+ bounds: Rectangle) => void): this;
+ removeListener(event: 'content-bounds-updated', listener: (event: Event,
+ /**
+ * requested new content bounds
+ */
+ bounds: Rectangle) => void): this;
+ /**
+ * Emitted when there is a new context menu that needs to be handled.
+ */
+ on(event: 'context-menu', listener: (event: Event,
+ params: ContextMenuParams) => void): this;
+ once(event: 'context-menu', listener: (event: Event,
+ params: ContextMenuParams) => void): this;
+ addListener(event: 'context-menu', listener: (event: Event,
+ params: ContextMenuParams) => void): this;
+ removeListener(event: 'context-menu', listener: (event: Event,
+ params: ContextMenuParams) => void): this;
+ /**
+ * Emitted when the renderer process crashes or is killed.
+ *
+ * **Deprecated:** This event is superceded by the `render-process-gone` event
+ * which contains more information about why the render process disappeared. It
+ * isn't always because it crashed. The `killed` boolean can be replaced by
+ * checking `reason === 'killed'` when you switch to that event.
+ *
+ * @deprecated
+ */
+ on(event: 'crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ once(event: 'crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ addListener(event: 'crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ removeListener(event: 'crashed', listener: (event: Event,
+ killed: boolean) => void): this;
+ /**
+ * Emitted when the cursor's type changes. The `type` parameter can be `pointer`,
+ * `crosshair`, `hand`, `text`, `wait`, `help`, `e-resize`, `n-resize`,
+ * `ne-resize`, `nw-resize`, `s-resize`, `se-resize`, `sw-resize`, `w-resize`,
+ * `ns-resize`, `ew-resize`, `nesw-resize`, `nwse-resize`, `col-resize`,
+ * `row-resize`, `m-panning`, `m-panning-vertical`, `m-panning-horizontal`,
+ * `e-panning`, `n-panning`, `ne-panning`, `nw-panning`, `s-panning`, `se-panning`,
+ * `sw-panning`, `w-panning`, `move`, `vertical-text`, `cell`, `context-menu`,
+ * `alias`, `progress`, `nodrop`, `copy`, `none`, `not-allowed`, `zoom-in`,
+ * `zoom-out`, `grab`, `grabbing`, `custom`, `null`, `drag-drop-none`,
+ * `drag-drop-move`, `drag-drop-copy`, `drag-drop-link`, `ns-no-resize`,
+ * `ew-no-resize`, `nesw-no-resize`, `nwse-no-resize`, or `default`.
+ *
+ * If the `type` parameter is `custom`, the `image` parameter will hold the custom
+ * cursor image in a `NativeImage`, and `scale`, `size` and `hotspot` will hold
+ * additional information about the custom cursor.
+ */
+ on(event: 'cursor-changed', listener: (event: Event,
+ type: string,
+ image: NativeImage,
+ /**
+ * scaling factor for the custom cursor.
+ */
+ scale: number,
+ /**
+ * the size of the `image`.
+ */
+ size: Size,
+ /**
+ * coordinates of the custom cursor's hotspot.
+ */
+ hotspot: Point) => void): this;
+ once(event: 'cursor-changed', listener: (event: Event,
+ type: string,
+ image: NativeImage,
+ /**
+ * scaling factor for the custom cursor.
+ */
+ scale: number,
+ /**
+ * the size of the `image`.
+ */
+ size: Size,
+ /**
+ * coordinates of the custom cursor's hotspot.
+ */
+ hotspot: Point) => void): this;
+ addListener(event: 'cursor-changed', listener: (event: Event,
+ type: string,
+ image: NativeImage,
+ /**
+ * scaling factor for the custom cursor.
+ */
+ scale: number,
+ /**
+ * the size of the `image`.
+ */
+ size: Size,
+ /**
+ * coordinates of the custom cursor's hotspot.
+ */
+ hotspot: Point) => void): this;
+ removeListener(event: 'cursor-changed', listener: (event: Event,
+ type: string,
+ image: NativeImage,
+ /**
+ * scaling factor for the custom cursor.
+ */
+ scale: number,
+ /**
+ * the size of the `image`.
+ */
+ size: Size,
+ /**
+ * coordinates of the custom cursor's hotspot.
+ */
+ hotspot: Point) => void): this;
+ /**
+ * Emitted when `webContents` is destroyed.
+ */
+ on(event: 'destroyed', listener: Function): this;
+ once(event: 'destroyed', listener: Function): this;
+ addListener(event: 'destroyed', listener: Function): this;
+ removeListener(event: 'destroyed', listener: Function): this;
+ /**
+ * Emitted when DevTools is closed.
+ */
+ on(event: 'devtools-closed', listener: Function): this;
+ once(event: 'devtools-closed', listener: Function): this;
+ addListener(event: 'devtools-closed', listener: Function): this;
+ removeListener(event: 'devtools-closed', listener: Function): this;
+ /**
+ * Emitted when DevTools is focused / opened.
+ */
+ on(event: 'devtools-focused', listener: Function): this;
+ once(event: 'devtools-focused', listener: Function): this;
+ addListener(event: 'devtools-focused', listener: Function): this;
+ removeListener(event: 'devtools-focused', listener: Function): this;
+ /**
+ * Emitted when a link is clicked in DevTools or 'Open in new tab' is selected for
+ * a link in its context menu.
+ */
+ on(event: 'devtools-open-url', listener: (event: Event,
+ /**
+ * URL of the link that was clicked or selected.
+ */
+ url: string) => void): this;
+ once(event: 'devtools-open-url', listener: (event: Event,
+ /**
+ * URL of the link that was clicked or selected.
+ */
+ url: string) => void): this;
+ addListener(event: 'devtools-open-url', listener: (event: Event,
+ /**
+ * URL of the link that was clicked or selected.
+ */
+ url: string) => void): this;
+ removeListener(event: 'devtools-open-url', listener: (event: Event,
+ /**
+ * URL of the link that was clicked or selected.
+ */
+ url: string) => void): this;
+ /**
+ * Emitted when DevTools is opened.
+ */
+ on(event: 'devtools-opened', listener: Function): this;
+ once(event: 'devtools-opened', listener: Function): this;
+ addListener(event: 'devtools-opened', listener: Function): this;
+ removeListener(event: 'devtools-opened', listener: Function): this;
+ /**
+ * Emitted when the devtools window instructs the webContents to reload
+ */
+ on(event: 'devtools-reload-page', listener: Function): this;
+ once(event: 'devtools-reload-page', listener: Function): this;
+ addListener(event: 'devtools-reload-page', listener: Function): this;
+ removeListener(event: 'devtools-reload-page', listener: Function): this;
+ /**
+ * Emitted when a `<webview>` has been attached to this web contents.
+ */
+ on(event: 'did-attach-webview', listener: (event: Event,
+ /**
+ * The guest web contents that is used by the `<webview>`.
+ */
+ webContents: WebContents) => void): this;
+ once(event: 'did-attach-webview', listener: (event: Event,
+ /**
+ * The guest web contents that is used by the `<webview>`.
+ */
+ webContents: WebContents) => void): this;
+ addListener(event: 'did-attach-webview', listener: (event: Event,
+ /**
+ * The guest web contents that is used by the `<webview>`.
+ */
+ webContents: WebContents) => void): this;
+ removeListener(event: 'did-attach-webview', listener: (event: Event,
+ /**
+ * The guest web contents that is used by the `<webview>`.
+ */
+ webContents: WebContents) => void): this;
+ /**
+ * Emitted when a page's theme color changes. This is usually due to encountering a
+ * meta tag:
+ */
+ on(event: 'did-change-theme-color', listener: (event: Event,
+ /**
+ * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set.
+ */
+ color: (string) | (null)) => void): this;
+ once(event: 'did-change-theme-color', listener: (event: Event,
+ /**
+ * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set.
+ */
+ color: (string) | (null)) => void): this;
+ addListener(event: 'did-change-theme-color', listener: (event: Event,
+ /**
+ * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set.
+ */
+ color: (string) | (null)) => void): this;
+ removeListener(event: 'did-change-theme-color', listener: (event: Event,
+ /**
+ * Theme color is in format of '#rrggbb'. It is `null` when no theme color is set.
+ */
+ color: (string) | (null)) => void): this;
+ /**
+ * Emitted _after_ successful creation of a window via `window.open` in the
+ * renderer. Not emitted if the creation of the window is canceled from
+ * `webContents.setWindowOpenHandler`.
+ *
+ * See `window.open()` for more details and how to use this in conjunction with
+ * `webContents.setWindowOpenHandler`.
+ */
+ on(event: 'did-create-window', listener: (window: BrowserWindow,
+ details: DidCreateWindowDetails) => void): this;
+ once(event: 'did-create-window', listener: (window: BrowserWindow,
+ details: DidCreateWindowDetails) => void): this;
+ addListener(event: 'did-create-window', listener: (window: BrowserWindow,
+ details: DidCreateWindowDetails) => void): this;
+ removeListener(event: 'did-create-window', listener: (window: BrowserWindow,
+ details: DidCreateWindowDetails) => void): this;
+ /**
+ * This event is like `did-finish-load` but emitted when the load failed. The full
+ * list of error codes and their meaning is available here.
+ */
+ on(event: 'did-fail-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ once(event: 'did-fail-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-fail-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-fail-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ /**
+ * This event is like `did-fail-load` but emitted when the load was cancelled (e.g.
+ * `window.stop()` was invoked).
+ */
+ on(event: 'did-fail-provisional-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ once(event: 'did-fail-provisional-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-fail-provisional-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-fail-provisional-load', listener: (event: Event,
+ errorCode: number,
+ errorDescription: string,
+ validatedURL: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted when the navigation is done, i.e. the spinner of the tab has stopped
+ * spinning, and the `onload` event was dispatched.
+ */
+ on(event: 'did-finish-load', listener: Function): this;
+ once(event: 'did-finish-load', listener: Function): this;
+ addListener(event: 'did-finish-load', listener: Function): this;
+ removeListener(event: 'did-finish-load', listener: Function): this;
+ /**
+ * Emitted when a frame has done navigation.
+ */
+ on(event: 'did-frame-finish-load', listener: (event: Event,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ once(event: 'did-frame-finish-load', listener: (event: Event,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-frame-finish-load', listener: (event: Event,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-frame-finish-load', listener: (event: Event,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted when any frame navigation is done.
+ *
+ * This event is not emitted for in-page navigations, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ */
+ on(event: 'did-frame-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations,
+ */
+ httpStatusText: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ once(event: 'did-frame-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations,
+ */
+ httpStatusText: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-frame-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations,
+ */
+ httpStatusText: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-frame-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations,
+ */
+ httpStatusText: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted when a main frame navigation is done.
+ *
+ * This event is not emitted for in-page navigations, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ */
+ on(event: 'did-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations
+ */
+ httpStatusText: string) => void): this;
+ once(event: 'did-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations
+ */
+ httpStatusText: string) => void): this;
+ addListener(event: 'did-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations
+ */
+ httpStatusText: string) => void): this;
+ removeListener(event: 'did-navigate', listener: (event: Event,
+ url: string,
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number,
+ /**
+ * empty for non HTTP navigations
+ */
+ httpStatusText: string) => void): this;
+ /**
+ * Emitted when an in-page navigation happened in any frame.
+ *
+ * When in-page navigation happens, the page URL changes but does not cause
+ * navigation outside of the page. Examples of this occurring are when anchor links
+ * are clicked or when the DOM `hashchange` event is triggered.
+ */
+ on(event: 'did-navigate-in-page', listener: (event: Event,
+ url: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ once(event: 'did-navigate-in-page', listener: (event: Event,
+ url: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-navigate-in-page', listener: (event: Event,
+ url: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-navigate-in-page', listener: (event: Event,
+ url: string,
+ isMainFrame: boolean,
+ frameProcessId: number,
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted after a server side redirect occurs during navigation. For example a
+ * 302 redirect.
+ *
+ * This event cannot be prevented, if you want to prevent redirects you should
+ * checkout out the `will-redirect` event above.
+ */
+ on(event: 'did-redirect-navigation', listener: (details: Event<WebContentsDidRedirectNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ once(event: 'did-redirect-navigation', listener: (details: Event<WebContentsDidRedirectNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-redirect-navigation', listener: (details: Event<WebContentsDidRedirectNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-redirect-navigation', listener: (details: Event<WebContentsDidRedirectNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ /**
+ * Corresponds to the points in time when the spinner of the tab started spinning.
+ */
+ on(event: 'did-start-loading', listener: Function): this;
+ once(event: 'did-start-loading', listener: Function): this;
+ addListener(event: 'did-start-loading', listener: Function): this;
+ removeListener(event: 'did-start-loading', listener: Function): this;
+ /**
+ * Emitted when any frame (including main) starts navigating.
+ */
+ on(event: 'did-start-navigation', listener: (details: Event<WebContentsDidStartNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ once(event: 'did-start-navigation', listener: (details: Event<WebContentsDidStartNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ addListener(event: 'did-start-navigation', listener: (details: Event<WebContentsDidStartNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'did-start-navigation', listener: (details: Event<WebContentsDidStartNavigationEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ /**
+ * Corresponds to the points in time when the spinner of the tab stopped spinning.
+ */
+ on(event: 'did-stop-loading', listener: Function): this;
+ once(event: 'did-stop-loading', listener: Function): this;
+ addListener(event: 'did-stop-loading', listener: Function): this;
+ removeListener(event: 'did-stop-loading', listener: Function): this;
+ /**
+ * Emitted when the document in the top-level frame is loaded.
+ */
+ on(event: 'dom-ready', listener: Function): this;
+ once(event: 'dom-ready', listener: Function): this;
+ addListener(event: 'dom-ready', listener: Function): this;
+ removeListener(event: 'dom-ready', listener: Function): this;
+ /**
+ * Emitted when the window enters a full-screen state triggered by HTML API.
+ */
+ on(event: 'enter-html-full-screen', listener: Function): this;
+ once(event: 'enter-html-full-screen', listener: Function): this;
+ addListener(event: 'enter-html-full-screen', listener: Function): this;
+ removeListener(event: 'enter-html-full-screen', listener: Function): this;
+ /**
+ * Emitted when the `WebContents` gains focus.
+ *
+ * Note that on macOS, having focus means the `WebContents` is the first responder
+ * of window, so switching focus between windows would not trigger the `focus` and
+ * `blur` events of `WebContents`, as the first responder of each window is not
+ * changed.
+ *
+ * The `focus` and `blur` events of `WebContents` should only be used to detect
+ * focus change between different `WebContents` and `BrowserView` in the same
+ * window.
+ */
+ on(event: 'focus', listener: Function): this;
+ once(event: 'focus', listener: Function): this;
+ addListener(event: 'focus', listener: Function): this;
+ removeListener(event: 'focus', listener: Function): this;
+ /**
+ * Emitted when a result is available for `webContents.findInPage` request.
+ */
+ on(event: 'found-in-page', listener: (event: Event,
+ result: Result) => void): this;
+ once(event: 'found-in-page', listener: (event: Event,
+ result: Result) => void): this;
+ addListener(event: 'found-in-page', listener: (event: Event,
+ result: Result) => void): this;
+ removeListener(event: 'found-in-page', listener: (event: Event,
+ result: Result) => void): this;
+ /**
+ * Emitted when the mainFrame, an `<iframe>`, or a nested `<iframe>` is loaded
+ * within the page.
+ */
+ on(event: 'frame-created', listener: (event: Event,
+ details: FrameCreatedDetails) => void): this;
+ once(event: 'frame-created', listener: (event: Event,
+ details: FrameCreatedDetails) => void): this;
+ addListener(event: 'frame-created', listener: (event: Event,
+ details: FrameCreatedDetails) => void): this;
+ removeListener(event: 'frame-created', listener: (event: Event,
+ details: FrameCreatedDetails) => void): this;
+ /**
+ * Emitted when an input event is sent to the WebContents. See InputEvent for
+ * details.
+ */
+ on(event: 'input-event', listener: (event: Event,
+ inputEvent: InputEvent) => void): this;
+ once(event: 'input-event', listener: (event: Event,
+ inputEvent: InputEvent) => void): this;
+ addListener(event: 'input-event', listener: (event: Event,
+ inputEvent: InputEvent) => void): this;
+ removeListener(event: 'input-event', listener: (event: Event,
+ inputEvent: InputEvent) => void): this;
+ /**
+ * Emitted when the renderer process sends an asynchronous message via
+ * `ipcRenderer.send()`.
+ *
+ * See also `webContents.ipc`, which provides an `IpcMain`-like interface for
+ * responding to IPC messages specifically from this WebContents.
+ */
+ on(event: 'ipc-message', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ once(event: 'ipc-message', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ addListener(event: 'ipc-message', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ removeListener(event: 'ipc-message', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ /**
+ * Emitted when the renderer process sends a synchronous message via
+ * `ipcRenderer.sendSync()`.
+ *
+ * See also `webContents.ipc`, which provides an `IpcMain`-like interface for
+ * responding to IPC messages specifically from this WebContents.
+ */
+ on(event: 'ipc-message-sync', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ once(event: 'ipc-message-sync', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ addListener(event: 'ipc-message-sync', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ removeListener(event: 'ipc-message-sync', listener: (event: IpcMainEvent,
+ channel: string,
+ ...args: any[]) => void): this;
+ /**
+ * Emitted when the window leaves a full-screen state triggered by HTML API.
+ */
+ on(event: 'leave-html-full-screen', listener: Function): this;
+ once(event: 'leave-html-full-screen', listener: Function): this;
+ addListener(event: 'leave-html-full-screen', listener: Function): this;
+ removeListener(event: 'leave-html-full-screen', listener: Function): this;
+ /**
+ * Emitted when `webContents` wants to do basic auth.
+ *
+ * The usage is the same with the `login` event of `app`.
+ */
+ on(event: 'login', listener: (event: Event,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ once(event: 'login', listener: (event: Event,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ addListener(event: 'login', listener: (event: Event,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ removeListener(event: 'login', listener: (event: Event,
+ authenticationResponseDetails: AuthenticationResponseDetails,
+ authInfo: AuthInfo,
+ callback: (username?: string, password?: string) => void) => void): this;
+ /**
+ * Emitted when media is paused or done playing.
+ */
+ on(event: 'media-paused', listener: Function): this;
+ once(event: 'media-paused', listener: Function): this;
+ addListener(event: 'media-paused', listener: Function): this;
+ removeListener(event: 'media-paused', listener: Function): this;
+ /**
+ * Emitted when media starts playing.
+ */
+ on(event: 'media-started-playing', listener: Function): this;
+ once(event: 'media-started-playing', listener: Function): this;
+ addListener(event: 'media-started-playing', listener: Function): this;
+ removeListener(event: 'media-started-playing', listener: Function): this;
+ /**
+ * Emitted when page receives favicon urls.
+ */
+ on(event: 'page-favicon-updated', listener: (event: Event,
+ /**
+ * Array of URLs.
+ */
+ favicons: string[]) => void): this;
+ once(event: 'page-favicon-updated', listener: (event: Event,
+ /**
+ * Array of URLs.
+ */
+ favicons: string[]) => void): this;
+ addListener(event: 'page-favicon-updated', listener: (event: Event,
+ /**
+ * Array of URLs.
+ */
+ favicons: string[]) => void): this;
+ removeListener(event: 'page-favicon-updated', listener: (event: Event,
+ /**
+ * Array of URLs.
+ */
+ favicons: string[]) => void): this;
+ /**
+ * Fired when page title is set during navigation. `explicitSet` is false when
+ * title is synthesized from file url.
+ */
+ on(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ once(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ addListener(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ removeListener(event: 'page-title-updated', listener: (event: Event,
+ title: string,
+ explicitSet: boolean) => void): this;
+ /**
+ * Emitted when a new frame is generated. Only the dirty area is passed in the
+ * buffer.
+ */
+ on(event: 'paint', listener: (event: Event,
+ dirtyRect: Rectangle,
+ /**
+ * The image data of the whole frame.
+ */
+ image: NativeImage) => void): this;
+ once(event: 'paint', listener: (event: Event,
+ dirtyRect: Rectangle,
+ /**
+ * The image data of the whole frame.
+ */
+ image: NativeImage) => void): this;
+ addListener(event: 'paint', listener: (event: Event,
+ dirtyRect: Rectangle,
+ /**
+ * The image data of the whole frame.
+ */
+ image: NativeImage) => void): this;
+ removeListener(event: 'paint', listener: (event: Event,
+ dirtyRect: Rectangle,
+ /**
+ * The image data of the whole frame.
+ */
+ image: NativeImage) => void): this;
+ /**
+ * Emitted when a plugin process has crashed.
+ */
+ on(event: 'plugin-crashed', listener: (event: Event,
+ name: string,
+ version: string) => void): this;
+ once(event: 'plugin-crashed', listener: (event: Event,
+ name: string,
+ version: string) => void): this;
+ addListener(event: 'plugin-crashed', listener: (event: Event,
+ name: string,
+ version: string) => void): this;
+ removeListener(event: 'plugin-crashed', listener: (event: Event,
+ name: string,
+ version: string) => void): this;
+ /**
+ * Emitted when the `WebContents` preferred size has changed.
+ *
+ * This event will only be emitted when `enablePreferredSizeMode` is set to `true`
+ * in `webPreferences`.
+ */
+ on(event: 'preferred-size-changed', listener: (event: Event,
+ /**
+ * The minimum size needed to contain the layout of the document—without requiring
+ * scrolling.
+ */
+ preferredSize: Size) => void): this;
+ once(event: 'preferred-size-changed', listener: (event: Event,
+ /**
+ * The minimum size needed to contain the layout of the document—without requiring
+ * scrolling.
+ */
+ preferredSize: Size) => void): this;
+ addListener(event: 'preferred-size-changed', listener: (event: Event,
+ /**
+ * The minimum size needed to contain the layout of the document—without requiring
+ * scrolling.
+ */
+ preferredSize: Size) => void): this;
+ removeListener(event: 'preferred-size-changed', listener: (event: Event,
+ /**
+ * The minimum size needed to contain the layout of the document—without requiring
+ * scrolling.
+ */
+ preferredSize: Size) => void): this;
+ /**
+ * Emitted when the preload script `preloadPath` throws an unhandled exception
+ * `error`.
+ */
+ on(event: 'preload-error', listener: (event: Event,
+ preloadPath: string,
+ error: Error) => void): this;
+ once(event: 'preload-error', listener: (event: Event,
+ preloadPath: string,
+ error: Error) => void): this;
+ addListener(event: 'preload-error', listener: (event: Event,
+ preloadPath: string,
+ error: Error) => void): this;
+ removeListener(event: 'preload-error', listener: (event: Event,
+ preloadPath: string,
+ error: Error) => void): this;
+ /**
+ * Emitted when the renderer process unexpectedly disappears. This is normally
+ * because it was crashed or killed.
+ */
+ on(event: 'render-process-gone', listener: (event: Event,
+ details: RenderProcessGoneDetails) => void): this;
+ once(event: 'render-process-gone', listener: (event: Event,
+ details: RenderProcessGoneDetails) => void): this;
+ addListener(event: 'render-process-gone', listener: (event: Event,
+ details: RenderProcessGoneDetails) => void): this;
+ removeListener(event: 'render-process-gone', listener: (event: Event,
+ details: RenderProcessGoneDetails) => void): this;
+ /**
+ * Emitted when the unresponsive web page becomes responsive again.
+ */
+ on(event: 'responsive', listener: Function): this;
+ once(event: 'responsive', listener: Function): this;
+ addListener(event: 'responsive', listener: Function): this;
+ removeListener(event: 'responsive', listener: Function): this;
+ /**
+ * Emitted when a bluetooth device needs to be selected when a call to
+ * `navigator.bluetooth.requestDevice` is made. `callback` should be called with
+ * the `deviceId` of the device to be selected. Passing an empty string to
+ * `callback` will cancel the request.
+ *
+ * If an event listener is not added for this event, or if `event.preventDefault`
+ * is not called when handling this event, the first available device will be
+ * automatically selected.
+ *
+ * Due to the nature of bluetooth, scanning for devices when
+ * `navigator.bluetooth.requestDevice` is called may take time and will cause
+ * `select-bluetooth-device` to fire multiple times until `callback` is called with
+ * either a device id or an empty string to cancel the request.
+ */
+ on(event: 'select-bluetooth-device', listener: (event: Event,
+ devices: BluetoothDevice[],
+ callback: (deviceId: string) => void) => void): this;
+ once(event: 'select-bluetooth-device', listener: (event: Event,
+ devices: BluetoothDevice[],
+ callback: (deviceId: string) => void) => void): this;
+ addListener(event: 'select-bluetooth-device', listener: (event: Event,
+ devices: BluetoothDevice[],
+ callback: (deviceId: string) => void) => void): this;
+ removeListener(event: 'select-bluetooth-device', listener: (event: Event,
+ devices: BluetoothDevice[],
+ callback: (deviceId: string) => void) => void): this;
+ /**
+ * Emitted when a client certificate is requested.
+ *
+ * The usage is the same with the `select-client-certificate` event of `app`.
+ */
+ on(event: 'select-client-certificate', listener: (event: Event,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate: Certificate) => void) => void): this;
+ once(event: 'select-client-certificate', listener: (event: Event,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate: Certificate) => void) => void): this;
+ addListener(event: 'select-client-certificate', listener: (event: Event,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate: Certificate) => void) => void): this;
+ removeListener(event: 'select-client-certificate', listener: (event: Event,
+ url: string,
+ certificateList: Certificate[],
+ callback: (certificate: Certificate) => void) => void): this;
+ /**
+ * Emitted when the web page becomes unresponsive.
+ */
+ on(event: 'unresponsive', listener: Function): this;
+ once(event: 'unresponsive', listener: Function): this;
+ addListener(event: 'unresponsive', listener: Function): this;
+ removeListener(event: 'unresponsive', listener: Function): this;
+ /**
+ * Emitted when mouse moves over a link or the keyboard moves the focus to a link.
+ */
+ on(event: 'update-target-url', listener: (event: Event,
+ url: string) => void): this;
+ once(event: 'update-target-url', listener: (event: Event,
+ url: string) => void): this;
+ addListener(event: 'update-target-url', listener: (event: Event,
+ url: string) => void): this;
+ removeListener(event: 'update-target-url', listener: (event: Event,
+ url: string) => void): this;
+ /**
+ * Emitted when a `<webview>`'s web contents is being attached to this web
+ * contents. Calling `event.preventDefault()` will destroy the guest page.
+ *
+ * This event can be used to configure `webPreferences` for the `webContents` of a
+ * `<webview>` before it's loaded, and provides the ability to set settings that
+ * can't be set via `<webview>` attributes.
+ */
+ on(event: 'will-attach-webview', listener: (event: Event,
+ /**
+ * The web preferences that will be used by the guest page. This object can be
+ * modified to adjust the preferences for the guest page.
+ */
+ webPreferences: WebPreferences,
+ /**
+ * The other `<webview>` parameters such as the `src` URL. This object can be
+ * modified to adjust the parameters of the guest page.
+ */
+ params: Record<string, string>) => void): this;
+ once(event: 'will-attach-webview', listener: (event: Event,
+ /**
+ * The web preferences that will be used by the guest page. This object can be
+ * modified to adjust the preferences for the guest page.
+ */
+ webPreferences: WebPreferences,
+ /**
+ * The other `<webview>` parameters such as the `src` URL. This object can be
+ * modified to adjust the parameters of the guest page.
+ */
+ params: Record<string, string>) => void): this;
+ addListener(event: 'will-attach-webview', listener: (event: Event,
+ /**
+ * The web preferences that will be used by the guest page. This object can be
+ * modified to adjust the preferences for the guest page.
+ */
+ webPreferences: WebPreferences,
+ /**
+ * The other `<webview>` parameters such as the `src` URL. This object can be
+ * modified to adjust the parameters of the guest page.
+ */
+ params: Record<string, string>) => void): this;
+ removeListener(event: 'will-attach-webview', listener: (event: Event,
+ /**
+ * The web preferences that will be used by the guest page. This object can be
+ * modified to adjust the preferences for the guest page.
+ */
+ webPreferences: WebPreferences,
+ /**
+ * The other `<webview>` parameters such as the `src` URL. This object can be
+ * modified to adjust the parameters of the guest page.
+ */
+ params: Record<string, string>) => void): this;
+ /**
+ * Emitted when a user or the page wants to start navigation in any frame. It can
+ * happen when the `window.location` object is changed or a user clicks a link in
+ * the page.
+ *
+ * Unlike `will-navigate`, `will-frame-navigate` is fired when the main frame or
+ * any of its subframes attempts to navigate. When the navigation event comes from
+ * the main frame, `isMainFrame` will be `true`.
+ *
+ * This event will not emit when the navigation is started programmatically with
+ * APIs like `webContents.loadURL` and `webContents.back`.
+ *
+ * It is also not emitted for in-page navigations, such as clicking anchor links or
+ * updating the `window.location.hash`. Use `did-navigate-in-page` event for this
+ * purpose.
+ *
+ * Calling `event.preventDefault()` will prevent the navigation.
+ */
+ on(event: 'will-frame-navigate', listener: (details: Event<WebContentsWillFrameNavigateEventParams>) => void): this;
+ once(event: 'will-frame-navigate', listener: (details: Event<WebContentsWillFrameNavigateEventParams>) => void): this;
+ addListener(event: 'will-frame-navigate', listener: (details: Event<WebContentsWillFrameNavigateEventParams>) => void): this;
+ removeListener(event: 'will-frame-navigate', listener: (details: Event<WebContentsWillFrameNavigateEventParams>) => void): this;
+ /**
+ * Emitted when a user or the page wants to start navigation on the main frame. It
+ * can happen when the `window.location` object is changed or a user clicks a link
+ * in the page.
+ *
+ * This event will not emit when the navigation is started programmatically with
+ * APIs like `webContents.loadURL` and `webContents.back`.
+ *
+ * It is also not emitted for in-page navigations, such as clicking anchor links or
+ * updating the `window.location.hash`. Use `did-navigate-in-page` event for this
+ * purpose.
+ *
+ * Calling `event.preventDefault()` will prevent the navigation.
+ */
+ on(event: 'will-navigate', listener: (details: Event<WebContentsWillNavigateEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ once(event: 'will-navigate', listener: (details: Event<WebContentsWillNavigateEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ addListener(event: 'will-navigate', listener: (details: Event<WebContentsWillNavigateEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'will-navigate', listener: (details: Event<WebContentsWillNavigateEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted when a `beforeunload` event handler is attempting to cancel a page
+ * unload.
+ *
+ * Calling `event.preventDefault()` will ignore the `beforeunload` event handler
+ * and allow the page to be unloaded.
+ *
+ * **Note:** This will be emitted for `BrowserViews` but will _not_ be respected -
+ * this is because we have chosen not to tie the `BrowserView` lifecycle to its
+ * owning BrowserWindow should one exist per the specification.
+ */
+ on(event: 'will-prevent-unload', listener: (event: Event) => void): this;
+ once(event: 'will-prevent-unload', listener: (event: Event) => void): this;
+ addListener(event: 'will-prevent-unload', listener: (event: Event) => void): this;
+ removeListener(event: 'will-prevent-unload', listener: (event: Event) => void): this;
+ /**
+ * Emitted when a server side redirect occurs during navigation. For example a 302
+ * redirect.
+ *
+ * This event will be emitted after `did-start-navigation` and always before the
+ * `did-redirect-navigation` event for the same navigation.
+ *
+ * Calling `event.preventDefault()` will prevent the navigation (not just the
+ * redirect).
+ */
+ on(event: 'will-redirect', listener: (details: Event<WebContentsWillRedirectEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ once(event: 'will-redirect', listener: (details: Event<WebContentsWillRedirectEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ addListener(event: 'will-redirect', listener: (details: Event<WebContentsWillRedirectEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ removeListener(event: 'will-redirect', listener: (details: Event<WebContentsWillRedirectEventParams>,
+ /**
+ * @deprecated
+ */
+ url: string,
+ /**
+ * @deprecated
+ */
+ isInPlace: boolean,
+ /**
+ * @deprecated
+ */
+ isMainFrame: boolean,
+ /**
+ * @deprecated
+ */
+ frameProcessId: number,
+ /**
+ * @deprecated
+ */
+ frameRoutingId: number) => void): this;
+ /**
+ * Emitted when the user is requesting to change the zoom level using the mouse
+ * wheel.
+ */
+ on(event: 'zoom-changed', listener: (event: Event,
+ /**
+ * Can be `in` or `out`.
+ */
+ zoomDirection: ('in' | 'out')) => void): this;
+ once(event: 'zoom-changed', listener: (event: Event,
+ /**
+ * Can be `in` or `out`.
+ */
+ zoomDirection: ('in' | 'out')) => void): this;
+ addListener(event: 'zoom-changed', listener: (event: Event,
+ /**
+ * Can be `in` or `out`.
+ */
+ zoomDirection: ('in' | 'out')) => void): this;
+ removeListener(event: 'zoom-changed', listener: (event: Event,
+ /**
+ * Can be `in` or `out`.
+ */
+ zoomDirection: ('in' | 'out')) => void): this;
+ /**
+ * Adds the specified path to DevTools workspace. Must be used after DevTools
+ * creation:
+ */
+ addWorkSpace(path: string): void;
+ /**
+ * Adjusts the current text selection starting and ending points in the focused
+ * frame by the given amounts. A negative amount moves the selection towards the
+ * beginning of the document, and a positive amount moves the selection towards the
+ * end of the document.
+ *
+ * Example:
+ *
+ * For a call of `win.webContents.adjustSelection({ start: 1, end: 5 })`
+ *
+ * Before:
+ *
+ * <img width="487" alt="Image Before Text Selection Adjustment"
+ * src="../images/web-contents-text-selection-before.png"/>
+ *
+ * After:
+ *
+ * <img width="487" alt="Image After Text Selection Adjustment"
+ * src="../images/web-contents-text-selection-after.png"/>
+ */
+ adjustSelection(options: AdjustSelectionOptions): void;
+ /**
+ * Begin subscribing for presentation events and captured frames, the `callback`
+ * will be called with `callback(image, dirtyRect)` when there is a presentation
+ * event.
+ *
+ * The `image` is an instance of NativeImage that stores the captured frame.
+ *
+ * The `dirtyRect` is an object with `x, y, width, height` properties that
+ * describes which part of the page was repainted. If `onlyDirty` is set to `true`,
+ * `image` will only contain the repainted area. `onlyDirty` defaults to `false`.
+ */
+ beginFrameSubscription(onlyDirty: boolean, callback: (image: NativeImage, dirtyRect: Rectangle) => void): void;
+ /**
+ * Begin subscribing for presentation events and captured frames, the `callback`
+ * will be called with `callback(image, dirtyRect)` when there is a presentation
+ * event.
+ *
+ * The `image` is an instance of NativeImage that stores the captured frame.
+ *
+ * The `dirtyRect` is an object with `x, y, width, height` properties that
+ * describes which part of the page was repainted. If `onlyDirty` is set to `true`,
+ * `image` will only contain the repainted area. `onlyDirty` defaults to `false`.
+ */
+ beginFrameSubscription(callback: (image: NativeImage, dirtyRect: Rectangle) => void): void;
+ /**
+ * Whether the browser can go back to previous web page.
+ */
+ canGoBack(): boolean;
+ /**
+ * Whether the browser can go forward to next web page.
+ */
+ canGoForward(): boolean;
+ /**
+ * Whether the web page can go to `offset`.
+ */
+ canGoToOffset(offset: number): boolean;
+ /**
+ * Resolves with a NativeImage
+ *
+ * Captures a snapshot of the page within `rect`. Omitting `rect` will capture the
+ * whole visible page. The page is considered visible when its browser window is
+ * hidden and the capturer count is non-zero. If you would like the page to stay
+ * hidden, you should ensure that `stayHidden` is set to true.
+ */
+ capturePage(rect?: Rectangle, opts?: Opts): Promise<Electron.NativeImage>;
+ /**
+ * Centers the current text selection in web page.
+ */
+ centerSelection(): void;
+ /**
+ * Clears the navigation history.
+ */
+ clearHistory(): void;
+ /**
+ * Closes the page, as if the web content had called `window.close()`.
+ *
+ * If the page is successfully closed (i.e. the unload is not prevented by the
+ * page, or `waitForBeforeUnload` is false or unspecified), the WebContents will be
+ * destroyed and no longer usable. The `destroyed` event will be emitted.
+ */
+ close(opts?: CloseOpts): void;
+ /**
+ * Closes the devtools.
+ */
+ closeDevTools(): void;
+ /**
+ * Executes the editing command `copy` in web page.
+ */
+ copy(): void;
+ /**
+ * Copy the image at the given position to the clipboard.
+ */
+ copyImageAt(x: number, y: number): void;
+ /**
+ * Executes the editing command `cut` in web page.
+ */
+ cut(): void;
+ /**
+ * Executes the editing command `delete` in web page.
+ */
+ delete(): void;
+ /**
+ * Disable device emulation enabled by `webContents.enableDeviceEmulation`.
+ */
+ disableDeviceEmulation(): void;
+ /**
+ * Initiates a download of the resource at `url` without navigating. The
+ * `will-download` event of `session` will be triggered.
+ */
+ downloadURL(url: string, options?: DownloadURLOptions): void;
+ /**
+ * Enable device emulation with the given parameters.
+ */
+ enableDeviceEmulation(parameters: Parameters): void;
+ /**
+ * End subscribing for frame presentation events.
+ */
+ endFrameSubscription(): void;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * the result of the code is a rejected promise.
+ *
+ * Evaluates `code` in page.
+ *
+ * In the browser window some HTML APIs like `requestFullScreen` can only be
+ * invoked by a gesture from the user. Setting `userGesture` to `true` will remove
+ * this limitation.
+ *
+ * Code execution will be suspended until web page stop loading.
+ */
+ executeJavaScript(code: string, userGesture?: boolean): Promise<any>;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * the result of the code is a rejected promise.
+ *
+ * Works like `executeJavaScript` but evaluates `scripts` in an isolated context.
+ */
+ executeJavaScriptInIsolatedWorld(worldId: number, scripts: WebSource[], userGesture?: boolean): Promise<any>;
+ /**
+ * The request id used for the request.
+ *
+ * Starts a request to find all matches for the `text` in the web page. The result
+ * of the request can be obtained by subscribing to `found-in-page` event.
+ */
+ findInPage(text: string, options?: FindInPageOptions): number;
+ /**
+ * Focuses the web page.
+ */
+ focus(): void;
+ /**
+ * Forcefully terminates the renderer process that is currently hosting this
+ * `webContents`. This will cause the `render-process-gone` event to be emitted
+ * with the `reason=killed || reason=crashed`. Please note that some webContents
+ * share renderer processes and therefore calling this method may also crash the
+ * host process for other webContents as well.
+ *
+ * Calling `reload()` immediately after calling this method will force the reload
+ * to occur in a new process. This should be used when this process is unstable or
+ * unusable, for instance in order to recover from the `unresponsive` event.
+ */
+ forcefullyCrashRenderer(): void;
+ /**
+ * Information about all Shared Workers.
+ */
+ getAllSharedWorkers(): SharedWorkerInfo[];
+ /**
+ * whether or not this WebContents will throttle animations and timers when the
+ * page becomes backgrounded. This also affects the Page Visibility API.
+ */
+ getBackgroundThrottling(): boolean;
+ /**
+ * the current title of the DevTools window. This will only be visible if DevTools
+ * is opened in `undocked` or `detach` mode.
+ */
+ getDevToolsTitle(): string;
+ /**
+ * If _offscreen rendering_ is enabled returns the current frame rate.
+ */
+ getFrameRate(): number;
+ /**
+ * The identifier of a WebContents stream. This identifier can be used with
+ * `navigator.mediaDevices.getUserMedia` using a `chromeMediaSource` of `tab`. The
+ * identifier is restricted to the web contents that it is registered to and is
+ * only valid for 10 seconds.
+ */
+ getMediaSourceId(requestWebContents: WebContents): string;
+ /**
+ * The operating system `pid` of the associated renderer process.
+ */
+ getOSProcessId(): number;
+ /**
+ * Get the system printer list.
+ *
+ * Resolves with a `PrinterInfo[]`
+ */
+ getPrintersAsync(): Promise<Electron.PrinterInfo[]>;
+ /**
+ * The Chromium internal `pid` of the associated renderer. Can be compared to the
+ * `frameProcessId` passed by frame specific navigation events (e.g.
+ * `did-frame-navigate`)
+ */
+ getProcessId(): number;
+ /**
+ * The title of the current web page.
+ */
+ getTitle(): string;
+ /**
+ * the type of the webContent. Can be `backgroundPage`, `window`, `browserView`,
+ * `remote`, `webview` or `offscreen`.
+ */
+ getType(): ('backgroundPage' | 'window' | 'browserView' | 'remote' | 'webview' | 'offscreen');
+ /**
+ * The URL of the current web page.
+ */
+ getURL(): string;
+ /**
+ * The user agent for this web page.
+ */
+ getUserAgent(): string;
+ /**
+ * Returns the WebRTC IP Handling Policy.
+ */
+ getWebRTCIPHandlingPolicy(): string;
+ /**
+ * the current zoom factor.
+ */
+ getZoomFactor(): number;
+ /**
+ * the current zoom level.
+ */
+ getZoomLevel(): number;
+ /**
+ * Makes the browser go back a web page.
+ */
+ goBack(): void;
+ /**
+ * Makes the browser go forward a web page.
+ */
+ goForward(): void;
+ /**
+ * Navigates browser to the specified absolute web page index.
+ */
+ goToIndex(index: number): void;
+ /**
+ * Navigates to the specified offset from the "current entry".
+ */
+ goToOffset(offset: number): void;
+ /**
+ * A promise that resolves with a key for the inserted CSS that can later be used
+ * to remove the CSS via `contents.removeInsertedCSS(key)`.
+ *
+ * Injects CSS into the current web page and returns a unique key for the inserted
+ * stylesheet.
+ */
+ insertCSS(css: string, options?: InsertCSSOptions): Promise<string>;
+ /**
+ * Inserts `text` to the focused element.
+ */
+ insertText(text: string): Promise<void>;
+ /**
+ * Starts inspecting element at position (`x`, `y`).
+ */
+ inspectElement(x: number, y: number): void;
+ /**
+ * Opens the developer tools for the service worker context.
+ */
+ inspectServiceWorker(): void;
+ /**
+ * Opens the developer tools for the shared worker context.
+ */
+ inspectSharedWorker(): void;
+ /**
+ * Inspects the shared worker based on its ID.
+ */
+ inspectSharedWorkerById(workerId: string): void;
+ /**
+ * Schedules a full repaint of the window this web contents is in.
+ *
+ * If _offscreen rendering_ is enabled invalidates the frame and generates a new
+ * one through the `'paint'` event.
+ */
+ invalidate(): void;
+ /**
+ * Whether this page has been muted.
+ */
+ isAudioMuted(): boolean;
+ /**
+ * Whether this page is being captured. It returns true when the capturer count is
+ * large then 0.
+ */
+ isBeingCaptured(): boolean;
+ /**
+ * Whether the renderer process has crashed.
+ */
+ isCrashed(): boolean;
+ /**
+ * Whether audio is currently playing.
+ */
+ isCurrentlyAudible(): boolean;
+ /**
+ * Whether the web page is destroyed.
+ */
+ isDestroyed(): boolean;
+ /**
+ * Whether the devtools view is focused .
+ */
+ isDevToolsFocused(): boolean;
+ /**
+ * Whether the devtools is opened.
+ */
+ isDevToolsOpened(): boolean;
+ /**
+ * Whether the web page is focused.
+ */
+ isFocused(): boolean;
+ /**
+ * Whether web page is still loading resources.
+ */
+ isLoading(): boolean;
+ /**
+ * Whether the main frame (and not just iframes or frames within it) is still
+ * loading.
+ */
+ isLoadingMainFrame(): boolean;
+ /**
+ * Indicates whether _offscreen rendering_ is enabled.
+ */
+ isOffscreen(): boolean;
+ /**
+ * If _offscreen rendering_ is enabled returns whether it is currently painting.
+ */
+ isPainting(): boolean;
+ /**
+ * Whether the web page is waiting for a first-response from the main resource of
+ * the page.
+ */
+ isWaitingForResponse(): boolean;
+ /**
+ * the promise will resolve when the page has finished loading (see
+ * `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).
+ *
+ * Loads the given file in the window, `filePath` should be a path to an HTML file
+ * relative to the root of your application. For instance an app structure like
+ * this:
+ *
+ * Would require code like this
+ */
+ loadFile(filePath: string, options?: LoadFileOptions): Promise<void>;
+ /**
+ * the promise will resolve when the page has finished loading (see
+ * `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).
+ * A noop rejection handler is already attached, which avoids unhandled rejection
+ * errors.
+ *
+ * Loads the `url` in the window. The `url` must contain the protocol prefix, e.g.
+ * the `http://` or `file://`. If the load should bypass http cache then use the
+ * `pragma` header to achieve it.
+ */
+ loadURL(url: string, options?: LoadURLOptions): Promise<void>;
+ /**
+ * Opens the devtools.
+ *
+ * When `contents` is a `<webview>` tag, the `mode` would be `detach` by default,
+ * explicitly passing an empty `mode` can force using last used dock state.
+ *
+ * On Windows, if Windows Control Overlay is enabled, Devtools will be opened with
+ * `mode: 'detach'`.
+ */
+ openDevTools(options?: OpenDevToolsOptions): void;
+ /**
+ * Executes the editing command `paste` in web page.
+ */
+ paste(): void;
+ /**
+ * Executes the editing command `pasteAndMatchStyle` in web page.
+ */
+ pasteAndMatchStyle(): void;
+ /**
+ * Send a message to the renderer process, optionally transferring ownership of
+ * zero or more `MessagePortMain` objects.
+ *
+ * The transferred `MessagePortMain` objects will be available in the renderer
+ * process by accessing the `ports` property of the emitted event. When they arrive
+ * in the renderer, they will be native DOM `MessagePort` objects.
+ *
+ * For example:
+ */
+ postMessage(channel: string, message: any, transfer?: MessagePortMain[]): void;
+ /**
+ * When a custom `pageSize` is passed, Chromium attempts to validate platform
+ * specific minimum values for `width_microns` and `height_microns`. Width and
+ * height must both be minimum 353 microns but may be higher on some operating
+ * systems.
+ *
+ * Prints window's web page. When `silent` is set to `true`, Electron will pick the
+ * system's default printer if `deviceName` is empty and the default settings for
+ * printing.
+ *
+ * Use `page-break-before: always;` CSS style to force to print to a new page.
+ *
+ * Example usage:
+ */
+ print(options?: WebContentsPrintOptions, callback?: (success: boolean, failureReason: string) => void): void;
+ /**
+ * Resolves with the generated PDF data.
+ *
+ * Prints the window's web page as PDF.
+ *
+ * The `landscape` will be ignored if `@page` CSS at-rule is used in the web page.
+ *
+ * An example of `webContents.printToPDF`:
+ *
+ * See Page.printToPdf for more information.
+ */
+ printToPDF(options: PrintToPDFOptions): Promise<Buffer>;
+ /**
+ * Executes the editing command `redo` in web page.
+ */
+ redo(): void;
+ /**
+ * Reloads the current web page.
+ */
+ reload(): void;
+ /**
+ * Reloads current page and ignores cache.
+ */
+ reloadIgnoringCache(): void;
+ /**
+ * Resolves if the removal was successful.
+ *
+ * Removes the inserted CSS from the current web page. The stylesheet is identified
+ * by its key, which is returned from `contents.insertCSS(css)`.
+ */
+ removeInsertedCSS(key: string): Promise<void>;
+ /**
+ * Removes the specified path from DevTools workspace.
+ */
+ removeWorkSpace(path: string): void;
+ /**
+ * Executes the editing command `replace` in web page.
+ */
+ replace(text: string): void;
+ /**
+ * Executes the editing command `replaceMisspelling` in web page.
+ */
+ replaceMisspelling(text: string): void;
+ /**
+ * resolves if the page is saved.
+ */
+ savePage(fullPath: string, saveType: 'HTMLOnly' | 'HTMLComplete' | 'MHTML'): Promise<void>;
+ /**
+ * Scrolls to the bottom of the current `webContents`.
+ */
+ scrollToBottom(): void;
+ /**
+ * Scrolls to the top of the current `webContents`.
+ */
+ scrollToTop(): void;
+ /**
+ * Executes the editing command `selectAll` in web page.
+ */
+ selectAll(): void;
+ /**
+ * Send an asynchronous message to the renderer process via `channel`, along with
+ * arguments. Arguments will be serialized with the Structured Clone Algorithm,
+ * just like `postMessage`, so prototype chains will not be included. Sending
+ * Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.
+ *
+ * :::warning
+ *
+ * Sending non-standard JavaScript types such as DOM objects or special Electron
+ * objects will throw an exception.
+ *
+ * :::
+ *
+ * For additional reading, refer to Electron's IPC guide.
+ */
+ send(channel: string, ...args: any[]): void;
+ /**
+ * Sends an input `event` to the page. **Note:** The `BrowserWindow` containing the
+ * contents needs to be focused for `sendInputEvent()` to work.
+ */
+ sendInputEvent(inputEvent: (MouseInputEvent) | (MouseWheelInputEvent) | (KeyboardInputEvent)): void;
+ /**
+ * Send an asynchronous message to a specific frame in a renderer process via
+ * `channel`, along with arguments. Arguments will be serialized with the
+ * Structured Clone Algorithm, just like `postMessage`, so prototype chains will
+ * not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets
+ * will throw an exception.
+ *
+ * > **NOTE:** Sending non-standard JavaScript types such as DOM objects or special
+ * Electron objects will throw an exception.
+ *
+ * The renderer process can handle the message by listening to `channel` with the
+ * `ipcRenderer` module.
+ *
+ * If you want to get the `frameId` of a given renderer context you should use the
+ * `webFrame.routingId` value. E.g.
+ *
+ * You can also read `frameId` from all incoming IPC messages in the main process.
+ */
+ sendToFrame(frameId: (number) | ([number, number]), channel: string, ...args: any[]): void;
+ /**
+ * Mute the audio on the current web page.
+ */
+ setAudioMuted(muted: boolean): void;
+ /**
+ * Controls whether or not this WebContents will throttle animations and timers
+ * when the page becomes backgrounded. This also affects the Page Visibility API.
+ */
+ setBackgroundThrottling(allowed: boolean): void;
+ /**
+ * Changes the title of the DevTools window to `title`. This will only be visible
+ * if DevTools is opened in `undocked` or `detach` mode.
+ */
+ setDevToolsTitle(title: string): void;
+ /**
+ * Uses the `devToolsWebContents` as the target `WebContents` to show devtools.
+ *
+ * The `devToolsWebContents` must not have done any navigation, and it should not
+ * be used for other purposes after the call.
+ *
+ * By default Electron manages the devtools by creating an internal `WebContents`
+ * with native view, which developers have very limited control of. With the
+ * `setDevToolsWebContents` method, developers can use any `WebContents` to show
+ * the devtools in it, including `BrowserWindow`, `BrowserView` and `<webview>`
+ * tag.
+ *
+ * Note that closing the devtools does not destroy the `devToolsWebContents`, it is
+ * caller's responsibility to destroy `devToolsWebContents`.
+ *
+ * An example of showing devtools in a `<webview>` tag:
+ *
+ * An example of showing devtools in a `BrowserWindow`:
+ */
+ setDevToolsWebContents(devToolsWebContents: WebContents): void;
+ /**
+ * If _offscreen rendering_ is enabled sets the frame rate to the specified number.
+ * Only values between 1 and 240 are accepted.
+ */
+ setFrameRate(fps: number): void;
+ /**
+ * Ignore application menu shortcuts while this web contents is focused.
+ */
+ setIgnoreMenuShortcuts(ignore: boolean): void;
+ /**
+ * Sets the image animation policy for this webContents. The policy only affects
+ * _new_ images, existing images that are currently being animated are unaffected.
+ * This is a known limitation in Chromium, you can force image animation to be
+ * recalculated with `img.src = img.src` which will result in no network traffic
+ * but will update the animation policy.
+ *
+ * This corresponds to the animationPolicy accessibility feature in Chromium.
+ */
+ setImageAnimationPolicy(policy: 'animate' | 'animateOnce' | 'noAnimation'): void;
+ /**
+ * Overrides the user agent for this web page.
+ */
+ setUserAgent(userAgent: string): void;
+ /**
+ * Sets the maximum and minimum pinch-to-zoom level.
+ *
+ * > **NOTE**: Visual zoom is disabled by default in Electron. To re-enable it,
+ * call:
+ */
+ setVisualZoomLevelLimits(minimumLevel: number, maximumLevel: number): Promise<void>;
+ /**
+ * Setting the WebRTC IP handling policy allows you to control which IPs are
+ * exposed via WebRTC. See BrowserLeaks for more details.
+ */
+ setWebRTCIPHandlingPolicy(policy: 'default' | 'default_public_interface_only' | 'default_public_and_private_interfaces' | 'disable_non_proxied_udp'): void;
+ /**
+ * Called before creating a window a new window is requested by the renderer, e.g.
+ * by `window.open()`, a link with `target="_blank"`, shift+clicking on a link, or
+ * submitting a form with `<form target="_blank">`. See `window.open()` for more
+ * details and how to use this in conjunction with `did-create-window`.
+ */
+ setWindowOpenHandler(handler: (details: HandlerDetails) => ({action: 'deny'}) | ({action: 'allow', outlivesOpener?: boolean, overrideBrowserWindowOptions?: BrowserWindowConstructorOptions})): void;
+ /**
+ * Changes the zoom factor to the specified factor. Zoom factor is zoom percent
+ * divided by 100, so 300% = 3.0.
+ *
+ * The factor must be greater than 0.0.
+ */
+ setZoomFactor(factor: number): void;
+ /**
+ * Changes the zoom level to the specified level. The original size is 0 and each
+ * increment above or below represents zooming 20% larger or smaller to default
+ * limits of 300% and 50% of original size, respectively. The formula for this is
+ * `scale := 1.2 ^ level`.
+ *
+ * > **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that
+ * the zoom level for a specific domain propagates across all instances of windows
+ * with the same domain. Differentiating the window URLs will make zoom work
+ * per-window.
+ */
+ setZoomLevel(level: number): void;
+ /**
+ * Shows pop-up dictionary that searches the selected word on the page.
+ *
+ * @platform darwin
+ */
+ showDefinitionForSelection(): void;
+ /**
+ * Sets the `item` as dragging item for current drag-drop operation, `file` is the
+ * absolute path of the file to be dragged, and `icon` is the image showing under
+ * the cursor when dragging.
+ */
+ startDrag(item: Item): void;
+ /**
+ * If _offscreen rendering_ is enabled and not painting, start painting.
+ */
+ startPainting(): void;
+ /**
+ * Stops any pending navigation.
+ */
+ stop(): void;
+ /**
+ * Stops any `findInPage` request for the `webContents` with the provided `action`.
+ */
+ stopFindInPage(action: 'clearSelection' | 'keepSelection' | 'activateSelection'): void;
+ /**
+ * If _offscreen rendering_ is enabled and painting, stop painting.
+ */
+ stopPainting(): void;
+ /**
+ * Indicates whether the snapshot has been created successfully.
+ *
+ * Takes a V8 heap snapshot and saves it to `filePath`.
+ */
+ takeHeapSnapshot(filePath: string): Promise<void>;
+ /**
+ * Toggles the developer tools.
+ */
+ toggleDevTools(): void;
+ /**
+ * Executes the editing command `undo` in web page.
+ */
+ undo(): void;
+ /**
+ * Executes the editing command `unselect` in web page.
+ */
+ unselect(): void;
+ /**
+ * A `boolean` property that determines whether this page is muted.
+ */
+ audioMuted: boolean;
+ /**
+ * A `boolean` property that determines whether or not this WebContents will
+ * throttle animations and timers when the page becomes backgrounded. This also
+ * affects the Page Visibility API.
+ */
+ backgroundThrottling: boolean;
+ /**
+ * A `Debugger` instance for this webContents.
+ *
+ */
+ readonly debugger: Debugger;
+ /**
+ * A `WebContents | null` property that represents the of DevTools `WebContents`
+ * associated with a given `WebContents`.
+ *
+ * **Note:** Users should never store this object because it may become `null` when
+ * the DevTools has been closed.
+ *
+ */
+ readonly devToolsWebContents: (WebContents) | (null);
+ /**
+ * An `Integer` property that sets the frame rate of the web contents to the
+ * specified number. Only values between 1 and 240 are accepted.
+ *
+ * Only applicable if _offscreen rendering_ is enabled.
+ */
+ frameRate: number;
+ /**
+ * A `WebContents` instance that might own this `WebContents`.
+ *
+ */
+ readonly hostWebContents: WebContents;
+ /**
+ * A `Integer` representing the unique ID of this WebContents. Each ID is unique
+ * among all `WebContents` instances of the entire Electron application.
+ *
+ */
+ readonly id: number;
+ /**
+ * An `IpcMain` scoped to just IPC messages sent from this WebContents.
+ *
+ * IPC messages sent with `ipcRenderer.send`, `ipcRenderer.sendSync` or
+ * `ipcRenderer.postMessage` will be delivered in the following order:
+ *
+ * * `contents.on('ipc-message')`
+ * * `contents.mainFrame.on(channel)`
+ * * `contents.ipc.on(channel)`
+ * * `ipcMain.on(channel)`
+ *
+ * Handlers registered with `invoke` will be checked in the following order. The
+ * first one that is defined will be called, the rest will be ignored.
+ *
+ * * `contents.mainFrame.handle(channel)`
+ * * `contents.handle(channel)`
+ * * `ipcMain.handle(channel)`
+ *
+ * A handler or event listener registered on the WebContents will receive IPC
+ * messages sent from any frame, including child frames. In most cases, only the
+ * main frame can send IPC messages. However, if the `nodeIntegrationInSubFrames`
+ * option is enabled, it is possible for child frames to send IPC messages also. In
+ * that case, handlers should check the `senderFrame` property of the IPC event to
+ * ensure that the message is coming from the expected frame. Alternatively,
+ * register handlers on the appropriate frame directly using the `WebFrameMain.ipc`
+ * interface.
+ *
+ */
+ readonly ipc: IpcMain;
+ /**
+ * A `WebFrameMain` property that represents the top frame of the page's frame
+ * hierarchy.
+ *
+ */
+ readonly mainFrame: WebFrameMain;
+ /**
+ * A `WebFrameMain` property that represents the frame that opened this
+ * WebContents, either with open(), or by navigating a link with a target
+ * attribute.
+ *
+ */
+ readonly opener: WebFrameMain;
+ /**
+ * A `Session` used by this webContents.
+ *
+ */
+ readonly session: Session;
+ /**
+ * A `string` property that determines the user agent for this web page.
+ */
+ userAgent: string;
+ /**
+ * A `number` property that determines the zoom factor for this web contents.
+ *
+ * The zoom factor is the zoom percent divided by 100, so 300% = 3.0.
+ */
+ zoomFactor: number;
+ /**
+ * A `number` property that determines the zoom level for this web contents.
+ *
+ * The original size is 0 and each increment above or below represents zooming 20%
+ * larger or smaller to default limits of 300% and 50% of original size,
+ * respectively. The formula for this is `scale := 1.2 ^ level`.
+ */
+ zoomLevel: number;
+ }
+
+ interface WebFrame {
+
+ // Docs: https://electronjs.org/docs/api/web-frame
+
+ /**
+ * Attempts to free memory that is no longer being used (like images from a
+ * previous navigation).
+ *
+ * Note that blindly calling this method probably makes Electron slower since it
+ * will have to refill these emptied caches, you should only call it if an event in
+ * your app has occurred that makes you think your page is actually using less
+ * memory (i.e. you have navigated from a super heavy page to a mostly empty one,
+ * and intend to stay there).
+ */
+ clearCache(): void;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * execution throws or results in a rejected promise.
+ *
+ * Evaluates `code` in page.
+ *
+ * In the browser window some HTML APIs like `requestFullScreen` can only be
+ * invoked by a gesture from the user. Setting `userGesture` to `true` will remove
+ * this limitation.
+ */
+ executeJavaScript(code: string, userGesture?: boolean, callback?: (result: any, error: Error) => void): Promise<any>;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * execution could not start.
+ *
+ * Works like `executeJavaScript` but evaluates `scripts` in an isolated context.
+ *
+ * Note that when the execution of script fails, the returned promise will not
+ * reject and the `result` would be `undefined`. This is because Chromium does not
+ * dispatch errors of isolated worlds to foreign worlds.
+ */
+ executeJavaScriptInIsolatedWorld(worldId: number, scripts: WebSource[], userGesture?: boolean, callback?: (result: any, error: Error) => void): Promise<any>;
+ /**
+ * A child of `webFrame` with the supplied `name`, `null` would be returned if
+ * there's no such frame or if the frame is not in the current renderer process.
+ */
+ findFrameByName(name: string): WebFrame;
+ /**
+ * that has the supplied `routingId`, `null` if not found.
+ */
+ findFrameByRoutingId(routingId: number): WebFrame;
+ /**
+ * The frame element in `webFrame's` document selected by `selector`, `null` would
+ * be returned if `selector` does not select a frame or if the frame is not in the
+ * current renderer process.
+ */
+ getFrameForSelector(selector: string): WebFrame;
+ /**
+ * * `images` MemoryUsageDetails
+ * * `scripts` MemoryUsageDetails
+ * * `cssStyleSheets` MemoryUsageDetails
+ * * `xslStyleSheets` MemoryUsageDetails
+ * * `fonts` MemoryUsageDetails
+ * * `other` MemoryUsageDetails
+ *
+ * Returns an object describing usage information of Blink's internal memory
+ * caches.
+ *
+ * This will generate:
+ */
+ getResourceUsage(): ResourceUsage;
+ /**
+ * A list of suggested words for a given word. If the word is spelled correctly,
+ * the result will be empty.
+ */
+ getWordSuggestions(word: string): string[];
+ /**
+ * The current zoom factor.
+ */
+ getZoomFactor(): number;
+ /**
+ * The current zoom level.
+ */
+ getZoomLevel(): number;
+ /**
+ * A key for the inserted CSS that can later be used to remove the CSS via
+ * `webFrame.removeInsertedCSS(key)`.
+ *
+ * Injects CSS into the current web page and returns a unique key for the inserted
+ * stylesheet.
+ */
+ insertCSS(css: string, options?: InsertCSSOptions): string;
+ /**
+ * Inserts `text` to the focused element.
+ */
+ insertText(text: string): void;
+ /**
+ * True if the word is misspelled according to the built in spellchecker, false
+ * otherwise. If no dictionary is loaded, always return false.
+ */
+ isWordMisspelled(word: string): boolean;
+ /**
+ * Removes the inserted CSS from the current web page. The stylesheet is identified
+ * by its key, which is returned from `webFrame.insertCSS(css)`.
+ */
+ removeInsertedCSS(key: string): void;
+ /**
+ * Set the security origin, content security policy and name of the isolated world.
+ * Note: If the `csp` is specified, then the `securityOrigin` also has to be
+ * specified.
+ */
+ setIsolatedWorldInfo(worldId: number, info: Info): void;
+ /**
+ * Sets a provider for spell checking in input fields and text areas.
+ *
+ * If you want to use this method you must disable the builtin spellchecker when
+ * you construct the window.
+ *
+ * The `provider` must be an object that has a `spellCheck` method that accepts an
+ * array of individual words for spellchecking. The `spellCheck` function runs
+ * asynchronously and calls the `callback` function with an array of misspelt words
+ * when complete.
+ *
+ * An example of using node-spellchecker as provider:
+ */
+ setSpellCheckProvider(language: string, provider: Provider): void;
+ /**
+ * Sets the maximum and minimum pinch-to-zoom level.
+ *
+ * > **NOTE**: Visual zoom is disabled by default in Electron. To re-enable it,
+ * call:
+ *
+ * > **NOTE**: Visual zoom only applies to pinch-to-zoom behavior. Cmd+/-/0 zoom
+ * shortcuts are controlled by the 'zoomIn', 'zoomOut', and 'resetZoom' MenuItem
+ * roles in the application Menu. To disable shortcuts, manually define the Menu
+ * and omit zoom roles from the definition.
+ */
+ setVisualZoomLevelLimits(minimumLevel: number, maximumLevel: number): void;
+ /**
+ * Changes the zoom factor to the specified factor. Zoom factor is zoom percent
+ * divided by 100, so 300% = 3.0.
+ *
+ * The factor must be greater than 0.0.
+ */
+ setZoomFactor(factor: number): void;
+ /**
+ * Changes the zoom level to the specified level. The original size is 0 and each
+ * increment above or below represents zooming 20% larger or smaller to default
+ * limits of 300% and 50% of original size, respectively.
+ *
+ * > **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that
+ * the zoom level for a specific domain propagates across all instances of windows
+ * with the same domain. Differentiating the window URLs will make zoom work
+ * per-window.
+ */
+ setZoomLevel(level: number): void;
+ /**
+ * A `WebFrame | null` representing the first child frame of `webFrame`, the
+ * property would be `null` if `webFrame` has no children or if first child is not
+ * in the current renderer process.
+ *
+ */
+ readonly firstChild: (WebFrame) | (null);
+ /**
+ * A `WebFrame | null` representing next sibling frame, the property would be
+ * `null` if `webFrame` is the last frame in its parent or if the next sibling is
+ * not in the current renderer process.
+ *
+ */
+ readonly nextSibling: (WebFrame) | (null);
+ /**
+ * A `WebFrame | null` representing the frame which opened `webFrame`, the property
+ * would be `null` if there's no opener or opener is not in the current renderer
+ * process.
+ *
+ */
+ readonly opener: (WebFrame) | (null);
+ /**
+ * A `WebFrame | null` representing parent frame of `webFrame`, the property would
+ * be `null` if `webFrame` is top or parent is not in the current renderer process.
+ *
+ */
+ readonly parent: (WebFrame) | (null);
+ /**
+ * An `Integer` representing the unique frame id in the current renderer process.
+ * Distinct WebFrame instances that refer to the same underlying frame will have
+ * the same `routingId`.
+ *
+ */
+ readonly routingId: number;
+ /**
+ * A `WebFrame | null` representing top frame in frame hierarchy to which
+ * `webFrame` belongs, the property would be `null` if top frame is not in the
+ * current renderer process.
+ *
+ */
+ readonly top: (WebFrame) | (null);
+ }
+
+ class WebFrameMain extends NodeEventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/web-frame-main
+
+ /**
+ * A frame with the given process and routing IDs, or `undefined` if there is no
+ * WebFrameMain associated with the given IDs.
+ */
+ static fromId(processId: number, routingId: number): (WebFrameMain) | (undefined);
+ /**
+ * Emitted when the document is loaded.
+ */
+ on(event: 'dom-ready', listener: Function): this;
+ once(event: 'dom-ready', listener: Function): this;
+ addListener(event: 'dom-ready', listener: Function): this;
+ removeListener(event: 'dom-ready', listener: Function): this;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * execution throws or results in a rejected promise.
+ *
+ * Evaluates `code` in page.
+ *
+ * In the browser window some HTML APIs like `requestFullScreen` can only be
+ * invoked by a gesture from the user. Setting `userGesture` to `true` will remove
+ * this limitation.
+ */
+ executeJavaScript(code: string, userGesture?: boolean): Promise<unknown>;
+ /**
+ * Send a message to the renderer process, optionally transferring ownership of
+ * zero or more `MessagePortMain` objects.
+ *
+ * The transferred `MessagePortMain` objects will be available in the renderer
+ * process by accessing the `ports` property of the emitted event. When they arrive
+ * in the renderer, they will be native DOM `MessagePort` objects.
+ *
+ * For example:
+ */
+ postMessage(channel: string, message: any, transfer?: MessagePortMain[]): void;
+ /**
+ * Whether the reload was initiated successfully. Only results in `false` when the
+ * frame has no history.
+ */
+ reload(): boolean;
+ /**
+ * Send an asynchronous message to the renderer process via `channel`, along with
+ * arguments. Arguments will be serialized with the Structured Clone Algorithm,
+ * just like `postMessage`, so prototype chains will not be included. Sending
+ * Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.
+ *
+ * The renderer process can handle the message by listening to `channel` with the
+ * `ipcRenderer` module.
+ */
+ send(channel: string, ...args: any[]): void;
+ /**
+ * A `WebFrameMain[]` collection containing the direct descendents of `frame`.
+ *
+ */
+ readonly frames: WebFrameMain[];
+ /**
+ * A `WebFrameMain[]` collection containing every frame in the subtree of `frame`,
+ * including itself. This can be useful when traversing through all frames.
+ *
+ */
+ readonly framesInSubtree: WebFrameMain[];
+ /**
+ * An `Integer` representing the id of the frame's internal FrameTreeNode instance.
+ * This id is browser-global and uniquely identifies a frame that hosts content.
+ * The identifier is fixed at the creation of the frame and stays constant for the
+ * lifetime of the frame. When the frame is removed, the id is not used again.
+ *
+ */
+ readonly frameTreeNodeId: number;
+ /**
+ * An `IpcMain` instance scoped to the frame.
+ *
+ * IPC messages sent with `ipcRenderer.send`, `ipcRenderer.sendSync` or
+ * `ipcRenderer.postMessage` will be delivered in the following order:
+ *
+ * * `contents.on('ipc-message')`
+ * * `contents.mainFrame.on(channel)`
+ * * `contents.ipc.on(channel)`
+ * * `ipcMain.on(channel)`
+ *
+ * Handlers registered with `invoke` will be checked in the following order. The
+ * first one that is defined will be called, the rest will be ignored.
+ *
+ * * `contents.mainFrame.handle(channel)`
+ * * `contents.handle(channel)`
+ * * `ipcMain.handle(channel)`
+ *
+ * In most cases, only the main frame of a WebContents can send or receive IPC
+ * messages. However, if the `nodeIntegrationInSubFrames` option is enabled, it is
+ * possible for child frames to send and receive IPC messages also. The
+ * `WebContents.ipc` interface may be more convenient when
+ * `nodeIntegrationInSubFrames` is not enabled.
+ *
+ */
+ readonly ipc: IpcMain;
+ /**
+ * A `string` representing the frame name.
+ *
+ */
+ readonly name: string;
+ /**
+ * A `string` representing the current origin of the frame, serialized according to
+ * RFC 6454. This may be different from the URL. For instance, if the frame is a
+ * child window opened to `about:blank`, then `frame.origin` will return the parent
+ * frame's origin, while `frame.url` will return the empty string. Pages without a
+ * scheme/host/port triple origin will have the serialized origin of `"null"` (that
+ * is, the string containing the letters n, u, l, l).
+ *
+ */
+ readonly origin: string;
+ /**
+ * An `Integer` representing the operating system `pid` of the process which owns
+ * this frame.
+ *
+ */
+ readonly osProcessId: number;
+ /**
+ * A `WebFrameMain | null` representing parent frame of `frame`, the property would
+ * be `null` if `frame` is the top frame in the frame hierarchy.
+ *
+ */
+ readonly parent: (WebFrameMain) | (null);
+ /**
+ * An `Integer` representing the Chromium internal `pid` of the process which owns
+ * this frame. This is not the same as the OS process ID; to read that use
+ * `frame.osProcessId`.
+ *
+ */
+ readonly processId: number;
+ /**
+ * An `Integer` representing the unique frame id in the current renderer process.
+ * Distinct `WebFrameMain` instances that refer to the same underlying frame will
+ * have the same `routingId`.
+ *
+ */
+ readonly routingId: number;
+ /**
+ * A `WebFrameMain | null` representing top frame in the frame hierarchy to which
+ * `frame` belongs.
+ *
+ */
+ readonly top: (WebFrameMain) | (null);
+ /**
+ * A `string` representing the current URL of the frame.
+ *
+ */
+ readonly url: string;
+ /**
+ * A `string` representing the visibility state of the frame.
+ *
+ * See also how the Page Visibility API is affected by other Electron APIs.
+ *
+ */
+ readonly visibilityState: string;
+ }
+
+ interface WebPreferences {
+
+ // Docs: https://electronjs.org/docs/api/structures/web-preferences
+
+ /**
+ * An alternative title string provided only to accessibility tools such as screen
+ * readers. This string is not directly visible to users.
+ */
+ accessibleTitle?: string;
+ /**
+ * A list of strings that will be appended to `process.argv` in the renderer
+ * process of this app. Useful for passing small bits of data down to renderer
+ * process preload scripts.
+ */
+ additionalArguments?: string[];
+ /**
+ * Allow an https page to run JavaScript, CSS or plugins from http URLs. Default is
+ * `false`.
+ */
+ allowRunningInsecureContent?: boolean;
+ /**
+ * Autoplay policy to apply to content in the window, can be
+ * `no-user-gesture-required`, `user-gesture-required`,
+ * `document-user-activation-required`. Defaults to `no-user-gesture-required`.
+ */
+ autoplayPolicy?: ('no-user-gesture-required' | 'user-gesture-required' | 'document-user-activation-required');
+ /**
+ * Whether to throttle animations and timers when the page becomes background. This
+ * also affects the Page Visibility API. Defaults to `true`.
+ */
+ backgroundThrottling?: boolean;
+ /**
+ * Whether to run Electron APIs and the specified `preload` script in a separate
+ * JavaScript context. Defaults to `true`. The context that the `preload` script
+ * runs in will only have access to its own dedicated `document` and `window`
+ * globals, as well as its own set of JavaScript builtins (`Array`, `Object`,
+ * `JSON`, etc.), which are all invisible to the loaded content. The Electron API
+ * will only be available in the `preload` script and not the loaded page. This
+ * option should be used when loading potentially untrusted remote content to
+ * ensure the loaded content cannot tamper with the `preload` script and any
+ * Electron APIs being used. This option uses the same technique used by Chrome
+ * Content Scripts. You can access this context in the dev tools by selecting the
+ * 'Electron Isolated Context' entry in the combo box at the top of the Console
+ * tab.
+ */
+ contextIsolation?: boolean;
+ /**
+ * Defaults to `ISO-8859-1`.
+ */
+ defaultEncoding?: string;
+ /**
+ * Sets the default font for the font-family.
+ */
+ defaultFontFamily?: DefaultFontFamily;
+ /**
+ * Defaults to `16`.
+ */
+ defaultFontSize?: number;
+ /**
+ * Defaults to `13`.
+ */
+ defaultMonospaceFontSize?: number;
+ /**
+ * Whether to enable DevTools. If it is set to `false`, can not use
+ * `BrowserWindow.webContents.openDevTools()` to open DevTools. Default is `true`.
+ */
+ devTools?: boolean;
+ /**
+ * A list of feature strings separated by `,`, like `CSSVariables,KeyboardEventKey`
+ * to disable. The full list of supported feature strings can be found in the
+ * RuntimeEnabledFeatures.json5 file.
+ */
+ disableBlinkFeatures?: string;
+ /**
+ * Whether to disable dialogs completely. Overrides `safeDialogs`. Default is
+ * `false`.
+ */
+ disableDialogs?: boolean;
+ /**
+ * Whether to prevent the window from resizing when entering HTML Fullscreen.
+ * Default is `false`.
+ */
+ disableHtmlFullscreenWindowResize?: boolean;
+ /**
+ * A list of feature strings separated by `,`, like `CSSVariables,KeyboardEventKey`
+ * to enable. The full list of supported feature strings can be found in the
+ * RuntimeEnabledFeatures.json5 file.
+ */
+ enableBlinkFeatures?: string;
+ /**
+ * Whether to enable preferred size mode. The preferred size is the minimum size
+ * needed to contain the layout of the document—without requiring scrolling.
+ * Enabling this will cause the `preferred-size-changed` event to be emitted on the
+ * `WebContents` when the preferred size changes. Default is `false`.
+ */
+ enablePreferredSizeMode?: boolean;
+ /**
+ * Whether to enable the WebSQL api. Default is `true`.
+ */
+ enableWebSQL?: boolean;
+ /**
+ * Enables Chromium's experimental features. Default is `false`.
+ */
+ experimentalFeatures?: boolean;
+ /**
+ * Specifies how to run image animations (E.g. GIFs). Can be `animate`,
+ * `animateOnce` or `noAnimation`. Default is `animate`.
+ */
+ imageAnimationPolicy?: ('animate' | 'animateOnce' | 'noAnimation');
+ /**
+ * Enables image support. Default is `true`.
+ */
+ images?: boolean;
+ /**
+ * Enables JavaScript support. Default is `true`.
+ */
+ javascript?: boolean;
+ /**
+ * Defaults to `0`.
+ */
+ minimumFontSize?: number;
+ /**
+ * Whether dragging and dropping a file or link onto the page causes a navigation.
+ * Default is `false`.
+ */
+ navigateOnDragDrop?: boolean;
+ /**
+ * Whether node integration is enabled. Default is `false`.
+ */
+ nodeIntegration?: boolean;
+ /**
+ * Experimental option for enabling Node.js support in sub-frames such as iframes
+ * and child windows. All your preloads will load for every iframe, you can use
+ * `process.isMainFrame` to determine if you are in the main frame or not.
+ */
+ nodeIntegrationInSubFrames?: boolean;
+ /**
+ * Whether node integration is enabled in web workers. Default is `false`. More
+ * about this can be found in Multithreading.
+ */
+ nodeIntegrationInWorker?: boolean;
+ /**
+ * Whether to enable offscreen rendering for the browser window. Defaults to
+ * `false`. See the offscreen rendering tutorial for more details.
+ */
+ offscreen?: boolean;
+ /**
+ * Sets the session used by the page according to the session's partition string.
+ * If `partition` starts with `persist:`, the page will use a persistent session
+ * available to all pages in the app with the same `partition`. If there is no
+ * `persist:` prefix, the page will use an in-memory session. By assigning the same
+ * `partition`, multiple pages can share the same session. Default is the default
+ * session.
+ */
+ partition?: string;
+ /**
+ * Whether plugins should be enabled. Default is `false`.
+ */
+ plugins?: boolean;
+ /**
+ * Specifies a script that will be loaded before other scripts run in the page.
+ * This script will always have access to node APIs no matter whether node
+ * integration is turned on or off. The value should be the absolute file path to
+ * the script. When node integration is turned off, the preload script can
+ * reintroduce Node global symbols back to the global scope. See example here.
+ */
+ preload?: string;
+ /**
+ * Whether to enable browser style consecutive dialog protection. Default is
+ * `false`.
+ */
+ safeDialogs?: boolean;
+ /**
+ * The message to display when consecutive dialog protection is triggered. If not
+ * defined the default message would be used, note that currently the default
+ * message is in English and not localized.
+ */
+ safeDialogsMessage?: string;
+ /**
+ * If set, this will sandbox the renderer associated with the window, making it
+ * compatible with the Chromium OS-level sandbox and disabling the Node.js engine.
+ * This is not the same as the `nodeIntegration` option and the APIs available to
+ * the preload script are more limited. Read more about the option here.
+ */
+ sandbox?: boolean;
+ /**
+ * Enables scroll bounce (rubber banding) effect on macOS. Default is `false`.
+ *
+ * @platform darwin
+ */
+ scrollBounce?: boolean;
+ /**
+ * Sets the session used by the page. Instead of passing the Session object
+ * directly, you can also choose to use the `partition` option instead, which
+ * accepts a partition string. When both `session` and `partition` are provided,
+ * `session` will be preferred. Default is the default session.
+ */
+ session?: Session;
+ /**
+ * Whether to enable the builtin spellchecker. Default is `true`.
+ */
+ spellcheck?: boolean;
+ /**
+ * Make TextArea elements resizable. Default is `true`.
+ */
+ textAreasAreResizable?: boolean;
+ /**
+ * Enforces the v8 code caching policy used by blink. Accepted values are
+ */
+ v8CacheOptions?: ('none' | 'code' | 'bypassHeatCheck' | 'bypassHeatCheckAndEagerCompile');
+ /**
+ * Enables WebGL support. Default is `true`.
+ */
+ webgl?: boolean;
+ /**
+ * When `false`, it will disable the same-origin policy (usually using testing
+ * websites by people), and set `allowRunningInsecureContent` to `true` if this
+ * options has not been set by user. Default is `true`.
+ */
+ webSecurity?: boolean;
+ /**
+ * Whether to enable the `<webview>` tag. Defaults to `false`. **Note:** The
+ * `preload` script configured for the `<webview>` will have node integration
+ * enabled when it is executed so you should ensure remote/untrusted content is not
+ * able to create a `<webview>` tag with a possibly malicious `preload` script. You
+ * can use the `will-attach-webview` event on webContents to strip away the
+ * `preload` script and to validate or alter the `<webview>`'s initial settings.
+ */
+ webviewTag?: boolean;
+ /**
+ * The default zoom factor of the page, `3.0` represents `300%`. Default is `1.0`.
+ */
+ zoomFactor?: number;
+ }
+
+ class WebRequest {
+
+ // Docs: https://electronjs.org/docs/api/web-request
+
+ /**
+ * The `listener` will be called with `listener(details)` when a server initiated
+ * redirect is about to occur.
+ */
+ onBeforeRedirect(filter: WebRequestFilter, listener: ((details: OnBeforeRedirectListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when a server initiated
+ * redirect is about to occur.
+ */
+ onBeforeRedirect(listener: ((details: OnBeforeRedirectListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` when a request
+ * is about to occur.
+ *
+ * The `uploadData` is an array of `UploadData` objects.
+ *
+ * The `callback` has to be called with an `response` object.
+ *
+ * Some examples of valid `urls`:
+ */
+ onBeforeRequest(filter: WebRequestFilter, listener: ((details: OnBeforeRequestListenerDetails, callback: (response: CallbackResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` when a request
+ * is about to occur.
+ *
+ * The `uploadData` is an array of `UploadData` objects.
+ *
+ * The `callback` has to be called with an `response` object.
+ *
+ * Some examples of valid `urls`:
+ */
+ onBeforeRequest(listener: ((details: OnBeforeRequestListenerDetails, callback: (response: CallbackResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` before sending
+ * an HTTP request, once the request headers are available. This may occur after a
+ * TCP connection is made to the server, but before any http data is sent.
+ *
+ * The `callback` has to be called with a `response` object.
+ */
+ onBeforeSendHeaders(filter: WebRequestFilter, listener: ((details: OnBeforeSendHeadersListenerDetails, callback: (beforeSendResponse: BeforeSendResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` before sending
+ * an HTTP request, once the request headers are available. This may occur after a
+ * TCP connection is made to the server, but before any http data is sent.
+ *
+ * The `callback` has to be called with a `response` object.
+ */
+ onBeforeSendHeaders(listener: ((details: OnBeforeSendHeadersListenerDetails, callback: (beforeSendResponse: BeforeSendResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when a request is
+ * completed.
+ */
+ onCompleted(filter: WebRequestFilter, listener: ((details: OnCompletedListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when a request is
+ * completed.
+ */
+ onCompleted(listener: ((details: OnCompletedListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when an error occurs.
+ */
+ onErrorOccurred(filter: WebRequestFilter, listener: ((details: OnErrorOccurredListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when an error occurs.
+ */
+ onErrorOccurred(listener: ((details: OnErrorOccurredListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` when HTTP
+ * response headers of a request have been received.
+ *
+ * The `callback` has to be called with a `response` object.
+ */
+ onHeadersReceived(filter: WebRequestFilter, listener: ((details: OnHeadersReceivedListenerDetails, callback: (headersReceivedResponse: HeadersReceivedResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details, callback)` when HTTP
+ * response headers of a request have been received.
+ *
+ * The `callback` has to be called with a `response` object.
+ */
+ onHeadersReceived(listener: ((details: OnHeadersReceivedListenerDetails, callback: (headersReceivedResponse: HeadersReceivedResponse) => void) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when first byte of the
+ * response body is received. For HTTP requests, this means that the status line
+ * and response headers are available.
+ */
+ onResponseStarted(filter: WebRequestFilter, listener: ((details: OnResponseStartedListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` when first byte of the
+ * response body is received. For HTTP requests, this means that the status line
+ * and response headers are available.
+ */
+ onResponseStarted(listener: ((details: OnResponseStartedListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` just before a request is
+ * going to be sent to the server, modifications of previous `onBeforeSendHeaders`
+ * response are visible by the time this listener is fired.
+ */
+ onSendHeaders(filter: WebRequestFilter, listener: ((details: OnSendHeadersListenerDetails) => void) | (null)): void;
+ /**
+ * The `listener` will be called with `listener(details)` just before a request is
+ * going to be sent to the server, modifications of previous `onBeforeSendHeaders`
+ * response are visible by the time this listener is fired.
+ */
+ onSendHeaders(listener: ((details: OnSendHeadersListenerDetails) => void) | (null)): void;
+ }
+
+ interface WebRequestFilter {
+
+ // Docs: https://electronjs.org/docs/api/structures/web-request-filter
+
+ /**
+ * Array of types that will be used to filter out the requests that do not match
+ * the types. When not specified, all types will be matched. Can be `mainFrame`,
+ * `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`,
+ * `cspReport`, `media` or `webSocket`.
+ */
+ types?: Array<'mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket'>;
+ /**
+ * Array of URL patterns that will be used to filter out the requests that do not
+ * match the URL patterns.
+ */
+ urls: string[];
+ }
+
+ interface WebSource {
+
+ // Docs: https://electronjs.org/docs/api/structures/web-source
+
+ code: string;
+ url?: string;
+ }
+
+ interface WebviewTag extends HTMLElement {
+
+ // Docs: https://electronjs.org/docs/api/webview-tag
+
+ /**
+ * Fired when a load has committed. This includes navigation within the current
+ * document as well as subframe document-level loads, but does not include
+ * asynchronous resource loads.
+ */
+ addEventListener(event: 'load-commit', listener: (event: LoadCommitEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'load-commit', listener: (event: LoadCommitEvent) => void): this;
+ /**
+ * Fired when the navigation is done, i.e. the spinner of the tab will stop
+ * spinning, and the `onload` event is dispatched.
+ */
+ addEventListener(event: 'did-finish-load', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-finish-load', listener: (event: DOMEvent) => void): this;
+ /**
+ * This event is like `did-finish-load`, but fired when the load failed or was
+ * cancelled, e.g. `window.stop()` is invoked.
+ */
+ addEventListener(event: 'did-fail-load', listener: (event: DidFailLoadEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-fail-load', listener: (event: DidFailLoadEvent) => void): this;
+ /**
+ * Fired when a frame has done navigation.
+ */
+ addEventListener(event: 'did-frame-finish-load', listener: (event: DidFrameFinishLoadEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-frame-finish-load', listener: (event: DidFrameFinishLoadEvent) => void): this;
+ /**
+ * Corresponds to the points in time when the spinner of the tab starts spinning.
+ */
+ addEventListener(event: 'did-start-loading', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-start-loading', listener: (event: DOMEvent) => void): this;
+ /**
+ * Corresponds to the points in time when the spinner of the tab stops spinning.
+ */
+ addEventListener(event: 'did-stop-loading', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-stop-loading', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when attached to the embedder web contents.
+ */
+ addEventListener(event: 'did-attach', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-attach', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when document in the given frame is loaded.
+ */
+ addEventListener(event: 'dom-ready', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'dom-ready', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when page title is set during navigation. `explicitSet` is false when
+ * title is synthesized from file url.
+ */
+ addEventListener(event: 'page-title-updated', listener: (event: PageTitleUpdatedEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'page-title-updated', listener: (event: PageTitleUpdatedEvent) => void): this;
+ /**
+ * Fired when page receives favicon urls.
+ */
+ addEventListener(event: 'page-favicon-updated', listener: (event: PageFaviconUpdatedEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'page-favicon-updated', listener: (event: PageFaviconUpdatedEvent) => void): this;
+ /**
+ * Fired when page enters fullscreen triggered by HTML API.
+ */
+ addEventListener(event: 'enter-html-full-screen', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'enter-html-full-screen', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when page leaves fullscreen triggered by HTML API.
+ */
+ addEventListener(event: 'leave-html-full-screen', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'leave-html-full-screen', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when the guest window logs a console message.
+ *
+ * The following example code forwards all log messages to the embedder's console
+ * without regard for log level or other properties.
+ */
+ addEventListener(event: 'console-message', listener: (event: ConsoleMessageEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'console-message', listener: (event: ConsoleMessageEvent) => void): this;
+ /**
+ * Fired when a result is available for `webview.findInPage` request.
+ */
+ addEventListener(event: 'found-in-page', listener: (event: FoundInPageEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'found-in-page', listener: (event: FoundInPageEvent) => void): this;
+ /**
+ * Emitted when a user or the page wants to start navigation. It can happen when
+ * the `window.location` object is changed or a user clicks a link in the page.
+ *
+ * This event will not emit when the navigation is started programmatically with
+ * APIs like `<webview>.loadURL` and `<webview>.back`.
+ *
+ * It is also not emitted during in-page navigation, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ *
+ * Calling `event.preventDefault()` does **NOT** have any effect.
+ */
+ addEventListener(event: 'will-navigate', listener: (event: WillNavigateEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'will-navigate', listener: (event: WillNavigateEvent) => void): this;
+ /**
+ * Emitted when a user or the page wants to start navigation anywhere in the
+ * `<webview>` or any frames embedded within. It can happen when the
+ * `window.location` object is changed or a user clicks a link in the page.
+ *
+ * This event will not emit when the navigation is started programmatically with
+ * APIs like `<webview>.loadURL` and `<webview>.back`.
+ *
+ * It is also not emitted during in-page navigation, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ *
+ * Calling `event.preventDefault()` does **NOT** have any effect.
+ */
+ addEventListener(event: 'will-frame-navigate', listener: (event: WillFrameNavigateEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'will-frame-navigate', listener: (event: WillFrameNavigateEvent) => void): this;
+ /**
+ * Emitted when any frame (including main) starts navigating. `isInPlace` will be
+ * `true` for in-page navigations.
+ */
+ addEventListener(event: 'did-start-navigation', listener: (event: DidStartNavigationEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-start-navigation', listener: (event: DidStartNavigationEvent) => void): this;
+ /**
+ * Emitted after a server side redirect occurs during navigation. For example a 302
+ * redirect.
+ */
+ addEventListener(event: 'did-redirect-navigation', listener: (event: DidRedirectNavigationEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-redirect-navigation', listener: (event: DidRedirectNavigationEvent) => void): this;
+ /**
+ * Emitted when a navigation is done.
+ *
+ * This event is not emitted for in-page navigations, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ */
+ addEventListener(event: 'did-navigate', listener: (event: DidNavigateEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-navigate', listener: (event: DidNavigateEvent) => void): this;
+ /**
+ * Emitted when any frame navigation is done.
+ *
+ * This event is not emitted for in-page navigations, such as clicking anchor links
+ * or updating the `window.location.hash`. Use `did-navigate-in-page` event for
+ * this purpose.
+ */
+ addEventListener(event: 'did-frame-navigate', listener: (event: DidFrameNavigateEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-frame-navigate', listener: (event: DidFrameNavigateEvent) => void): this;
+ /**
+ * Emitted when an in-page navigation happened.
+ *
+ * When in-page navigation happens, the page URL changes but does not cause
+ * navigation outside of the page. Examples of this occurring are when anchor links
+ * are clicked or when the DOM `hashchange` event is triggered.
+ */
+ addEventListener(event: 'did-navigate-in-page', listener: (event: DidNavigateInPageEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-navigate-in-page', listener: (event: DidNavigateInPageEvent) => void): this;
+ /**
+ * Fired when the guest page attempts to close itself.
+ *
+ * The following example code navigates the `webview` to `about:blank` when the
+ * guest attempts to close itself.
+ */
+ addEventListener(event: 'close', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'close', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when the guest page has sent an asynchronous message to embedder page.
+ *
+ * With `sendToHost` method and `ipc-message` event you can communicate between
+ * guest page and embedder page:
+ */
+ addEventListener(event: 'ipc-message', listener: (event: IpcMessageEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'ipc-message', listener: (event: IpcMessageEvent) => void): this;
+ /**
+ * Fired when the renderer process crashes or is killed.
+ *
+ * **Deprecated:** This event is superceded by the `render-process-gone` event
+ * which contains more information about why the render process disappeared. It
+ * isn't always because it crashed.
+ *
+ * @deprecated
+ */
+ addEventListener(event: 'crashed', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'crashed', listener: (event: DOMEvent) => void): this;
+ /**
+ * Fired when the renderer process unexpectedly disappears. This is normally
+ * because it was crashed or killed.
+ */
+ addEventListener(event: 'render-process-gone', listener: (event: RenderProcessGoneEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'render-process-gone', listener: (event: RenderProcessGoneEvent) => void): this;
+ /**
+ * Fired when a plugin process is crashed.
+ */
+ addEventListener(event: 'plugin-crashed', listener: (event: PluginCrashedEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'plugin-crashed', listener: (event: PluginCrashedEvent) => void): this;
+ /**
+ * Fired when the WebContents is destroyed.
+ */
+ addEventListener(event: 'destroyed', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'destroyed', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when media starts playing.
+ */
+ addEventListener(event: 'media-started-playing', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'media-started-playing', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when media is paused or done playing.
+ */
+ addEventListener(event: 'media-paused', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'media-paused', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when a page's theme color changes. This is usually due to encountering a
+ * meta tag:
+ */
+ addEventListener(event: 'did-change-theme-color', listener: (event: DidChangeThemeColorEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'did-change-theme-color', listener: (event: DidChangeThemeColorEvent) => void): this;
+ /**
+ * Emitted when mouse moves over a link or the keyboard moves the focus to a link.
+ */
+ addEventListener(event: 'update-target-url', listener: (event: UpdateTargetUrlEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'update-target-url', listener: (event: UpdateTargetUrlEvent) => void): this;
+ /**
+ * Emitted when a link is clicked in DevTools or 'Open in new tab' is selected for
+ * a link in its context menu.
+ */
+ addEventListener(event: 'devtools-open-url', listener: (event: DevtoolsOpenUrlEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'devtools-open-url', listener: (event: DevtoolsOpenUrlEvent) => void): this;
+ /**
+ * Emitted when DevTools is opened.
+ */
+ addEventListener(event: 'devtools-opened', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'devtools-opened', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when DevTools is closed.
+ */
+ addEventListener(event: 'devtools-closed', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'devtools-closed', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when DevTools is focused / opened.
+ */
+ addEventListener(event: 'devtools-focused', listener: (event: DOMEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'devtools-focused', listener: (event: DOMEvent) => void): this;
+ /**
+ * Emitted when there is a new context menu that needs to be handled.
+ */
+ addEventListener(event: 'context-menu', listener: (event: ContextMenuEvent) => void, useCapture?: boolean): this;
+ removeEventListener(event: 'context-menu', listener: (event: ContextMenuEvent) => void): this;
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, useCapture?: boolean): void;
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, useCapture?: boolean): void;
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+ /**
+ * Adjusts the current text selection starting and ending points in the focused
+ * frame by the given amounts. A negative amount moves the selection towards the
+ * beginning of the document, and a positive amount moves the selection towards the
+ * end of the document.
+ *
+ * See `webContents.adjustSelection` for examples.
+ */
+ adjustSelection(options: AdjustSelectionOptions): void;
+ /**
+ * Whether the guest page can go back.
+ */
+ canGoBack(): boolean;
+ /**
+ * Whether the guest page can go forward.
+ */
+ canGoForward(): boolean;
+ /**
+ * Whether the guest page can go to `offset`.
+ */
+ canGoToOffset(offset: number): boolean;
+ /**
+ * Resolves with a NativeImage
+ *
+ * Captures a snapshot of the page within `rect`. Omitting `rect` will capture the
+ * whole visible page.
+ */
+ capturePage(rect?: Rectangle): Promise<Electron.NativeImage>;
+ /**
+ * Centers the current text selection in page.
+ */
+ centerSelection(): void;
+ /**
+ * Clears the navigation history.
+ */
+ clearHistory(): void;
+ /**
+ * Closes the DevTools window of guest page.
+ */
+ closeDevTools(): void;
+ /**
+ * Executes editing command `copy` in page.
+ */
+ copy(): void;
+ /**
+ * Executes editing command `cut` in page.
+ */
+ cut(): void;
+ /**
+ * Executes editing command `delete` in page.
+ */
+ delete(): void;
+ /**
+ * Initiates a download of the resource at `url` without navigating.
+ */
+ downloadURL(url: string, options?: DownloadURLOptions): void;
+ /**
+ * A promise that resolves with the result of the executed code or is rejected if
+ * the result of the code is a rejected promise.
+ *
+ * Evaluates `code` in page. If `userGesture` is set, it will create the user
+ * gesture context in the page. HTML APIs like `requestFullScreen`, which require
+ * user action, can take advantage of this option for automation.
+ */
+ executeJavaScript(code: string, userGesture?: boolean): Promise<any>;
+ /**
+ * The request id used for the request.
+ *
+ * Starts a request to find all matches for the `text` in the web page. The result
+ * of the request can be obtained by subscribing to `found-in-page` event.
+ */
+ findInPage(text: string, options?: FindInPageOptions): number;
+ /**
+ * The title of guest page.
+ */
+ getTitle(): string;
+ /**
+ * The URL of guest page.
+ */
+ getURL(): string;
+ /**
+ * The user agent for guest page.
+ */
+ getUserAgent(): string;
+ /**
+ * The WebContents ID of this `webview`.
+ */
+ getWebContentsId(): number;
+ /**
+ * the current zoom factor.
+ */
+ getZoomFactor(): number;
+ /**
+ * the current zoom level.
+ */
+ getZoomLevel(): number;
+ /**
+ * Makes the guest page go back.
+ */
+ goBack(): void;
+ /**
+ * Makes the guest page go forward.
+ */
+ goForward(): void;
+ /**
+ * Navigates to the specified absolute index.
+ */
+ goToIndex(index: number): void;
+ /**
+ * Navigates to the specified offset from the "current entry".
+ */
+ goToOffset(offset: number): void;
+ /**
+ * A promise that resolves with a key for the inserted CSS that can later be used
+ * to remove the CSS via `<webview>.removeInsertedCSS(key)`.
+ *
+ * Injects CSS into the current web page and returns a unique key for the inserted
+ * stylesheet.
+ */
+ insertCSS(css: string): Promise<string>;
+ /**
+ * Inserts `text` to the focused element.
+ */
+ insertText(text: string): Promise<void>;
+ /**
+ * Starts inspecting element at position (`x`, `y`) of guest page.
+ */
+ inspectElement(x: number, y: number): void;
+ /**
+ * Opens the DevTools for the service worker context present in the guest page.
+ */
+ inspectServiceWorker(): void;
+ /**
+ * Opens the DevTools for the shared worker context present in the guest page.
+ */
+ inspectSharedWorker(): void;
+ /**
+ * Whether guest page has been muted.
+ */
+ isAudioMuted(): boolean;
+ /**
+ * Whether the renderer process has crashed.
+ */
+ isCrashed(): boolean;
+ /**
+ * Whether audio is currently playing.
+ */
+ isCurrentlyAudible(): boolean;
+ /**
+ * Whether DevTools window of guest page is focused.
+ */
+ isDevToolsFocused(): boolean;
+ /**
+ * Whether guest page has a DevTools window attached.
+ */
+ isDevToolsOpened(): boolean;
+ /**
+ * Whether guest page is still loading resources.
+ */
+ isLoading(): boolean;
+ /**
+ * Whether the main frame (and not just iframes or frames within it) is still
+ * loading.
+ */
+ isLoadingMainFrame(): boolean;
+ /**
+ * Whether the guest page is waiting for a first-response for the main resource of
+ * the page.
+ */
+ isWaitingForResponse(): boolean;
+ /**
+ * The promise will resolve when the page has finished loading (see
+ * `did-finish-load`), and rejects if the page fails to load (see `did-fail-load`).
+ *
+ * Loads the `url` in the webview, the `url` must contain the protocol prefix, e.g.
+ * the `http://` or `file://`.
+ */
+ loadURL(url: string, options?: LoadURLOptions): Promise<void>;
+ /**
+ * Opens a DevTools window for guest page.
+ */
+ openDevTools(): void;
+ /**
+ * Executes editing command `paste` in page.
+ */
+ paste(): void;
+ /**
+ * Executes editing command `pasteAndMatchStyle` in page.
+ */
+ pasteAndMatchStyle(): void;
+ /**
+ * Prints `webview`'s web page. Same as `webContents.print([options])`.
+ */
+ print(options?: WebviewTagPrintOptions): Promise<void>;
+ /**
+ * Resolves with the generated PDF data.
+ *
+ * Prints `webview`'s web page as PDF, Same as `webContents.printToPDF(options)`.
+ */
+ printToPDF(options: PrintToPDFOptions): Promise<Uint8Array>;
+ /**
+ * Executes editing command `redo` in page.
+ */
+ redo(): void;
+ /**
+ * Reloads the guest page.
+ */
+ reload(): void;
+ /**
+ * Reloads the guest page and ignores cache.
+ */
+ reloadIgnoringCache(): void;
+ /**
+ * Resolves if the removal was successful.
+ *
+ * Removes the inserted CSS from the current web page. The stylesheet is identified
+ * by its key, which is returned from `<webview>.insertCSS(css)`.
+ */
+ removeInsertedCSS(key: string): Promise<void>;
+ /**
+ * Executes editing command `replace` in page.
+ */
+ replace(text: string): void;
+ /**
+ * Executes editing command `replaceMisspelling` in page.
+ */
+ replaceMisspelling(text: string): void;
+ /**
+ * Scrolls to the bottom of the current `<webview>`.
+ */
+ scrollToBottom(): void;
+ /**
+ * Scrolls to the top of the current `<webview>`.
+ */
+ scrollToTop(): void;
+ /**
+ * Executes editing command `selectAll` in page.
+ */
+ selectAll(): void;
+ /**
+ * Send an asynchronous message to renderer process via `channel`, you can also
+ * send arbitrary arguments. The renderer process can handle the message by
+ * listening to the `channel` event with the `ipcRenderer` module.
+ *
+ * See webContents.send for examples.
+ */
+ send(channel: string, ...args: any[]): Promise<void>;
+ /**
+ * Sends an input `event` to the page.
+ *
+ * See webContents.sendInputEvent for detailed description of `event` object.
+ */
+ sendInputEvent(event: (MouseInputEvent) | (MouseWheelInputEvent) | (KeyboardInputEvent)): Promise<void>;
+ /**
+ * Send an asynchronous message to renderer process via `channel`, you can also
+ * send arbitrary arguments. The renderer process can handle the message by
+ * listening to the `channel` event with the `ipcRenderer` module.
+ *
+ * See webContents.sendToFrame for examples.
+ */
+ sendToFrame(frameId: [number, number], channel: string, ...args: any[]): Promise<void>;
+ /**
+ * Set guest page muted.
+ */
+ setAudioMuted(muted: boolean): void;
+ /**
+ * Overrides the user agent for the guest page.
+ */
+ setUserAgent(userAgent: string): void;
+ /**
+ * Sets the maximum and minimum pinch-to-zoom level.
+ */
+ setVisualZoomLevelLimits(minimumLevel: number, maximumLevel: number): Promise<void>;
+ /**
+ * Changes the zoom factor to the specified factor. Zoom factor is zoom percent
+ * divided by 100, so 300% = 3.0.
+ */
+ setZoomFactor(factor: number): void;
+ /**
+ * Changes the zoom level to the specified level. The original size is 0 and each
+ * increment above or below represents zooming 20% larger or smaller to default
+ * limits of 300% and 50% of original size, respectively. The formula for this is
+ * `scale := 1.2 ^ level`.
+ *
+ * > **NOTE**: The zoom policy at the Chromium level is same-origin, meaning that
+ * the zoom level for a specific domain propagates across all instances of windows
+ * with the same domain. Differentiating the window URLs will make zoom work
+ * per-window.
+ */
+ setZoomLevel(level: number): void;
+ /**
+ * Shows pop-up dictionary that searches the selected word on the page.
+ *
+ * @platform darwin
+ */
+ showDefinitionForSelection(): void;
+ /**
+ * Stops any pending navigation.
+ */
+ stop(): void;
+ /**
+ * Stops any `findInPage` request for the `webview` with the provided `action`.
+ */
+ stopFindInPage(action: 'clearSelection' | 'keepSelection' | 'activateSelection'): void;
+ /**
+ * Executes editing command `undo` in page.
+ */
+ undo(): void;
+ /**
+ * Executes editing command `unselect` in page.
+ */
+ unselect(): void;
+ /**
+ * A `boolean`. When this attribute is present the guest page will be allowed to
+ * open new windows. Popups are disabled by default.
+ */
+ allowpopups: boolean;
+ /**
+ * A `string` which is a list of strings which specifies the blink features to be
+ * disabled separated by `,`. The full list of supported feature strings can be
+ * found in the RuntimeEnabledFeatures.json5 file.
+ */
+ disableblinkfeatures: string;
+ /**
+ * A `boolean`. When this attribute is present the guest page will have web
+ * security disabled. Web security is enabled by default.
+ *
+ * This value can only be modified before the first navigation.
+ */
+ disablewebsecurity: boolean;
+ /**
+ * A `string` which is a list of strings which specifies the blink features to be
+ * enabled separated by `,`. The full list of supported feature strings can be
+ * found in the RuntimeEnabledFeatures.json5 file.
+ */
+ enableblinkfeatures: string;
+ /**
+ * A `string` that sets the referrer URL for the guest page.
+ */
+ httpreferrer: string;
+ /**
+ * A `boolean`. When this attribute is present the guest page in `webview` will
+ * have node integration and can use node APIs like `require` and `process` to
+ * access low level system resources. Node integration is disabled by default in
+ * the guest page.
+ */
+ nodeintegration: boolean;
+ /**
+ * A `boolean` for the experimental option for enabling NodeJS support in
+ * sub-frames such as iframes inside the `webview`. All your preloads will load for
+ * every iframe, you can use `process.isMainFrame` to determine if you are in the
+ * main frame or not. This option is disabled by default in the guest page.
+ */
+ nodeintegrationinsubframes: boolean;
+ /**
+ * A `string` that sets the session used by the page. If `partition` starts with
+ * `persist:`, the page will use a persistent session available to all pages in the
+ * app with the same `partition`. if there is no `persist:` prefix, the page will
+ * use an in-memory session. By assigning the same `partition`, multiple pages can
+ * share the same session. If the `partition` is unset then default session of the
+ * app will be used.
+ *
+ * This value can only be modified before the first navigation, since the session
+ * of an active renderer process cannot change. Subsequent attempts to modify the
+ * value will fail with a DOM exception.
+ */
+ partition: string;
+ /**
+ * A `boolean`. When this attribute is present the guest page in `webview` will be
+ * able to use browser plugins. Plugins are disabled by default.
+ */
+ plugins: boolean;
+ /**
+ * A `string` that specifies a script that will be loaded before other scripts run
+ * in the guest page. The protocol of script's URL must be `file:` (even when using
+ * `asar:` archives) because it will be loaded by Node's `require` under the hood,
+ * which treats `asar:` archives as virtual directories.
+ *
+ * When the guest page doesn't have node integration this script will still have
+ * access to all Node APIs, but global objects injected by Node will be deleted
+ * after this script has finished executing.
+ */
+ preload: string;
+ /**
+ * A `string` representing the visible URL. Writing to this attribute initiates
+ * top-level navigation.
+ *
+ * Assigning `src` its own value will reload the current page.
+ *
+ * The `src` attribute can also accept data URLs, such as `data:text/plain,Hello,
+ * world!`.
+ */
+ src: string;
+ /**
+ * A `string` that sets the user agent for the guest page before the page is
+ * navigated to. Once the page is loaded, use the `setUserAgent` method to change
+ * the user agent.
+ */
+ useragent: string;
+ /**
+ * A `string` which is a comma separated list of strings which specifies the web
+ * preferences to be set on the webview. The full list of supported preference
+ * strings can be found in BrowserWindow.
+ *
+ * The string follows the same format as the features string in `window.open`. A
+ * name by itself is given a `true` boolean value. A preference can be set to
+ * another value by including an `=`, followed by the value. Special values `yes`
+ * and `1` are interpreted as `true`, while `no` and `0` are interpreted as
+ * `false`.
+ */
+ webpreferences: string;
+ }
+
+ interface AboutPanelOptionsOptions {
+ /**
+ * The app's name.
+ */
+ applicationName?: string;
+ /**
+ * The app's version.
+ */
+ applicationVersion?: string;
+ /**
+ * Copyright information.
+ */
+ copyright?: string;
+ /**
+ * The app's build version number.
+ *
+ * @platform darwin
+ */
+ version?: string;
+ /**
+ * Credit information.
+ *
+ * @platform darwin,win32
+ */
+ credits?: string;
+ /**
+ * List of app authors.
+ *
+ * @platform linux
+ */
+ authors?: string[];
+ /**
+ * The app's website.
+ *
+ * @platform linux
+ */
+ website?: string;
+ /**
+ * Path to the app's icon in a JPEG or PNG file format. On Linux, will be shown as
+ * 64x64 pixels while retaining aspect ratio.
+ *
+ * @platform linux,win32
+ */
+ iconPath?: string;
+ }
+
+ interface AddRepresentationOptions {
+ /**
+ * The scale factor to add the image representation for.
+ */
+ scaleFactor?: number;
+ /**
+ * Defaults to 0. Required if a bitmap buffer is specified as `buffer`.
+ */
+ width?: number;
+ /**
+ * Defaults to 0. Required if a bitmap buffer is specified as `buffer`.
+ */
+ height?: number;
+ /**
+ * The buffer containing the raw image data.
+ */
+ buffer?: Buffer;
+ /**
+ * The data URL containing either a base 64 encoded PNG or JPEG image.
+ */
+ dataURL?: string;
+ }
+
+ interface AdjustSelectionOptions {
+ /**
+ * Amount to shift the start index of the current selection.
+ */
+ start?: number;
+ /**
+ * Amount to shift the end index of the current selection.
+ */
+ end?: number;
+ }
+
+ interface AnimationSettings {
+ /**
+ * Returns true if rich animations should be rendered. Looks at session type (e.g.
+ * remote desktop) and accessibility settings to give guidance for heavy
+ * animations.
+ */
+ shouldRenderRichAnimation: boolean;
+ /**
+ * Determines on a per-platform basis whether scroll animations (e.g. produced by
+ * home/end key) should be enabled.
+ */
+ scrollAnimationsEnabledBySystem: boolean;
+ /**
+ * Determines whether the user desires reduced motion based on platform APIs.
+ */
+ prefersReducedMotion: boolean;
+ }
+
+ interface AppDetailsOptions {
+ /**
+ * Window's App User Model ID. It has to be set, otherwise the other options will
+ * have no effect.
+ */
+ appId?: string;
+ /**
+ * Window's Relaunch Icon.
+ */
+ appIconPath?: string;
+ /**
+ * Index of the icon in `appIconPath`. Ignored when `appIconPath` is not set.
+ * Default is `0`.
+ */
+ appIconIndex?: number;
+ /**
+ * Window's Relaunch Command.
+ */
+ relaunchCommand?: string;
+ /**
+ * Window's Relaunch Display Name.
+ */
+ relaunchDisplayName?: string;
+ }
+
+ interface ApplicationInfoForProtocolReturnValue {
+ /**
+ * the display icon of the app handling the protocol.
+ */
+ icon: NativeImage;
+ /**
+ * installation path of the app handling the protocol.
+ */
+ path: string;
+ /**
+ * display name of the app handling the protocol.
+ */
+ name: string;
+ }
+
+ interface AuthenticationResponseDetails {
+ url: string;
+ }
+
+ interface AuthInfo {
+ isProxy: boolean;
+ scheme: string;
+ host: string;
+ port: number;
+ realm: string;
+ }
+
+ interface AutoResizeOptions {
+ /**
+ * If `true`, the view's width will grow and shrink together with the window.
+ * `false` by default.
+ */
+ width?: boolean;
+ /**
+ * If `true`, the view's height will grow and shrink together with the window.
+ * `false` by default.
+ */
+ height?: boolean;
+ /**
+ * If `true`, the view's x position and width will grow and shrink proportionally
+ * with the window. `false` by default.
+ */
+ horizontal?: boolean;
+ /**
+ * If `true`, the view's y position and height will grow and shrink proportionally
+ * with the window. `false` by default.
+ */
+ vertical?: boolean;
+ }
+
+ interface BeforeSendResponse {
+ cancel?: boolean;
+ /**
+ * When provided, request will be made with these headers.
+ */
+ requestHeaders?: Record<string, (string) | (string[])>;
+ }
+
+ interface BitmapOptions {
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface BlinkMemoryInfo {
+ /**
+ * Size of all allocated objects in Kilobytes.
+ */
+ allocated: number;
+ /**
+ * Total allocated space in Kilobytes.
+ */
+ total: number;
+ }
+
+ interface BluetoothPairingHandlerHandlerDetails {
+ deviceId: string;
+ /**
+ * The type of pairing prompt being requested. One of the following values:
+ */
+ pairingKind: ('confirm' | 'confirmPin' | 'providePin');
+ frame: WebFrameMain;
+ /**
+ * The pin value to verify if `pairingKind` is `confirmPin`.
+ */
+ pin?: string;
+ }
+
+ interface BrowserViewConstructorOptions {
+ /**
+ * Settings of web page's features.
+ */
+ webPreferences?: WebPreferences;
+ }
+
+ interface CallbackResponse {
+ cancel?: boolean;
+ /**
+ * The original request is prevented from being sent or completed and is instead
+ * redirected to the given URL.
+ */
+ redirectURL?: string;
+ }
+
+ interface CertificateTrustDialogOptions {
+ /**
+ * The certificate to trust/import.
+ */
+ certificate: Certificate;
+ /**
+ * The message to display to the user.
+ */
+ message: string;
+ }
+
+ interface ClearCodeCachesOptions {
+ /**
+ * An array of url corresponding to the resource whose generated code cache needs
+ * to be removed. If the list is empty then all entries in the cache directory will
+ * be removed.
+ */
+ urls?: string[];
+ }
+
+ interface ClearStorageDataOptions {
+ /**
+ * Should follow `window.location.origin`’s representation `scheme://host:port`.
+ */
+ origin?: string;
+ /**
+ * The types of storages to clear, can be `cookies`, `filesystem`, `indexdb`,
+ * `localstorage`, `shadercache`, `websql`, `serviceworkers`, `cachestorage`. If
+ * not specified, clear all storage types.
+ */
+ storages?: Array<'cookies' | 'filesystem' | 'indexdb' | 'localstorage' | 'shadercache' | 'websql' | 'serviceworkers' | 'cachestorage'>;
+ /**
+ * The types of quotas to clear, can be `temporary`, `syncable`. If not specified,
+ * clear all quotas.
+ */
+ quotas?: Array<'temporary' | 'syncable'>;
+ }
+
+ interface ClientRequestConstructorOptions {
+ /**
+ * The HTTP request method. Defaults to the GET method.
+ */
+ method?: string;
+ /**
+ * The request URL. Must be provided in the absolute form with the protocol scheme
+ * specified as http or https.
+ */
+ url?: string;
+ /**
+ * The `Session` instance with which the request is associated.
+ */
+ session?: Session;
+ /**
+ * The name of the `partition` with which the request is associated. Defaults to
+ * the empty string. The `session` option supersedes `partition`. Thus if a
+ * `session` is explicitly specified, `partition` is ignored.
+ */
+ partition?: string;
+ /**
+ * Can be `include`, `omit` or `same-origin`. Whether to send credentials with this
+ * request. If set to `include`, credentials from the session associated with the
+ * request will be used. If set to `omit`, credentials will not be sent with the
+ * request (and the `'login'` event will not be triggered in the event of a 401).
+ * If set to `same-origin`, `origin` must also be specified. This matches the
+ * behavior of the fetch option of the same name. If this option is not specified,
+ * authentication data from the session will be sent, and cookies will not be sent
+ * (unless `useSessionCookies` is set).
+ */
+ credentials?: ('include' | 'omit' | 'same-origin');
+ /**
+ * Whether to send cookies with this request from the provided session. If
+ * `credentials` is specified, this option has no effect. Default is `false`.
+ */
+ useSessionCookies?: boolean;
+ /**
+ * Can be `http:` or `https:`. The protocol scheme in the form 'scheme:'. Defaults
+ * to 'http:'.
+ */
+ protocol?: ('http:' | 'https:');
+ /**
+ * The server host provided as a concatenation of the hostname and the port number
+ * 'hostname:port'.
+ */
+ host?: string;
+ /**
+ * The server host name.
+ */
+ hostname?: string;
+ /**
+ * The server's listening port number.
+ */
+ port?: number;
+ /**
+ * The path part of the request URL.
+ */
+ path?: string;
+ /**
+ * Can be `follow`, `error` or `manual`. The redirect mode for this request. When
+ * mode is `error`, any redirection will be aborted. When mode is `manual` the
+ * redirection will be cancelled unless `request.followRedirect` is invoked
+ * synchronously during the `redirect` event. Defaults to `follow`.
+ */
+ redirect?: ('follow' | 'error' | 'manual');
+ /**
+ * The origin URL of the request.
+ */
+ origin?: string;
+ /**
+ * can be `""`, `no-referrer`, `no-referrer-when-downgrade`, `origin`,
+ * `origin-when-cross-origin`, `unsafe-url`, `same-origin`, `strict-origin`, or
+ * `strict-origin-when-cross-origin`. Defaults to
+ * `strict-origin-when-cross-origin`.
+ */
+ referrerPolicy?: string;
+ /**
+ * can be `default`, `no-store`, `reload`, `no-cache`, `force-cache` or
+ * `only-if-cached`.
+ */
+ cache?: ('default' | 'no-store' | 'reload' | 'no-cache' | 'force-cache' | 'only-if-cached');
+ }
+
+ interface CloseOpts {
+ /**
+ * if true, fire the `beforeunload` event before closing the page. If the page
+ * prevents the unload, the WebContents will not be closed. The
+ * `will-prevent-unload` will be fired if the page requests prevention of unload.
+ */
+ waitForBeforeUnload: boolean;
+ }
+
+ interface Config {
+ /**
+ * The proxy mode. Should be one of `direct`, `auto_detect`, `pac_script`,
+ * `fixed_servers` or `system`. If it's unspecified, it will be automatically
+ * determined based on other specified options.
+ */
+ mode?: ('direct' | 'auto_detect' | 'pac_script' | 'fixed_servers' | 'system');
+ /**
+ * The URL associated with the PAC file.
+ */
+ pacScript?: string;
+ /**
+ * Rules indicating which proxies to use.
+ */
+ proxyRules?: string;
+ /**
+ * Rules indicating which URLs should bypass the proxy settings.
+ */
+ proxyBypassRules?: string;
+ }
+
+ interface ConfigureHostResolverOptions {
+ /**
+ * Whether the built-in host resolver is used in preference to getaddrinfo. When
+ * enabled, the built-in resolver will attempt to use the system's DNS settings to
+ * do DNS lookups itself. Enabled by default on macOS, disabled by default on
+ * Windows and Linux.
+ */
+ enableBuiltInResolver?: boolean;
+ /**
+ * Can be 'off', 'automatic' or 'secure'. Configures the DNS-over-HTTP mode. When
+ * 'off', no DoH lookups will be performed. When 'automatic', DoH lookups will be
+ * performed first if DoH is available, and insecure DNS lookups will be performed
+ * as a fallback. When 'secure', only DoH lookups will be performed. Defaults to
+ * 'automatic'.
+ */
+ secureDnsMode?: ('off' | 'automatic' | 'secure');
+ /**
+ * A list of DNS-over-HTTP server templates. See RFC8484 § 3 for details on the
+ * template format. Most servers support the POST method; the template for such
+ * servers is simply a URI. Note that for some DNS providers, the resolver will
+ * automatically upgrade to DoH unless DoH is explicitly disabled, even if there
+ * are no DoH servers provided in this list.
+ */
+ secureDnsServers?: string[];
+ /**
+ * Controls whether additional DNS query types, e.g. HTTPS (DNS type 65) will be
+ * allowed besides the traditional A and AAAA queries when a request is being made
+ * via insecure DNS. Has no effect on Secure DNS which always allows additional
+ * types. Defaults to true.
+ */
+ enableAdditionalDnsQueryTypes?: boolean;
+ }
+
+ interface ConsoleMessageEvent extends DOMEvent {
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number;
+ /**
+ * The actual console message
+ */
+ message: string;
+ /**
+ * The line number of the source that triggered this console message
+ */
+ line: number;
+ sourceId: string;
+ }
+
+ interface ContextMenuEvent extends DOMEvent {
+ params: Params;
+ }
+
+ interface ContextMenuParams {
+ /**
+ * x coordinate.
+ */
+ x: number;
+ /**
+ * y coordinate.
+ */
+ y: number;
+ /**
+ * Frame from which the context menu was invoked.
+ */
+ frame: WebFrameMain;
+ /**
+ * URL of the link that encloses the node the context menu was invoked on.
+ */
+ linkURL: string;
+ /**
+ * Text associated with the link. May be an empty string if the contents of the
+ * link are an image.
+ */
+ linkText: string;
+ /**
+ * URL of the top level page that the context menu was invoked on.
+ */
+ pageURL: string;
+ /**
+ * URL of the subframe that the context menu was invoked on.
+ */
+ frameURL: string;
+ /**
+ * Source URL for the element that the context menu was invoked on. Elements with
+ * source URLs are images, audio and video.
+ */
+ srcURL: string;
+ /**
+ * Type of the node the context menu was invoked on. Can be `none`, `image`,
+ * `audio`, `video`, `canvas`, `file` or `plugin`.
+ */
+ mediaType: ('none' | 'image' | 'audio' | 'video' | 'canvas' | 'file' | 'plugin');
+ /**
+ * Whether the context menu was invoked on an image which has non-empty contents.
+ */
+ hasImageContents: boolean;
+ /**
+ * Whether the context is editable.
+ */
+ isEditable: boolean;
+ /**
+ * Text of the selection that the context menu was invoked on.
+ */
+ selectionText: string;
+ /**
+ * Title text of the selection that the context menu was invoked on.
+ */
+ titleText: string;
+ /**
+ * Alt text of the selection that the context menu was invoked on.
+ */
+ altText: string;
+ /**
+ * Suggested filename to be used when saving file through 'Save Link As' option of
+ * context menu.
+ */
+ suggestedFilename: string;
+ /**
+ * Rect representing the coordinates in the document space of the selection.
+ */
+ selectionRect: Rectangle;
+ /**
+ * Start position of the selection text.
+ */
+ selectionStartOffset: number;
+ /**
+ * The referrer policy of the frame on which the menu is invoked.
+ */
+ referrerPolicy: Referrer;
+ /**
+ * The misspelled word under the cursor, if any.
+ */
+ misspelledWord: string;
+ /**
+ * An array of suggested words to show the user to replace the `misspelledWord`.
+ * Only available if there is a misspelled word and spellchecker is enabled.
+ */
+ dictionarySuggestions: string[];
+ /**
+ * The character encoding of the frame on which the menu was invoked.
+ */
+ frameCharset: string;
+ /**
+ * If the context menu was invoked on an input field, the type of that field.
+ * Possible values include `none`, `plainText`, `password`, `other`.
+ */
+ inputFieldType: ('none' | 'plainText' | 'password' | 'other');
+ /**
+ * If the context is editable, whether or not spellchecking is enabled.
+ */
+ spellcheckEnabled: boolean;
+ /**
+ * Input source that invoked the context menu. Can be `none`, `mouse`, `keyboard`,
+ * `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`,
+ * `adjustSelection`, or `adjustSelectionReset`.
+ */
+ menuSourceType: ('none' | 'mouse' | 'keyboard' | 'touch' | 'touchMenu' | 'longPress' | 'longTap' | 'touchHandle' | 'stylus' | 'adjustSelection' | 'adjustSelectionReset');
+ /**
+ * The flags for the media element the context menu was invoked on.
+ */
+ mediaFlags: MediaFlags;
+ /**
+ * These flags indicate whether the renderer believes it is able to perform the
+ * corresponding action.
+ */
+ editFlags: EditFlags;
+ }
+
+ interface ContinueActivityDetails {
+ /**
+ * A string identifying the URL of the webpage accessed by the activity on another
+ * device, if available.
+ */
+ webpageURL?: string;
+ }
+
+ interface CookiesGetFilter {
+ /**
+ * Retrieves cookies which are associated with `url`. Empty implies retrieving
+ * cookies of all URLs.
+ */
+ url?: string;
+ /**
+ * Filters cookies by name.
+ */
+ name?: string;
+ /**
+ * Retrieves cookies whose domains match or are subdomains of `domains`.
+ */
+ domain?: string;
+ /**
+ * Retrieves cookies whose path matches `path`.
+ */
+ path?: string;
+ /**
+ * Filters cookies by their Secure property.
+ */
+ secure?: boolean;
+ /**
+ * Filters out session or persistent cookies.
+ */
+ session?: boolean;
+ /**
+ * Filters cookies by httpOnly.
+ */
+ httpOnly?: boolean;
+ }
+
+ interface CookiesSetDetails {
+ /**
+ * The URL to associate the cookie with. The promise will be rejected if the URL is
+ * invalid.
+ */
+ url: string;
+ /**
+ * The name of the cookie. Empty by default if omitted.
+ */
+ name?: string;
+ /**
+ * The value of the cookie. Empty by default if omitted.
+ */
+ value?: string;
+ /**
+ * The domain of the cookie; this will be normalized with a preceding dot so that
+ * it's also valid for subdomains. Empty by default if omitted.
+ */
+ domain?: string;
+ /**
+ * The path of the cookie. Empty by default if omitted.
+ */
+ path?: string;
+ /**
+ * Whether the cookie should be marked as Secure. Defaults to false unless Same
+ * Site=None attribute is used.
+ */
+ secure?: boolean;
+ /**
+ * Whether the cookie should be marked as HTTP only. Defaults to false.
+ */
+ httpOnly?: boolean;
+ /**
+ * The expiration date of the cookie as the number of seconds since the UNIX epoch.
+ * If omitted then the cookie becomes a session cookie and will not be retained
+ * between sessions.
+ */
+ expirationDate?: number;
+ /**
+ * The Same Site policy to apply to this cookie. Can be `unspecified`,
+ * `no_restriction`, `lax` or `strict`. Default is `lax`.
+ */
+ sameSite?: ('unspecified' | 'no_restriction' | 'lax' | 'strict');
+ }
+
+ interface CrashReporterStartOptions {
+ /**
+ * URL that crash reports will be sent to as POST. Required unless `uploadToServer`
+ * is `false`.
+ */
+ submitURL?: string;
+ /**
+ * Defaults to `app.name`.
+ */
+ productName?: string;
+ /**
+ * Deprecated alias for `{ globalExtra: { _companyName: ... } }`.
+ *
+ * @deprecated
+ */
+ companyName?: string;
+ /**
+ * Whether crash reports should be sent to the server. If false, crash reports will
+ * be collected and stored in the crashes directory, but not uploaded. Default is
+ * `true`.
+ */
+ uploadToServer?: boolean;
+ /**
+ * If true, crashes generated in the main process will not be forwarded to the
+ * system crash handler. Default is `false`.
+ */
+ ignoreSystemCrashHandler?: boolean;
+ /**
+ * If true, limit the number of crashes uploaded to 1/hour. Default is `false`.
+ *
+ * @platform darwin,win32
+ */
+ rateLimit?: boolean;
+ /**
+ * If true, crash reports will be compressed and uploaded with `Content-Encoding:
+ * gzip`. Default is `true`.
+ */
+ compress?: boolean;
+ /**
+ * Extra string key/value annotations that will be sent along with crash reports
+ * that are generated in the main process. Only string values are supported.
+ * Crashes generated in child processes will not contain these extra parameters to
+ * crash reports generated from child processes, call `addExtraParameter` from the
+ * child process.
+ */
+ extra?: Record<string, string>;
+ /**
+ * Extra string key/value annotations that will be sent along with any crash
+ * reports generated in any process. These annotations cannot be changed once the
+ * crash reporter has been started. If a key is present in both the global extra
+ * parameters and the process-specific extra parameters, then the global one will
+ * take precedence. By default, `productName` and the app version are included, as
+ * well as the Electron version.
+ */
+ globalExtra?: Record<string, string>;
+ }
+
+ interface CreateFromBitmapOptions {
+ width: number;
+ height: number;
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface CreateFromBufferOptions {
+ /**
+ * Required for bitmap buffers.
+ */
+ width?: number;
+ /**
+ * Required for bitmap buffers.
+ */
+ height?: number;
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface CreateInterruptedDownloadOptions {
+ /**
+ * Absolute path of the download.
+ */
+ path: string;
+ /**
+ * Complete URL chain for the download.
+ */
+ urlChain: string[];
+ mimeType?: string;
+ /**
+ * Start range for the download.
+ */
+ offset: number;
+ /**
+ * Total length of the download.
+ */
+ length: number;
+ /**
+ * Last-Modified header value.
+ */
+ lastModified?: string;
+ /**
+ * ETag header value.
+ */
+ eTag?: string;
+ /**
+ * Time when download was started in number of seconds since UNIX epoch.
+ */
+ startTime?: number;
+ }
+
+ interface Data {
+ text?: string;
+ html?: string;
+ image?: NativeImage;
+ rtf?: string;
+ /**
+ * The title of the URL at `text`.
+ */
+ bookmark?: string;
+ }
+
+ interface DefaultFontFamily {
+ /**
+ * Defaults to `Times New Roman`.
+ */
+ standard?: string;
+ /**
+ * Defaults to `Times New Roman`.
+ */
+ serif?: string;
+ /**
+ * Defaults to `Arial`.
+ */
+ sansSerif?: string;
+ /**
+ * Defaults to `Courier New`.
+ */
+ monospace?: string;
+ /**
+ * Defaults to `Script`.
+ */
+ cursive?: string;
+ /**
+ * Defaults to `Impact`.
+ */
+ fantasy?: string;
+ /**
+ * Defaults to `Latin Modern Math`.
+ */
+ math?: string;
+ }
+
+ interface Details {
+ /**
+ * Process type. One of the following values:
+ */
+ type: ('Utility' | 'Zygote' | 'Sandbox helper' | 'GPU' | 'Pepper Plugin' | 'Pepper Plugin Broker' | 'Unknown');
+ /**
+ * The reason the child process is gone. Possible values:
+ */
+ reason: ('clean-exit' | 'abnormal-exit' | 'killed' | 'crashed' | 'oom' | 'launch-failed' | 'integrity-failure');
+ /**
+ * The exit code for the process (e.g. status from waitpid if on posix, from
+ * GetExitCodeProcess on Windows).
+ */
+ exitCode: number;
+ /**
+ * The non-localized name of the process.
+ */
+ serviceName?: string;
+ /**
+ * The name of the process. Examples for utility: `Audio Service`, `Content
+ * Decryption Module Service`, `Network Service`, `Video Capture`, etc.
+ */
+ name?: string;
+ }
+
+ interface DevicePermissionHandlerHandlerDetails {
+ /**
+ * The type of device that permission is being requested on, can be `hid`,
+ * `serial`, or `usb`.
+ */
+ deviceType: ('hid' | 'serial' | 'usb');
+ /**
+ * The origin URL of the device permission check.
+ */
+ origin: string;
+ /**
+ * the device that permission is being requested for.
+ */
+ device: (HIDDevice) | (SerialPort) | (USBDevice);
+ }
+
+ interface DevtoolsOpenUrlEvent extends DOMEvent {
+ /**
+ * URL of the link that was clicked or selected.
+ */
+ url: string;
+ }
+
+ interface DidChangeThemeColorEvent extends DOMEvent {
+ themeColor: string;
+ }
+
+ interface DidCreateWindowDetails {
+ /**
+ * URL for the created window.
+ */
+ url: string;
+ /**
+ * Name given to the created window in the `window.open()` call.
+ */
+ frameName: string;
+ /**
+ * The options used to create the BrowserWindow. They are merged in increasing
+ * precedence: parsed options from the `features` string from `window.open()`,
+ * security-related webPreferences inherited from the parent, and options given by
+ * `webContents.setWindowOpenHandler`. Unrecognized options are not filtered out.
+ */
+ options: BrowserWindowConstructorOptions;
+ /**
+ * The referrer that will be passed to the new window. May or may not result in the
+ * `Referer` header being sent, depending on the referrer policy.
+ */
+ referrer: Referrer;
+ /**
+ * The post data that will be sent to the new window, along with the appropriate
+ * headers that will be set. If no post data is to be sent, the value will be
+ * `null`. Only defined when the window is being created by a form that set
+ * `target=_blank`.
+ */
+ postBody?: PostBody;
+ /**
+ * Can be `default`, `foreground-tab`, `background-tab`, `new-window` or `other`.
+ */
+ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'other');
+ }
+
+ interface DidFailLoadEvent extends DOMEvent {
+ errorCode: number;
+ errorDescription: string;
+ validatedURL: string;
+ isMainFrame: boolean;
+ }
+
+ interface DidFrameFinishLoadEvent extends DOMEvent {
+ isMainFrame: boolean;
+ }
+
+ interface DidFrameNavigateEvent extends DOMEvent {
+ url: string;
+ /**
+ * -1 for non HTTP navigations
+ */
+ httpResponseCode: number;
+ /**
+ * empty for non HTTP navigations,
+ */
+ httpStatusText: string;
+ isMainFrame: boolean;
+ frameProcessId: number;
+ frameRoutingId: number;
+ }
+
+ interface DidNavigateEvent extends DOMEvent {
+ url: string;
+ }
+
+ interface DidNavigateInPageEvent extends DOMEvent {
+ isMainFrame: boolean;
+ url: string;
+ }
+
+ interface DidRedirectNavigationEvent extends DOMEvent {
+ url: string;
+ isInPlace: boolean;
+ isMainFrame: boolean;
+ frameProcessId: number;
+ frameRoutingId: number;
+ }
+
+ interface DidStartNavigationEvent extends DOMEvent {
+ url: string;
+ isInPlace: boolean;
+ isMainFrame: boolean;
+ frameProcessId: number;
+ frameRoutingId: number;
+ }
+
+ interface DisplayBalloonOptions {
+ /**
+ * Icon to use when `iconType` is `custom`.
+ */
+ icon?: (NativeImage) | (string);
+ /**
+ * Can be `none`, `info`, `warning`, `error` or `custom`. Default is `custom`.
+ */
+ iconType?: ('none' | 'info' | 'warning' | 'error' | 'custom');
+ title: string;
+ content: string;
+ /**
+ * The large version of the icon should be used. Default is `true`. Maps to
+ * `NIIF_LARGE_ICON`.
+ */
+ largeIcon?: boolean;
+ /**
+ * Do not play the associated sound. Default is `false`. Maps to `NIIF_NOSOUND`.
+ */
+ noSound?: boolean;
+ /**
+ * Do not display the balloon notification if the current user is in "quiet time".
+ * Default is `false`. Maps to `NIIF_RESPECT_QUIET_TIME`.
+ */
+ respectQuietTime?: boolean;
+ }
+
+ interface DisplayMediaRequestHandlerHandlerRequest {
+ /**
+ * Frame that is requesting access to media.
+ */
+ frame: WebFrameMain;
+ /**
+ * Origin of the page making the request.
+ */
+ securityOrigin: string;
+ /**
+ * true if the web content requested a video stream.
+ */
+ videoRequested: boolean;
+ /**
+ * true if the web content requested an audio stream.
+ */
+ audioRequested: boolean;
+ /**
+ * Whether a user gesture was active when this request was triggered.
+ */
+ userGesture: boolean;
+ }
+
+ interface DownloadURLOptions {
+ /**
+ * HTTP request headers.
+ */
+ headers?: Record<string, string>;
+ }
+
+ interface EnableNetworkEmulationOptions {
+ /**
+ * Whether to emulate network outage. Defaults to false.
+ */
+ offline?: boolean;
+ /**
+ * RTT in ms. Defaults to 0 which will disable latency throttling.
+ */
+ latency?: number;
+ /**
+ * Download rate in Bps. Defaults to 0 which will disable download throttling.
+ */
+ downloadThroughput?: number;
+ /**
+ * Upload rate in Bps. Defaults to 0 which will disable upload throttling.
+ */
+ uploadThroughput?: number;
+ }
+
+ interface FeedURLOptions {
+ url: string;
+ /**
+ * HTTP request headers.
+ *
+ * @platform darwin
+ */
+ headers?: Record<string, string>;
+ /**
+ * Can be `json` or `default`, see the Squirrel.Mac README for more information.
+ *
+ * @platform darwin
+ */
+ serverType?: ('json' | 'default');
+ }
+
+ interface FileIconOptions {
+ size: ('small' | 'normal' | 'large');
+ }
+
+ interface FindInPageOptions {
+ /**
+ * Whether to search forward or backward, defaults to `true`.
+ */
+ forward?: boolean;
+ /**
+ * Whether to begin a new text finding session with this request. Should be `true`
+ * for initial requests, and `false` for follow-up requests. Defaults to `false`.
+ */
+ findNext?: boolean;
+ /**
+ * Whether search should be case-sensitive, defaults to `false`.
+ */
+ matchCase?: boolean;
+ }
+
+ interface FocusOptions {
+ /**
+ * Make the receiver the active app even if another app is currently active.
+ *
+ * @platform darwin
+ */
+ steal: boolean;
+ }
+
+ interface ForkOptions {
+ /**
+ * Environment key-value pairs. Default is `process.env`.
+ */
+ env?: Env;
+ /**
+ * List of string arguments passed to the executable.
+ */
+ execArgv?: string[];
+ /**
+ * Current working directory of the child process.
+ */
+ cwd?: string;
+ /**
+ * Allows configuring the mode for `stdout` and `stderr` of the child process.
+ * Default is `inherit`. String value can be one of `pipe`, `ignore`, `inherit`,
+ * for more details on these values you can refer to stdio documentation from
+ * Node.js. Currently this option only supports configuring `stdout` and `stderr`
+ * to either `pipe`, `inherit` or `ignore`. Configuring `stdin` is not supported;
+ * `stdin` will always be ignored. For example, the supported values will be
+ * processed as following:
+ */
+ stdio?: (Array<'pipe' | 'ignore' | 'inherit'>) | (string);
+ /**
+ * Name of the process that will appear in `name` property of `child-process-gone`
+ * event of `app`. Default is `Node Utility Process`.
+ */
+ serviceName?: string;
+ /**
+ * With this flag, the utility process will be launched via the `Electron Helper
+ * (Plugin).app` helper executable on macOS, which can be codesigned with
+ * `com.apple.security.cs.disable-library-validation` and
+ * `com.apple.security.cs.allow-unsigned-executable-memory` entitlements. This will
+ * allow the utility process to load unsigned libraries. Unless you specifically
+ * need this capability, it is best to leave this disabled. Default is `false`.
+ *
+ * @platform darwin
+ */
+ allowLoadingUnsignedLibraries?: boolean;
+ }
+
+ interface FoundInPageEvent extends DOMEvent {
+ result: FoundInPageResult;
+ }
+
+ interface FrameCreatedDetails {
+ frame: WebFrameMain;
+ }
+
+ interface FromPartitionOptions {
+ /**
+ * Whether to enable cache.
+ */
+ cache: boolean;
+ }
+
+ interface FromPathOptions {
+ /**
+ * Whether to enable cache.
+ */
+ cache: boolean;
+ }
+
+ interface HandlerDetails {
+ /**
+ * The _resolved_ version of the URL passed to `window.open()`. e.g. opening a
+ * window with `window.open('foo')` will yield something like
+ * `https://the-origin/the/current/path/foo`.
+ */
+ url: string;
+ /**
+ * Name of the window provided in `window.open()`
+ */
+ frameName: string;
+ /**
+ * Comma separated list of window features provided to `window.open()`.
+ */
+ features: string;
+ /**
+ * Can be `default`, `foreground-tab`, `background-tab`, `new-window` or `other`.
+ */
+ disposition: ('default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'other');
+ /**
+ * The referrer that will be passed to the new window. May or may not result in the
+ * `Referer` header being sent, depending on the referrer policy.
+ */
+ referrer: Referrer;
+ /**
+ * The post data that will be sent to the new window, along with the appropriate
+ * headers that will be set. If no post data is to be sent, the value will be
+ * `null`. Only defined when the window is being created by a form that set
+ * `target=_blank`.
+ */
+ postBody?: PostBody;
+ }
+
+ interface HeadersReceivedResponse {
+ cancel?: boolean;
+ /**
+ * When provided, the server is assumed to have responded with these headers.
+ */
+ responseHeaders?: Record<string, (string) | (string[])>;
+ /**
+ * Should be provided when overriding `responseHeaders` to change header status
+ * otherwise original response header's status will be used.
+ */
+ statusLine?: string;
+ }
+
+ interface HeapStatistics {
+ totalHeapSize: number;
+ totalHeapSizeExecutable: number;
+ totalPhysicalSize: number;
+ totalAvailableSize: number;
+ usedHeapSize: number;
+ heapSizeLimit: number;
+ mallocedMemory: number;
+ peakMallocedMemory: number;
+ doesZapGarbage: boolean;
+ }
+
+ interface HidDeviceAddedDetails {
+ device: HIDDevice;
+ frame: WebFrameMain;
+ }
+
+ interface HidDeviceRemovedDetails {
+ device: HIDDevice;
+ frame: WebFrameMain;
+ }
+
+ interface HidDeviceRevokedDetails {
+ device: HIDDevice;
+ /**
+ * The origin that the device has been revoked from.
+ */
+ origin?: string;
+ }
+
+ interface IgnoreMouseEventsOptions {
+ /**
+ * If true, forwards mouse move messages to Chromium, enabling mouse related events
+ * such as `mouseleave`. Only used when `ignore` is true. If `ignore` is false,
+ * forwarding is always disabled regardless of this value.
+ *
+ * @platform darwin,win32
+ */
+ forward?: boolean;
+ }
+
+ interface ImportCertificateOptions {
+ /**
+ * Path for the pkcs12 file.
+ */
+ certificate: string;
+ /**
+ * Passphrase for the certificate.
+ */
+ password: string;
+ }
+
+ interface Info {
+ /**
+ * Security origin for the isolated world.
+ */
+ securityOrigin?: string;
+ /**
+ * Content Security Policy for the isolated world.
+ */
+ csp?: string;
+ /**
+ * Name for isolated world. Useful in devtools.
+ */
+ name?: string;
+ }
+
+ interface Input {
+ /**
+ * Either `keyUp` or `keyDown`.
+ */
+ type: string;
+ /**
+ * Equivalent to KeyboardEvent.key.
+ */
+ key: string;
+ /**
+ * Equivalent to KeyboardEvent.code.
+ */
+ code: string;
+ /**
+ * Equivalent to KeyboardEvent.repeat.
+ */
+ isAutoRepeat: boolean;
+ /**
+ * Equivalent to KeyboardEvent.isComposing.
+ */
+ isComposing: boolean;
+ /**
+ * Equivalent to KeyboardEvent.shiftKey.
+ */
+ shift: boolean;
+ /**
+ * Equivalent to KeyboardEvent.controlKey.
+ */
+ control: boolean;
+ /**
+ * Equivalent to KeyboardEvent.altKey.
+ */
+ alt: boolean;
+ /**
+ * Equivalent to KeyboardEvent.metaKey.
+ */
+ meta: boolean;
+ /**
+ * Equivalent to KeyboardEvent.location.
+ */
+ location: number;
+ /**
+ * See InputEvent.modifiers.
+ */
+ modifiers: string[];
+ }
+
+ interface InsertCSSOptions {
+ /**
+ * Can be 'user' or 'author'. Sets the cascade origin of the inserted stylesheet.
+ * Default is 'author'.
+ */
+ cssOrigin?: ('user' | 'author');
+ }
+
+ interface IpcMessageEvent extends DOMEvent {
+ /**
+ * pair of `[processId, frameId]`.
+ */
+ frameId: [number, number];
+ channel: string;
+ args: any[];
+ }
+
+ interface Item {
+ /**
+ * The path to the file being dragged.
+ */
+ file: string;
+ /**
+ * The paths to the files being dragged. (`files` will override `file` field)
+ */
+ files?: string[];
+ /**
+ * The image must be non-empty on macOS.
+ */
+ icon: (NativeImage) | (string);
+ }
+
+ interface JumpListSettings {
+ /**
+ * The minimum number of items that will be shown in the Jump List (for a more
+ * detailed description of this value see the MSDN docs).
+ */
+ minItems: number;
+ /**
+ * Array of `JumpListItem` objects that correspond to items that the user has
+ * explicitly removed from custom categories in the Jump List. These items must not
+ * be re-added to the Jump List in the **next** call to `app.setJumpList()`,
+ * Windows will not display any custom category that contains any of the removed
+ * items.
+ */
+ removedItems: JumpListItem[];
+ }
+
+ interface LoadCommitEvent extends DOMEvent {
+ url: string;
+ isMainFrame: boolean;
+ }
+
+ interface LoadExtensionOptions {
+ /**
+ * Whether to allow the extension to read local files over `file://` protocol and
+ * inject content scripts into `file://` pages. This is required e.g. for loading
+ * devtools extensions on `file://` URLs. Defaults to false.
+ */
+ allowFileAccess: boolean;
+ }
+
+ interface LoadFileOptions {
+ /**
+ * Passed to `url.format()`.
+ */
+ query?: Record<string, string>;
+ /**
+ * Passed to `url.format()`.
+ */
+ search?: string;
+ /**
+ * Passed to `url.format()`.
+ */
+ hash?: string;
+ }
+
+ interface LoadURLOptions {
+ /**
+ * An HTTP Referrer url.
+ */
+ httpReferrer?: (string) | (Referrer);
+ /**
+ * A user agent originating the request.
+ */
+ userAgent?: string;
+ /**
+ * Extra headers separated by "\n"
+ */
+ extraHeaders?: string;
+ postData?: Array<(UploadRawData) | (UploadFile)>;
+ /**
+ * Base url (with trailing path separator) for files to be loaded by the data url.
+ * This is needed only if the specified `url` is a data url and needs to load other
+ * files.
+ */
+ baseURLForDataURL?: string;
+ }
+
+ interface LoginItemSettings {
+ /**
+ * `true` if the app is set to open at login.
+ */
+ openAtLogin: boolean;
+ /**
+ * `true` if the app is set to open as hidden at login. This setting is not
+ * available on MAS builds.
+ *
+ * @platform darwin
+ */
+ openAsHidden: boolean;
+ /**
+ * `true` if the app was opened at login automatically. This setting is not
+ * available on MAS builds.
+ *
+ * @platform darwin
+ */
+ wasOpenedAtLogin: boolean;
+ /**
+ * `true` if the app was opened as a hidden login item. This indicates that the app
+ * should not open any windows at startup. This setting is not available on MAS
+ * builds.
+ *
+ * @platform darwin
+ */
+ wasOpenedAsHidden: boolean;
+ /**
+ * `true` if the app was opened as a login item that should restore the state from
+ * the previous session. This indicates that the app should restore the windows
+ * that were open the last time the app was closed. This setting is not available
+ * on MAS builds.
+ *
+ * @platform darwin
+ */
+ restoreState: boolean;
+ /**
+ * `true` if app is set to open at login and its run key is not deactivated. This
+ * differs from `openAtLogin` as it ignores the `args` option, this property will
+ * be true if the given executable would be launched at login with **any**
+ * arguments.
+ *
+ * @platform win32
+ */
+ executableWillLaunchAtLogin: boolean;
+ launchItems: LaunchItems[];
+ }
+
+ interface LoginItemSettingsOptions {
+ /**
+ * The executable path to compare against. Defaults to `process.execPath`.
+ *
+ * @platform win32
+ */
+ path?: string;
+ /**
+ * The command-line arguments to compare against. Defaults to an empty array.
+ *
+ * @platform win32
+ */
+ args?: string[];
+ }
+
+ interface MenuItemConstructorOptions {
+ /**
+ * Will be called with `click(menuItem, browserWindow, event)` when the menu item
+ * is clicked.
+ */
+ click?: (menuItem: MenuItem, browserWindow: (BrowserWindow) | (undefined), event: KeyboardEvent) => void;
+ /**
+ * Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`,
+ * `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`,
+ * `zoomOut`, `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`,
+ * `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`,
+ * `showSubstitutions`, `toggleSmartQuotes`, `toggleSmartDashes`,
+ * `toggleTextReplacement`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`,
+ * `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`,
+ * `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `showAllTabs`,
+ * `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu`
+ * - Define the action of the menu item, when specified the `click` property will
+ * be ignored. See roles.
+ */
+ role?: ('undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'pasteAndMatchStyle' | 'delete' | 'selectAll' | 'reload' | 'forceReload' | 'toggleDevTools' | 'resetZoom' | 'zoomIn' | 'zoomOut' | 'toggleSpellChecker' | 'togglefullscreen' | 'window' | 'minimize' | 'close' | 'help' | 'about' | 'services' | 'hide' | 'hideOthers' | 'unhide' | 'quit' | 'showSubstitutions' | 'toggleSmartQuotes' | 'toggleSmartDashes' | 'toggleTextReplacement' | 'startSpeaking' | 'stopSpeaking' | 'zoom' | 'front' | 'appMenu' | 'fileMenu' | 'editMenu' | 'viewMenu' | 'shareMenu' | 'recentDocuments' | 'toggleTabBar' | 'selectNextTab' | 'selectPreviousTab' | 'showAllTabs' | 'mergeAllWindows' | 'clearRecentDocuments' | 'moveTabToNewWindow' | 'windowMenu');
+ /**
+ * Can be `normal`, `separator`, `submenu`, `checkbox` or `radio`.
+ */
+ type?: ('normal' | 'separator' | 'submenu' | 'checkbox' | 'radio');
+ label?: string;
+ sublabel?: string;
+ /**
+ * Hover text for this menu item.
+ *
+ * @platform darwin
+ */
+ toolTip?: string;
+ accelerator?: Accelerator;
+ icon?: (NativeImage) | (string);
+ /**
+ * If false, the menu item will be greyed out and unclickable.
+ */
+ enabled?: boolean;
+ /**
+ * default is `true`, and when `false` will prevent the accelerator from triggering
+ * the item if the item is not visible.
+ *
+ * @platform darwin
+ */
+ acceleratorWorksWhenHidden?: boolean;
+ /**
+ * If false, the menu item will be entirely hidden.
+ */
+ visible?: boolean;
+ /**
+ * Should only be specified for `checkbox` or `radio` type menu items.
+ */
+ checked?: boolean;
+ /**
+ * If false, the accelerator won't be registered with the system, but it will still
+ * be displayed. Defaults to true.
+ *
+ * @platform linux,win32
+ */
+ registerAccelerator?: boolean;
+ /**
+ * The item to share when the `role` is `shareMenu`.
+ *
+ * @platform darwin
+ */
+ sharingItem?: SharingItem;
+ /**
+ * Should be specified for `submenu` type menu items. If `submenu` is specified,
+ * the `type: 'submenu'` can be omitted. If the value is not a `Menu` then it will
+ * be automatically converted to one using `Menu.buildFromTemplate`.
+ */
+ submenu?: (MenuItemConstructorOptions[]) | (Menu);
+ /**
+ * Unique within a single menu. If defined then it can be used as a reference to
+ * this item by the position attribute.
+ */
+ id?: string;
+ /**
+ * Inserts this item before the item with the specified label. If the referenced
+ * item doesn't exist the item will be inserted at the end of the menu. Also
+ * implies that the menu item in question should be placed in the same “group” as
+ * the item.
+ */
+ before?: string[];
+ /**
+ * Inserts this item after the item with the specified label. If the referenced
+ * item doesn't exist the item will be inserted at the end of the menu.
+ */
+ after?: string[];
+ /**
+ * Provides a means for a single context menu to declare the placement of their
+ * containing group before the containing group of the item with the specified
+ * label.
+ */
+ beforeGroupContaining?: string[];
+ /**
+ * Provides a means for a single context menu to declare the placement of their
+ * containing group after the containing group of the item with the specified
+ * label.
+ */
+ afterGroupContaining?: string[];
+ }
+
+ interface MessageBoxOptions {
+ /**
+ * Content of the message box.
+ */
+ message: string;
+ /**
+ * Can be `none`, `info`, `error`, `question` or `warning`. On Windows, `question`
+ * displays the same icon as `info`, unless you set an icon using the `icon`
+ * option. On macOS, both `warning` and `error` display the same warning icon.
+ */
+ type?: ('none' | 'info' | 'error' | 'question' | 'warning');
+ /**
+ * Array of texts for buttons. On Windows, an empty array will result in one button
+ * labeled "OK".
+ */
+ buttons?: string[];
+ /**
+ * Index of the button in the buttons array which will be selected by default when
+ * the message box opens.
+ */
+ defaultId?: number;
+ /**
+ * Pass an instance of AbortSignal to optionally close the message box, the message
+ * box will behave as if it was cancelled by the user. On macOS, `signal` does not
+ * work with message boxes that do not have a parent window, since those message
+ * boxes run synchronously due to platform limitations.
+ */
+ signal?: AbortSignal;
+ /**
+ * Title of the message box, some platforms will not show it.
+ */
+ title?: string;
+ /**
+ * Extra information of the message.
+ */
+ detail?: string;
+ /**
+ * If provided, the message box will include a checkbox with the given label.
+ */
+ checkboxLabel?: string;
+ /**
+ * Initial checked state of the checkbox. `false` by default.
+ */
+ checkboxChecked?: boolean;
+ icon?: (NativeImage) | (string);
+ /**
+ * Custom width of the text in the message box.
+ *
+ * @platform darwin
+ */
+ textWidth?: number;
+ /**
+ * The index of the button to be used to cancel the dialog, via the `Esc` key. By
+ * default this is assigned to the first button with "cancel" or "no" as the label.
+ * If no such labeled buttons exist and this option is not set, `0` will be used as
+ * the return value.
+ */
+ cancelId?: number;
+ /**
+ * On Windows Electron will try to figure out which one of the `buttons` are common
+ * buttons (like "Cancel" or "Yes"), and show the others as command links in the
+ * dialog. This can make the dialog appear in the style of modern Windows apps. If
+ * you don't like this behavior, you can set `noLink` to `true`.
+ */
+ noLink?: boolean;
+ /**
+ * Normalize the keyboard access keys across platforms. Default is `false`.
+ * Enabling this assumes `&` is used in the button labels for the placement of the
+ * keyboard shortcut access key and labels will be converted so they work correctly
+ * on each platform, `&` characters are removed on macOS, converted to `_` on
+ * Linux, and left untouched on Windows. For example, a button label of `Vie&w`
+ * will be converted to `Vie_w` on Linux and `View` on macOS and can be selected
+ * via `Alt-W` on Windows and Linux.
+ */
+ normalizeAccessKeys?: boolean;
+ }
+
+ interface MessageBoxReturnValue {
+ /**
+ * The index of the clicked button.
+ */
+ response: number;
+ /**
+ * The checked state of the checkbox if `checkboxLabel` was set. Otherwise `false`.
+ */
+ checkboxChecked: boolean;
+ }
+
+ interface MessageBoxSyncOptions {
+ /**
+ * Content of the message box.
+ */
+ message: string;
+ /**
+ * Can be `none`, `info`, `error`, `question` or `warning`. On Windows, `question`
+ * displays the same icon as `info`, unless you set an icon using the `icon`
+ * option. On macOS, both `warning` and `error` display the same warning icon.
+ */
+ type?: ('none' | 'info' | 'error' | 'question' | 'warning');
+ /**
+ * Array of texts for buttons. On Windows, an empty array will result in one button
+ * labeled "OK".
+ */
+ buttons?: string[];
+ /**
+ * Index of the button in the buttons array which will be selected by default when
+ * the message box opens.
+ */
+ defaultId?: number;
+ /**
+ * Title of the message box, some platforms will not show it.
+ */
+ title?: string;
+ /**
+ * Extra information of the message.
+ */
+ detail?: string;
+ icon?: (NativeImage) | (string);
+ /**
+ * Custom width of the text in the message box.
+ *
+ * @platform darwin
+ */
+ textWidth?: number;
+ /**
+ * The index of the button to be used to cancel the dialog, via the `Esc` key. By
+ * default this is assigned to the first button with "cancel" or "no" as the label.
+ * If no such labeled buttons exist and this option is not set, `0` will be used as
+ * the return value.
+ */
+ cancelId?: number;
+ /**
+ * On Windows Electron will try to figure out which one of the `buttons` are common
+ * buttons (like "Cancel" or "Yes"), and show the others as command links in the
+ * dialog. This can make the dialog appear in the style of modern Windows apps. If
+ * you don't like this behavior, you can set `noLink` to `true`.
+ */
+ noLink?: boolean;
+ /**
+ * Normalize the keyboard access keys across platforms. Default is `false`.
+ * Enabling this assumes `&` is used in the button labels for the placement of the
+ * keyboard shortcut access key and labels will be converted so they work correctly
+ * on each platform, `&` characters are removed on macOS, converted to `_` on
+ * Linux, and left untouched on Windows. For example, a button label of `Vie&w`
+ * will be converted to `Vie_w` on Linux and `View` on macOS and can be selected
+ * via `Alt-W` on Windows and Linux.
+ */
+ normalizeAccessKeys?: boolean;
+ }
+
+ interface MessageDetails {
+ /**
+ * The actual console message
+ */
+ message: string;
+ /**
+ * The version ID of the service worker that sent the log message
+ */
+ versionId: number;
+ /**
+ * The type of source for this message. Can be `javascript`, `xml`, `network`,
+ * `console-api`, `storage`, `rendering`, `security`, `deprecation`, `worker`,
+ * `violation`, `intervention`, `recommendation` or `other`.
+ */
+ source: ('javascript' | 'xml' | 'network' | 'console-api' | 'storage' | 'rendering' | 'security' | 'deprecation' | 'worker' | 'violation' | 'intervention' | 'recommendation' | 'other');
+ /**
+ * The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and
+ * `error`.
+ */
+ level: number;
+ /**
+ * The URL the message came from
+ */
+ sourceUrl: string;
+ /**
+ * The line number of the source that triggered this console message
+ */
+ lineNumber: number;
+ }
+
+ interface MessageEvent {
+ data: any;
+ ports: MessagePortMain[];
+ }
+
+ interface MoveToApplicationsFolderOptions {
+ /**
+ * A handler for potential conflict in move failure.
+ */
+ conflictHandler?: (conflictType: 'exists' | 'existsAndRunning') => boolean;
+ }
+
+ interface NotificationConstructorOptions {
+ /**
+ * A title for the notification, which will be displayed at the top of the
+ * notification window when it is shown.
+ */
+ title?: string;
+ /**
+ * A subtitle for the notification, which will be displayed below the title.
+ *
+ * @platform darwin
+ */
+ subtitle?: string;
+ /**
+ * The body text of the notification, which will be displayed below the title or
+ * subtitle.
+ */
+ body?: string;
+ /**
+ * Whether or not to suppress the OS notification noise when showing the
+ * notification.
+ */
+ silent?: boolean;
+ /**
+ * An icon to use in the notification.
+ */
+ icon?: (string) | (NativeImage);
+ /**
+ * Whether or not to add an inline reply option to the notification.
+ *
+ * @platform darwin
+ */
+ hasReply?: boolean;
+ /**
+ * The timeout duration of the notification. Can be 'default' or 'never'.
+ *
+ * @platform linux,win32
+ */
+ timeoutType?: ('default' | 'never');
+ /**
+ * The placeholder to write in the inline reply input field.
+ *
+ * @platform darwin
+ */
+ replyPlaceholder?: string;
+ /**
+ * The name of the sound file to play when the notification is shown.
+ *
+ * @platform darwin
+ */
+ sound?: string;
+ /**
+ * The urgency level of the notification. Can be 'normal', 'critical', or 'low'.
+ *
+ * @platform linux
+ */
+ urgency?: ('normal' | 'critical' | 'low');
+ /**
+ * Actions to add to the notification. Please read the available actions and
+ * limitations in the `NotificationAction` documentation.
+ *
+ * @platform darwin
+ */
+ actions?: NotificationAction[];
+ /**
+ * A custom title for the close button of an alert. An empty string will cause the
+ * default localized text to be used.
+ *
+ * @platform darwin
+ */
+ closeButtonText?: string;
+ /**
+ * A custom description of the Notification on Windows superseding all properties
+ * above. Provides full customization of design and behavior of the notification.
+ *
+ * @platform win32
+ */
+ toastXml?: string;
+ }
+
+ interface OnBeforeRedirectListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ redirectURL: string;
+ statusCode: number;
+ statusLine: string;
+ /**
+ * The server IP address that the request was actually sent to.
+ */
+ ip?: string;
+ fromCache: boolean;
+ responseHeaders?: Record<string, string[]>;
+ }
+
+ interface OnBeforeRequestListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ uploadData: UploadData[];
+ }
+
+ interface OnBeforeSendHeadersListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ uploadData?: UploadData[];
+ requestHeaders: Record<string, string>;
+ }
+
+ interface OnCompletedListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ responseHeaders?: Record<string, string[]>;
+ fromCache: boolean;
+ statusCode: number;
+ statusLine: string;
+ error: string;
+ }
+
+ interface OnErrorOccurredListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ fromCache: boolean;
+ /**
+ * The error description.
+ */
+ error: string;
+ }
+
+ interface OnHeadersReceivedListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ statusLine: string;
+ statusCode: number;
+ responseHeaders?: Record<string, string[]>;
+ }
+
+ interface OnResponseStartedListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ responseHeaders?: Record<string, string[]>;
+ /**
+ * Indicates whether the response was fetched from disk cache.
+ */
+ fromCache: boolean;
+ statusCode: number;
+ statusLine: string;
+ }
+
+ interface OnSendHeadersListenerDetails {
+ id: number;
+ url: string;
+ method: string;
+ webContentsId?: number;
+ webContents?: WebContents;
+ frame?: WebFrameMain;
+ /**
+ * Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`,
+ * `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
+ */
+ resourceType: ('mainFrame' | 'subFrame' | 'stylesheet' | 'script' | 'image' | 'font' | 'object' | 'xhr' | 'ping' | 'cspReport' | 'media' | 'webSocket' | 'other');
+ referrer: string;
+ timestamp: number;
+ requestHeaders: Record<string, string>;
+ }
+
+ interface OpenDevToolsOptions {
+ /**
+ * Opens the devtools with specified dock state, can be `left`, `right`, `bottom`,
+ * `undocked`, `detach`. Defaults to last used dock state. In `undocked` mode it's
+ * possible to dock back. In `detach` mode it's not.
+ */
+ mode: ('left' | 'right' | 'bottom' | 'undocked' | 'detach');
+ /**
+ * Whether to bring the opened devtools window to the foreground. The default is
+ * `true`.
+ */
+ activate?: boolean;
+ /**
+ * A title for the DevTools window (only in `undocked` or `detach` mode).
+ */
+ title?: string;
+ }
+
+ interface OpenDialogOptions {
+ title?: string;
+ defaultPath?: string;
+ /**
+ * Custom label for the confirmation button, when left empty the default label will
+ * be used.
+ */
+ buttonLabel?: string;
+ filters?: FileFilter[];
+ /**
+ * Contains which features the dialog should use. The following values are
+ * supported:
+ */
+ properties?: Array<'openFile' | 'openDirectory' | 'multiSelections' | 'showHiddenFiles' | 'createDirectory' | 'promptToCreate' | 'noResolveAliases' | 'treatPackageAsDirectory' | 'dontAddToRecent'>;
+ /**
+ * Message to display above input boxes.
+ *
+ * @platform darwin
+ */
+ message?: string;
+ /**
+ * Create security scoped bookmarks when packaged for the Mac App Store.
+ *
+ * @platform darwin,mas
+ */
+ securityScopedBookmarks?: boolean;
+ }
+
+ interface OpenDialogReturnValue {
+ /**
+ * whether or not the dialog was canceled.
+ */
+ canceled: boolean;
+ /**
+ * An array of file paths chosen by the user. If the dialog is cancelled this will
+ * be an empty array.
+ */
+ filePaths: string[];
+ /**
+ * An array matching the `filePaths` array of base64 encoded strings which contains
+ * security scoped bookmark data. `securityScopedBookmarks` must be enabled for
+ * this to be populated. (For return values, see table here.)
+ *
+ * @platform darwin,mas
+ */
+ bookmarks?: string[];
+ }
+
+ interface OpenDialogSyncOptions {
+ title?: string;
+ defaultPath?: string;
+ /**
+ * Custom label for the confirmation button, when left empty the default label will
+ * be used.
+ */
+ buttonLabel?: string;
+ filters?: FileFilter[];
+ /**
+ * Contains which features the dialog should use. The following values are
+ * supported:
+ */
+ properties?: Array<'openFile' | 'openDirectory' | 'multiSelections' | 'showHiddenFiles' | 'createDirectory' | 'promptToCreate' | 'noResolveAliases' | 'treatPackageAsDirectory' | 'dontAddToRecent'>;
+ /**
+ * Message to display above input boxes.
+ *
+ * @platform darwin
+ */
+ message?: string;
+ /**
+ * Create security scoped bookmarks when packaged for the Mac App Store.
+ *
+ * @platform darwin,mas
+ */
+ securityScopedBookmarks?: boolean;
+ }
+
+ interface OpenExternalOptions {
+ /**
+ * `true` to bring the opened application to the foreground. The default is `true`.
+ *
+ * @platform darwin
+ */
+ activate?: boolean;
+ /**
+ * The working directory.
+ *
+ * @platform win32
+ */
+ workingDirectory?: string;
+ /**
+ * Indicates a user initiated launch that enables tracking of frequently used
+ * programs and other behaviors. The default is `false`.
+ *
+ * @platform win32
+ */
+ logUsage?: boolean;
+ }
+
+ interface Options {
+ }
+
+ interface Opts {
+ /**
+ * Keep the page hidden instead of visible. Default is `false`.
+ */
+ stayHidden?: boolean;
+ /**
+ * Keep the system awake instead of allowing it to sleep. Default is `false`.
+ */
+ stayAwake?: boolean;
+ }
+
+ interface PageFaviconUpdatedEvent extends DOMEvent {
+ /**
+ * Array of URLs.
+ */
+ favicons: string[];
+ }
+
+ interface PageTitleUpdatedEvent extends DOMEvent {
+ title: string;
+ explicitSet: boolean;
+ }
+
+ interface Parameters {
+ /**
+ * Specify the screen type to emulate (default: `desktop`):
+ */
+ screenPosition: ('desktop' | 'mobile');
+ /**
+ * Set the emulated screen size (screenPosition == mobile).
+ */
+ screenSize: Size;
+ /**
+ * Position the view on the screen (screenPosition == mobile) (default: `{ x: 0, y:
+ * 0 }`).
+ */
+ viewPosition: Point;
+ /**
+ * Set the device scale factor (if zero defaults to original device scale factor)
+ * (default: `0`).
+ */
+ deviceScaleFactor: number;
+ /**
+ * Set the emulated view size (empty means no override)
+ */
+ viewSize: Size;
+ /**
+ * Scale of emulated view inside available space (not in fit to view mode)
+ * (default: `1`).
+ */
+ scale: number;
+ }
+
+ interface Payment {
+ /**
+ * The identifier of the purchased product.
+ */
+ productIdentifier: string;
+ /**
+ * The quantity purchased.
+ */
+ quantity: number;
+ /**
+ * An opaque identifier for the user’s account on your system.
+ */
+ applicationUsername: string;
+ /**
+ * The details of the discount offer to apply to the payment.
+ */
+ paymentDiscount?: PaymentDiscount;
+ }
+
+ interface PermissionCheckHandlerHandlerDetails {
+ /**
+ * The origin of the frame embedding the frame that made the permission check.
+ * Only set for cross-origin sub frames making permission checks.
+ */
+ embeddingOrigin?: string;
+ /**
+ * The security origin of the `media` check.
+ */
+ securityOrigin?: string;
+ /**
+ * The type of media access being requested, can be `video`, `audio` or `unknown`
+ */
+ mediaType?: ('video' | 'audio' | 'unknown');
+ /**
+ * The last URL the requesting frame loaded. This is not provided for cross-origin
+ * sub frames making permission checks.
+ */
+ requestingUrl?: string;
+ /**
+ * Whether the frame making the request is the main frame
+ */
+ isMainFrame: boolean;
+ }
+
+ interface PermissionRequestHandlerHandlerDetails {
+ /**
+ * The url of the `openExternal` request.
+ */
+ externalURL?: string;
+ /**
+ * The security origin of the `media` request.
+ */
+ securityOrigin?: string;
+ /**
+ * The types of media access being requested, elements can be `video` or `audio`
+ */
+ mediaTypes?: Array<'video' | 'audio'>;
+ /**
+ * The last URL the requesting frame loaded
+ */
+ requestingUrl: string;
+ /**
+ * Whether the frame making the request is the main frame
+ */
+ isMainFrame: boolean;
+ }
+
+ interface PluginCrashedEvent extends DOMEvent {
+ name: string;
+ version: string;
+ }
+
+ interface PopupOptions {
+ /**
+ * Default is the focused window.
+ */
+ window?: BrowserWindow;
+ /**
+ * Default is the current mouse cursor position. Must be declared if `y` is
+ * declared.
+ */
+ x?: number;
+ /**
+ * Default is the current mouse cursor position. Must be declared if `x` is
+ * declared.
+ */
+ y?: number;
+ /**
+ * The index of the menu item to be positioned under the mouse cursor at the
+ * specified coordinates. Default is -1.
+ *
+ * @platform darwin
+ */
+ positioningItem?: number;
+ /**
+ * This should map to the `menuSourceType` provided by the `context-menu` event. It
+ * is not recommended to set this value manually, only provide values you receive
+ * from other APIs or leave it `undefined`. Can be `none`, `mouse`, `keyboard`,
+ * `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`,
+ * `adjustSelection`, or `adjustSelectionReset`.
+ *
+ * @platform win32,linux
+ */
+ sourceType?: ('none' | 'mouse' | 'keyboard' | 'touch' | 'touchMenu' | 'longPress' | 'longTap' | 'touchHandle' | 'stylus' | 'adjustSelection' | 'adjustSelectionReset');
+ /**
+ * Called when menu is closed.
+ */
+ callback?: () => void;
+ }
+
+ interface PreconnectOptions {
+ /**
+ * URL for preconnect. Only the origin is relevant for opening the socket.
+ */
+ url: string;
+ /**
+ * number of sockets to preconnect. Must be between 1 and 6. Defaults to 1.
+ */
+ numSockets?: number;
+ }
+
+ interface PrintToPDFOptions {
+ /**
+ * Paper orientation.`true` for landscape, `false` for portrait. Defaults to false.
+ */
+ landscape?: boolean;
+ /**
+ * Whether to display header and footer. Defaults to false.
+ */
+ displayHeaderFooter?: boolean;
+ /**
+ * Whether to print background graphics. Defaults to false.
+ */
+ printBackground?: boolean;
+ /**
+ * Scale of the webpage rendering. Defaults to 1.
+ */
+ scale?: number;
+ /**
+ * Specify page size of the generated PDF. Can be `A0`, `A1`, `A2`, `A3`, `A4`,
+ * `A5`, `A6`, `Legal`, `Letter`, `Tabloid`, `Ledger`, or an Object containing
+ * `height` and `width` in inches. Defaults to `Letter`.
+ */
+ pageSize?: (('A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'Legal' | 'Letter' | 'Tabloid' | 'Ledger')) | (Size);
+ margins?: Margins;
+ /**
+ * Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which
+ * means print all pages.
+ */
+ pageRanges?: string;
+ /**
+ * HTML template for the print header. Should be valid HTML markup with following
+ * classes used to inject printing values into them: `date` (formatted print date),
+ * `title` (document title), `url` (document location), `pageNumber` (current page
+ * number) and `totalPages` (total pages in the document). For example, `<span
+ * class=title></span>` would generate span containing the title.
+ */
+ headerTemplate?: string;
+ /**
+ * HTML template for the print footer. Should use the same format as the
+ * `headerTemplate`.
+ */
+ footerTemplate?: string;
+ /**
+ * Whether or not to prefer page size as defined by css. Defaults to false, in
+ * which case the content will be scaled to fit the paper size.
+ */
+ preferCSSPageSize?: boolean;
+ }
+
+ interface Privileges {
+ /**
+ * Default false.
+ */
+ standard?: boolean;
+ /**
+ * Default false.
+ */
+ secure?: boolean;
+ /**
+ * Default false.
+ */
+ bypassCSP?: boolean;
+ /**
+ * Default false.
+ */
+ allowServiceWorkers?: boolean;
+ /**
+ * Default false.
+ */
+ supportFetchAPI?: boolean;
+ /**
+ * Default false.
+ */
+ corsEnabled?: boolean;
+ /**
+ * Default false.
+ */
+ stream?: boolean;
+ }
+
+ interface ProgressBarOptions {
+ /**
+ * Mode for the progress bar. Can be `none`, `normal`, `indeterminate`, `error` or
+ * `paused`.
+ *
+ * @platform win32
+ */
+ mode: ('none' | 'normal' | 'indeterminate' | 'error' | 'paused');
+ }
+
+ interface Provider {
+ spellCheck: (words: string[], callback: (misspeltWords: string[]) => void) => void;
+ }
+
+ interface PurchaseProductOpts {
+ /**
+ * The number of items the user wants to purchase.
+ */
+ quantity?: number;
+ /**
+ * The string that associates the transaction with a user account on your service
+ * (applicationUsername).
+ */
+ username?: string;
+ }
+
+ interface ReadBookmark {
+ title: string;
+ url: string;
+ }
+
+ interface RegistrationCompletedDetails {
+ /**
+ * The base URL that a service worker is registered for
+ */
+ scope: string;
+ }
+
+ interface RelaunchOptions {
+ args?: string[];
+ execPath?: string;
+ }
+
+ interface RenderProcessGoneEvent extends DOMEvent {
+ details: RenderProcessGoneDetails;
+ }
+
+ interface Request {
+ hostname: string;
+ certificate: Certificate;
+ validatedCertificate: Certificate;
+ /**
+ * `true` if Chromium recognises the root CA as a standard root. If it isn't then
+ * it's probably the case that this certificate was generated by a MITM proxy whose
+ * root has been installed locally (for example, by a corporate proxy). This should
+ * not be trusted if the `verificationResult` is not `OK`.
+ */
+ isIssuedByKnownRoot: boolean;
+ /**
+ * `OK` if the certificate is trusted, otherwise an error like `CERT_REVOKED`.
+ */
+ verificationResult: string;
+ /**
+ * Error code.
+ */
+ errorCode: number;
+ }
+
+ interface ResizeOptions {
+ /**
+ * Defaults to the image's width.
+ */
+ width?: number;
+ /**
+ * Defaults to the image's height.
+ */
+ height?: number;
+ /**
+ * The desired quality of the resize image. Possible values include `good`,
+ * `better`, or `best`. The default is `best`. These values express a desired
+ * quality/speed tradeoff. They are translated into an algorithm-specific method
+ * that depends on the capabilities (CPU, GPU) of the underlying platform. It is
+ * possible for all three methods to be mapped to the same algorithm on a given
+ * platform.
+ */
+ quality?: ('good' | 'better' | 'best');
+ }
+
+ interface ResolveHostOptions {
+ /**
+ * Requested DNS query type. If unspecified, resolver will pick A or AAAA (or both)
+ * based on IPv4/IPv6 settings:
+ */
+ queryType?: ('A' | 'AAAA');
+ /**
+ * The source to use for resolved addresses. Default allows the resolver to pick an
+ * appropriate source. Only affects use of big external sources (e.g. calling the
+ * system for resolution or using DNS). Even if a source is specified, results can
+ * still come from cache, resolving "localhost" or IP literals, etc. One of the
+ * following values:
+ */
+ source?: ('any' | 'system' | 'dns' | 'mdns' | 'localOnly');
+ /**
+ * Indicates what DNS cache entries, if any, can be used to provide a response. One
+ * of the following values:
+ */
+ cacheUsage?: ('allowed' | 'staleAllowed' | 'disallowed');
+ /**
+ * Controls the resolver's Secure DNS behavior for this request. One of the
+ * following values:
+ */
+ secureDnsPolicy?: ('allow' | 'disable');
+ }
+
+ interface ResourceUsage {
+ images: MemoryUsageDetails;
+ scripts: MemoryUsageDetails;
+ cssStyleSheets: MemoryUsageDetails;
+ xslStyleSheets: MemoryUsageDetails;
+ fonts: MemoryUsageDetails;
+ other: MemoryUsageDetails;
+ }
+
+ interface Response {
+ /**
+ * `false` should be passed in if the dialog is canceled. If the `pairingKind` is
+ * `confirm` or `confirmPin`, this value should indicate if the pairing is
+ * confirmed. If the `pairingKind` is `providePin` the value should be `true` when
+ * a value is provided.
+ */
+ confirmed: boolean;
+ /**
+ * When the `pairingKind` is `providePin` this value should be the required pin for
+ * the Bluetooth device.
+ */
+ pin?: (string) | (null);
+ }
+
+ interface Result {
+ requestId: number;
+ /**
+ * Position of the active match.
+ */
+ activeMatchOrdinal: number;
+ /**
+ * Number of Matches.
+ */
+ matches: number;
+ /**
+ * Coordinates of first match region.
+ */
+ selectionArea: Rectangle;
+ finalUpdate: boolean;
+ }
+
+ interface SaveDialogOptions {
+ /**
+ * The dialog title. Cannot be displayed on some _Linux_ desktop environments.
+ */
+ title?: string;
+ /**
+ * Absolute directory path, absolute file path, or file name to use by default.
+ */
+ defaultPath?: string;
+ /**
+ * Custom label for the confirmation button, when left empty the default label will
+ * be used.
+ */
+ buttonLabel?: string;
+ filters?: FileFilter[];
+ /**
+ * Message to display above text fields.
+ *
+ * @platform darwin
+ */
+ message?: string;
+ /**
+ * Custom label for the text displayed in front of the filename text field.
+ *
+ * @platform darwin
+ */
+ nameFieldLabel?: string;
+ /**
+ * Show the tags input box, defaults to `true`.
+ *
+ * @platform darwin
+ */
+ showsTagField?: boolean;
+ properties?: Array<'showHiddenFiles' | 'createDirectory' | 'treatPackageAsDirectory' | 'showOverwriteConfirmation' | 'dontAddToRecent'>;
+ /**
+ * Create a security scoped bookmark when packaged for the Mac App Store. If this
+ * option is enabled and the file doesn't already exist a blank file will be
+ * created at the chosen path.
+ *
+ * @platform darwin,mas
+ */
+ securityScopedBookmarks?: boolean;
+ }
+
+ interface SaveDialogReturnValue {
+ /**
+ * whether or not the dialog was canceled.
+ */
+ canceled: boolean;
+ /**
+ * If the dialog is canceled, this will be `undefined`.
+ */
+ filePath?: string;
+ /**
+ * Base64 encoded string which contains the security scoped bookmark data for the
+ * saved file. `securityScopedBookmarks` must be enabled for this to be present.
+ * (For return values, see table here.)
+ *
+ * @platform darwin,mas
+ */
+ bookmark?: string;
+ }
+
+ interface SaveDialogSyncOptions {
+ /**
+ * The dialog title. Cannot be displayed on some _Linux_ desktop environments.
+ */
+ title?: string;
+ /**
+ * Absolute directory path, absolute file path, or file name to use by default.
+ */
+ defaultPath?: string;
+ /**
+ * Custom label for the confirmation button, when left empty the default label will
+ * be used.
+ */
+ buttonLabel?: string;
+ filters?: FileFilter[];
+ /**
+ * Message to display above text fields.
+ *
+ * @platform darwin
+ */
+ message?: string;
+ /**
+ * Custom label for the text displayed in front of the filename text field.
+ *
+ * @platform darwin
+ */
+ nameFieldLabel?: string;
+ /**
+ * Show the tags input box, defaults to `true`.
+ *
+ * @platform darwin
+ */
+ showsTagField?: boolean;
+ properties?: Array<'showHiddenFiles' | 'createDirectory' | 'treatPackageAsDirectory' | 'showOverwriteConfirmation' | 'dontAddToRecent'>;
+ /**
+ * Create a security scoped bookmark when packaged for the Mac App Store. If this
+ * option is enabled and the file doesn't already exist a blank file will be
+ * created at the chosen path.
+ *
+ * @platform darwin,mas
+ */
+ securityScopedBookmarks?: boolean;
+ }
+
+ interface SelectHidDeviceDetails {
+ deviceList: HIDDevice[];
+ frame: WebFrameMain;
+ }
+
+ interface SelectUsbDeviceDetails {
+ deviceList: USBDevice[];
+ frame: WebFrameMain;
+ }
+
+ interface SerialPortRevokedDetails {
+ port: SerialPort;
+ frame: WebFrameMain;
+ /**
+ * The origin that the device has been revoked from.
+ */
+ origin: string;
+ }
+
+ interface Settings {
+ /**
+ * `true` to open the app at login, `false` to remove the app as a login item.
+ * Defaults to `false`.
+ */
+ openAtLogin?: boolean;
+ /**
+ * `true` to open the app as hidden. Defaults to `false`. The user can edit this
+ * setting from the System Preferences so
+ * `app.getLoginItemSettings().wasOpenedAsHidden` should be checked when the app is
+ * opened to know the current value. This setting is not available on MAS builds.
+ *
+ * @platform darwin
+ */
+ openAsHidden?: boolean;
+ /**
+ * The executable to launch at login. Defaults to `process.execPath`.
+ *
+ * @platform win32
+ */
+ path?: string;
+ /**
+ * The command-line arguments to pass to the executable. Defaults to an empty
+ * array. Take care to wrap paths in quotes.
+ *
+ * @platform win32
+ */
+ args?: string[];
+ /**
+ * `true` will change the startup approved registry key and `enable / disable` the
+ * App in Task Manager and Windows Settings. Defaults to `true`.
+ *
+ * @platform win32
+ */
+ enabled?: boolean;
+ /**
+ * value name to write into registry. Defaults to the app's AppUserModelId(). Set
+ * the app's login item settings.
+ *
+ * @platform win32
+ */
+ name?: string;
+ }
+
+ interface SourcesOptions {
+ /**
+ * An array of strings that lists the types of desktop sources to be captured,
+ * available types can be `screen` and `window`.
+ */
+ types: Array<'screen' | 'window'>;
+ /**
+ * The size that the media source thumbnail should be scaled to. Default is `150` x
+ * `150`. Set width or height to 0 when you do not need the thumbnails. This will
+ * save the processing time required for capturing the content of each window and
+ * screen.
+ */
+ thumbnailSize?: Size;
+ /**
+ * Set to true to enable fetching window icons. The default value is false. When
+ * false the appIcon property of the sources return null. Same if a source has the
+ * type screen.
+ */
+ fetchWindowIcons?: boolean;
+ }
+
+ interface SSLConfigConfig {
+ /**
+ * Can be `tls1`, `tls1.1`, `tls1.2` or `tls1.3`. The minimum SSL version to allow
+ * when connecting to remote servers. Defaults to `tls1`.
+ */
+ minVersion?: ('tls1' | 'tls1.1' | 'tls1.2' | 'tls1.3');
+ /**
+ * Can be `tls1.2` or `tls1.3`. The maximum SSL version to allow when connecting to
+ * remote servers. Defaults to `tls1.3`.
+ */
+ maxVersion?: ('tls1.2' | 'tls1.3');
+ /**
+ * List of cipher suites which should be explicitly prevented from being used in
+ * addition to those disabled by the net built-in policy. Supported literal forms:
+ * 0xAABB, where AA is `cipher_suite[0]` and BB is `cipher_suite[1]`, as defined in
+ * RFC 2246, Section 7.4.1.2. Unrecognized but parsable cipher suites in this form
+ * will not return an error. Ex: To disable TLS_RSA_WITH_RC4_128_MD5, specify
+ * 0x0004, while to disable TLS_ECDH_ECDSA_WITH_RC4_128_SHA, specify 0xC002. Note
+ * that TLSv1.3 ciphers cannot be disabled using this mechanism.
+ */
+ disabledCipherSuites?: number[];
+ }
+
+ interface StartLoggingOptions {
+ /**
+ * What kinds of data should be captured. By default, only metadata about requests
+ * will be captured. Setting this to `includeSensitive` will include cookies and
+ * authentication data. Setting it to `everything` will include all bytes
+ * transferred on sockets. Can be `default`, `includeSensitive` or `everything`.
+ */
+ captureMode?: ('default' | 'includeSensitive' | 'everything');
+ /**
+ * When the log grows beyond this size, logging will automatically stop. Defaults
+ * to unlimited.
+ */
+ maxFileSize?: number;
+ }
+
+ interface Streams {
+ video?: (Video) | (WebFrameMain);
+ /**
+ * If a string is specified, can be `loopback` or `loopbackWithMute`. Specifying a
+ * loopback device will capture system audio, and is currently only supported on
+ * Windows. If a WebFrameMain is specified, will capture audio from that frame.
+ */
+ audio?: (('loopback' | 'loopbackWithMute')) | (WebFrameMain);
+ /**
+ * If `audio` is a WebFrameMain and this is set to `true`, then local playback of
+ * audio will not be muted (e.g. using `MediaRecorder` to record `WebFrameMain`
+ * with this flag set to `true` will allow audio to pass through to the speakers
+ * while recording). Default is `false`.
+ */
+ enableLocalEcho?: boolean;
+ }
+
+ interface SystemMemoryInfo {
+ /**
+ * The total amount of physical memory in Kilobytes available to the system.
+ */
+ total: number;
+ /**
+ * The total amount of memory not being used by applications or disk cache.
+ */
+ free: number;
+ /**
+ * The total amount of swap memory in Kilobytes available to the system.
+ *
+ * @platform win32,linux
+ */
+ swapTotal: number;
+ /**
+ * The free amount of swap memory in Kilobytes available to the system.
+ *
+ * @platform win32,linux
+ */
+ swapFree: number;
+ }
+
+ interface TitleBarOverlay {
+ /**
+ * The CSS color of the Window Controls Overlay when enabled. Default is the system
+ * color.
+ *
+ * @platform win32
+ */
+ color?: string;
+ /**
+ * The CSS color of the symbols on the Window Controls Overlay when enabled.
+ * Default is the system color.
+ *
+ * @platform win32
+ */
+ symbolColor?: string;
+ /**
+ * The height of the title bar and Window Controls Overlay in pixels. Default is
+ * system height.
+ *
+ * @platform darwin,win32
+ */
+ height?: number;
+ }
+
+ interface TitleBarOverlayOptions {
+ /**
+ * The CSS color of the Window Controls Overlay when enabled.
+ *
+ * @platform win32
+ */
+ color?: string;
+ /**
+ * The CSS color of the symbols on the Window Controls Overlay when enabled.
+ *
+ * @platform win32
+ */
+ symbolColor?: string;
+ /**
+ * The height of the title bar and Window Controls Overlay in pixels.
+ *
+ * @platform win32
+ */
+ height?: number;
+ }
+
+ interface TitleOptions {
+ /**
+ * The font family variant to display, can be `monospaced` or `monospacedDigit`.
+ * `monospaced` is available in macOS 10.15+ When left blank, the title uses the
+ * default system font.
+ */
+ fontType?: ('monospaced' | 'monospacedDigit');
+ }
+
+ interface ToBitmapOptions {
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface ToDataURLOptions {
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface ToPNGOptions {
+ /**
+ * Defaults to 1.0.
+ */
+ scaleFactor?: number;
+ }
+
+ interface TouchBarButtonConstructorOptions {
+ /**
+ * Button text.
+ */
+ label?: string;
+ /**
+ * A short description of the button for use by screenreaders like VoiceOver.
+ */
+ accessibilityLabel?: string;
+ /**
+ * Button background color in hex format, i.e `#ABCDEF`.
+ */
+ backgroundColor?: string;
+ /**
+ * Button icon.
+ */
+ icon?: (NativeImage) | (string);
+ /**
+ * Can be `left`, `right` or `overlay`. Defaults to `overlay`.
+ */
+ iconPosition?: ('left' | 'right' | 'overlay');
+ /**
+ * Function to call when the button is clicked.
+ */
+ click?: () => void;
+ /**
+ * Whether the button is in an enabled state. Default is `true`.
+ */
+ enabled?: boolean;
+ }
+
+ interface TouchBarColorPickerConstructorOptions {
+ /**
+ * Array of hex color strings to appear as possible colors to select.
+ */
+ availableColors?: string[];
+ /**
+ * The selected hex color in the picker, i.e `#ABCDEF`.
+ */
+ selectedColor?: string;
+ /**
+ * Function to call when a color is selected.
+ */
+ change?: (color: string) => void;
+ }
+
+ interface TouchBarConstructorOptions {
+ items?: Array<(TouchBarButton) | (TouchBarColorPicker) | (TouchBarGroup) | (TouchBarLabel) | (TouchBarPopover) | (TouchBarScrubber) | (TouchBarSegmentedControl) | (TouchBarSlider) | (TouchBarSpacer)>;
+ escapeItem?: (TouchBarButton) | (TouchBarColorPicker) | (TouchBarGroup) | (TouchBarLabel) | (TouchBarPopover) | (TouchBarScrubber) | (TouchBarSegmentedControl) | (TouchBarSlider) | (TouchBarSpacer) | (null);
+ }
+
+ interface TouchBarGroupConstructorOptions {
+ /**
+ * Items to display as a group.
+ */
+ items: TouchBar;
+ }
+
+ interface TouchBarLabelConstructorOptions {
+ /**
+ * Text to display.
+ */
+ label?: string;
+ /**
+ * A short description of the button for use by screenreaders like VoiceOver.
+ */
+ accessibilityLabel?: string;
+ /**
+ * Hex color of text, i.e `#ABCDEF`.
+ */
+ textColor?: string;
+ }
+
+ interface TouchBarPopoverConstructorOptions {
+ /**
+ * Popover button text.
+ */
+ label?: string;
+ /**
+ * Popover button icon.
+ */
+ icon?: NativeImage;
+ /**
+ * Items to display in the popover.
+ */
+ items: TouchBar;
+ /**
+ * `true` to display a close button on the left of the popover, `false` to not show
+ * it. Default is `true`.
+ */
+ showCloseButton?: boolean;
+ }
+
+ interface TouchBarScrubberConstructorOptions {
+ /**
+ * An array of items to place in this scrubber.
+ */
+ items: ScrubberItem[];
+ /**
+ * Called when the user taps an item that was not the last tapped item.
+ */
+ select?: (selectedIndex: number) => void;
+ /**
+ * Called when the user taps any item.
+ */
+ highlight?: (highlightedIndex: number) => void;
+ /**
+ * Selected item style. Can be `background`, `outline` or `none`. Defaults to
+ * `none`.
+ */
+ selectedStyle?: ('background' | 'outline' | 'none');
+ /**
+ * Selected overlay item style. Can be `background`, `outline` or `none`. Defaults
+ * to `none`.
+ */
+ overlayStyle?: ('background' | 'outline' | 'none');
+ /**
+ * Whether to show arrow buttons. Defaults to `false` and is only shown if `items`
+ * is non-empty.
+ */
+ showArrowButtons?: boolean;
+ /**
+ * Can be `fixed` or `free`. The default is `free`.
+ */
+ mode?: ('fixed' | 'free');
+ /**
+ * Defaults to `true`.
+ */
+ continuous?: boolean;
+ }
+
+ interface TouchBarSegmentedControlConstructorOptions {
+ /**
+ * Style of the segments:
+ */
+ segmentStyle?: ('automatic' | 'rounded' | 'textured-rounded' | 'round-rect' | 'textured-square' | 'capsule' | 'small-square' | 'separated');
+ /**
+ * The selection mode of the control:
+ */
+ mode?: ('single' | 'multiple' | 'buttons');
+ /**
+ * An array of segments to place in this control.
+ */
+ segments: SegmentedControlSegment[];
+ /**
+ * The index of the currently selected segment, will update automatically with user
+ * interaction. When the mode is `multiple` it will be the last selected item.
+ */
+ selectedIndex?: number;
+ /**
+ * Called when the user selects a new segment.
+ */
+ change?: (selectedIndex: number, isSelected: boolean) => void;
+ }
+
+ interface TouchBarSliderConstructorOptions {
+ /**
+ * Label text.
+ */
+ label?: string;
+ /**
+ * Selected value.
+ */
+ value?: number;
+ /**
+ * Minimum value.
+ */
+ minValue?: number;
+ /**
+ * Maximum value.
+ */
+ maxValue?: number;
+ /**
+ * Function to call when the slider is changed.
+ */
+ change?: (newValue: number) => void;
+ }
+
+ interface TouchBarSpacerConstructorOptions {
+ /**
+ * Size of spacer, possible values are:
+ */
+ size?: ('small' | 'large' | 'flexible');
+ }
+
+ interface TraceBufferUsageReturnValue {
+ value: number;
+ percentage: number;
+ }
+
+ interface UpdateTargetUrlEvent extends DOMEvent {
+ url: string;
+ }
+
+ interface UploadProgress {
+ /**
+ * Whether the request is currently active. If this is false no other properties
+ * will be set
+ */
+ active: boolean;
+ /**
+ * Whether the upload has started. If this is false both `current` and `total` will
+ * be set to 0.
+ */
+ started: boolean;
+ /**
+ * The number of bytes that have been uploaded so far
+ */
+ current: number;
+ /**
+ * The number of bytes that will be uploaded this request
+ */
+ total: number;
+ }
+
+ interface UsbDeviceRevokedDetails {
+ device: USBDevice;
+ /**
+ * The origin that the device has been revoked from.
+ */
+ origin?: string;
+ }
+
+ interface USBProtectedClassesHandlerHandlerDetails {
+ /**
+ * The current list of protected USB classes. Possible class values include:
+ */
+ protectedClasses: Array<'audio' | 'audio-video' | 'hid' | 'mass-storage' | 'smart-card' | 'video' | 'wireless'>;
+ }
+
+ interface VisibleOnAllWorkspacesOptions {
+ /**
+ * Sets whether the window should be visible above fullscreen windows.
+ *
+ * @platform darwin
+ */
+ visibleOnFullScreen?: boolean;
+ /**
+ * Calling setVisibleOnAllWorkspaces will by default transform the process type
+ * between UIElementApplication and ForegroundApplication to ensure the correct
+ * behavior. However, this will hide the window and dock for a short time every
+ * time it is called. If your window is already of type UIElementApplication, you
+ * can bypass this transformation by passing true to skipTransformProcessType.
+ *
+ * @platform darwin
+ */
+ skipTransformProcessType?: boolean;
+ }
+
+ interface WebContentsAudioStateChangedEventParams {
+ /**
+ * True if one or more frames or child `webContents` are emitting audio.
+ */
+ audible: boolean;
+ }
+
+ interface WebContentsDidRedirectNavigationEventParams {
+ /**
+ * The URL the frame is navigating to.
+ */
+ url: string;
+ /**
+ * Whether the navigation happened without changing document. Examples of same
+ * document navigations are reference fragment navigations, pushState/replaceState,
+ * and same page history navigation.
+ */
+ isSameDocument: boolean;
+ /**
+ * True if the navigation is taking place in a main frame.
+ */
+ isMainFrame: boolean;
+ /**
+ * The frame to be navigated.
+ */
+ frame: WebFrameMain;
+ /**
+ * The frame which initiated the navigation, which can be a parent frame (e.g. via
+ * `window.open` with a frame's name), or null if the navigation was not initiated
+ * by a frame. This can also be null if the initiating frame was deleted before the
+ * event was emitted.
+ */
+ initiator?: WebFrameMain;
+ }
+
+ interface WebContentsDidStartNavigationEventParams {
+ /**
+ * The URL the frame is navigating to.
+ */
+ url: string;
+ /**
+ * Whether the navigation happened without changing document. Examples of same
+ * document navigations are reference fragment navigations, pushState/replaceState,
+ * and same page history navigation.
+ */
+ isSameDocument: boolean;
+ /**
+ * True if the navigation is taking place in a main frame.
+ */
+ isMainFrame: boolean;
+ /**
+ * The frame to be navigated.
+ */
+ frame: WebFrameMain;
+ /**
+ * The frame which initiated the navigation, which can be a parent frame (e.g. via
+ * `window.open` with a frame's name), or null if the navigation was not initiated
+ * by a frame. This can also be null if the initiating frame was deleted before the
+ * event was emitted.
+ */
+ initiator?: WebFrameMain;
+ }
+
+ interface WebContentsPrintOptions {
+ /**
+ * Don't ask user for print settings. Default is `false`.
+ */
+ silent?: boolean;
+ /**
+ * Prints the background color and image of the web page. Default is `false`.
+ */
+ printBackground?: boolean;
+ /**
+ * Set the printer device name to use. Must be the system-defined name and not the
+ * 'friendly' name, e.g 'Brother_QL_820NWB' and not 'Brother QL-820NWB'.
+ */
+ deviceName?: string;
+ /**
+ * Set whether the printed web page will be in color or grayscale. Default is
+ * `true`.
+ */
+ color?: boolean;
+ margins?: Margins;
+ /**
+ * Whether the web page should be printed in landscape mode. Default is `false`.
+ */
+ landscape?: boolean;
+ /**
+ * The scale factor of the web page.
+ */
+ scaleFactor?: number;
+ /**
+ * The number of pages to print per page sheet.
+ */
+ pagesPerSheet?: number;
+ /**
+ * Whether the web page should be collated.
+ */
+ collate?: boolean;
+ /**
+ * The number of copies of the web page to print.
+ */
+ copies?: number;
+ /**
+ * The page range to print. On macOS, only one range is honored.
+ */
+ pageRanges?: PageRanges[];
+ /**
+ * Set the duplex mode of the printed web page. Can be `simplex`, `shortEdge`, or
+ * `longEdge`.
+ */
+ duplexMode?: ('simplex' | 'shortEdge' | 'longEdge');
+ dpi?: Record<string, number>;
+ /**
+ * string to be printed as page header.
+ */
+ header?: string;
+ /**
+ * string to be printed as page footer.
+ */
+ footer?: string;
+ /**
+ * Specify page size of the printed document. Can be `A0`, `A1`, `A2`, `A3`, `A4`,
+ * `A5`, `A6`, `Legal`, `Letter`, `Tabloid` or an Object containing `height` and
+ * `width`.
+ */
+ pageSize?: (('A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'Legal' | 'Letter' | 'Tabloid')) | (Size);
+ }
+
+ interface WebContentsWillFrameNavigateEventParams {
+ /**
+ * The URL the frame is navigating to.
+ */
+ url: string;
+ /**
+ * This event does not fire for same document navigations using window.history api
+ * and reference fragment navigations. This property is always set to `false` for
+ * this event.
+ */
+ isSameDocument: boolean;
+ /**
+ * True if the navigation is taking place in a main frame.
+ */
+ isMainFrame: boolean;
+ /**
+ * The frame to be navigated.
+ */
+ frame: WebFrameMain;
+ /**
+ * The frame which initiated the navigation, which can be a parent frame (e.g. via
+ * `window.open` with a frame's name), or null if the navigation was not initiated
+ * by a frame. This can also be null if the initiating frame was deleted before the
+ * event was emitted.
+ */
+ initiator?: WebFrameMain;
+ }
+
+ interface WebContentsWillNavigateEventParams {
+ /**
+ * The URL the frame is navigating to.
+ */
+ url: string;
+ /**
+ * This event does not fire for same document navigations using window.history api
+ * and reference fragment navigations. This property is always set to `false` for
+ * this event.
+ */
+ isSameDocument: boolean;
+ /**
+ * True if the navigation is taking place in a main frame.
+ */
+ isMainFrame: boolean;
+ /**
+ * The frame to be navigated.
+ */
+ frame: WebFrameMain;
+ /**
+ * The frame which initiated the navigation, which can be a parent frame (e.g. via
+ * `window.open` with a frame's name), or null if the navigation was not initiated
+ * by a frame. This can also be null if the initiating frame was deleted before the
+ * event was emitted.
+ */
+ initiator?: WebFrameMain;
+ }
+
+ interface WebContentsWillRedirectEventParams {
+ /**
+ * The URL the frame is navigating to.
+ */
+ url: string;
+ /**
+ * Whether the navigation happened without changing document. Examples of same
+ * document navigations are reference fragment navigations, pushState/replaceState,
+ * and same page history navigation.
+ */
+ isSameDocument: boolean;
+ /**
+ * True if the navigation is taking place in a main frame.
+ */
+ isMainFrame: boolean;
+ /**
+ * The frame to be navigated.
+ */
+ frame: WebFrameMain;
+ /**
+ * The frame which initiated the navigation, which can be a parent frame (e.g. via
+ * `window.open` with a frame's name), or null if the navigation was not initiated
+ * by a frame. This can also be null if the initiating frame was deleted before the
+ * event was emitted.
+ */
+ initiator?: WebFrameMain;
+ }
+
+ interface WebviewTagPrintOptions {
+ /**
+ * Don't ask user for print settings. Default is `false`.
+ */
+ silent?: boolean;
+ /**
+ * Prints the background color and image of the web page. Default is `false`.
+ */
+ printBackground?: boolean;
+ /**
+ * Set the printer device name to use. Must be the system-defined name and not the
+ * 'friendly' name, e.g 'Brother_QL_820NWB' and not 'Brother QL-820NWB'.
+ */
+ deviceName?: string;
+ /**
+ * Set whether the printed web page will be in color or grayscale. Default is
+ * `true`.
+ */
+ color?: boolean;
+ margins?: Margins;
+ /**
+ * Whether the web page should be printed in landscape mode. Default is `false`.
+ */
+ landscape?: boolean;
+ /**
+ * The scale factor of the web page.
+ */
+ scaleFactor?: number;
+ /**
+ * The number of pages to print per page sheet.
+ */
+ pagesPerSheet?: number;
+ /**
+ * Whether the web page should be collated.
+ */
+ collate?: boolean;
+ /**
+ * The number of copies of the web page to print.
+ */
+ copies?: number;
+ /**
+ * The page range to print.
+ */
+ pageRanges?: PageRanges[];
+ /**
+ * Set the duplex mode of the printed web page. Can be `simplex`, `shortEdge`, or
+ * `longEdge`.
+ */
+ duplexMode?: ('simplex' | 'shortEdge' | 'longEdge');
+ dpi?: Record<string, number>;
+ /**
+ * string to be printed as page header.
+ */
+ header?: string;
+ /**
+ * string to be printed as page footer.
+ */
+ footer?: string;
+ /**
+ * Specify page size of the printed document. Can be `A3`, `A4`, `A5`, `Legal`,
+ * `Letter`, `Tabloid` or an Object containing `height` in microns.
+ */
+ pageSize?: (('A3' | 'A4' | 'A5' | 'Legal' | 'Letter' | 'Tabloid')) | (Size);
+ }
+
+ interface WillFrameNavigateEvent extends DOMEvent {
+ url: string;
+ isMainFrame: boolean;
+ frameProcessId: number;
+ frameRoutingId: number;
+ }
+
+ interface WillNavigateEvent extends DOMEvent {
+ url: string;
+ }
+
+ interface WillResizeDetails {
+ /**
+ * The edge of the window being dragged for resizing. Can be `bottom`, `left`,
+ * `right`, `top-left`, `top-right`, `bottom-left` or `bottom-right`.
+ */
+ edge: ('bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right');
+ }
+
+ interface EditFlags {
+ /**
+ * Whether the renderer believes it can undo.
+ */
+ canUndo: boolean;
+ /**
+ * Whether the renderer believes it can redo.
+ */
+ canRedo: boolean;
+ /**
+ * Whether the renderer believes it can cut.
+ */
+ canCut: boolean;
+ /**
+ * Whether the renderer believes it can copy.
+ */
+ canCopy: boolean;
+ /**
+ * Whether the renderer believes it can paste.
+ */
+ canPaste: boolean;
+ /**
+ * Whether the renderer believes it can delete.
+ */
+ canDelete: boolean;
+ /**
+ * Whether the renderer believes it can select all.
+ */
+ canSelectAll: boolean;
+ /**
+ * Whether the renderer believes it can edit text richly.
+ */
+ canEditRichly: boolean;
+ }
+
+ interface Env {
+ }
+
+ interface FoundInPageResult {
+ requestId: number;
+ /**
+ * Position of the active match.
+ */
+ activeMatchOrdinal: number;
+ /**
+ * Number of Matches.
+ */
+ matches: number;
+ /**
+ * Coordinates of first match region.
+ */
+ selectionArea: Rectangle;
+ finalUpdate: boolean;
+ }
+
+ interface LaunchItems {
+ /**
+ * name value of a registry entry.
+ *
+ * @platform win32
+ */
+ name: string;
+ /**
+ * The executable to an app that corresponds to a registry entry.
+ *
+ * @platform win32
+ */
+ path: string;
+ /**
+ * the command-line arguments to pass to the executable.
+ *
+ * @platform win32
+ */
+ args: string[];
+ /**
+ * one of `user` or `machine`. Indicates whether the registry entry is under
+ * `HKEY_CURRENT USER` or `HKEY_LOCAL_MACHINE`.
+ *
+ * @platform win32
+ */
+ scope: string;
+ /**
+ * `true` if the app registry key is startup approved and therefore shows as
+ * `enabled` in Task Manager and Windows settings.
+ *
+ * @platform win32
+ */
+ enabled: boolean;
+ }
+
+ interface Margins {
+ /**
+ * Can be `default`, `none`, `printableArea`, or `custom`. If `custom` is chosen,
+ * you will also need to specify `top`, `bottom`, `left`, and `right`.
+ */
+ marginType?: ('default' | 'none' | 'printableArea' | 'custom');
+ /**
+ * The top margin of the printed web page, in pixels.
+ */
+ top?: number;
+ /**
+ * The bottom margin of the printed web page, in pixels.
+ */
+ bottom?: number;
+ /**
+ * The left margin of the printed web page, in pixels.
+ */
+ left?: number;
+ /**
+ * The right margin of the printed web page, in pixels.
+ */
+ right?: number;
+ }
+
+ interface MediaFlags {
+ /**
+ * Whether the media element has crashed.
+ */
+ inError: boolean;
+ /**
+ * Whether the media element is paused.
+ */
+ isPaused: boolean;
+ /**
+ * Whether the media element is muted.
+ */
+ isMuted: boolean;
+ /**
+ * Whether the media element has audio.
+ */
+ hasAudio: boolean;
+ /**
+ * Whether the media element is looping.
+ */
+ isLooping: boolean;
+ /**
+ * Whether the media element's controls are visible.
+ */
+ isControlsVisible: boolean;
+ /**
+ * Whether the media element's controls are toggleable.
+ */
+ canToggleControls: boolean;
+ /**
+ * Whether the media element can be printed.
+ */
+ canPrint: boolean;
+ /**
+ * Whether or not the media element can be downloaded.
+ */
+ canSave: boolean;
+ /**
+ * Whether the media element can show picture-in-picture.
+ */
+ canShowPictureInPicture: boolean;
+ /**
+ * Whether the media element is currently showing picture-in-picture.
+ */
+ isShowingPictureInPicture: boolean;
+ /**
+ * Whether the media element can be rotated.
+ */
+ canRotate: boolean;
+ /**
+ * Whether the media element can be looped.
+ */
+ canLoop: boolean;
+ }
+
+ interface PageRanges {
+ /**
+ * Index of the first page to print (0-based).
+ */
+ from: number;
+ /**
+ * Index of the last page to print (inclusive) (0-based).
+ */
+ to: number;
+ }
+
+ interface Params {
+ /**
+ * x coordinate.
+ */
+ x: number;
+ /**
+ * y coordinate.
+ */
+ y: number;
+ /**
+ * URL of the link that encloses the node the context menu was invoked on.
+ */
+ linkURL: string;
+ /**
+ * Text associated with the link. May be an empty string if the contents of the
+ * link are an image.
+ */
+ linkText: string;
+ /**
+ * URL of the top level page that the context menu was invoked on.
+ */
+ pageURL: string;
+ /**
+ * URL of the subframe that the context menu was invoked on.
+ */
+ frameURL: string;
+ /**
+ * Source URL for the element that the context menu was invoked on. Elements with
+ * source URLs are images, audio and video.
+ */
+ srcURL: string;
+ /**
+ * Type of the node the context menu was invoked on. Can be `none`, `image`,
+ * `audio`, `video`, `canvas`, `file` or `plugin`.
+ */
+ mediaType: ('none' | 'image' | 'audio' | 'video' | 'canvas' | 'file' | 'plugin');
+ /**
+ * Whether the context menu was invoked on an image which has non-empty contents.
+ */
+ hasImageContents: boolean;
+ /**
+ * Whether the context is editable.
+ */
+ isEditable: boolean;
+ /**
+ * Text of the selection that the context menu was invoked on.
+ */
+ selectionText: string;
+ /**
+ * Title text of the selection that the context menu was invoked on.
+ */
+ titleText: string;
+ /**
+ * Alt text of the selection that the context menu was invoked on.
+ */
+ altText: string;
+ /**
+ * Suggested filename to be used when saving file through 'Save Link As' option of
+ * context menu.
+ */
+ suggestedFilename: string;
+ /**
+ * Rect representing the coordinates in the document space of the selection.
+ */
+ selectionRect: Rectangle;
+ /**
+ * Start position of the selection text.
+ */
+ selectionStartOffset: number;
+ /**
+ * The referrer policy of the frame on which the menu is invoked.
+ */
+ referrerPolicy: Referrer;
+ /**
+ * The misspelled word under the cursor, if any.
+ */
+ misspelledWord: string;
+ /**
+ * An array of suggested words to show the user to replace the `misspelledWord`.
+ * Only available if there is a misspelled word and spellchecker is enabled.
+ */
+ dictionarySuggestions: string[];
+ /**
+ * The character encoding of the frame on which the menu was invoked.
+ */
+ frameCharset: string;
+ /**
+ * If the context menu was invoked on an input field, the type of that field.
+ * Possible values include `none`, `plainText`, `password`, `other`.
+ */
+ inputFieldType: ('none' | 'plainText' | 'password' | 'other');
+ /**
+ * If the context is editable, whether or not spellchecking is enabled.
+ */
+ spellcheckEnabled: boolean;
+ /**
+ * Input source that invoked the context menu. Can be `none`, `mouse`, `keyboard`,
+ * `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`,
+ * `adjustSelection`, or `adjustSelectionReset`.
+ */
+ menuSourceType: ('none' | 'mouse' | 'keyboard' | 'touch' | 'touchMenu' | 'longPress' | 'longTap' | 'touchHandle' | 'stylus' | 'adjustSelection' | 'adjustSelectionReset');
+ /**
+ * The flags for the media element the context menu was invoked on.
+ */
+ mediaFlags: MediaFlags;
+ /**
+ * These flags indicate whether the renderer believes it is able to perform the
+ * corresponding action.
+ */
+ editFlags: EditFlags;
+ }
+
+ interface Video {
+ /**
+ * The id of the stream being granted. This will usually come from a
+ * DesktopCapturerSource object.
+ */
+ id: string;
+ /**
+ * The name of the stream being granted. This will usually come from a
+ * DesktopCapturerSource object.
+ */
+ name: string;
+ }
+
+ interface RemoteMainInterface {
+ app: App;
+ autoUpdater: AutoUpdater;
+ BrowserView: typeof BrowserView;
+ BrowserWindow: typeof BrowserWindow;
+ clipboard: Clipboard;
+ contentTracing: ContentTracing;
+ crashReporter: CrashReporter;
+ desktopCapturer: DesktopCapturer;
+ dialog: Dialog;
+ globalShortcut: GlobalShortcut;
+ inAppPurchase: InAppPurchase;
+ ipcMain: IpcMain;
+ Menu: typeof Menu;
+ MenuItem: typeof MenuItem;
+ MessageChannelMain: typeof MessageChannelMain;
+ nativeImage: typeof NativeImage;
+ nativeTheme: NativeTheme;
+ net: Net;
+ netLog: NetLog;
+ Notification: typeof Notification;
+ powerMonitor: PowerMonitor;
+ powerSaveBlocker: PowerSaveBlocker;
+ protocol: Protocol;
+ pushNotifications: PushNotifications;
+ safeStorage: SafeStorage;
+ screen: Screen;
+ session: typeof Session;
+ ShareMenu: typeof ShareMenu;
+ shell: Shell;
+ systemPreferences: SystemPreferences;
+ TouchBar: typeof TouchBar;
+ Tray: typeof Tray;
+ utilityProcess: typeof UtilityProcess;
+ webContents: typeof WebContents;
+ webFrameMain: typeof WebFrameMain;
+ }
+
+
+
+ namespace Common {
+ type Event<Params extends object = {}> = Electron.Event<Params>;
+ const clipboard: Clipboard;
+ type Clipboard = Electron.Clipboard;
+ const crashReporter: CrashReporter;
+ type CrashReporter = Electron.CrashReporter;
+ const nativeImage: typeof NativeImage;
+ type NativeImage = Electron.NativeImage;
+ const shell: Shell;
+ type Shell = Electron.Shell;
+ type AboutPanelOptionsOptions = Electron.AboutPanelOptionsOptions;
+ type AddRepresentationOptions = Electron.AddRepresentationOptions;
+ type AdjustSelectionOptions = Electron.AdjustSelectionOptions;
+ type AnimationSettings = Electron.AnimationSettings;
+ type AppDetailsOptions = Electron.AppDetailsOptions;
+ type ApplicationInfoForProtocolReturnValue = Electron.ApplicationInfoForProtocolReturnValue;
+ type AuthenticationResponseDetails = Electron.AuthenticationResponseDetails;
+ type AuthInfo = Electron.AuthInfo;
+ type AutoResizeOptions = Electron.AutoResizeOptions;
+ type BeforeSendResponse = Electron.BeforeSendResponse;
+ type BitmapOptions = Electron.BitmapOptions;
+ type BlinkMemoryInfo = Electron.BlinkMemoryInfo;
+ type BluetoothPairingHandlerHandlerDetails = Electron.BluetoothPairingHandlerHandlerDetails;
+ type BrowserViewConstructorOptions = Electron.BrowserViewConstructorOptions;
+ type CallbackResponse = Electron.CallbackResponse;
+ type CertificateTrustDialogOptions = Electron.CertificateTrustDialogOptions;
+ type ClearCodeCachesOptions = Electron.ClearCodeCachesOptions;
+ type ClearStorageDataOptions = Electron.ClearStorageDataOptions;
+ type ClientRequestConstructorOptions = Electron.ClientRequestConstructorOptions;
+ type CloseOpts = Electron.CloseOpts;
+ type Config = Electron.Config;
+ type ConfigureHostResolverOptions = Electron.ConfigureHostResolverOptions;
+ type ConsoleMessageEvent = Electron.ConsoleMessageEvent;
+ type ContextMenuEvent = Electron.ContextMenuEvent;
+ type ContextMenuParams = Electron.ContextMenuParams;
+ type ContinueActivityDetails = Electron.ContinueActivityDetails;
+ type CookiesGetFilter = Electron.CookiesGetFilter;
+ type CookiesSetDetails = Electron.CookiesSetDetails;
+ type CrashReporterStartOptions = Electron.CrashReporterStartOptions;
+ type CreateFromBitmapOptions = Electron.CreateFromBitmapOptions;
+ type CreateFromBufferOptions = Electron.CreateFromBufferOptions;
+ type CreateInterruptedDownloadOptions = Electron.CreateInterruptedDownloadOptions;
+ type Data = Electron.Data;
+ type DefaultFontFamily = Electron.DefaultFontFamily;
+ type Details = Electron.Details;
+ type DevicePermissionHandlerHandlerDetails = Electron.DevicePermissionHandlerHandlerDetails;
+ type DevtoolsOpenUrlEvent = Electron.DevtoolsOpenUrlEvent;
+ type DidChangeThemeColorEvent = Electron.DidChangeThemeColorEvent;
+ type DidCreateWindowDetails = Electron.DidCreateWindowDetails;
+ type DidFailLoadEvent = Electron.DidFailLoadEvent;
+ type DidFrameFinishLoadEvent = Electron.DidFrameFinishLoadEvent;
+ type DidFrameNavigateEvent = Electron.DidFrameNavigateEvent;
+ type DidNavigateEvent = Electron.DidNavigateEvent;
+ type DidNavigateInPageEvent = Electron.DidNavigateInPageEvent;
+ type DidRedirectNavigationEvent = Electron.DidRedirectNavigationEvent;
+ type DidStartNavigationEvent = Electron.DidStartNavigationEvent;
+ type DisplayBalloonOptions = Electron.DisplayBalloonOptions;
+ type DisplayMediaRequestHandlerHandlerRequest = Electron.DisplayMediaRequestHandlerHandlerRequest;
+ type DownloadURLOptions = Electron.DownloadURLOptions;
+ type EnableNetworkEmulationOptions = Electron.EnableNetworkEmulationOptions;
+ type FeedURLOptions = Electron.FeedURLOptions;
+ type FileIconOptions = Electron.FileIconOptions;
+ type FindInPageOptions = Electron.FindInPageOptions;
+ type FocusOptions = Electron.FocusOptions;
+ type ForkOptions = Electron.ForkOptions;
+ type FoundInPageEvent = Electron.FoundInPageEvent;
+ type FrameCreatedDetails = Electron.FrameCreatedDetails;
+ type FromPartitionOptions = Electron.FromPartitionOptions;
+ type FromPathOptions = Electron.FromPathOptions;
+ type HandlerDetails = Electron.HandlerDetails;
+ type HeadersReceivedResponse = Electron.HeadersReceivedResponse;
+ type HeapStatistics = Electron.HeapStatistics;
+ type HidDeviceAddedDetails = Electron.HidDeviceAddedDetails;
+ type HidDeviceRemovedDetails = Electron.HidDeviceRemovedDetails;
+ type HidDeviceRevokedDetails = Electron.HidDeviceRevokedDetails;
+ type IgnoreMouseEventsOptions = Electron.IgnoreMouseEventsOptions;
+ type ImportCertificateOptions = Electron.ImportCertificateOptions;
+ type Info = Electron.Info;
+ type Input = Electron.Input;
+ type InsertCSSOptions = Electron.InsertCSSOptions;
+ type IpcMessageEvent = Electron.IpcMessageEvent;
+ type Item = Electron.Item;
+ type JumpListSettings = Electron.JumpListSettings;
+ type LoadCommitEvent = Electron.LoadCommitEvent;
+ type LoadExtensionOptions = Electron.LoadExtensionOptions;
+ type LoadFileOptions = Electron.LoadFileOptions;
+ type LoadURLOptions = Electron.LoadURLOptions;
+ type LoginItemSettings = Electron.LoginItemSettings;
+ type LoginItemSettingsOptions = Electron.LoginItemSettingsOptions;
+ type MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
+ type MessageBoxOptions = Electron.MessageBoxOptions;
+ type MessageBoxReturnValue = Electron.MessageBoxReturnValue;
+ type MessageBoxSyncOptions = Electron.MessageBoxSyncOptions;
+ type MessageDetails = Electron.MessageDetails;
+ type MessageEvent = Electron.MessageEvent;
+ type MoveToApplicationsFolderOptions = Electron.MoveToApplicationsFolderOptions;
+ type NotificationConstructorOptions = Electron.NotificationConstructorOptions;
+ type OnBeforeRedirectListenerDetails = Electron.OnBeforeRedirectListenerDetails;
+ type OnBeforeRequestListenerDetails = Electron.OnBeforeRequestListenerDetails;
+ type OnBeforeSendHeadersListenerDetails = Electron.OnBeforeSendHeadersListenerDetails;
+ type OnCompletedListenerDetails = Electron.OnCompletedListenerDetails;
+ type OnErrorOccurredListenerDetails = Electron.OnErrorOccurredListenerDetails;
+ type OnHeadersReceivedListenerDetails = Electron.OnHeadersReceivedListenerDetails;
+ type OnResponseStartedListenerDetails = Electron.OnResponseStartedListenerDetails;
+ type OnSendHeadersListenerDetails = Electron.OnSendHeadersListenerDetails;
+ type OpenDevToolsOptions = Electron.OpenDevToolsOptions;
+ type OpenDialogOptions = Electron.OpenDialogOptions;
+ type OpenDialogReturnValue = Electron.OpenDialogReturnValue;
+ type OpenDialogSyncOptions = Electron.OpenDialogSyncOptions;
+ type OpenExternalOptions = Electron.OpenExternalOptions;
+ type Options = Electron.Options;
+ type Opts = Electron.Opts;
+ type PageFaviconUpdatedEvent = Electron.PageFaviconUpdatedEvent;
+ type PageTitleUpdatedEvent = Electron.PageTitleUpdatedEvent;
+ type Parameters = Electron.Parameters;
+ type Payment = Electron.Payment;
+ type PermissionCheckHandlerHandlerDetails = Electron.PermissionCheckHandlerHandlerDetails;
+ type PermissionRequestHandlerHandlerDetails = Electron.PermissionRequestHandlerHandlerDetails;
+ type PluginCrashedEvent = Electron.PluginCrashedEvent;
+ type PopupOptions = Electron.PopupOptions;
+ type PreconnectOptions = Electron.PreconnectOptions;
+ type PrintToPDFOptions = Electron.PrintToPDFOptions;
+ type Privileges = Electron.Privileges;
+ type ProgressBarOptions = Electron.ProgressBarOptions;
+ type Provider = Electron.Provider;
+ type PurchaseProductOpts = Electron.PurchaseProductOpts;
+ type ReadBookmark = Electron.ReadBookmark;
+ type RegistrationCompletedDetails = Electron.RegistrationCompletedDetails;
+ type RelaunchOptions = Electron.RelaunchOptions;
+ type RenderProcessGoneEvent = Electron.RenderProcessGoneEvent;
+ type Request = Electron.Request;
+ type ResizeOptions = Electron.ResizeOptions;
+ type ResolveHostOptions = Electron.ResolveHostOptions;
+ type ResourceUsage = Electron.ResourceUsage;
+ type Response = Electron.Response;
+ type Result = Electron.Result;
+ type SaveDialogOptions = Electron.SaveDialogOptions;
+ type SaveDialogReturnValue = Electron.SaveDialogReturnValue;
+ type SaveDialogSyncOptions = Electron.SaveDialogSyncOptions;
+ type SelectHidDeviceDetails = Electron.SelectHidDeviceDetails;
+ type SelectUsbDeviceDetails = Electron.SelectUsbDeviceDetails;
+ type SerialPortRevokedDetails = Electron.SerialPortRevokedDetails;
+ type Settings = Electron.Settings;
+ type SourcesOptions = Electron.SourcesOptions;
+ type SSLConfigConfig = Electron.SSLConfigConfig;
+ type StartLoggingOptions = Electron.StartLoggingOptions;
+ type Streams = Electron.Streams;
+ type SystemMemoryInfo = Electron.SystemMemoryInfo;
+ type TitleBarOverlay = Electron.TitleBarOverlay;
+ type TitleBarOverlayOptions = Electron.TitleBarOverlayOptions;
+ type TitleOptions = Electron.TitleOptions;
+ type ToBitmapOptions = Electron.ToBitmapOptions;
+ type ToDataURLOptions = Electron.ToDataURLOptions;
+ type ToPNGOptions = Electron.ToPNGOptions;
+ type TouchBarButtonConstructorOptions = Electron.TouchBarButtonConstructorOptions;
+ type TouchBarColorPickerConstructorOptions = Electron.TouchBarColorPickerConstructorOptions;
+ type TouchBarConstructorOptions = Electron.TouchBarConstructorOptions;
+ type TouchBarGroupConstructorOptions = Electron.TouchBarGroupConstructorOptions;
+ type TouchBarLabelConstructorOptions = Electron.TouchBarLabelConstructorOptions;
+ type TouchBarPopoverConstructorOptions = Electron.TouchBarPopoverConstructorOptions;
+ type TouchBarScrubberConstructorOptions = Electron.TouchBarScrubberConstructorOptions;
+ type TouchBarSegmentedControlConstructorOptions = Electron.TouchBarSegmentedControlConstructorOptions;
+ type TouchBarSliderConstructorOptions = Electron.TouchBarSliderConstructorOptions;
+ type TouchBarSpacerConstructorOptions = Electron.TouchBarSpacerConstructorOptions;
+ type TraceBufferUsageReturnValue = Electron.TraceBufferUsageReturnValue;
+ type UpdateTargetUrlEvent = Electron.UpdateTargetUrlEvent;
+ type UploadProgress = Electron.UploadProgress;
+ type UsbDeviceRevokedDetails = Electron.UsbDeviceRevokedDetails;
+ type USBProtectedClassesHandlerHandlerDetails = Electron.USBProtectedClassesHandlerHandlerDetails;
+ type VisibleOnAllWorkspacesOptions = Electron.VisibleOnAllWorkspacesOptions;
+ type WebContentsAudioStateChangedEventParams = Electron.WebContentsAudioStateChangedEventParams;
+ type WebContentsDidRedirectNavigationEventParams = Electron.WebContentsDidRedirectNavigationEventParams;
+ type WebContentsDidStartNavigationEventParams = Electron.WebContentsDidStartNavigationEventParams;
+ type WebContentsPrintOptions = Electron.WebContentsPrintOptions;
+ type WebContentsWillFrameNavigateEventParams = Electron.WebContentsWillFrameNavigateEventParams;
+ type WebContentsWillNavigateEventParams = Electron.WebContentsWillNavigateEventParams;
+ type WebContentsWillRedirectEventParams = Electron.WebContentsWillRedirectEventParams;
+ type WebviewTagPrintOptions = Electron.WebviewTagPrintOptions;
+ type WillFrameNavigateEvent = Electron.WillFrameNavigateEvent;
+ type WillNavigateEvent = Electron.WillNavigateEvent;
+ type WillResizeDetails = Electron.WillResizeDetails;
+ type EditFlags = Electron.EditFlags;
+ type Env = Electron.Env;
+ type FoundInPageResult = Electron.FoundInPageResult;
+ type LaunchItems = Electron.LaunchItems;
+ type Margins = Electron.Margins;
+ type MediaFlags = Electron.MediaFlags;
+ type PageRanges = Electron.PageRanges;
+ type Params = Electron.Params;
+ type Video = Electron.Video;
+ type BluetoothDevice = Electron.BluetoothDevice;
+ type BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions;
+ type Certificate = Electron.Certificate;
+ type CertificatePrincipal = Electron.CertificatePrincipal;
+ type Cookie = Electron.Cookie;
+ type CPUUsage = Electron.CPUUsage;
+ type CrashReport = Electron.CrashReport;
+ type CustomScheme = Electron.CustomScheme;
+ type DesktopCapturerSource = Electron.DesktopCapturerSource;
+ type Display = Electron.Display;
+ type Extension = Electron.Extension;
+ type ExtensionInfo = Electron.ExtensionInfo;
+ type FileFilter = Electron.FileFilter;
+ type FilePathWithHeaders = Electron.FilePathWithHeaders;
+ type GPUFeatureStatus = Electron.GPUFeatureStatus;
+ type HIDDevice = Electron.HIDDevice;
+ type InputEvent = Electron.InputEvent;
+ type IOCounters = Electron.IOCounters;
+ type IpcMainEvent = Electron.IpcMainEvent;
+ type IpcMainInvokeEvent = Electron.IpcMainInvokeEvent;
+ type IpcRendererEvent = Electron.IpcRendererEvent;
+ type JumpListCategory = Electron.JumpListCategory;
+ type JumpListItem = Electron.JumpListItem;
+ type KeyboardEvent = Electron.KeyboardEvent;
+ type KeyboardInputEvent = Electron.KeyboardInputEvent;
+ type MemoryInfo = Electron.MemoryInfo;
+ type MemoryUsageDetails = Electron.MemoryUsageDetails;
+ type MimeTypedBuffer = Electron.MimeTypedBuffer;
+ type MouseInputEvent = Electron.MouseInputEvent;
+ type MouseWheelInputEvent = Electron.MouseWheelInputEvent;
+ type NotificationAction = Electron.NotificationAction;
+ type NotificationResponse = Electron.NotificationResponse;
+ type PaymentDiscount = Electron.PaymentDiscount;
+ type Point = Electron.Point;
+ type PostBody = Electron.PostBody;
+ type PrinterInfo = Electron.PrinterInfo;
+ type ProcessMemoryInfo = Electron.ProcessMemoryInfo;
+ type ProcessMetric = Electron.ProcessMetric;
+ type Product = Electron.Product;
+ type ProductDiscount = Electron.ProductDiscount;
+ type ProductSubscriptionPeriod = Electron.ProductSubscriptionPeriod;
+ type ProtocolRequest = Electron.ProtocolRequest;
+ type ProtocolResponse = Electron.ProtocolResponse;
+ type ProtocolResponseUploadData = Electron.ProtocolResponseUploadData;
+ type Rectangle = Electron.Rectangle;
+ type Referrer = Electron.Referrer;
+ type RenderProcessGoneDetails = Electron.RenderProcessGoneDetails;
+ type ResolvedEndpoint = Electron.ResolvedEndpoint;
+ type ResolvedHost = Electron.ResolvedHost;
+ type ScrubberItem = Electron.ScrubberItem;
+ type SegmentedControlSegment = Electron.SegmentedControlSegment;
+ type SerialPort = Electron.SerialPort;
+ type ServiceWorkerInfo = Electron.ServiceWorkerInfo;
+ type SharedWorkerInfo = Electron.SharedWorkerInfo;
+ type SharingItem = Electron.SharingItem;
+ type ShortcutDetails = Electron.ShortcutDetails;
+ type Size = Electron.Size;
+ type Task = Electron.Task;
+ type ThumbarButton = Electron.ThumbarButton;
+ type TraceCategoriesAndOptions = Electron.TraceCategoriesAndOptions;
+ type TraceConfig = Electron.TraceConfig;
+ type Transaction = Electron.Transaction;
+ type UploadData = Electron.UploadData;
+ type UploadFile = Electron.UploadFile;
+ type UploadRawData = Electron.UploadRawData;
+ type USBDevice = Electron.USBDevice;
+ type UserDefaultTypes = Electron.UserDefaultTypes;
+ type WebPreferences = Electron.WebPreferences;
+ type WebRequestFilter = Electron.WebRequestFilter;
+ type WebSource = Electron.WebSource;
+ }
+
+ namespace Main {
+ type Event<Params extends object = {}> = Electron.Event<Params>;
+ const app: App;
+ type App = Electron.App;
+ const autoUpdater: AutoUpdater;
+ type AutoUpdater = Electron.AutoUpdater;
+ class BrowserView extends Electron.BrowserView {}
+ class BrowserWindow extends Electron.BrowserWindow {}
+ type ClientRequest = Electron.ClientRequest;
+ type CommandLine = Electron.CommandLine;
+ const contentTracing: ContentTracing;
+ type ContentTracing = Electron.ContentTracing;
+ type Cookies = Electron.Cookies;
+ type Debugger = Electron.Debugger;
+ const desktopCapturer: DesktopCapturer;
+ type DesktopCapturer = Electron.DesktopCapturer;
+ const dialog: Dialog;
+ type Dialog = Electron.Dialog;
+ type Dock = Electron.Dock;
+ type DownloadItem = Electron.DownloadItem;
+ const globalShortcut: GlobalShortcut;
+ type GlobalShortcut = Electron.GlobalShortcut;
+ const inAppPurchase: InAppPurchase;
+ type InAppPurchase = Electron.InAppPurchase;
+ type IncomingMessage = Electron.IncomingMessage;
+ const ipcMain: IpcMain;
+ type IpcMain = Electron.IpcMain;
+ class Menu extends Electron.Menu {}
+ class MenuItem extends Electron.MenuItem {}
+ class MessageChannelMain extends Electron.MessageChannelMain {}
+ type MessagePortMain = Electron.MessagePortMain;
+ const nativeTheme: NativeTheme;
+ type NativeTheme = Electron.NativeTheme;
+ const net: Net;
+ type Net = Electron.Net;
+ const netLog: NetLog;
+ type NetLog = Electron.NetLog;
+ class Notification extends Electron.Notification {}
+ const powerMonitor: PowerMonitor;
+ type PowerMonitor = Electron.PowerMonitor;
+ const powerSaveBlocker: PowerSaveBlocker;
+ type PowerSaveBlocker = Electron.PowerSaveBlocker;
+ const protocol: Protocol;
+ type Protocol = Electron.Protocol;
+ const pushNotifications: PushNotifications;
+ type PushNotifications = Electron.PushNotifications;
+ const safeStorage: SafeStorage;
+ type SafeStorage = Electron.SafeStorage;
+ const screen: Screen;
+ type Screen = Electron.Screen;
+ type ServiceWorkers = Electron.ServiceWorkers;
+ const session: typeof Session;
+ type Session = Electron.Session;
+ class ShareMenu extends Electron.ShareMenu {}
+ const systemPreferences: SystemPreferences;
+ type SystemPreferences = Electron.SystemPreferences;
+ class TouchBar extends Electron.TouchBar {}
+ type TouchBarButton = Electron.TouchBarButton;
+ type TouchBarColorPicker = Electron.TouchBarColorPicker;
+ type TouchBarGroup = Electron.TouchBarGroup;
+ type TouchBarLabel = Electron.TouchBarLabel;
+ type TouchBarOtherItemsProxy = Electron.TouchBarOtherItemsProxy;
+ type TouchBarPopover = Electron.TouchBarPopover;
+ type TouchBarScrubber = Electron.TouchBarScrubber;
+ type TouchBarSegmentedControl = Electron.TouchBarSegmentedControl;
+ type TouchBarSlider = Electron.TouchBarSlider;
+ type TouchBarSpacer = Electron.TouchBarSpacer;
+ class Tray extends Electron.Tray {}
+ const utilityProcess: typeof UtilityProcess;
+ type UtilityProcess = Electron.UtilityProcess;
+ const webContents: typeof WebContents;
+ type WebContents = Electron.WebContents;
+ const webFrameMain: typeof WebFrameMain;
+ type WebFrameMain = Electron.WebFrameMain;
+ type WebRequest = Electron.WebRequest;
+ type AboutPanelOptionsOptions = Electron.AboutPanelOptionsOptions;
+ type AddRepresentationOptions = Electron.AddRepresentationOptions;
+ type AdjustSelectionOptions = Electron.AdjustSelectionOptions;
+ type AnimationSettings = Electron.AnimationSettings;
+ type AppDetailsOptions = Electron.AppDetailsOptions;
+ type ApplicationInfoForProtocolReturnValue = Electron.ApplicationInfoForProtocolReturnValue;
+ type AuthenticationResponseDetails = Electron.AuthenticationResponseDetails;
+ type AuthInfo = Electron.AuthInfo;
+ type AutoResizeOptions = Electron.AutoResizeOptions;
+ type BeforeSendResponse = Electron.BeforeSendResponse;
+ type BitmapOptions = Electron.BitmapOptions;
+ type BlinkMemoryInfo = Electron.BlinkMemoryInfo;
+ type BluetoothPairingHandlerHandlerDetails = Electron.BluetoothPairingHandlerHandlerDetails;
+ type BrowserViewConstructorOptions = Electron.BrowserViewConstructorOptions;
+ type CallbackResponse = Electron.CallbackResponse;
+ type CertificateTrustDialogOptions = Electron.CertificateTrustDialogOptions;
+ type ClearCodeCachesOptions = Electron.ClearCodeCachesOptions;
+ type ClearStorageDataOptions = Electron.ClearStorageDataOptions;
+ type ClientRequestConstructorOptions = Electron.ClientRequestConstructorOptions;
+ type CloseOpts = Electron.CloseOpts;
+ type Config = Electron.Config;
+ type ConfigureHostResolverOptions = Electron.ConfigureHostResolverOptions;
+ type ConsoleMessageEvent = Electron.ConsoleMessageEvent;
+ type ContextMenuEvent = Electron.ContextMenuEvent;
+ type ContextMenuParams = Electron.ContextMenuParams;
+ type ContinueActivityDetails = Electron.ContinueActivityDetails;
+ type CookiesGetFilter = Electron.CookiesGetFilter;
+ type CookiesSetDetails = Electron.CookiesSetDetails;
+ type CrashReporterStartOptions = Electron.CrashReporterStartOptions;
+ type CreateFromBitmapOptions = Electron.CreateFromBitmapOptions;
+ type CreateFromBufferOptions = Electron.CreateFromBufferOptions;
+ type CreateInterruptedDownloadOptions = Electron.CreateInterruptedDownloadOptions;
+ type Data = Electron.Data;
+ type DefaultFontFamily = Electron.DefaultFontFamily;
+ type Details = Electron.Details;
+ type DevicePermissionHandlerHandlerDetails = Electron.DevicePermissionHandlerHandlerDetails;
+ type DevtoolsOpenUrlEvent = Electron.DevtoolsOpenUrlEvent;
+ type DidChangeThemeColorEvent = Electron.DidChangeThemeColorEvent;
+ type DidCreateWindowDetails = Electron.DidCreateWindowDetails;
+ type DidFailLoadEvent = Electron.DidFailLoadEvent;
+ type DidFrameFinishLoadEvent = Electron.DidFrameFinishLoadEvent;
+ type DidFrameNavigateEvent = Electron.DidFrameNavigateEvent;
+ type DidNavigateEvent = Electron.DidNavigateEvent;
+ type DidNavigateInPageEvent = Electron.DidNavigateInPageEvent;
+ type DidRedirectNavigationEvent = Electron.DidRedirectNavigationEvent;
+ type DidStartNavigationEvent = Electron.DidStartNavigationEvent;
+ type DisplayBalloonOptions = Electron.DisplayBalloonOptions;
+ type DisplayMediaRequestHandlerHandlerRequest = Electron.DisplayMediaRequestHandlerHandlerRequest;
+ type DownloadURLOptions = Electron.DownloadURLOptions;
+ type EnableNetworkEmulationOptions = Electron.EnableNetworkEmulationOptions;
+ type FeedURLOptions = Electron.FeedURLOptions;
+ type FileIconOptions = Electron.FileIconOptions;
+ type FindInPageOptions = Electron.FindInPageOptions;
+ type FocusOptions = Electron.FocusOptions;
+ type ForkOptions = Electron.ForkOptions;
+ type FoundInPageEvent = Electron.FoundInPageEvent;
+ type FrameCreatedDetails = Electron.FrameCreatedDetails;
+ type FromPartitionOptions = Electron.FromPartitionOptions;
+ type FromPathOptions = Electron.FromPathOptions;
+ type HandlerDetails = Electron.HandlerDetails;
+ type HeadersReceivedResponse = Electron.HeadersReceivedResponse;
+ type HeapStatistics = Electron.HeapStatistics;
+ type HidDeviceAddedDetails = Electron.HidDeviceAddedDetails;
+ type HidDeviceRemovedDetails = Electron.HidDeviceRemovedDetails;
+ type HidDeviceRevokedDetails = Electron.HidDeviceRevokedDetails;
+ type IgnoreMouseEventsOptions = Electron.IgnoreMouseEventsOptions;
+ type ImportCertificateOptions = Electron.ImportCertificateOptions;
+ type Info = Electron.Info;
+ type Input = Electron.Input;
+ type InsertCSSOptions = Electron.InsertCSSOptions;
+ type IpcMessageEvent = Electron.IpcMessageEvent;
+ type Item = Electron.Item;
+ type JumpListSettings = Electron.JumpListSettings;
+ type LoadCommitEvent = Electron.LoadCommitEvent;
+ type LoadExtensionOptions = Electron.LoadExtensionOptions;
+ type LoadFileOptions = Electron.LoadFileOptions;
+ type LoadURLOptions = Electron.LoadURLOptions;
+ type LoginItemSettings = Electron.LoginItemSettings;
+ type LoginItemSettingsOptions = Electron.LoginItemSettingsOptions;
+ type MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
+ type MessageBoxOptions = Electron.MessageBoxOptions;
+ type MessageBoxReturnValue = Electron.MessageBoxReturnValue;
+ type MessageBoxSyncOptions = Electron.MessageBoxSyncOptions;
+ type MessageDetails = Electron.MessageDetails;
+ type MessageEvent = Electron.MessageEvent;
+ type MoveToApplicationsFolderOptions = Electron.MoveToApplicationsFolderOptions;
+ type NotificationConstructorOptions = Electron.NotificationConstructorOptions;
+ type OnBeforeRedirectListenerDetails = Electron.OnBeforeRedirectListenerDetails;
+ type OnBeforeRequestListenerDetails = Electron.OnBeforeRequestListenerDetails;
+ type OnBeforeSendHeadersListenerDetails = Electron.OnBeforeSendHeadersListenerDetails;
+ type OnCompletedListenerDetails = Electron.OnCompletedListenerDetails;
+ type OnErrorOccurredListenerDetails = Electron.OnErrorOccurredListenerDetails;
+ type OnHeadersReceivedListenerDetails = Electron.OnHeadersReceivedListenerDetails;
+ type OnResponseStartedListenerDetails = Electron.OnResponseStartedListenerDetails;
+ type OnSendHeadersListenerDetails = Electron.OnSendHeadersListenerDetails;
+ type OpenDevToolsOptions = Electron.OpenDevToolsOptions;
+ type OpenDialogOptions = Electron.OpenDialogOptions;
+ type OpenDialogReturnValue = Electron.OpenDialogReturnValue;
+ type OpenDialogSyncOptions = Electron.OpenDialogSyncOptions;
+ type OpenExternalOptions = Electron.OpenExternalOptions;
+ type Options = Electron.Options;
+ type Opts = Electron.Opts;
+ type PageFaviconUpdatedEvent = Electron.PageFaviconUpdatedEvent;
+ type PageTitleUpdatedEvent = Electron.PageTitleUpdatedEvent;
+ type Parameters = Electron.Parameters;
+ type Payment = Electron.Payment;
+ type PermissionCheckHandlerHandlerDetails = Electron.PermissionCheckHandlerHandlerDetails;
+ type PermissionRequestHandlerHandlerDetails = Electron.PermissionRequestHandlerHandlerDetails;
+ type PluginCrashedEvent = Electron.PluginCrashedEvent;
+ type PopupOptions = Electron.PopupOptions;
+ type PreconnectOptions = Electron.PreconnectOptions;
+ type PrintToPDFOptions = Electron.PrintToPDFOptions;
+ type Privileges = Electron.Privileges;
+ type ProgressBarOptions = Electron.ProgressBarOptions;
+ type Provider = Electron.Provider;
+ type PurchaseProductOpts = Electron.PurchaseProductOpts;
+ type ReadBookmark = Electron.ReadBookmark;
+ type RegistrationCompletedDetails = Electron.RegistrationCompletedDetails;
+ type RelaunchOptions = Electron.RelaunchOptions;
+ type RenderProcessGoneEvent = Electron.RenderProcessGoneEvent;
+ type Request = Electron.Request;
+ type ResizeOptions = Electron.ResizeOptions;
+ type ResolveHostOptions = Electron.ResolveHostOptions;
+ type ResourceUsage = Electron.ResourceUsage;
+ type Response = Electron.Response;
+ type Result = Electron.Result;
+ type SaveDialogOptions = Electron.SaveDialogOptions;
+ type SaveDialogReturnValue = Electron.SaveDialogReturnValue;
+ type SaveDialogSyncOptions = Electron.SaveDialogSyncOptions;
+ type SelectHidDeviceDetails = Electron.SelectHidDeviceDetails;
+ type SelectUsbDeviceDetails = Electron.SelectUsbDeviceDetails;
+ type SerialPortRevokedDetails = Electron.SerialPortRevokedDetails;
+ type Settings = Electron.Settings;
+ type SourcesOptions = Electron.SourcesOptions;
+ type SSLConfigConfig = Electron.SSLConfigConfig;
+ type StartLoggingOptions = Electron.StartLoggingOptions;
+ type Streams = Electron.Streams;
+ type SystemMemoryInfo = Electron.SystemMemoryInfo;
+ type TitleBarOverlay = Electron.TitleBarOverlay;
+ type TitleBarOverlayOptions = Electron.TitleBarOverlayOptions;
+ type TitleOptions = Electron.TitleOptions;
+ type ToBitmapOptions = Electron.ToBitmapOptions;
+ type ToDataURLOptions = Electron.ToDataURLOptions;
+ type ToPNGOptions = Electron.ToPNGOptions;
+ type TouchBarButtonConstructorOptions = Electron.TouchBarButtonConstructorOptions;
+ type TouchBarColorPickerConstructorOptions = Electron.TouchBarColorPickerConstructorOptions;
+ type TouchBarConstructorOptions = Electron.TouchBarConstructorOptions;
+ type TouchBarGroupConstructorOptions = Electron.TouchBarGroupConstructorOptions;
+ type TouchBarLabelConstructorOptions = Electron.TouchBarLabelConstructorOptions;
+ type TouchBarPopoverConstructorOptions = Electron.TouchBarPopoverConstructorOptions;
+ type TouchBarScrubberConstructorOptions = Electron.TouchBarScrubberConstructorOptions;
+ type TouchBarSegmentedControlConstructorOptions = Electron.TouchBarSegmentedControlConstructorOptions;
+ type TouchBarSliderConstructorOptions = Electron.TouchBarSliderConstructorOptions;
+ type TouchBarSpacerConstructorOptions = Electron.TouchBarSpacerConstructorOptions;
+ type TraceBufferUsageReturnValue = Electron.TraceBufferUsageReturnValue;
+ type UpdateTargetUrlEvent = Electron.UpdateTargetUrlEvent;
+ type UploadProgress = Electron.UploadProgress;
+ type UsbDeviceRevokedDetails = Electron.UsbDeviceRevokedDetails;
+ type USBProtectedClassesHandlerHandlerDetails = Electron.USBProtectedClassesHandlerHandlerDetails;
+ type VisibleOnAllWorkspacesOptions = Electron.VisibleOnAllWorkspacesOptions;
+ type WebContentsAudioStateChangedEventParams = Electron.WebContentsAudioStateChangedEventParams;
+ type WebContentsDidRedirectNavigationEventParams = Electron.WebContentsDidRedirectNavigationEventParams;
+ type WebContentsDidStartNavigationEventParams = Electron.WebContentsDidStartNavigationEventParams;
+ type WebContentsPrintOptions = Electron.WebContentsPrintOptions;
+ type WebContentsWillFrameNavigateEventParams = Electron.WebContentsWillFrameNavigateEventParams;
+ type WebContentsWillNavigateEventParams = Electron.WebContentsWillNavigateEventParams;
+ type WebContentsWillRedirectEventParams = Electron.WebContentsWillRedirectEventParams;
+ type WebviewTagPrintOptions = Electron.WebviewTagPrintOptions;
+ type WillFrameNavigateEvent = Electron.WillFrameNavigateEvent;
+ type WillNavigateEvent = Electron.WillNavigateEvent;
+ type WillResizeDetails = Electron.WillResizeDetails;
+ type EditFlags = Electron.EditFlags;
+ type Env = Electron.Env;
+ type FoundInPageResult = Electron.FoundInPageResult;
+ type LaunchItems = Electron.LaunchItems;
+ type Margins = Electron.Margins;
+ type MediaFlags = Electron.MediaFlags;
+ type PageRanges = Electron.PageRanges;
+ type Params = Electron.Params;
+ type Video = Electron.Video;
+ type BluetoothDevice = Electron.BluetoothDevice;
+ type BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions;
+ type Certificate = Electron.Certificate;
+ type CertificatePrincipal = Electron.CertificatePrincipal;
+ type Cookie = Electron.Cookie;
+ type CPUUsage = Electron.CPUUsage;
+ type CrashReport = Electron.CrashReport;
+ type CustomScheme = Electron.CustomScheme;
+ type DesktopCapturerSource = Electron.DesktopCapturerSource;
+ type Display = Electron.Display;
+ type Extension = Electron.Extension;
+ type ExtensionInfo = Electron.ExtensionInfo;
+ type FileFilter = Electron.FileFilter;
+ type FilePathWithHeaders = Electron.FilePathWithHeaders;
+ type GPUFeatureStatus = Electron.GPUFeatureStatus;
+ type HIDDevice = Electron.HIDDevice;
+ type InputEvent = Electron.InputEvent;
+ type IOCounters = Electron.IOCounters;
+ type IpcMainEvent = Electron.IpcMainEvent;
+ type IpcMainInvokeEvent = Electron.IpcMainInvokeEvent;
+ type IpcRendererEvent = Electron.IpcRendererEvent;
+ type JumpListCategory = Electron.JumpListCategory;
+ type JumpListItem = Electron.JumpListItem;
+ type KeyboardEvent = Electron.KeyboardEvent;
+ type KeyboardInputEvent = Electron.KeyboardInputEvent;
+ type MemoryInfo = Electron.MemoryInfo;
+ type MemoryUsageDetails = Electron.MemoryUsageDetails;
+ type MimeTypedBuffer = Electron.MimeTypedBuffer;
+ type MouseInputEvent = Electron.MouseInputEvent;
+ type MouseWheelInputEvent = Electron.MouseWheelInputEvent;
+ type NotificationAction = Electron.NotificationAction;
+ type NotificationResponse = Electron.NotificationResponse;
+ type PaymentDiscount = Electron.PaymentDiscount;
+ type Point = Electron.Point;
+ type PostBody = Electron.PostBody;
+ type PrinterInfo = Electron.PrinterInfo;
+ type ProcessMemoryInfo = Electron.ProcessMemoryInfo;
+ type ProcessMetric = Electron.ProcessMetric;
+ type Product = Electron.Product;
+ type ProductDiscount = Electron.ProductDiscount;
+ type ProductSubscriptionPeriod = Electron.ProductSubscriptionPeriod;
+ type ProtocolRequest = Electron.ProtocolRequest;
+ type ProtocolResponse = Electron.ProtocolResponse;
+ type ProtocolResponseUploadData = Electron.ProtocolResponseUploadData;
+ type Rectangle = Electron.Rectangle;
+ type Referrer = Electron.Referrer;
+ type RenderProcessGoneDetails = Electron.RenderProcessGoneDetails;
+ type ResolvedEndpoint = Electron.ResolvedEndpoint;
+ type ResolvedHost = Electron.ResolvedHost;
+ type ScrubberItem = Electron.ScrubberItem;
+ type SegmentedControlSegment = Electron.SegmentedControlSegment;
+ type SerialPort = Electron.SerialPort;
+ type ServiceWorkerInfo = Electron.ServiceWorkerInfo;
+ type SharedWorkerInfo = Electron.SharedWorkerInfo;
+ type SharingItem = Electron.SharingItem;
+ type ShortcutDetails = Electron.ShortcutDetails;
+ type Size = Electron.Size;
+ type Task = Electron.Task;
+ type ThumbarButton = Electron.ThumbarButton;
+ type TraceCategoriesAndOptions = Electron.TraceCategoriesAndOptions;
+ type TraceConfig = Electron.TraceConfig;
+ type Transaction = Electron.Transaction;
+ type UploadData = Electron.UploadData;
+ type UploadFile = Electron.UploadFile;
+ type UploadRawData = Electron.UploadRawData;
+ type USBDevice = Electron.USBDevice;
+ type UserDefaultTypes = Electron.UserDefaultTypes;
+ type WebPreferences = Electron.WebPreferences;
+ type WebRequestFilter = Electron.WebRequestFilter;
+ type WebSource = Electron.WebSource;
+ }
+
+ namespace Renderer {
+ type Event<Params extends object = {}> = Electron.Event<Params>;
+ const contextBridge: ContextBridge;
+ type ContextBridge = Electron.ContextBridge;
+ const ipcRenderer: IpcRenderer;
+ type IpcRenderer = Electron.IpcRenderer;
+ const webFrame: WebFrame;
+ type WebFrame = Electron.WebFrame;
+ type WebviewTag = Electron.WebviewTag;
+ type AboutPanelOptionsOptions = Electron.AboutPanelOptionsOptions;
+ type AddRepresentationOptions = Electron.AddRepresentationOptions;
+ type AdjustSelectionOptions = Electron.AdjustSelectionOptions;
+ type AnimationSettings = Electron.AnimationSettings;
+ type AppDetailsOptions = Electron.AppDetailsOptions;
+ type ApplicationInfoForProtocolReturnValue = Electron.ApplicationInfoForProtocolReturnValue;
+ type AuthenticationResponseDetails = Electron.AuthenticationResponseDetails;
+ type AuthInfo = Electron.AuthInfo;
+ type AutoResizeOptions = Electron.AutoResizeOptions;
+ type BeforeSendResponse = Electron.BeforeSendResponse;
+ type BitmapOptions = Electron.BitmapOptions;
+ type BlinkMemoryInfo = Electron.BlinkMemoryInfo;
+ type BluetoothPairingHandlerHandlerDetails = Electron.BluetoothPairingHandlerHandlerDetails;
+ type BrowserViewConstructorOptions = Electron.BrowserViewConstructorOptions;
+ type CallbackResponse = Electron.CallbackResponse;
+ type CertificateTrustDialogOptions = Electron.CertificateTrustDialogOptions;
+ type ClearCodeCachesOptions = Electron.ClearCodeCachesOptions;
+ type ClearStorageDataOptions = Electron.ClearStorageDataOptions;
+ type ClientRequestConstructorOptions = Electron.ClientRequestConstructorOptions;
+ type CloseOpts = Electron.CloseOpts;
+ type Config = Electron.Config;
+ type ConfigureHostResolverOptions = Electron.ConfigureHostResolverOptions;
+ type ConsoleMessageEvent = Electron.ConsoleMessageEvent;
+ type ContextMenuEvent = Electron.ContextMenuEvent;
+ type ContextMenuParams = Electron.ContextMenuParams;
+ type ContinueActivityDetails = Electron.ContinueActivityDetails;
+ type CookiesGetFilter = Electron.CookiesGetFilter;
+ type CookiesSetDetails = Electron.CookiesSetDetails;
+ type CrashReporterStartOptions = Electron.CrashReporterStartOptions;
+ type CreateFromBitmapOptions = Electron.CreateFromBitmapOptions;
+ type CreateFromBufferOptions = Electron.CreateFromBufferOptions;
+ type CreateInterruptedDownloadOptions = Electron.CreateInterruptedDownloadOptions;
+ type Data = Electron.Data;
+ type DefaultFontFamily = Electron.DefaultFontFamily;
+ type Details = Electron.Details;
+ type DevicePermissionHandlerHandlerDetails = Electron.DevicePermissionHandlerHandlerDetails;
+ type DevtoolsOpenUrlEvent = Electron.DevtoolsOpenUrlEvent;
+ type DidChangeThemeColorEvent = Electron.DidChangeThemeColorEvent;
+ type DidCreateWindowDetails = Electron.DidCreateWindowDetails;
+ type DidFailLoadEvent = Electron.DidFailLoadEvent;
+ type DidFrameFinishLoadEvent = Electron.DidFrameFinishLoadEvent;
+ type DidFrameNavigateEvent = Electron.DidFrameNavigateEvent;
+ type DidNavigateEvent = Electron.DidNavigateEvent;
+ type DidNavigateInPageEvent = Electron.DidNavigateInPageEvent;
+ type DidRedirectNavigationEvent = Electron.DidRedirectNavigationEvent;
+ type DidStartNavigationEvent = Electron.DidStartNavigationEvent;
+ type DisplayBalloonOptions = Electron.DisplayBalloonOptions;
+ type DisplayMediaRequestHandlerHandlerRequest = Electron.DisplayMediaRequestHandlerHandlerRequest;
+ type DownloadURLOptions = Electron.DownloadURLOptions;
+ type EnableNetworkEmulationOptions = Electron.EnableNetworkEmulationOptions;
+ type FeedURLOptions = Electron.FeedURLOptions;
+ type FileIconOptions = Electron.FileIconOptions;
+ type FindInPageOptions = Electron.FindInPageOptions;
+ type FocusOptions = Electron.FocusOptions;
+ type ForkOptions = Electron.ForkOptions;
+ type FoundInPageEvent = Electron.FoundInPageEvent;
+ type FrameCreatedDetails = Electron.FrameCreatedDetails;
+ type FromPartitionOptions = Electron.FromPartitionOptions;
+ type FromPathOptions = Electron.FromPathOptions;
+ type HandlerDetails = Electron.HandlerDetails;
+ type HeadersReceivedResponse = Electron.HeadersReceivedResponse;
+ type HeapStatistics = Electron.HeapStatistics;
+ type HidDeviceAddedDetails = Electron.HidDeviceAddedDetails;
+ type HidDeviceRemovedDetails = Electron.HidDeviceRemovedDetails;
+ type HidDeviceRevokedDetails = Electron.HidDeviceRevokedDetails;
+ type IgnoreMouseEventsOptions = Electron.IgnoreMouseEventsOptions;
+ type ImportCertificateOptions = Electron.ImportCertificateOptions;
+ type Info = Electron.Info;
+ type Input = Electron.Input;
+ type InsertCSSOptions = Electron.InsertCSSOptions;
+ type IpcMessageEvent = Electron.IpcMessageEvent;
+ type Item = Electron.Item;
+ type JumpListSettings = Electron.JumpListSettings;
+ type LoadCommitEvent = Electron.LoadCommitEvent;
+ type LoadExtensionOptions = Electron.LoadExtensionOptions;
+ type LoadFileOptions = Electron.LoadFileOptions;
+ type LoadURLOptions = Electron.LoadURLOptions;
+ type LoginItemSettings = Electron.LoginItemSettings;
+ type LoginItemSettingsOptions = Electron.LoginItemSettingsOptions;
+ type MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
+ type MessageBoxOptions = Electron.MessageBoxOptions;
+ type MessageBoxReturnValue = Electron.MessageBoxReturnValue;
+ type MessageBoxSyncOptions = Electron.MessageBoxSyncOptions;
+ type MessageDetails = Electron.MessageDetails;
+ type MessageEvent = Electron.MessageEvent;
+ type MoveToApplicationsFolderOptions = Electron.MoveToApplicationsFolderOptions;
+ type NotificationConstructorOptions = Electron.NotificationConstructorOptions;
+ type OnBeforeRedirectListenerDetails = Electron.OnBeforeRedirectListenerDetails;
+ type OnBeforeRequestListenerDetails = Electron.OnBeforeRequestListenerDetails;
+ type OnBeforeSendHeadersListenerDetails = Electron.OnBeforeSendHeadersListenerDetails;
+ type OnCompletedListenerDetails = Electron.OnCompletedListenerDetails;
+ type OnErrorOccurredListenerDetails = Electron.OnErrorOccurredListenerDetails;
+ type OnHeadersReceivedListenerDetails = Electron.OnHeadersReceivedListenerDetails;
+ type OnResponseStartedListenerDetails = Electron.OnResponseStartedListenerDetails;
+ type OnSendHeadersListenerDetails = Electron.OnSendHeadersListenerDetails;
+ type OpenDevToolsOptions = Electron.OpenDevToolsOptions;
+ type OpenDialogOptions = Electron.OpenDialogOptions;
+ type OpenDialogReturnValue = Electron.OpenDialogReturnValue;
+ type OpenDialogSyncOptions = Electron.OpenDialogSyncOptions;
+ type OpenExternalOptions = Electron.OpenExternalOptions;
+ type Options = Electron.Options;
+ type Opts = Electron.Opts;
+ type PageFaviconUpdatedEvent = Electron.PageFaviconUpdatedEvent;
+ type PageTitleUpdatedEvent = Electron.PageTitleUpdatedEvent;
+ type Parameters = Electron.Parameters;
+ type Payment = Electron.Payment;
+ type PermissionCheckHandlerHandlerDetails = Electron.PermissionCheckHandlerHandlerDetails;
+ type PermissionRequestHandlerHandlerDetails = Electron.PermissionRequestHandlerHandlerDetails;
+ type PluginCrashedEvent = Electron.PluginCrashedEvent;
+ type PopupOptions = Electron.PopupOptions;
+ type PreconnectOptions = Electron.PreconnectOptions;
+ type PrintToPDFOptions = Electron.PrintToPDFOptions;
+ type Privileges = Electron.Privileges;
+ type ProgressBarOptions = Electron.ProgressBarOptions;
+ type Provider = Electron.Provider;
+ type PurchaseProductOpts = Electron.PurchaseProductOpts;
+ type ReadBookmark = Electron.ReadBookmark;
+ type RegistrationCompletedDetails = Electron.RegistrationCompletedDetails;
+ type RelaunchOptions = Electron.RelaunchOptions;
+ type RenderProcessGoneEvent = Electron.RenderProcessGoneEvent;
+ type Request = Electron.Request;
+ type ResizeOptions = Electron.ResizeOptions;
+ type ResolveHostOptions = Electron.ResolveHostOptions;
+ type ResourceUsage = Electron.ResourceUsage;
+ type Response = Electron.Response;
+ type Result = Electron.Result;
+ type SaveDialogOptions = Electron.SaveDialogOptions;
+ type SaveDialogReturnValue = Electron.SaveDialogReturnValue;
+ type SaveDialogSyncOptions = Electron.SaveDialogSyncOptions;
+ type SelectHidDeviceDetails = Electron.SelectHidDeviceDetails;
+ type SelectUsbDeviceDetails = Electron.SelectUsbDeviceDetails;
+ type SerialPortRevokedDetails = Electron.SerialPortRevokedDetails;
+ type Settings = Electron.Settings;
+ type SourcesOptions = Electron.SourcesOptions;
+ type SSLConfigConfig = Electron.SSLConfigConfig;
+ type StartLoggingOptions = Electron.StartLoggingOptions;
+ type Streams = Electron.Streams;
+ type SystemMemoryInfo = Electron.SystemMemoryInfo;
+ type TitleBarOverlay = Electron.TitleBarOverlay;
+ type TitleBarOverlayOptions = Electron.TitleBarOverlayOptions;
+ type TitleOptions = Electron.TitleOptions;
+ type ToBitmapOptions = Electron.ToBitmapOptions;
+ type ToDataURLOptions = Electron.ToDataURLOptions;
+ type ToPNGOptions = Electron.ToPNGOptions;
+ type TouchBarButtonConstructorOptions = Electron.TouchBarButtonConstructorOptions;
+ type TouchBarColorPickerConstructorOptions = Electron.TouchBarColorPickerConstructorOptions;
+ type TouchBarConstructorOptions = Electron.TouchBarConstructorOptions;
+ type TouchBarGroupConstructorOptions = Electron.TouchBarGroupConstructorOptions;
+ type TouchBarLabelConstructorOptions = Electron.TouchBarLabelConstructorOptions;
+ type TouchBarPopoverConstructorOptions = Electron.TouchBarPopoverConstructorOptions;
+ type TouchBarScrubberConstructorOptions = Electron.TouchBarScrubberConstructorOptions;
+ type TouchBarSegmentedControlConstructorOptions = Electron.TouchBarSegmentedControlConstructorOptions;
+ type TouchBarSliderConstructorOptions = Electron.TouchBarSliderConstructorOptions;
+ type TouchBarSpacerConstructorOptions = Electron.TouchBarSpacerConstructorOptions;
+ type TraceBufferUsageReturnValue = Electron.TraceBufferUsageReturnValue;
+ type UpdateTargetUrlEvent = Electron.UpdateTargetUrlEvent;
+ type UploadProgress = Electron.UploadProgress;
+ type UsbDeviceRevokedDetails = Electron.UsbDeviceRevokedDetails;
+ type USBProtectedClassesHandlerHandlerDetails = Electron.USBProtectedClassesHandlerHandlerDetails;
+ type VisibleOnAllWorkspacesOptions = Electron.VisibleOnAllWorkspacesOptions;
+ type WebContentsAudioStateChangedEventParams = Electron.WebContentsAudioStateChangedEventParams;
+ type WebContentsDidRedirectNavigationEventParams = Electron.WebContentsDidRedirectNavigationEventParams;
+ type WebContentsDidStartNavigationEventParams = Electron.WebContentsDidStartNavigationEventParams;
+ type WebContentsPrintOptions = Electron.WebContentsPrintOptions;
+ type WebContentsWillFrameNavigateEventParams = Electron.WebContentsWillFrameNavigateEventParams;
+ type WebContentsWillNavigateEventParams = Electron.WebContentsWillNavigateEventParams;
+ type WebContentsWillRedirectEventParams = Electron.WebContentsWillRedirectEventParams;
+ type WebviewTagPrintOptions = Electron.WebviewTagPrintOptions;
+ type WillFrameNavigateEvent = Electron.WillFrameNavigateEvent;
+ type WillNavigateEvent = Electron.WillNavigateEvent;
+ type WillResizeDetails = Electron.WillResizeDetails;
+ type EditFlags = Electron.EditFlags;
+ type Env = Electron.Env;
+ type FoundInPageResult = Electron.FoundInPageResult;
+ type LaunchItems = Electron.LaunchItems;
+ type Margins = Electron.Margins;
+ type MediaFlags = Electron.MediaFlags;
+ type PageRanges = Electron.PageRanges;
+ type Params = Electron.Params;
+ type Video = Electron.Video;
+ type BluetoothDevice = Electron.BluetoothDevice;
+ type BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions;
+ type Certificate = Electron.Certificate;
+ type CertificatePrincipal = Electron.CertificatePrincipal;
+ type Cookie = Electron.Cookie;
+ type CPUUsage = Electron.CPUUsage;
+ type CrashReport = Electron.CrashReport;
+ type CustomScheme = Electron.CustomScheme;
+ type DesktopCapturerSource = Electron.DesktopCapturerSource;
+ type Display = Electron.Display;
+ type Extension = Electron.Extension;
+ type ExtensionInfo = Electron.ExtensionInfo;
+ type FileFilter = Electron.FileFilter;
+ type FilePathWithHeaders = Electron.FilePathWithHeaders;
+ type GPUFeatureStatus = Electron.GPUFeatureStatus;
+ type HIDDevice = Electron.HIDDevice;
+ type InputEvent = Electron.InputEvent;
+ type IOCounters = Electron.IOCounters;
+ type IpcMainEvent = Electron.IpcMainEvent;
+ type IpcMainInvokeEvent = Electron.IpcMainInvokeEvent;
+ type IpcRendererEvent = Electron.IpcRendererEvent;
+ type JumpListCategory = Electron.JumpListCategory;
+ type JumpListItem = Electron.JumpListItem;
+ type KeyboardEvent = Electron.KeyboardEvent;
+ type KeyboardInputEvent = Electron.KeyboardInputEvent;
+ type MemoryInfo = Electron.MemoryInfo;
+ type MemoryUsageDetails = Electron.MemoryUsageDetails;
+ type MimeTypedBuffer = Electron.MimeTypedBuffer;
+ type MouseInputEvent = Electron.MouseInputEvent;
+ type MouseWheelInputEvent = Electron.MouseWheelInputEvent;
+ type NotificationAction = Electron.NotificationAction;
+ type NotificationResponse = Electron.NotificationResponse;
+ type PaymentDiscount = Electron.PaymentDiscount;
+ type Point = Electron.Point;
+ type PostBody = Electron.PostBody;
+ type PrinterInfo = Electron.PrinterInfo;
+ type ProcessMemoryInfo = Electron.ProcessMemoryInfo;
+ type ProcessMetric = Electron.ProcessMetric;
+ type Product = Electron.Product;
+ type ProductDiscount = Electron.ProductDiscount;
+ type ProductSubscriptionPeriod = Electron.ProductSubscriptionPeriod;
+ type ProtocolRequest = Electron.ProtocolRequest;
+ type ProtocolResponse = Electron.ProtocolResponse;
+ type ProtocolResponseUploadData = Electron.ProtocolResponseUploadData;
+ type Rectangle = Electron.Rectangle;
+ type Referrer = Electron.Referrer;
+ type RenderProcessGoneDetails = Electron.RenderProcessGoneDetails;
+ type ResolvedEndpoint = Electron.ResolvedEndpoint;
+ type ResolvedHost = Electron.ResolvedHost;
+ type ScrubberItem = Electron.ScrubberItem;
+ type SegmentedControlSegment = Electron.SegmentedControlSegment;
+ type SerialPort = Electron.SerialPort;
+ type ServiceWorkerInfo = Electron.ServiceWorkerInfo;
+ type SharedWorkerInfo = Electron.SharedWorkerInfo;
+ type SharingItem = Electron.SharingItem;
+ type ShortcutDetails = Electron.ShortcutDetails;
+ type Size = Electron.Size;
+ type Task = Electron.Task;
+ type ThumbarButton = Electron.ThumbarButton;
+ type TraceCategoriesAndOptions = Electron.TraceCategoriesAndOptions;
+ type TraceConfig = Electron.TraceConfig;
+ type Transaction = Electron.Transaction;
+ type UploadData = Electron.UploadData;
+ type UploadFile = Electron.UploadFile;
+ type UploadRawData = Electron.UploadRawData;
+ type USBDevice = Electron.USBDevice;
+ type UserDefaultTypes = Electron.UserDefaultTypes;
+ type WebPreferences = Electron.WebPreferences;
+ type WebRequestFilter = Electron.WebRequestFilter;
+ type WebSource = Electron.WebSource;
+ }
+
+ namespace CrossProcessExports {
+ type Event<Params extends object = {}> = Electron.Event<Params>;
+ const app: App;
+ type App = Electron.App;
+ const autoUpdater: AutoUpdater;
+ type AutoUpdater = Electron.AutoUpdater;
+ class BrowserView extends Electron.BrowserView {}
+ class BrowserWindow extends Electron.BrowserWindow {}
+ type ClientRequest = Electron.ClientRequest;
+ const clipboard: Clipboard;
+ type Clipboard = Electron.Clipboard;
+ type CommandLine = Electron.CommandLine;
+ const contentTracing: ContentTracing;
+ type ContentTracing = Electron.ContentTracing;
+ const contextBridge: ContextBridge;
+ type ContextBridge = Electron.ContextBridge;
+ type Cookies = Electron.Cookies;
+ const crashReporter: CrashReporter;
+ type CrashReporter = Electron.CrashReporter;
+ type Debugger = Electron.Debugger;
+ const desktopCapturer: DesktopCapturer;
+ type DesktopCapturer = Electron.DesktopCapturer;
+ const dialog: Dialog;
+ type Dialog = Electron.Dialog;
+ type Dock = Electron.Dock;
+ type DownloadItem = Electron.DownloadItem;
+ const globalShortcut: GlobalShortcut;
+ type GlobalShortcut = Electron.GlobalShortcut;
+ const inAppPurchase: InAppPurchase;
+ type InAppPurchase = Electron.InAppPurchase;
+ type IncomingMessage = Electron.IncomingMessage;
+ const ipcMain: IpcMain;
+ type IpcMain = Electron.IpcMain;
+ const ipcRenderer: IpcRenderer;
+ type IpcRenderer = Electron.IpcRenderer;
+ class Menu extends Electron.Menu {}
+ class MenuItem extends Electron.MenuItem {}
+ class MessageChannelMain extends Electron.MessageChannelMain {}
+ type MessagePortMain = Electron.MessagePortMain;
+ const nativeImage: typeof NativeImage;
+ type NativeImage = Electron.NativeImage;
+ const nativeTheme: NativeTheme;
+ type NativeTheme = Electron.NativeTheme;
+ const net: Net;
+ type Net = Electron.Net;
+ const netLog: NetLog;
+ type NetLog = Electron.NetLog;
+ class Notification extends Electron.Notification {}
+ const powerMonitor: PowerMonitor;
+ type PowerMonitor = Electron.PowerMonitor;
+ const powerSaveBlocker: PowerSaveBlocker;
+ type PowerSaveBlocker = Electron.PowerSaveBlocker;
+ const protocol: Protocol;
+ type Protocol = Electron.Protocol;
+ const pushNotifications: PushNotifications;
+ type PushNotifications = Electron.PushNotifications;
+ const safeStorage: SafeStorage;
+ type SafeStorage = Electron.SafeStorage;
+ const screen: Screen;
+ type Screen = Electron.Screen;
+ type ServiceWorkers = Electron.ServiceWorkers;
+ const session: typeof Session;
+ type Session = Electron.Session;
+ class ShareMenu extends Electron.ShareMenu {}
+ const shell: Shell;
+ type Shell = Electron.Shell;
+ const systemPreferences: SystemPreferences;
+ type SystemPreferences = Electron.SystemPreferences;
+ class TouchBar extends Electron.TouchBar {}
+ type TouchBarButton = Electron.TouchBarButton;
+ type TouchBarColorPicker = Electron.TouchBarColorPicker;
+ type TouchBarGroup = Electron.TouchBarGroup;
+ type TouchBarLabel = Electron.TouchBarLabel;
+ type TouchBarOtherItemsProxy = Electron.TouchBarOtherItemsProxy;
+ type TouchBarPopover = Electron.TouchBarPopover;
+ type TouchBarScrubber = Electron.TouchBarScrubber;
+ type TouchBarSegmentedControl = Electron.TouchBarSegmentedControl;
+ type TouchBarSlider = Electron.TouchBarSlider;
+ type TouchBarSpacer = Electron.TouchBarSpacer;
+ class Tray extends Electron.Tray {}
+ const utilityProcess: typeof UtilityProcess;
+ type UtilityProcess = Electron.UtilityProcess;
+ const webContents: typeof WebContents;
+ type WebContents = Electron.WebContents;
+ const webFrame: WebFrame;
+ type WebFrame = Electron.WebFrame;
+ const webFrameMain: typeof WebFrameMain;
+ type WebFrameMain = Electron.WebFrameMain;
+ type WebRequest = Electron.WebRequest;
+ type WebviewTag = Electron.WebviewTag;
+ type AboutPanelOptionsOptions = Electron.AboutPanelOptionsOptions;
+ type AddRepresentationOptions = Electron.AddRepresentationOptions;
+ type AdjustSelectionOptions = Electron.AdjustSelectionOptions;
+ type AnimationSettings = Electron.AnimationSettings;
+ type AppDetailsOptions = Electron.AppDetailsOptions;
+ type ApplicationInfoForProtocolReturnValue = Electron.ApplicationInfoForProtocolReturnValue;
+ type AuthenticationResponseDetails = Electron.AuthenticationResponseDetails;
+ type AuthInfo = Electron.AuthInfo;
+ type AutoResizeOptions = Electron.AutoResizeOptions;
+ type BeforeSendResponse = Electron.BeforeSendResponse;
+ type BitmapOptions = Electron.BitmapOptions;
+ type BlinkMemoryInfo = Electron.BlinkMemoryInfo;
+ type BluetoothPairingHandlerHandlerDetails = Electron.BluetoothPairingHandlerHandlerDetails;
+ type BrowserViewConstructorOptions = Electron.BrowserViewConstructorOptions;
+ type CallbackResponse = Electron.CallbackResponse;
+ type CertificateTrustDialogOptions = Electron.CertificateTrustDialogOptions;
+ type ClearCodeCachesOptions = Electron.ClearCodeCachesOptions;
+ type ClearStorageDataOptions = Electron.ClearStorageDataOptions;
+ type ClientRequestConstructorOptions = Electron.ClientRequestConstructorOptions;
+ type CloseOpts = Electron.CloseOpts;
+ type Config = Electron.Config;
+ type ConfigureHostResolverOptions = Electron.ConfigureHostResolverOptions;
+ type ConsoleMessageEvent = Electron.ConsoleMessageEvent;
+ type ContextMenuEvent = Electron.ContextMenuEvent;
+ type ContextMenuParams = Electron.ContextMenuParams;
+ type ContinueActivityDetails = Electron.ContinueActivityDetails;
+ type CookiesGetFilter = Electron.CookiesGetFilter;
+ type CookiesSetDetails = Electron.CookiesSetDetails;
+ type CrashReporterStartOptions = Electron.CrashReporterStartOptions;
+ type CreateFromBitmapOptions = Electron.CreateFromBitmapOptions;
+ type CreateFromBufferOptions = Electron.CreateFromBufferOptions;
+ type CreateInterruptedDownloadOptions = Electron.CreateInterruptedDownloadOptions;
+ type Data = Electron.Data;
+ type DefaultFontFamily = Electron.DefaultFontFamily;
+ type Details = Electron.Details;
+ type DevicePermissionHandlerHandlerDetails = Electron.DevicePermissionHandlerHandlerDetails;
+ type DevtoolsOpenUrlEvent = Electron.DevtoolsOpenUrlEvent;
+ type DidChangeThemeColorEvent = Electron.DidChangeThemeColorEvent;
+ type DidCreateWindowDetails = Electron.DidCreateWindowDetails;
+ type DidFailLoadEvent = Electron.DidFailLoadEvent;
+ type DidFrameFinishLoadEvent = Electron.DidFrameFinishLoadEvent;
+ type DidFrameNavigateEvent = Electron.DidFrameNavigateEvent;
+ type DidNavigateEvent = Electron.DidNavigateEvent;
+ type DidNavigateInPageEvent = Electron.DidNavigateInPageEvent;
+ type DidRedirectNavigationEvent = Electron.DidRedirectNavigationEvent;
+ type DidStartNavigationEvent = Electron.DidStartNavigationEvent;
+ type DisplayBalloonOptions = Electron.DisplayBalloonOptions;
+ type DisplayMediaRequestHandlerHandlerRequest = Electron.DisplayMediaRequestHandlerHandlerRequest;
+ type DownloadURLOptions = Electron.DownloadURLOptions;
+ type EnableNetworkEmulationOptions = Electron.EnableNetworkEmulationOptions;
+ type FeedURLOptions = Electron.FeedURLOptions;
+ type FileIconOptions = Electron.FileIconOptions;
+ type FindInPageOptions = Electron.FindInPageOptions;
+ type FocusOptions = Electron.FocusOptions;
+ type ForkOptions = Electron.ForkOptions;
+ type FoundInPageEvent = Electron.FoundInPageEvent;
+ type FrameCreatedDetails = Electron.FrameCreatedDetails;
+ type FromPartitionOptions = Electron.FromPartitionOptions;
+ type FromPathOptions = Electron.FromPathOptions;
+ type HandlerDetails = Electron.HandlerDetails;
+ type HeadersReceivedResponse = Electron.HeadersReceivedResponse;
+ type HeapStatistics = Electron.HeapStatistics;
+ type HidDeviceAddedDetails = Electron.HidDeviceAddedDetails;
+ type HidDeviceRemovedDetails = Electron.HidDeviceRemovedDetails;
+ type HidDeviceRevokedDetails = Electron.HidDeviceRevokedDetails;
+ type IgnoreMouseEventsOptions = Electron.IgnoreMouseEventsOptions;
+ type ImportCertificateOptions = Electron.ImportCertificateOptions;
+ type Info = Electron.Info;
+ type Input = Electron.Input;
+ type InsertCSSOptions = Electron.InsertCSSOptions;
+ type IpcMessageEvent = Electron.IpcMessageEvent;
+ type Item = Electron.Item;
+ type JumpListSettings = Electron.JumpListSettings;
+ type LoadCommitEvent = Electron.LoadCommitEvent;
+ type LoadExtensionOptions = Electron.LoadExtensionOptions;
+ type LoadFileOptions = Electron.LoadFileOptions;
+ type LoadURLOptions = Electron.LoadURLOptions;
+ type LoginItemSettings = Electron.LoginItemSettings;
+ type LoginItemSettingsOptions = Electron.LoginItemSettingsOptions;
+ type MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
+ type MessageBoxOptions = Electron.MessageBoxOptions;
+ type MessageBoxReturnValue = Electron.MessageBoxReturnValue;
+ type MessageBoxSyncOptions = Electron.MessageBoxSyncOptions;
+ type MessageDetails = Electron.MessageDetails;
+ type MessageEvent = Electron.MessageEvent;
+ type MoveToApplicationsFolderOptions = Electron.MoveToApplicationsFolderOptions;
+ type NotificationConstructorOptions = Electron.NotificationConstructorOptions;
+ type OnBeforeRedirectListenerDetails = Electron.OnBeforeRedirectListenerDetails;
+ type OnBeforeRequestListenerDetails = Electron.OnBeforeRequestListenerDetails;
+ type OnBeforeSendHeadersListenerDetails = Electron.OnBeforeSendHeadersListenerDetails;
+ type OnCompletedListenerDetails = Electron.OnCompletedListenerDetails;
+ type OnErrorOccurredListenerDetails = Electron.OnErrorOccurredListenerDetails;
+ type OnHeadersReceivedListenerDetails = Electron.OnHeadersReceivedListenerDetails;
+ type OnResponseStartedListenerDetails = Electron.OnResponseStartedListenerDetails;
+ type OnSendHeadersListenerDetails = Electron.OnSendHeadersListenerDetails;
+ type OpenDevToolsOptions = Electron.OpenDevToolsOptions;
+ type OpenDialogOptions = Electron.OpenDialogOptions;
+ type OpenDialogReturnValue = Electron.OpenDialogReturnValue;
+ type OpenDialogSyncOptions = Electron.OpenDialogSyncOptions;
+ type OpenExternalOptions = Electron.OpenExternalOptions;
+ type Options = Electron.Options;
+ type Opts = Electron.Opts;
+ type PageFaviconUpdatedEvent = Electron.PageFaviconUpdatedEvent;
+ type PageTitleUpdatedEvent = Electron.PageTitleUpdatedEvent;
+ type Parameters = Electron.Parameters;
+ type Payment = Electron.Payment;
+ type PermissionCheckHandlerHandlerDetails = Electron.PermissionCheckHandlerHandlerDetails;
+ type PermissionRequestHandlerHandlerDetails = Electron.PermissionRequestHandlerHandlerDetails;
+ type PluginCrashedEvent = Electron.PluginCrashedEvent;
+ type PopupOptions = Electron.PopupOptions;
+ type PreconnectOptions = Electron.PreconnectOptions;
+ type PrintToPDFOptions = Electron.PrintToPDFOptions;
+ type Privileges = Electron.Privileges;
+ type ProgressBarOptions = Electron.ProgressBarOptions;
+ type Provider = Electron.Provider;
+ type PurchaseProductOpts = Electron.PurchaseProductOpts;
+ type ReadBookmark = Electron.ReadBookmark;
+ type RegistrationCompletedDetails = Electron.RegistrationCompletedDetails;
+ type RelaunchOptions = Electron.RelaunchOptions;
+ type RenderProcessGoneEvent = Electron.RenderProcessGoneEvent;
+ type Request = Electron.Request;
+ type ResizeOptions = Electron.ResizeOptions;
+ type ResolveHostOptions = Electron.ResolveHostOptions;
+ type ResourceUsage = Electron.ResourceUsage;
+ type Response = Electron.Response;
+ type Result = Electron.Result;
+ type SaveDialogOptions = Electron.SaveDialogOptions;
+ type SaveDialogReturnValue = Electron.SaveDialogReturnValue;
+ type SaveDialogSyncOptions = Electron.SaveDialogSyncOptions;
+ type SelectHidDeviceDetails = Electron.SelectHidDeviceDetails;
+ type SelectUsbDeviceDetails = Electron.SelectUsbDeviceDetails;
+ type SerialPortRevokedDetails = Electron.SerialPortRevokedDetails;
+ type Settings = Electron.Settings;
+ type SourcesOptions = Electron.SourcesOptions;
+ type SSLConfigConfig = Electron.SSLConfigConfig;
+ type StartLoggingOptions = Electron.StartLoggingOptions;
+ type Streams = Electron.Streams;
+ type SystemMemoryInfo = Electron.SystemMemoryInfo;
+ type TitleBarOverlay = Electron.TitleBarOverlay;
+ type TitleBarOverlayOptions = Electron.TitleBarOverlayOptions;
+ type TitleOptions = Electron.TitleOptions;
+ type ToBitmapOptions = Electron.ToBitmapOptions;
+ type ToDataURLOptions = Electron.ToDataURLOptions;
+ type ToPNGOptions = Electron.ToPNGOptions;
+ type TouchBarButtonConstructorOptions = Electron.TouchBarButtonConstructorOptions;
+ type TouchBarColorPickerConstructorOptions = Electron.TouchBarColorPickerConstructorOptions;
+ type TouchBarConstructorOptions = Electron.TouchBarConstructorOptions;
+ type TouchBarGroupConstructorOptions = Electron.TouchBarGroupConstructorOptions;
+ type TouchBarLabelConstructorOptions = Electron.TouchBarLabelConstructorOptions;
+ type TouchBarPopoverConstructorOptions = Electron.TouchBarPopoverConstructorOptions;
+ type TouchBarScrubberConstructorOptions = Electron.TouchBarScrubberConstructorOptions;
+ type TouchBarSegmentedControlConstructorOptions = Electron.TouchBarSegmentedControlConstructorOptions;
+ type TouchBarSliderConstructorOptions = Electron.TouchBarSliderConstructorOptions;
+ type TouchBarSpacerConstructorOptions = Electron.TouchBarSpacerConstructorOptions;
+ type TraceBufferUsageReturnValue = Electron.TraceBufferUsageReturnValue;
+ type UpdateTargetUrlEvent = Electron.UpdateTargetUrlEvent;
+ type UploadProgress = Electron.UploadProgress;
+ type UsbDeviceRevokedDetails = Electron.UsbDeviceRevokedDetails;
+ type USBProtectedClassesHandlerHandlerDetails = Electron.USBProtectedClassesHandlerHandlerDetails;
+ type VisibleOnAllWorkspacesOptions = Electron.VisibleOnAllWorkspacesOptions;
+ type WebContentsAudioStateChangedEventParams = Electron.WebContentsAudioStateChangedEventParams;
+ type WebContentsDidRedirectNavigationEventParams = Electron.WebContentsDidRedirectNavigationEventParams;
+ type WebContentsDidStartNavigationEventParams = Electron.WebContentsDidStartNavigationEventParams;
+ type WebContentsPrintOptions = Electron.WebContentsPrintOptions;
+ type WebContentsWillFrameNavigateEventParams = Electron.WebContentsWillFrameNavigateEventParams;
+ type WebContentsWillNavigateEventParams = Electron.WebContentsWillNavigateEventParams;
+ type WebContentsWillRedirectEventParams = Electron.WebContentsWillRedirectEventParams;
+ type WebviewTagPrintOptions = Electron.WebviewTagPrintOptions;
+ type WillFrameNavigateEvent = Electron.WillFrameNavigateEvent;
+ type WillNavigateEvent = Electron.WillNavigateEvent;
+ type WillResizeDetails = Electron.WillResizeDetails;
+ type EditFlags = Electron.EditFlags;
+ type Env = Electron.Env;
+ type FoundInPageResult = Electron.FoundInPageResult;
+ type LaunchItems = Electron.LaunchItems;
+ type Margins = Electron.Margins;
+ type MediaFlags = Electron.MediaFlags;
+ type PageRanges = Electron.PageRanges;
+ type Params = Electron.Params;
+ type Video = Electron.Video;
+ type BluetoothDevice = Electron.BluetoothDevice;
+ type BrowserWindowConstructorOptions = Electron.BrowserWindowConstructorOptions;
+ type Certificate = Electron.Certificate;
+ type CertificatePrincipal = Electron.CertificatePrincipal;
+ type Cookie = Electron.Cookie;
+ type CPUUsage = Electron.CPUUsage;
+ type CrashReport = Electron.CrashReport;
+ type CustomScheme = Electron.CustomScheme;
+ type DesktopCapturerSource = Electron.DesktopCapturerSource;
+ type Display = Electron.Display;
+ type Extension = Electron.Extension;
+ type ExtensionInfo = Electron.ExtensionInfo;
+ type FileFilter = Electron.FileFilter;
+ type FilePathWithHeaders = Electron.FilePathWithHeaders;
+ type GPUFeatureStatus = Electron.GPUFeatureStatus;
+ type HIDDevice = Electron.HIDDevice;
+ type InputEvent = Electron.InputEvent;
+ type IOCounters = Electron.IOCounters;
+ type IpcMainEvent = Electron.IpcMainEvent;
+ type IpcMainInvokeEvent = Electron.IpcMainInvokeEvent;
+ type IpcRendererEvent = Electron.IpcRendererEvent;
+ type JumpListCategory = Electron.JumpListCategory;
+ type JumpListItem = Electron.JumpListItem;
+ type KeyboardEvent = Electron.KeyboardEvent;
+ type KeyboardInputEvent = Electron.KeyboardInputEvent;
+ type MemoryInfo = Electron.MemoryInfo;
+ type MemoryUsageDetails = Electron.MemoryUsageDetails;
+ type MimeTypedBuffer = Electron.MimeTypedBuffer;
+ type MouseInputEvent = Electron.MouseInputEvent;
+ type MouseWheelInputEvent = Electron.MouseWheelInputEvent;
+ type NotificationAction = Electron.NotificationAction;
+ type NotificationResponse = Electron.NotificationResponse;
+ type PaymentDiscount = Electron.PaymentDiscount;
+ type Point = Electron.Point;
+ type PostBody = Electron.PostBody;
+ type PrinterInfo = Electron.PrinterInfo;
+ type ProcessMemoryInfo = Electron.ProcessMemoryInfo;
+ type ProcessMetric = Electron.ProcessMetric;
+ type Product = Electron.Product;
+ type ProductDiscount = Electron.ProductDiscount;
+ type ProductSubscriptionPeriod = Electron.ProductSubscriptionPeriod;
+ type ProtocolRequest = Electron.ProtocolRequest;
+ type ProtocolResponse = Electron.ProtocolResponse;
+ type ProtocolResponseUploadData = Electron.ProtocolResponseUploadData;
+ type Rectangle = Electron.Rectangle;
+ type Referrer = Electron.Referrer;
+ type RenderProcessGoneDetails = Electron.RenderProcessGoneDetails;
+ type ResolvedEndpoint = Electron.ResolvedEndpoint;
+ type ResolvedHost = Electron.ResolvedHost;
+ type ScrubberItem = Electron.ScrubberItem;
+ type SegmentedControlSegment = Electron.SegmentedControlSegment;
+ type SerialPort = Electron.SerialPort;
+ type ServiceWorkerInfo = Electron.ServiceWorkerInfo;
+ type SharedWorkerInfo = Electron.SharedWorkerInfo;
+ type SharingItem = Electron.SharingItem;
+ type ShortcutDetails = Electron.ShortcutDetails;
+ type Size = Electron.Size;
+ type Task = Electron.Task;
+ type ThumbarButton = Electron.ThumbarButton;
+ type TraceCategoriesAndOptions = Electron.TraceCategoriesAndOptions;
+ type TraceConfig = Electron.TraceConfig;
+ type Transaction = Electron.Transaction;
+ type UploadData = Electron.UploadData;
+ type UploadFile = Electron.UploadFile;
+ type UploadRawData = Electron.UploadRawData;
+ type USBDevice = Electron.USBDevice;
+ type UserDefaultTypes = Electron.UserDefaultTypes;
+ type WebPreferences = Electron.WebPreferences;
+ type WebRequestFilter = Electron.WebRequestFilter;
+ type WebSource = Electron.WebSource;
+ }
+
+ const app: App;
+ const autoUpdater: AutoUpdater;
+ const clipboard: Clipboard;
+ const contentTracing: ContentTracing;
+ const contextBridge: ContextBridge;
+ const crashReporter: CrashReporter;
+ const desktopCapturer: DesktopCapturer;
+ const dialog: Dialog;
+ const globalShortcut: GlobalShortcut;
+ const inAppPurchase: InAppPurchase;
+ const ipcMain: IpcMain;
+ const ipcRenderer: IpcRenderer;
+ const nativeImage: typeof NativeImage;
+ const nativeTheme: NativeTheme;
+ const net: Net;
+ const netLog: NetLog;
+ const parentPort: ParentPort;
+ const powerMonitor: PowerMonitor;
+ const powerSaveBlocker: PowerSaveBlocker;
+ const protocol: Protocol;
+ const pushNotifications: PushNotifications;
+ const safeStorage: SafeStorage;
+ const screen: Screen;
+ const session: typeof Session;
+ const shell: Shell;
+ const systemPreferences: SystemPreferences;
+ const utilityProcess: typeof UtilityProcess;
+ const webContents: typeof WebContents;
+ const webFrame: WebFrame;
+ const webFrameMain: typeof WebFrameMain;
+
+}
+
+declare module 'electron' {
+ export = Electron.CrossProcessExports;
+}
+
+declare module 'electron/main' {
+ export = Electron.Main;
+}
+
+declare module 'electron/common' {
+ export = Electron.Common;
+}
+
+declare module 'electron/renderer' {
+ export = Electron.Renderer;
+}
+
+interface NodeRequireFunction {
+ (moduleName: 'electron'): typeof Electron.CrossProcessExports;
+ (moduleName: 'electron/main'): typeof Electron.Main;
+ (moduleName: 'electron/common'): typeof Electron.Common;
+ (moduleName: 'electron/renderer'): typeof Electron.Renderer;
+}
+
+interface NodeRequire {
+ (moduleName: 'electron'): typeof Electron.CrossProcessExports;
+ (moduleName: 'electron/main'): typeof Electron.Main;
+ (moduleName: 'electron/common'): typeof Electron.Common;
+ (moduleName: 'electron/renderer'): typeof Electron.Renderer;
+}
+
+interface File {
+ /**
+ * The real path to the file on the users filesystem
+ */
+ path: string;
+}
+
+declare module 'original-fs' {
+ import * as fs from 'fs';
+ export = fs;
+}
+
+declare module 'node:original-fs' {
+ import * as fs from 'fs';
+ export = fs;
+}
+
+interface Document {
+ createElement(tagName: 'webview'): Electron.WebviewTag;
+}
+
+
+declare namespace NodeJS {
+ interface Process extends NodeJS.EventEmitter {
+
+ // Docs: https://electronjs.org/docs/api/process
+
+ /**
+ * Emitted when Electron has loaded its internal initialization script and is
+ * beginning to load the web page or the main script.
+ */
+ on(event: 'loaded', listener: Function): this;
+ once(event: 'loaded', listener: Function): this;
+ addListener(event: 'loaded', listener: Function): this;
+ removeListener(event: 'loaded', listener: Function): this;
+ /**
+ * Causes the main thread of the current process crash.
+ */
+ crash(): void;
+ /**
+ * * `allocated` Integer - Size of all allocated objects in Kilobytes.
+ * * `total` Integer - Total allocated space in Kilobytes.
+ *
+ * Returns an object with Blink memory information. It can be useful for debugging
+ * rendering / DOM related memory issues. Note that all values are reported in
+ * Kilobytes.
+ */
+ getBlinkMemoryInfo(): Electron.BlinkMemoryInfo;
+ getCPUUsage(): Electron.CPUUsage;
+ /**
+ * The number of milliseconds since epoch, or `null` if the information is
+ * unavailable
+ *
+ * Indicates the creation time of the application. The time is represented as
+ * number of milliseconds since epoch. It returns null if it is unable to get the
+ * process creation time.
+ */
+ getCreationTime(): (number) | (null);
+ /**
+ * * `totalHeapSize` Integer
+ * * `totalHeapSizeExecutable` Integer
+ * * `totalPhysicalSize` Integer
+ * * `totalAvailableSize` Integer
+ * * `usedHeapSize` Integer
+ * * `heapSizeLimit` Integer
+ * * `mallocedMemory` Integer
+ * * `peakMallocedMemory` Integer
+ * * `doesZapGarbage` boolean
+ *
+ * Returns an object with V8 heap statistics. Note that all statistics are reported
+ * in Kilobytes.
+ */
+ getHeapStatistics(): Electron.HeapStatistics;
+ /**
+ * @platform win32,linux
+ */
+ getIOCounters(): Electron.IOCounters;
+ /**
+ * Resolves with a ProcessMemoryInfo
+ *
+ * Returns an object giving memory usage statistics about the current process. Note
+ * that all statistics are reported in Kilobytes. This api should be called after
+ * app ready.
+ *
+ * Chromium does not provide `residentSet` value for macOS. This is because macOS
+ * performs in-memory compression of pages that haven't been recently used. As a
+ * result the resident set size value is not what one would expect. `private`
+ * memory is more representative of the actual pre-compression memory usage of the
+ * process on macOS.
+ */
+ getProcessMemoryInfo(): Promise<Electron.ProcessMemoryInfo>;
+ /**
+ * * `total` Integer - The total amount of physical memory in Kilobytes available
+ * to the system.
+ * * `free` Integer - The total amount of memory not being used by applications or
+ * disk cache.
+ * * `swapTotal` Integer _Windows_ _Linux_ - The total amount of swap memory in
+ * Kilobytes available to the system.
+ * * `swapFree` Integer _Windows_ _Linux_ - The free amount of swap memory in
+ * Kilobytes available to the system.
+ *
+ * Returns an object giving memory usage statistics about the entire system. Note
+ * that all statistics are reported in Kilobytes.
+ */
+ getSystemMemoryInfo(): Electron.SystemMemoryInfo;
+ /**
+ * The version of the host operating system.
+ *
+ * Example:
+ *
+ * **Note:** It returns the actual operating system version instead of kernel
+ * version on macOS unlike `os.release()`.
+ */
+ getSystemVersion(): string;
+ /**
+ * Causes the main thread of the current process hang.
+ */
+ hang(): void;
+ /**
+ * Sets the file descriptor soft limit to `maxDescriptors` or the OS hard limit,
+ * whichever is lower for the current process.
+ *
+ * @platform darwin,linux
+ */
+ setFdLimit(maxDescriptors: number): void;
+ /**
+ * Indicates whether the snapshot has been created successfully.
+ *
+ * Takes a V8 heap snapshot and saves it to `filePath`.
+ */
+ takeHeapSnapshot(filePath: string): boolean;
+ /**
+ * A `string` representing Chrome's version string.
+ *
+ */
+ readonly chrome: string;
+ /**
+ * A `string` (optional) representing a globally unique ID of the current
+ * JavaScript context. Each frame has its own JavaScript context. When
+ * contextIsolation is enabled, the isolated world also has a separate JavaScript
+ * context. This property is only available in the renderer process.
+ *
+ */
+ readonly contextId?: string;
+ /**
+ * A `boolean` that indicates whether the current renderer context has
+ * `contextIsolation` enabled. It is `undefined` in the main process.
+ *
+ */
+ readonly contextIsolated: boolean;
+ /**
+ * A `boolean`. When the app is started by being passed as parameter to the default
+ * Electron executable, this property is `true` in the main process, otherwise it
+ * is `undefined`. For example when running the app with `electron .`, it is
+ * `true`, even if the app is packaged (`isPackaged`) is `true`. This can be useful
+ * to determine how many arguments will need to be sliced off from `process.argv`.
+ *
+ */
+ readonly defaultApp: boolean;
+ /**
+ * A `string` representing Electron's version string.
+ *
+ */
+ readonly electron: string;
+ /**
+ * A `boolean`, `true` when the current renderer context is the "main" renderer
+ * frame. If you want the ID of the current frame you should use
+ * `webFrame.routingId`.
+ *
+ */
+ readonly isMainFrame: boolean;
+ /**
+ * A `boolean`. For Mac App Store build, this property is `true`, for other builds
+ * it is `undefined`.
+ *
+ */
+ readonly mas: boolean;
+ /**
+ * A `boolean` that controls ASAR support inside your application. Setting this to
+ * `true` will disable the support for `asar` archives in Node's built-in modules.
+ */
+ noAsar: boolean;
+ /**
+ * A `boolean` that controls whether or not deprecation warnings are printed to
+ * `stderr`. Setting this to `true` will silence deprecation warnings. This
+ * property is used instead of the `--no-deprecation` command line flag.
+ */
+ noDeprecation: boolean;
+ /**
+ * A `Electron.ParentPort` property if this is a `UtilityProcess` (or `null`
+ * otherwise) allowing communication with the parent process.
+ */
+ parentPort: Electron.ParentPort;
+ /**
+ * A `string` representing the path to the resources directory.
+ *
+ */
+ readonly resourcesPath: string;
+ /**
+ * A `boolean`. When the renderer process is sandboxed, this property is `true`,
+ * otherwise it is `undefined`.
+ *
+ */
+ readonly sandboxed: boolean;
+ /**
+ * A `boolean` that controls whether or not deprecation warnings will be thrown as
+ * exceptions. Setting this to `true` will throw errors for deprecations. This
+ * property is used instead of the `--throw-deprecation` command line flag.
+ */
+ throwDeprecation: boolean;
+ /**
+ * A `boolean` that controls whether or not deprecations printed to `stderr`
+ * include their stack trace. Setting this to `true` will print stack traces for
+ * deprecations. This property is instead of the `--trace-deprecation` command line
+ * flag.
+ */
+ traceDeprecation: boolean;
+ /**
+ * A `boolean` that controls whether or not process warnings printed to `stderr`
+ * include their stack trace. Setting this to `true` will print stack traces for
+ * process warnings (including deprecations). This property is instead of the
+ * `--trace-warnings` command line flag.
+ */
+ traceProcessWarnings: boolean;
+ /**
+ * A `string` representing the current process's type, can be:
+ *
+ * * `browser` - The main process
+ * * `renderer` - A renderer process
+ * * `worker` - In a web worker
+ * * `utility` - In a node process launched as a service
+ *
+ */
+ readonly type: ('browser' | 'renderer' | 'worker' | 'utility');
+ /**
+ * A `boolean`. If the app is running as a Windows Store app (appx), this property
+ * is `true`, for otherwise it is `undefined`.
+ *
+ */
+ readonly windowsStore: boolean;
+ }
+ interface ProcessVersions {
+ readonly electron: string;
+ readonly chrome: string;
+ }
+} \ No newline at end of file
diff --git a/client/node_modules/electron/index.js b/client/node_modules/electron/index.js
new file mode 100644
index 0000000..ccde246
--- /dev/null
+++ b/client/node_modules/electron/index.js
@@ -0,0 +1,21 @@
+const fs = require('fs');
+const path = require('path');
+
+const pathFile = path.join(__dirname, 'path.txt');
+
+function getElectronPath () {
+ let executablePath;
+ if (fs.existsSync(pathFile)) {
+ executablePath = fs.readFileSync(pathFile, 'utf-8');
+ }
+ if (process.env.ELECTRON_OVERRIDE_DIST_PATH) {
+ return path.join(process.env.ELECTRON_OVERRIDE_DIST_PATH, executablePath || 'electron');
+ }
+ if (executablePath) {
+ return path.join(__dirname, 'dist', executablePath);
+ } else {
+ throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again');
+ }
+}
+
+module.exports = getElectronPath();
diff --git a/client/node_modules/electron/install.js b/client/node_modules/electron/install.js
new file mode 100644
index 0000000..8fb438e
--- /dev/null
+++ b/client/node_modules/electron/install.js
@@ -0,0 +1,107 @@
+#!/usr/bin/env node
+
+const { version } = require('./package');
+
+const childProcess = require('child_process');
+const fs = require('fs');
+const os = require('os');
+const path = require('path');
+const extract = require('extract-zip');
+const { downloadArtifact } = require('@electron/get');
+
+if (process.env.ELECTRON_SKIP_BINARY_DOWNLOAD) {
+ process.exit(0);
+}
+
+const platformPath = getPlatformPath();
+
+if (isInstalled()) {
+ process.exit(0);
+}
+
+const platform = process.env.npm_config_platform || process.platform;
+let arch = process.env.npm_config_arch || process.arch;
+
+if (platform === 'darwin' && process.platform === 'darwin' && arch === 'x64' &&
+ process.env.npm_config_arch === undefined) {
+ // When downloading for macOS ON macOS and we think we need x64 we should
+ // check if we're running under rosetta and download the arm64 version if appropriate
+ try {
+ const output = childProcess.execSync('sysctl -in sysctl.proc_translated');
+ if (output.toString().trim() === '1') {
+ arch = 'arm64';
+ }
+ } catch {
+ // Ignore failure
+ }
+}
+
+// downloads if not cached
+downloadArtifact({
+ version,
+ artifactName: 'electron',
+ force: process.env.force_no_cache === 'true',
+ cacheRoot: process.env.electron_config_cache,
+ checksums: process.env.electron_use_remote_checksums ? undefined : require('./checksums.json'),
+ platform,
+ arch
+}).then(extractFile).catch(err => {
+ console.error(err.stack);
+ process.exit(1);
+});
+
+function isInstalled () {
+ try {
+ if (fs.readFileSync(path.join(__dirname, 'dist', 'version'), 'utf-8').replace(/^v/, '') !== version) {
+ return false;
+ }
+
+ if (fs.readFileSync(path.join(__dirname, 'path.txt'), 'utf-8') !== platformPath) {
+ return false;
+ }
+ } catch (ignored) {
+ return false;
+ }
+
+ const electronPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist', platformPath);
+
+ return fs.existsSync(electronPath);
+}
+
+// unzips and makes path.txt point at the correct executable
+function extractFile (zipPath) {
+ const distPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist');
+
+ return extract(zipPath, { dir: path.join(__dirname, 'dist') }).then(() => {
+ // If the zip contains an "electron.d.ts" file,
+ // move that up
+ const srcTypeDefPath = path.join(distPath, 'electron.d.ts');
+ const targetTypeDefPath = path.join(__dirname, 'electron.d.ts');
+ const hasTypeDefinitions = fs.existsSync(srcTypeDefPath);
+
+ if (hasTypeDefinitions) {
+ fs.renameSync(srcTypeDefPath, targetTypeDefPath);
+ }
+
+ // Write a "path.txt" file.
+ return fs.promises.writeFile(path.join(__dirname, 'path.txt'), platformPath);
+ });
+}
+
+function getPlatformPath () {
+ const platform = process.env.npm_config_platform || os.platform();
+
+ switch (platform) {
+ case 'mas':
+ case 'darwin':
+ return 'Electron.app/Contents/MacOS/Electron';
+ case 'freebsd':
+ case 'openbsd':
+ case 'linux':
+ return 'electron';
+ case 'win32':
+ return 'electron.exe';
+ default:
+ throw new Error('Electron builds are not available on platform: ' + platform);
+ }
+}
diff --git a/client/node_modules/electron/package.json b/client/node_modules/electron/package.json
new file mode 100644
index 0000000..775d014
--- /dev/null
+++ b/client/node_modules/electron/package.json
@@ -0,0 +1,27 @@
+{
+ "main": "index.js",
+ "types": "electron.d.ts",
+ "bin": {
+ "electron": "cli.js"
+ },
+ "scripts": {
+ "postinstall": "node install.js"
+ },
+ "dependencies": {
+ "@electron/get": "^2.0.0",
+ "@types/node": "^18.11.18",
+ "extract-zip": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 12.20.55"
+ },
+ "name": "electron",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "version": "27.1.2"
+} \ No newline at end of file
diff --git a/client/node_modules/electron/path.txt b/client/node_modules/electron/path.txt
new file mode 100644
index 0000000..7e2e0cc
--- /dev/null
+++ b/client/node_modules/electron/path.txt
@@ -0,0 +1 @@
+Electron.app/Contents/MacOS/Electron \ No newline at end of file
diff --git a/client/node_modules/end-of-stream/LICENSE b/client/node_modules/end-of-stream/LICENSE
new file mode 100644
index 0000000..757562e
--- /dev/null
+++ b/client/node_modules/end-of-stream/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/client/node_modules/end-of-stream/README.md b/client/node_modules/end-of-stream/README.md
new file mode 100644
index 0000000..857b14b
--- /dev/null
+++ b/client/node_modules/end-of-stream/README.md
@@ -0,0 +1,54 @@
+# end-of-stream
+
+A node module that calls a callback when a readable/writable/duplex stream has completed or failed.
+
+ npm install end-of-stream
+
+[![Build status](https://travis-ci.org/mafintosh/end-of-stream.svg?branch=master)](https://travis-ci.org/mafintosh/end-of-stream)
+
+## Usage
+
+Simply pass a stream and a callback to the `eos`.
+Both legacy streams, streams2 and stream3 are supported.
+
+``` js
+var eos = require('end-of-stream');
+
+eos(readableStream, function(err) {
+ // this will be set to the stream instance
+ if (err) return console.log('stream had an error or closed early');
+ console.log('stream has ended', this === readableStream);
+});
+
+eos(writableStream, function(err) {
+ if (err) return console.log('stream had an error or closed early');
+ console.log('stream has finished', this === writableStream);
+});
+
+eos(duplexStream, function(err) {
+ if (err) return console.log('stream had an error or closed early');
+ console.log('stream has ended and finished', this === duplexStream);
+});
+
+eos(duplexStream, {readable:false}, function(err) {
+ if (err) return console.log('stream had an error or closed early');
+ console.log('stream has finished but might still be readable');
+});
+
+eos(duplexStream, {writable:false}, function(err) {
+ if (err) return console.log('stream had an error or closed early');
+ console.log('stream has ended but might still be writable');
+});
+
+eos(readableStream, {error:false}, function(err) {
+ // do not treat emit('error', err) as a end-of-stream
+});
+```
+
+## License
+
+MIT
+
+## Related
+
+`end-of-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/client/node_modules/end-of-stream/index.js b/client/node_modules/end-of-stream/index.js
new file mode 100644
index 0000000..c77f0d5
--- /dev/null
+++ b/client/node_modules/end-of-stream/index.js
@@ -0,0 +1,94 @@
+var once = require('once');
+
+var noop = function() {};
+
+var isRequest = function(stream) {
+ return stream.setHeader && typeof stream.abort === 'function';
+};
+
+var isChildProcess = function(stream) {
+ return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
+};
+
+var eos = function(stream, opts, callback) {
+ if (typeof opts === 'function') return eos(stream, null, opts);
+ if (!opts) opts = {};
+
+ callback = once(callback || noop);
+
+ var ws = stream._writableState;
+ var rs = stream._readableState;
+ var readable = opts.readable || (opts.readable !== false && stream.readable);
+ var writable = opts.writable || (opts.writable !== false && stream.writable);
+ var cancelled = false;
+
+ var onlegacyfinish = function() {
+ if (!stream.writable) onfinish();
+ };
+
+ var onfinish = function() {
+ writable = false;
+ if (!readable) callback.call(stream);
+ };
+
+ var onend = function() {
+ readable = false;
+ if (!writable) callback.call(stream);
+ };
+
+ var onexit = function(exitCode) {
+ callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
+ };
+
+ var onerror = function(err) {
+ callback.call(stream, err);
+ };
+
+ var onclose = function() {
+ process.nextTick(onclosenexttick);
+ };
+
+ var onclosenexttick = function() {
+ if (cancelled) return;
+ if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));
+ if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));
+ };
+
+ var onrequest = function() {
+ stream.req.on('finish', onfinish);
+ };
+
+ if (isRequest(stream)) {
+ stream.on('complete', onfinish);
+ stream.on('abort', onclose);
+ if (stream.req) onrequest();
+ else stream.on('request', onrequest);
+ } else if (writable && !ws) { // legacy streams
+ stream.on('end', onlegacyfinish);
+ stream.on('close', onlegacyfinish);
+ }
+
+ if (isChildProcess(stream)) stream.on('exit', onexit);
+
+ stream.on('end', onend);
+ stream.on('finish', onfinish);
+ if (opts.error !== false) stream.on('error', onerror);
+ stream.on('close', onclose);
+
+ return function() {
+ cancelled = true;
+ stream.removeListener('complete', onfinish);
+ stream.removeListener('abort', onclose);
+ stream.removeListener('request', onrequest);
+ if (stream.req) stream.req.removeListener('finish', onfinish);
+ stream.removeListener('end', onlegacyfinish);
+ stream.removeListener('close', onlegacyfinish);
+ stream.removeListener('finish', onfinish);
+ stream.removeListener('exit', onexit);
+ stream.removeListener('end', onend);
+ stream.removeListener('error', onerror);
+ stream.removeListener('close', onclose);
+ };
+};
+
+module.exports = eos;
diff --git a/client/node_modules/end-of-stream/package.json b/client/node_modules/end-of-stream/package.json
new file mode 100644
index 0000000..b75bbf0
--- /dev/null
+++ b/client/node_modules/end-of-stream/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "end-of-stream",
+ "version": "1.4.4",
+ "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/mafintosh/end-of-stream.git"
+ },
+ "dependencies": {
+ "once": "^1.4.0"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "stream",
+ "streams",
+ "callback",
+ "finish",
+ "close",
+ "end",
+ "wait"
+ ],
+ "bugs": {
+ "url": "https://github.com/mafintosh/end-of-stream/issues"
+ },
+ "homepage": "https://github.com/mafintosh/end-of-stream",
+ "main": "index.js",
+ "author": "Mathias Buus <mathiasbuus@gmail.com>",
+ "license": "MIT",
+ "devDependencies": {
+ "tape": "^4.11.0"
+ }
+}
diff --git a/client/node_modules/env-paths/index.d.ts b/client/node_modules/env-paths/index.d.ts
new file mode 100644
index 0000000..277ddc0
--- /dev/null
+++ b/client/node_modules/env-paths/index.d.ts
@@ -0,0 +1,101 @@
+declare namespace envPaths {
+ export interface Options {
+ /**
+ __Don't use this option unless you really have to!__
+
+ Suffix appended to the project name to avoid name conflicts with native apps. Pass an empty string to disable it.
+
+ @default 'nodejs'
+ */
+ readonly suffix?: string;
+ }
+
+ export interface Paths {
+ /**
+ Directory for data files.
+
+ Example locations (with the default `nodejs` suffix):
+
+ - macOS: `~/Library/Application Support/MyApp-nodejs`
+ - Windows: `%LOCALAPPDATA%\MyApp-nodejs\Data` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Data`)
+ - Linux: `~/.local/share/MyApp-nodejs` (or `$XDG_DATA_HOME/MyApp-nodejs`)
+ */
+ readonly data: string;
+
+ /**
+ Directory for data files.
+
+ Example locations (with the default `nodejs` suffix):
+
+ - macOS: `~/Library/Preferences/MyApp-nodejs`
+ - Windows: `%APPDATA%\MyApp-nodejs\Config` (for example, `C:\Users\USERNAME\AppData\Roaming\MyApp-nodejs\Config`)
+ - Linux: `~/.config/MyApp-nodejs` (or `$XDG_CONFIG_HOME/MyApp-nodejs`)
+ */
+ readonly config: string;
+
+ /**
+ Directory for non-essential data files.
+
+ Example locations (with the default `nodejs` suffix):
+
+ - macOS: `~/Library/Caches/MyApp-nodejs`
+ - Windows: `%LOCALAPPDATA%\MyApp-nodejs\Cache` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Cache`)
+ - Linux: `~/.cache/MyApp-nodejs` (or `$XDG_CACHE_HOME/MyApp-nodejs`)
+ */
+ readonly cache: string;
+
+ /**
+ Directory for log files.
+
+ Example locations (with the default `nodejs` suffix):
+
+ - macOS: `~/Library/Logs/MyApp-nodejs`
+ - Windows: `%LOCALAPPDATA%\MyApp-nodejs\Log` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Log`)
+ - Linux: `~/.local/state/MyApp-nodejs` (or `$XDG_STATE_HOME/MyApp-nodejs`)
+ */
+ readonly log: string;
+
+ /**
+ Directory for temporary files.
+
+ Example locations (with the default `nodejs` suffix):
+
+ - macOS: `/var/folders/jf/f2twvvvs5jl_m49tf034ffpw0000gn/T/MyApp-nodejs`
+ - Windows: `%LOCALAPPDATA%\Temp\MyApp-nodejs` (for example, `C:\Users\USERNAME\AppData\Local\Temp\MyApp-nodejs`)
+ - Linux: `/tmp/USERNAME/MyApp-nodejs`
+ */
+ readonly temp: string;
+ }
+}
+
+declare const envPaths: {
+ /**
+ Get paths for storing things like data, config, cache, etc.
+
+ Note: It only generates the path strings. It doesn't create the directories for you. You could use [`make-dir`](https://github.com/sindresorhus/make-dir) to create the directories.
+
+ @param name - Name of your project. Used to generate the paths.
+ @returns The paths to use for your project on current OS.
+
+ @example
+ ```
+ import envPaths = require('env-paths');
+
+ const paths = envPaths('MyApp');
+
+ paths.data;
+ //=> '/home/sindresorhus/.local/share/MyApp-nodejs'
+
+ paths.config
+ //=> '/home/sindresorhus/.config/MyApp-nodejs'
+ ```
+ */
+ (name: string, options?: envPaths.Options): envPaths.Paths;
+
+ // TODO: Remove this for the next major release, refactor the whole definition to:
+ // declare function envPaths(name: string, options?: envPaths.Options): envPaths.Paths;
+ // export = envPaths;
+ default: typeof envPaths;
+};
+
+export = envPaths;
diff --git a/client/node_modules/env-paths/index.js b/client/node_modules/env-paths/index.js
new file mode 100644
index 0000000..7e7b50b
--- /dev/null
+++ b/client/node_modules/env-paths/index.js
@@ -0,0 +1,74 @@
+'use strict';
+const path = require('path');
+const os = require('os');
+
+const homedir = os.homedir();
+const tmpdir = os.tmpdir();
+const {env} = process;
+
+const macos = name => {
+ const library = path.join(homedir, 'Library');
+
+ return {
+ data: path.join(library, 'Application Support', name),
+ config: path.join(library, 'Preferences', name),
+ cache: path.join(library, 'Caches', name),
+ log: path.join(library, 'Logs', name),
+ temp: path.join(tmpdir, name)
+ };
+};
+
+const windows = name => {
+ const appData = env.APPDATA || path.join(homedir, 'AppData', 'Roaming');
+ const localAppData = env.LOCALAPPDATA || path.join(homedir, 'AppData', 'Local');
+
+ return {
+ // Data/config/cache/log are invented by me as Windows isn't opinionated about this
+ data: path.join(localAppData, name, 'Data'),
+ config: path.join(appData, name, 'Config'),
+ cache: path.join(localAppData, name, 'Cache'),
+ log: path.join(localAppData, name, 'Log'),
+ temp: path.join(tmpdir, name)
+ };
+};
+
+// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+const linux = name => {
+ const username = path.basename(homedir);
+
+ return {
+ data: path.join(env.XDG_DATA_HOME || path.join(homedir, '.local', 'share'), name),
+ config: path.join(env.XDG_CONFIG_HOME || path.join(homedir, '.config'), name),
+ cache: path.join(env.XDG_CACHE_HOME || path.join(homedir, '.cache'), name),
+ // https://wiki.debian.org/XDGBaseDirectorySpecification#state
+ log: path.join(env.XDG_STATE_HOME || path.join(homedir, '.local', 'state'), name),
+ temp: path.join(tmpdir, username, name)
+ };
+};
+
+const envPaths = (name, options) => {
+ if (typeof name !== 'string') {
+ throw new TypeError(`Expected string, got ${typeof name}`);
+ }
+
+ options = Object.assign({suffix: 'nodejs'}, options);
+
+ if (options.suffix) {
+ // Add suffix to prevent possible conflict with native apps
+ name += `-${options.suffix}`;
+ }
+
+ if (process.platform === 'darwin') {
+ return macos(name);
+ }
+
+ if (process.platform === 'win32') {
+ return windows(name);
+ }
+
+ return linux(name);
+};
+
+module.exports = envPaths;
+// TODO: Remove this for the next major release
+module.exports.default = envPaths;
diff --git a/client/node_modules/env-paths/license b/client/node_modules/env-paths/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/env-paths/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/env-paths/package.json b/client/node_modules/env-paths/package.json
new file mode 100644
index 0000000..fae4ebc
--- /dev/null
+++ b/client/node_modules/env-paths/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "env-paths",
+ "version": "2.2.1",
+ "description": "Get paths for storing things like data, config, cache, etc",
+ "license": "MIT",
+ "repository": "sindresorhus/env-paths",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "common",
+ "user",
+ "paths",
+ "env",
+ "environment",
+ "directory",
+ "dir",
+ "appdir",
+ "path",
+ "data",
+ "config",
+ "cache",
+ "logs",
+ "temp",
+ "linux",
+ "unix"
+ ],
+ "devDependencies": {
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
+ }
+}
diff --git a/client/node_modules/env-paths/readme.md b/client/node_modules/env-paths/readme.md
new file mode 100644
index 0000000..b66d571
--- /dev/null
+++ b/client/node_modules/env-paths/readme.md
@@ -0,0 +1,115 @@
+# env-paths
+
+> Get paths for storing things like data, config, cache, etc
+
+Uses the correct OS-specific paths. Most developers get this wrong.
+
+
+## Install
+
+```
+$ npm install env-paths
+```
+
+
+## Usage
+
+```js
+const envPaths = require('env-paths');
+
+const paths = envPaths('MyApp');
+
+paths.data;
+//=> '/home/sindresorhus/.local/share/MyApp-nodejs'
+
+paths.config
+//=> '/home/sindresorhus/.config/MyApp-nodejs'
+```
+
+
+## API
+
+### paths = envPaths(name, options?)
+
+Note: It only generates the path strings. It doesn't create the directories for you. You could use [`make-dir`](https://github.com/sindresorhus/make-dir) to create the directories.
+
+#### name
+
+Type: `string`
+
+Name of your project. Used to generate the paths.
+
+#### options
+
+Type: `object`
+
+##### suffix
+
+Type: `string`<br>
+Default: `'nodejs'`
+
+**Don't use this option unless you really have to!**<br>
+Suffix appended to the project name to avoid name conflicts with native
+apps. Pass an empty string to disable it.
+
+### paths.data
+
+Directory for data files.
+
+Example locations (with the default `nodejs` [suffix](#suffix)):
+
+- macOS: `~/Library/Application Support/MyApp-nodejs`
+- Windows: `%LOCALAPPDATA%\MyApp-nodejs\Data` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Data`)
+- Linux: `~/.local/share/MyApp-nodejs` (or `$XDG_DATA_HOME/MyApp-nodejs`)
+
+### paths.config
+
+Directory for config files.
+
+Example locations (with the default `nodejs` [suffix](#suffix)):
+
+- macOS: `~/Library/Preferences/MyApp-nodejs`
+- Windows: `%APPDATA%\MyApp-nodejs\Config` (for example, `C:\Users\USERNAME\AppData\Roaming\MyApp-nodejs\Config`)
+- Linux: `~/.config/MyApp-nodejs` (or `$XDG_CONFIG_HOME/MyApp-nodejs`)
+
+### paths.cache
+
+Directory for non-essential data files.
+
+Example locations (with the default `nodejs` [suffix](#suffix)):
+
+- macOS: `~/Library/Caches/MyApp-nodejs`
+- Windows: `%LOCALAPPDATA%\MyApp-nodejs\Cache` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Cache`)
+- Linux: `~/.cache/MyApp-nodejs` (or `$XDG_CACHE_HOME/MyApp-nodejs`)
+
+### paths.log
+
+Directory for log files.
+
+Example locations (with the default `nodejs` [suffix](#suffix)):
+
+- macOS: `~/Library/Logs/MyApp-nodejs`
+- Windows: `%LOCALAPPDATA%\MyApp-nodejs\Log` (for example, `C:\Users\USERNAME\AppData\Local\MyApp-nodejs\Log`)
+- Linux: `~/.local/state/MyApp-nodejs` (or `$XDG_STATE_HOME/MyApp-nodejs`)
+
+### paths.temp
+
+Directory for temporary files.
+
+Example locations (with the default `nodejs` [suffix](#suffix)):
+
+- macOS: `/var/folders/jf/f2twvvvs5jl_m49tf034ffpw0000gn/T/MyApp-nodejs`
+- Windows: `%LOCALAPPDATA%\Temp\MyApp-nodejs` (for example, `C:\Users\USERNAME\AppData\Local\Temp\MyApp-nodejs`)
+- Linux: `/tmp/USERNAME/MyApp-nodejs`
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-env-paths?utm_source=npm-env-paths&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/es6-error/CHANGELOG.md b/client/node_modules/es6-error/CHANGELOG.md
new file mode 100644
index 0000000..9e82c81
--- /dev/null
+++ b/client/node_modules/es6-error/CHANGELOG.md
@@ -0,0 +1,26 @@
+# Change Log
+
+## [v4.0.1] - 2017-01-04
+### Fixed
+ - jsnext build uses `babel-plugin-transform-builtin-extend` (#27)
+
+## [v4.0.0] - 2016-10-03
+### Added
+ - jsnext build (#26)
+
+## [v3.2.0] - 2016-09-29
+### Added
+ - TypeScript definitions (#24)
+
+## [v3.1.0] - 2016-09-08
+### Changed
+ - Point jsnext build to transpiled code (#23)
+
+## [v3.0.1] - 2016-07-14
+### Changed
+ - Move Babel config to `.babelrc` (#20)
+
+## [v3.0.0] - 2016-05-18
+### Changed
+ - Upgrade to Babel 6 (#16)
+ - Make `message`, `name`, and `stack` properties configurable (to match built-in `Error`) (#17)
diff --git a/client/node_modules/es6-error/LICENSE.md b/client/node_modules/es6-error/LICENSE.md
new file mode 100644
index 0000000..4737fd1
--- /dev/null
+++ b/client/node_modules/es6-error/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Ben Youngblood
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/es6-error/README.md b/client/node_modules/es6-error/README.md
new file mode 100644
index 0000000..8a8f130
--- /dev/null
+++ b/client/node_modules/es6-error/README.md
@@ -0,0 +1,59 @@
+# es6-error
+
+[![npm version](https://badge.fury.io/js/es6-error.svg)](https://www.npmjs.com/package/es6-error)
+[![Build Status](https://travis-ci.org/bjyoungblood/es6-error.svg?branch=master)](https://travis-ci.org/bjyoungblood/es6-error)
+
+An easily-extendable error class for use with ES6 classes (or ES5, if you so
+choose).
+
+Tested in Node 4.0, Chrome, and Firefox.
+
+## Why?
+
+I made this because I wanted to be able to extend Error for inheritance and type
+checking, but can never remember to add
+`Error.captureStackTrace(this, this.constructor.name)` to the constructor or how
+to get the proper name to print from `console.log`.
+
+## ES6 Usage
+
+```javascript
+
+import ExtendableError from 'es6-error';
+
+class MyError extends ExtendableError {
+ // constructor is optional; you should omit it if you just want a custom error
+ // type for inheritance and type checking
+ constructor(message = 'Default message') {
+ super(message);
+ }
+}
+
+export default MyError;
+```
+
+## ES5 Usage
+
+```javascript
+
+var util = require('util');
+var ExtendableError = require('es6-error');
+
+function MyError(message) {
+ message = message || 'Default message';
+ ExtendableError.call(this, message);
+}
+
+util.inherits(MyError, ExtendableError);
+
+module.exports = MyError;
+```
+
+### Known Issues
+
+- Uglification can obscure error class names ([#31](https://github.com/bjyoungblood/es6-error/issues/31#issuecomment-301128220))
+
+#### Todo
+
+- Better browser compatibility
+- Browser tests
diff --git a/client/node_modules/es6-error/es6/index.js b/client/node_modules/es6-error/es6/index.js
new file mode 100644
index 0000000..70fbfbc
--- /dev/null
+++ b/client/node_modules/es6-error/es6/index.js
@@ -0,0 +1,72 @@
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _extendableBuiltin(cls) {
+ function ExtendableBuiltin() {
+ cls.apply(this, arguments);
+ }
+
+ ExtendableBuiltin.prototype = Object.create(cls.prototype, {
+ constructor: {
+ value: cls,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(ExtendableBuiltin, cls);
+ } else {
+ ExtendableBuiltin.__proto__ = cls;
+ }
+
+ return ExtendableBuiltin;
+}
+
+var ExtendableError = function (_extendableBuiltin2) {
+ _inherits(ExtendableError, _extendableBuiltin2);
+
+ function ExtendableError() {
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+
+ _classCallCheck(this, ExtendableError);
+
+ // extending Error is weird and does not propagate `message`
+ var _this = _possibleConstructorReturn(this, (ExtendableError.__proto__ || Object.getPrototypeOf(ExtendableError)).call(this, message));
+
+ Object.defineProperty(_this, 'message', {
+ configurable: true,
+ enumerable: false,
+ value: message,
+ writable: true
+ });
+
+ Object.defineProperty(_this, 'name', {
+ configurable: true,
+ enumerable: false,
+ value: _this.constructor.name,
+ writable: true
+ });
+
+ if (Error.hasOwnProperty('captureStackTrace')) {
+ Error.captureStackTrace(_this, _this.constructor);
+ return _possibleConstructorReturn(_this);
+ }
+
+ Object.defineProperty(_this, 'stack', {
+ configurable: true,
+ enumerable: false,
+ value: new Error(message).stack,
+ writable: true
+ });
+ return _this;
+ }
+
+ return ExtendableError;
+}(_extendableBuiltin(Error));
+
+export default ExtendableError;
diff --git a/client/node_modules/es6-error/lib/index.js b/client/node_modules/es6-error/lib/index.js
new file mode 100644
index 0000000..617bef7
--- /dev/null
+++ b/client/node_modules/es6-error/lib/index.js
@@ -0,0 +1,79 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _extendableBuiltin(cls) {
+ function ExtendableBuiltin() {
+ cls.apply(this, arguments);
+ }
+
+ ExtendableBuiltin.prototype = Object.create(cls.prototype, {
+ constructor: {
+ value: cls,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(ExtendableBuiltin, cls);
+ } else {
+ ExtendableBuiltin.__proto__ = cls;
+ }
+
+ return ExtendableBuiltin;
+}
+
+var ExtendableError = function (_extendableBuiltin2) {
+ _inherits(ExtendableError, _extendableBuiltin2);
+
+ function ExtendableError() {
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+
+ _classCallCheck(this, ExtendableError);
+
+ // extending Error is weird and does not propagate `message`
+ var _this = _possibleConstructorReturn(this, (ExtendableError.__proto__ || Object.getPrototypeOf(ExtendableError)).call(this, message));
+
+ Object.defineProperty(_this, 'message', {
+ configurable: true,
+ enumerable: false,
+ value: message,
+ writable: true
+ });
+
+ Object.defineProperty(_this, 'name', {
+ configurable: true,
+ enumerable: false,
+ value: _this.constructor.name,
+ writable: true
+ });
+
+ if (Error.hasOwnProperty('captureStackTrace')) {
+ Error.captureStackTrace(_this, _this.constructor);
+ return _possibleConstructorReturn(_this);
+ }
+
+ Object.defineProperty(_this, 'stack', {
+ configurable: true,
+ enumerable: false,
+ value: new Error(message).stack,
+ writable: true
+ });
+ return _this;
+ }
+
+ return ExtendableError;
+}(_extendableBuiltin(Error));
+
+exports.default = ExtendableError;
+module.exports = exports['default'];
diff --git a/client/node_modules/es6-error/package.json b/client/node_modules/es6-error/package.json
new file mode 100644
index 0000000..c5782a5
--- /dev/null
+++ b/client/node_modules/es6-error/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "es6-error",
+ "version": "4.1.1",
+ "description": "Easily-extendable error for use with ES6 classes",
+ "main": "./lib/index",
+ "module": "./es6/index.js",
+ "typings": "./typings/index.d.ts",
+ "files": [
+ "lib",
+ "es6",
+ "typings"
+ ],
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require babel-core/register --recursive",
+ "clean": "rimraf lib es6",
+ "build": "npm run clean && npm run build:cjs && npm run build:es6",
+ "build:cjs": "mkdir -p lib && cross-env BABEL_ENV=cjs babel src/index.js -o lib/index.js",
+ "build:es6": "mkdir -p es6 && cross-env BABEL_ENV=es6 babel src/index.js -o es6/index.js",
+ "prepublishOnly": "npm run build && npm run test"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/bjyoungblood/es6-error.git"
+ },
+ "keywords": [
+ "es6",
+ "error",
+ "babel"
+ ],
+ "author": "Ben Youngblood",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/bjyoungblood/es6-error/issues"
+ },
+ "homepage": "https://github.com/bjyoungblood/es6-error",
+ "devDependencies": {
+ "babel-cli": "^6.26.0",
+ "babel-core": "^6.26.0",
+ "babel-plugin-add-module-exports": "^0.2.1",
+ "babel-plugin-transform-builtin-extend": "^1.1.2",
+ "babel-preset-env": "^1.6.1",
+ "chai": "^4.1.2",
+ "cross-env": "^5.1.1",
+ "mocha": "^4.0.1",
+ "rimraf": "^2.6.2"
+ },
+ "dependencies": {}
+}
diff --git a/client/node_modules/es6-error/typings/index.d.ts b/client/node_modules/es6-error/typings/index.d.ts
new file mode 100644
index 0000000..c1b1f12
--- /dev/null
+++ b/client/node_modules/es6-error/typings/index.d.ts
@@ -0,0 +1 @@
+export default class ExtendableError extends Error { }
diff --git a/client/node_modules/escape-string-regexp/index.d.ts b/client/node_modules/escape-string-regexp/index.d.ts
new file mode 100644
index 0000000..7d34edc
--- /dev/null
+++ b/client/node_modules/escape-string-regexp/index.d.ts
@@ -0,0 +1,18 @@
+/**
+Escape RegExp special characters.
+
+You can also use this to escape a string that is inserted into the middle of a regex, for example, into a character class.
+
+@example
+```
+import escapeStringRegexp = require('escape-string-regexp');
+
+const escapedString = escapeStringRegexp('How much $ for a 🦄?');
+//=> 'How much \\$ for a 🦄\\?'
+
+new RegExp(escapedString);
+```
+*/
+declare const escapeStringRegexp: (string: string) => string;
+
+export = escapeStringRegexp;
diff --git a/client/node_modules/escape-string-regexp/index.js b/client/node_modules/escape-string-regexp/index.js
new file mode 100644
index 0000000..387c561
--- /dev/null
+++ b/client/node_modules/escape-string-regexp/index.js
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = string => {
+ if (typeof string !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ // Escape characters with special meaning either inside or outside character sets.
+ // Use a simple backslash escape when it’s always valid, and a \unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.
+ return string
+ .replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
+ .replace(/-/g, '\\x2d');
+};
diff --git a/client/node_modules/escape-string-regexp/license b/client/node_modules/escape-string-regexp/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/escape-string-regexp/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/escape-string-regexp/package.json b/client/node_modules/escape-string-regexp/package.json
new file mode 100644
index 0000000..c6eb4a9
--- /dev/null
+++ b/client/node_modules/escape-string-regexp/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "escape-string-regexp",
+ "version": "4.0.0",
+ "description": "Escape RegExp special characters",
+ "license": "MIT",
+ "repository": "sindresorhus/escape-string-regexp",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "escape",
+ "regex",
+ "regexp",
+ "regular",
+ "expression",
+ "string",
+ "special",
+ "characters"
+ ],
+ "devDependencies": {
+ "ava": "^1.4.1",
+ "tsd": "^0.11.0",
+ "xo": "^0.28.3"
+ }
+}
diff --git a/client/node_modules/escape-string-regexp/readme.md b/client/node_modules/escape-string-regexp/readme.md
new file mode 100644
index 0000000..2945dfc
--- /dev/null
+++ b/client/node_modules/escape-string-regexp/readme.md
@@ -0,0 +1,34 @@
+# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)
+
+> Escape RegExp special characters
+
+## Install
+
+```
+$ npm install escape-string-regexp
+```
+
+## Usage
+
+```js
+const escapeStringRegexp = require('escape-string-regexp');
+
+const escapedString = escapeStringRegexp('How much $ for a 🦄?');
+//=> 'How much \\$ for a 🦄\\?'
+
+new RegExp(escapedString);
+```
+
+You can also use this to escape a string that is inserted into the middle of a regex, for example, into a character class.
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-escape-string-regexp?utm_source=npm-escape-string-regexp&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/extract-zip/LICENSE b/client/node_modules/extract-zip/LICENSE
new file mode 100644
index 0000000..2921069
--- /dev/null
+++ b/client/node_modules/extract-zip/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2014 Max Ogden and other contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/extract-zip/cli.js b/client/node_modules/extract-zip/cli.js
new file mode 100755
index 0000000..b594016
--- /dev/null
+++ b/client/node_modules/extract-zip/cli.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env node
+
+/* eslint-disable no-process-exit */
+
+var extract = require('./')
+
+var args = process.argv.slice(2)
+var source = args[0]
+var dest = args[1] || process.cwd()
+if (!source) {
+ console.error('Usage: extract-zip foo.zip <targetDirectory>')
+ process.exit(1)
+}
+
+extract(source, { dir: dest })
+ .catch(function (err) {
+ console.error('error!', err)
+ process.exit(1)
+ })
diff --git a/client/node_modules/extract-zip/index.d.ts b/client/node_modules/extract-zip/index.d.ts
new file mode 100644
index 0000000..6dbcc80
--- /dev/null
+++ b/client/node_modules/extract-zip/index.d.ts
@@ -0,0 +1,21 @@
+// Based on the type definitions for extract-zip 1.6
+// Definitions by: Mizunashi Mana <https://github.com/mizunashi-mana>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e69b58e/types/extract-zip/index.d.ts
+
+import { Entry, ZipFile } from 'yauzl';
+
+declare namespace extract {
+ interface Options {
+ dir: string;
+ defaultDirMode?: number;
+ defaultFileMode?: number;
+ onEntry?: (entry: Entry, zipfile: ZipFile) => void;
+ }
+}
+
+declare function extract(
+ zipPath: string,
+ opts: extract.Options,
+): Promise<void>;
+
+export = extract;
diff --git a/client/node_modules/extract-zip/index.js b/client/node_modules/extract-zip/index.js
new file mode 100644
index 0000000..23384ea
--- /dev/null
+++ b/client/node_modules/extract-zip/index.js
@@ -0,0 +1,173 @@
+const debug = require('debug')('extract-zip')
+// eslint-disable-next-line node/no-unsupported-features/node-builtins
+const { createWriteStream, promises: fs } = require('fs')
+const getStream = require('get-stream')
+const path = require('path')
+const { promisify } = require('util')
+const stream = require('stream')
+const yauzl = require('yauzl')
+
+const openZip = promisify(yauzl.open)
+const pipeline = promisify(stream.pipeline)
+
+class Extractor {
+ constructor (zipPath, opts) {
+ this.zipPath = zipPath
+ this.opts = opts
+ }
+
+ async extract () {
+ debug('opening', this.zipPath, 'with opts', this.opts)
+
+ this.zipfile = await openZip(this.zipPath, { lazyEntries: true })
+ this.canceled = false
+
+ return new Promise((resolve, reject) => {
+ this.zipfile.on('error', err => {
+ this.canceled = true
+ reject(err)
+ })
+ this.zipfile.readEntry()
+
+ this.zipfile.on('close', () => {
+ if (!this.canceled) {
+ debug('zip extraction complete')
+ resolve()
+ }
+ })
+
+ this.zipfile.on('entry', async entry => {
+ /* istanbul ignore if */
+ if (this.canceled) {
+ debug('skipping entry', entry.fileName, { cancelled: this.canceled })
+ return
+ }
+
+ debug('zipfile entry', entry.fileName)
+
+ if (entry.fileName.startsWith('__MACOSX/')) {
+ this.zipfile.readEntry()
+ return
+ }
+
+ const destDir = path.dirname(path.join(this.opts.dir, entry.fileName))
+
+ try {
+ await fs.mkdir(destDir, { recursive: true })
+
+ const canonicalDestDir = await fs.realpath(destDir)
+ const relativeDestDir = path.relative(this.opts.dir, canonicalDestDir)
+
+ if (relativeDestDir.split(path.sep).includes('..')) {
+ throw new Error(`Out of bound path "${canonicalDestDir}" found while processing file ${entry.fileName}`)
+ }
+
+ await this.extractEntry(entry)
+ debug('finished processing', entry.fileName)
+ this.zipfile.readEntry()
+ } catch (err) {
+ this.canceled = true
+ this.zipfile.close()
+ reject(err)
+ }
+ })
+ })
+ }
+
+ async extractEntry (entry) {
+ /* istanbul ignore if */
+ if (this.canceled) {
+ debug('skipping entry extraction', entry.fileName, { cancelled: this.canceled })
+ return
+ }
+
+ if (this.opts.onEntry) {
+ this.opts.onEntry(entry, this.zipfile)
+ }
+
+ const dest = path.join(this.opts.dir, entry.fileName)
+
+ // convert external file attr int into a fs stat mode int
+ const mode = (entry.externalFileAttributes >> 16) & 0xFFFF
+ // check if it's a symlink or dir (using stat mode constants)
+ const IFMT = 61440
+ const IFDIR = 16384
+ const IFLNK = 40960
+ const symlink = (mode & IFMT) === IFLNK
+ let isDir = (mode & IFMT) === IFDIR
+
+ // Failsafe, borrowed from jsZip
+ if (!isDir && entry.fileName.endsWith('/')) {
+ isDir = true
+ }
+
+ // check for windows weird way of specifying a directory
+ // https://github.com/maxogden/extract-zip/issues/13#issuecomment-154494566
+ const madeBy = entry.versionMadeBy >> 8
+ if (!isDir) isDir = (madeBy === 0 && entry.externalFileAttributes === 16)
+
+ debug('extracting entry', { filename: entry.fileName, isDir: isDir, isSymlink: symlink })
+
+ const procMode = this.getExtractedMode(mode, isDir) & 0o777
+
+ // always ensure folders are created
+ const destDir = isDir ? dest : path.dirname(dest)
+
+ const mkdirOptions = { recursive: true }
+ if (isDir) {
+ mkdirOptions.mode = procMode
+ }
+ debug('mkdir', { dir: destDir, ...mkdirOptions })
+ await fs.mkdir(destDir, mkdirOptions)
+ if (isDir) return
+
+ debug('opening read stream', dest)
+ const readStream = await promisify(this.zipfile.openReadStream.bind(this.zipfile))(entry)
+
+ if (symlink) {
+ const link = await getStream(readStream)
+ debug('creating symlink', link, dest)
+ await fs.symlink(link, dest)
+ } else {
+ await pipeline(readStream, createWriteStream(dest, { mode: procMode }))
+ }
+ }
+
+ getExtractedMode (entryMode, isDir) {
+ let mode = entryMode
+ // Set defaults, if necessary
+ if (mode === 0) {
+ if (isDir) {
+ if (this.opts.defaultDirMode) {
+ mode = parseInt(this.opts.defaultDirMode, 10)
+ }
+
+ if (!mode) {
+ mode = 0o755
+ }
+ } else {
+ if (this.opts.defaultFileMode) {
+ mode = parseInt(this.opts.defaultFileMode, 10)
+ }
+
+ if (!mode) {
+ mode = 0o644
+ }
+ }
+ }
+
+ return mode
+ }
+}
+
+module.exports = async function (zipPath, opts) {
+ debug('creating target directory', opts.dir)
+
+ if (!path.isAbsolute(opts.dir)) {
+ throw new Error('Target directory is expected to be absolute')
+ }
+
+ await fs.mkdir(opts.dir, { recursive: true })
+ opts.dir = await fs.realpath(opts.dir)
+ return new Extractor(zipPath, opts).extract()
+}
diff --git a/client/node_modules/extract-zip/package.json b/client/node_modules/extract-zip/package.json
new file mode 100644
index 0000000..f59a35a
--- /dev/null
+++ b/client/node_modules/extract-zip/package.json
@@ -0,0 +1,80 @@
+{
+ "name": "extract-zip",
+ "version": "2.0.1",
+ "description": "unzip a zip file into a directory using 100% javascript",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "scripts": {
+ "ava": "ava",
+ "coverage": "nyc ava",
+ "lint": "yarn lint:js && yarn lint:ts && yarn tsd",
+ "lint:js": "eslint .",
+ "lint:ts": "eslint --config .eslintrc.typescript.js --ext .ts .",
+ "test": "yarn lint && ava",
+ "tsd": "tsd"
+ },
+ "files": [
+ "cli.js",
+ "index.d.ts"
+ ],
+ "author": "max ogden",
+ "license": "BSD-2-Clause",
+ "repository": "maxogden/extract-zip",
+ "keywords": [
+ "unzip",
+ "zip",
+ "extract"
+ ],
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ },
+ "devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^3.2.0",
+ "@typescript-eslint/parser": "^3.2.0",
+ "ava": "^3.5.1",
+ "eslint": "^7.2.0",
+ "eslint-config-standard": "^14.1.1",
+ "eslint-plugin-ava": "^10.2.0",
+ "eslint-plugin-import": "^2.20.1",
+ "eslint-plugin-node": "^11.0.0",
+ "eslint-plugin-promise": "^4.2.1",
+ "eslint-plugin-standard": "^4.0.1",
+ "fs-extra": "^9.0.0",
+ "husky": "^4.2.3",
+ "lint-staged": "^10.0.9",
+ "nyc": "^15.0.0",
+ "tsd": "^0.11.0",
+ "typescript": "^3.8.3"
+ },
+ "eslintConfig": {
+ "extends": [
+ "eslint:recommended",
+ "plugin:ava/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:node/recommended",
+ "plugin:promise/recommended",
+ "standard"
+ ]
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.js": "yarn lint:js --fix",
+ "*.ts": "yarn lint:ts --fix"
+ }
+}
diff --git a/client/node_modules/extract-zip/readme.md b/client/node_modules/extract-zip/readme.md
new file mode 100644
index 0000000..4ee7108
--- /dev/null
+++ b/client/node_modules/extract-zip/readme.md
@@ -0,0 +1,57 @@
+# extract-zip
+
+Unzip written in pure JavaScript. Extracts a zip into a directory. Available as a library or a command line program.
+
+Uses the [`yauzl`](http://npmjs.org/yauzl) ZIP parser.
+
+[![NPM](https://nodei.co/npm/extract-zip.png?global=true)](https://npm.im/extract-zip)
+[![Uses JS Standard Style](https://cdn.jsdelivr.net/gh/standard/standard/badge.svg)](https://github.com/standard/standard)
+[![Build Status](https://github.com/maxogden/extract-zip/workflows/CI/badge.svg)](https://github.com/maxogden/extract-zip/actions?query=workflow%3ACI)
+
+## Installation
+
+Make sure you have Node 10 or greater installed.
+
+Get the library:
+
+```
+npm install extract-zip --save
+```
+
+Install the command line program:
+
+```
+npm install extract-zip -g
+```
+
+## JS API
+
+```javascript
+const extract = require('extract-zip')
+
+async function main () {
+ try {
+ await extract(source, { dir: target })
+ console.log('Extraction complete')
+ } catch (err) {
+ // handle any errors
+ }
+}
+```
+
+### Options
+
+- `dir` (required) - the path to the directory where the extracted files are written
+- `defaultDirMode` - integer - Directory Mode (permissions), defaults to `0o755`
+- `defaultFileMode` - integer - File Mode (permissions), defaults to `0o644`
+- `onEntry` - function - if present, will be called with `(entry, zipfile)`, entry is every entry from the zip file forwarded from the `entry` event from yauzl. `zipfile` is the `yauzl` instance
+
+Default modes are only used if no permissions are set in the zip file.
+
+## CLI Usage
+
+```
+extract-zip foo.zip <targetDirectory>
+```
+
+If not specified, `targetDirectory` will default to `process.cwd()`.
diff --git a/client/node_modules/fd-slicer/.npmignore b/client/node_modules/fd-slicer/.npmignore
new file mode 100644
index 0000000..ccc2930
--- /dev/null
+++ b/client/node_modules/fd-slicer/.npmignore
@@ -0,0 +1,2 @@
+/coverage
+/node_modules
diff --git a/client/node_modules/fd-slicer/.travis.yml b/client/node_modules/fd-slicer/.travis.yml
new file mode 100644
index 0000000..77b7202
--- /dev/null
+++ b/client/node_modules/fd-slicer/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+ - "0.10"
+script:
+ - "npm run test-travis"
+after_script:
+ - "npm install coveralls@2 && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls"
diff --git a/client/node_modules/fd-slicer/CHANGELOG.md b/client/node_modules/fd-slicer/CHANGELOG.md
new file mode 100644
index 0000000..783042f
--- /dev/null
+++ b/client/node_modules/fd-slicer/CHANGELOG.md
@@ -0,0 +1,49 @@
+### 1.0.1
+
+ * use `setImmediate` instead of `nextTick`
+
+### 1.0.0
+
+ * `new FdSlicer(fd, options)` must now be `fdSlicer.createFromFd(fd, options)`
+ * fix behavior when `end` is 0.
+ * fix `createWriteStream` when using `createFromBuffer`
+
+### 0.4.0
+
+ * add ability to create an FdSlicer instance from a Buffer
+
+### 0.3.2
+
+ * fix write stream and read stream destroy behavior
+
+### 0.3.1
+
+ * write stream: fix end option behavior
+
+### 0.3.0
+
+ * write stream emits 'progress' events
+ * write stream supports 'end' option which causes the stream to emit an error
+ if a maximum size is exceeded
+ * improve documentation
+
+### 0.2.1
+
+ * Update pend dependency to latest bugfix version.
+
+### 0.2.0
+
+ * Add read and write functions
+
+### 0.1.0
+
+ * Add `autoClose` option and `ref()` and `unref()`.
+
+### 0.0.2
+
+ * Add API documentation
+ * read stream: create buffer at last possible moment
+
+### 0.0.1
+
+ * Initial release
diff --git a/client/node_modules/fd-slicer/LICENSE b/client/node_modules/fd-slicer/LICENSE
new file mode 100644
index 0000000..e57596d
--- /dev/null
+++ b/client/node_modules/fd-slicer/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2014 Andrew Kelley
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/fd-slicer/README.md b/client/node_modules/fd-slicer/README.md
new file mode 100644
index 0000000..ad7f0ec
--- /dev/null
+++ b/client/node_modules/fd-slicer/README.md
@@ -0,0 +1,199 @@
+# fd-slicer
+
+[![Build Status](https://travis-ci.org/andrewrk/node-fd-slicer.svg?branch=master)](https://travis-ci.org/andrewrk/node-fd-slicer)
+
+Safe `fs.ReadStream` and `fs.WriteStream` using the same fd.
+
+Let's say that you want to perform a parallel upload of a file to a remote
+server. To do this, we want to create multiple read streams. The first thing
+you might think of is to use the `{start: 0, end: 0}` API of
+`fs.createReadStream`. This gives you two choices:
+
+ 0. Use the same file descriptor for all `fs.ReadStream` objects.
+ 0. Open the file multiple times, resulting in a separate file descriptor
+ for each read stream.
+
+Neither of these are acceptable options. The first one is a severe bug,
+because the API docs for `fs.write` state:
+
+> Note that it is unsafe to use `fs.write` multiple times on the same file
+> without waiting for the callback. For this scenario, `fs.createWriteStream`
+> is strongly recommended.
+
+`fs.createWriteStream` will solve the problem if you only create one of them
+for the file descriptor, but it will exhibit this unsafety if you create
+multiple write streams per file descriptor.
+
+The second option suffers from a race condition. For each additional time the
+file is opened after the first, it is possible that the file is modified. So
+in our parallel uploading example, we might upload a corrupt file that never
+existed on the client's computer.
+
+This module solves this problem by providing `createReadStream` and
+`createWriteStream` that operate on a shared file descriptor and provides
+the convenient stream API while still allowing slicing and dicing.
+
+This module also gives you some additional power that the builtin
+`fs.createWriteStream` do not give you. These features are:
+
+ * Emitting a 'progress' event on write.
+ * Ability to set a maximum size and emit an error if this size is exceeded.
+ * Ability to create an `FdSlicer` instance from a `Buffer`. This enables you
+ to provide API for handling files as well as buffers using the same API.
+
+## Usage
+
+```js
+var fdSlicer = require('fd-slicer');
+var fs = require('fs');
+
+fs.open("file.txt", 'r', function(err, fd) {
+ if (err) throw err;
+ var slicer = fdSlicer.createFromFd(fd);
+ var firstPart = slicer.createReadStream({start: 0, end: 100});
+ var secondPart = slicer.createReadStream({start: 100});
+ var firstOut = fs.createWriteStream("first.txt");
+ var secondOut = fs.createWriteStream("second.txt");
+ firstPart.pipe(firstOut);
+ secondPart.pipe(secondOut);
+});
+```
+
+You can also create from a buffer:
+
+```js
+var fdSlicer = require('fd-slicer');
+var slicer = FdSlicer.createFromBuffer(someBuffer);
+var firstPart = slicer.createReadStream({start: 0, end: 100});
+var secondPart = slicer.createReadStream({start: 100});
+var firstOut = fs.createWriteStream("first.txt");
+var secondOut = fs.createWriteStream("second.txt");
+firstPart.pipe(firstOut);
+secondPart.pipe(secondOut);
+```
+
+## API Documentation
+
+### fdSlicer.createFromFd(fd, [options])
+
+```js
+var fdSlicer = require('fd-slicer');
+fs.open("file.txt", 'r', function(err, fd) {
+ if (err) throw err;
+ var slicer = fdSlicer.createFromFd(fd);
+ // ...
+});
+```
+
+Make sure `fd` is a properly initialized file descriptor. If you want to
+use `createReadStream` make sure you open it for reading and if you want
+to use `createWriteStream` make sure you open it for writing.
+
+`options` is an optional object which can contain:
+
+ * `autoClose` - if set to `true`, the file descriptor will be automatically
+ closed once the last stream that references it is closed. Defaults to
+ `false`. `ref()` and `unref()` can be used to increase or decrease the
+ reference count, respectively.
+
+### fdSlicer.createFromBuffer(buffer, [options])
+
+```js
+var fdSlicer = require('fd-slicer');
+var slicer = fdSlicer.createFromBuffer(someBuffer);
+// ...
+```
+
+`options` is an optional object which can contain:
+
+ * `maxChunkSize` - A `Number` of bytes. see `createReadStream()`.
+ If falsey, defaults to unlimited.
+
+#### Properties
+
+##### fd
+
+The file descriptor passed in. `undefined` if created from a buffer.
+
+#### Methods
+
+##### createReadStream(options)
+
+Available `options`:
+
+ * `start` - Number. The offset into the file to start reading from. Defaults
+ to 0.
+ * `end` - Number. Exclusive upper bound offset into the file to stop reading
+ from.
+ * `highWaterMark` - Number. The maximum number of bytes to store in the
+ internal buffer before ceasing to read from the underlying resource.
+ Defaults to 16 KB.
+ * `encoding` - String. If specified, then buffers will be decoded to strings
+ using the specified encoding. Defaults to `null`.
+
+The ReadableStream that this returns has these additional methods:
+
+ * `destroy(err)` - stop streaming. `err` is optional and is the error that
+ will be emitted in order to cause the streaming to stop. Defaults to
+ `new Error("stream destroyed")`.
+
+If `maxChunkSize` was specified (see `createFromBuffer()`), the read stream
+will provide chunks of at most that size. Normally, the read stream provides
+the entire range requested in a single chunk, but this can cause performance
+problems in some circumstances.
+See [thejoshwolfe/yauzl#87](https://github.com/thejoshwolfe/yauzl/issues/87).
+
+##### createWriteStream(options)
+
+Available `options`:
+
+ * `start` - Number. The offset into the file to start writing to. Defaults to
+ 0.
+ * `end` - Number. Exclusive upper bound offset into the file. If this offset
+ is reached, the write stream will emit an 'error' event and stop functioning.
+ In this situation, `err.code === 'ETOOBIG'`. Defaults to `Infinity`.
+ * `highWaterMark` - Number. Buffer level when `write()` starts returning
+ false. Defaults to 16KB.
+ * `decodeStrings` - Boolean. Whether or not to decode strings into Buffers
+ before passing them to` _write()`. Defaults to `true`.
+
+The WritableStream that this returns has these additional methods:
+
+ * `destroy()` - stop streaming
+
+And these additional properties:
+
+ * `bytesWritten` - number of bytes written to the stream
+
+And these additional events:
+
+ * 'progress' - emitted when `bytesWritten` changes.
+
+##### read(buffer, offset, length, position, callback)
+
+Equivalent to `fs.read`, but with concurrency protection.
+`callback` must be defined.
+
+##### write(buffer, offset, length, position, callback)
+
+Equivalent to `fs.write`, but with concurrency protection.
+`callback` must be defined.
+
+##### ref()
+
+Increase the `autoClose` reference count by 1.
+
+##### unref()
+
+Decrease the `autoClose` reference count by 1.
+
+#### Events
+
+##### 'error'
+
+Emitted if `fs.close` returns an error when auto closing.
+
+##### 'close'
+
+Emitted when fd-slicer closes the file descriptor due to `autoClose`. Never
+emitted if created from a buffer.
diff --git a/client/node_modules/fd-slicer/index.js b/client/node_modules/fd-slicer/index.js
new file mode 100644
index 0000000..65d32a3
--- /dev/null
+++ b/client/node_modules/fd-slicer/index.js
@@ -0,0 +1,296 @@
+var fs = require('fs');
+var util = require('util');
+var stream = require('stream');
+var Readable = stream.Readable;
+var Writable = stream.Writable;
+var PassThrough = stream.PassThrough;
+var Pend = require('pend');
+var EventEmitter = require('events').EventEmitter;
+
+exports.createFromBuffer = createFromBuffer;
+exports.createFromFd = createFromFd;
+exports.BufferSlicer = BufferSlicer;
+exports.FdSlicer = FdSlicer;
+
+util.inherits(FdSlicer, EventEmitter);
+function FdSlicer(fd, options) {
+ options = options || {};
+ EventEmitter.call(this);
+
+ this.fd = fd;
+ this.pend = new Pend();
+ this.pend.max = 1;
+ this.refCount = 0;
+ this.autoClose = !!options.autoClose;
+}
+
+FdSlicer.prototype.read = function(buffer, offset, length, position, callback) {
+ var self = this;
+ self.pend.go(function(cb) {
+ fs.read(self.fd, buffer, offset, length, position, function(err, bytesRead, buffer) {
+ cb();
+ callback(err, bytesRead, buffer);
+ });
+ });
+};
+
+FdSlicer.prototype.write = function(buffer, offset, length, position, callback) {
+ var self = this;
+ self.pend.go(function(cb) {
+ fs.write(self.fd, buffer, offset, length, position, function(err, written, buffer) {
+ cb();
+ callback(err, written, buffer);
+ });
+ });
+};
+
+FdSlicer.prototype.createReadStream = function(options) {
+ return new ReadStream(this, options);
+};
+
+FdSlicer.prototype.createWriteStream = function(options) {
+ return new WriteStream(this, options);
+};
+
+FdSlicer.prototype.ref = function() {
+ this.refCount += 1;
+};
+
+FdSlicer.prototype.unref = function() {
+ var self = this;
+ self.refCount -= 1;
+
+ if (self.refCount > 0) return;
+ if (self.refCount < 0) throw new Error("invalid unref");
+
+ if (self.autoClose) {
+ fs.close(self.fd, onCloseDone);
+ }
+
+ function onCloseDone(err) {
+ if (err) {
+ self.emit('error', err);
+ } else {
+ self.emit('close');
+ }
+ }
+};
+
+util.inherits(ReadStream, Readable);
+function ReadStream(context, options) {
+ options = options || {};
+ Readable.call(this, options);
+
+ this.context = context;
+ this.context.ref();
+
+ this.start = options.start || 0;
+ this.endOffset = options.end;
+ this.pos = this.start;
+ this.destroyed = false;
+}
+
+ReadStream.prototype._read = function(n) {
+ var self = this;
+ if (self.destroyed) return;
+
+ var toRead = Math.min(self._readableState.highWaterMark, n);
+ if (self.endOffset != null) {
+ toRead = Math.min(toRead, self.endOffset - self.pos);
+ }
+ if (toRead <= 0) {
+ self.destroyed = true;
+ self.push(null);
+ self.context.unref();
+ return;
+ }
+ self.context.pend.go(function(cb) {
+ if (self.destroyed) return cb();
+ var buffer = new Buffer(toRead);
+ fs.read(self.context.fd, buffer, 0, toRead, self.pos, function(err, bytesRead) {
+ if (err) {
+ self.destroy(err);
+ } else if (bytesRead === 0) {
+ self.destroyed = true;
+ self.push(null);
+ self.context.unref();
+ } else {
+ self.pos += bytesRead;
+ self.push(buffer.slice(0, bytesRead));
+ }
+ cb();
+ });
+ });
+};
+
+ReadStream.prototype.destroy = function(err) {
+ if (this.destroyed) return;
+ err = err || new Error("stream destroyed");
+ this.destroyed = true;
+ this.emit('error', err);
+ this.context.unref();
+};
+
+util.inherits(WriteStream, Writable);
+function WriteStream(context, options) {
+ options = options || {};
+ Writable.call(this, options);
+
+ this.context = context;
+ this.context.ref();
+
+ this.start = options.start || 0;
+ this.endOffset = (options.end == null) ? Infinity : +options.end;
+ this.bytesWritten = 0;
+ this.pos = this.start;
+ this.destroyed = false;
+
+ this.on('finish', this.destroy.bind(this));
+}
+
+WriteStream.prototype._write = function(buffer, encoding, callback) {
+ var self = this;
+ if (self.destroyed) return;
+
+ if (self.pos + buffer.length > self.endOffset) {
+ var err = new Error("maximum file length exceeded");
+ err.code = 'ETOOBIG';
+ self.destroy();
+ callback(err);
+ return;
+ }
+ self.context.pend.go(function(cb) {
+ if (self.destroyed) return cb();
+ fs.write(self.context.fd, buffer, 0, buffer.length, self.pos, function(err, bytes) {
+ if (err) {
+ self.destroy();
+ cb();
+ callback(err);
+ } else {
+ self.bytesWritten += bytes;
+ self.pos += bytes;
+ self.emit('progress');
+ cb();
+ callback();
+ }
+ });
+ });
+};
+
+WriteStream.prototype.destroy = function() {
+ if (this.destroyed) return;
+ this.destroyed = true;
+ this.context.unref();
+};
+
+util.inherits(BufferSlicer, EventEmitter);
+function BufferSlicer(buffer, options) {
+ EventEmitter.call(this);
+
+ options = options || {};
+ this.refCount = 0;
+ this.buffer = buffer;
+ this.maxChunkSize = options.maxChunkSize || Number.MAX_SAFE_INTEGER;
+}
+
+BufferSlicer.prototype.read = function(buffer, offset, length, position, callback) {
+ var end = position + length;
+ var delta = end - this.buffer.length;
+ var written = (delta > 0) ? delta : length;
+ this.buffer.copy(buffer, offset, position, end);
+ setImmediate(function() {
+ callback(null, written);
+ });
+};
+
+BufferSlicer.prototype.write = function(buffer, offset, length, position, callback) {
+ buffer.copy(this.buffer, position, offset, offset + length);
+ setImmediate(function() {
+ callback(null, length, buffer);
+ });
+};
+
+BufferSlicer.prototype.createReadStream = function(options) {
+ options = options || {};
+ var readStream = new PassThrough(options);
+ readStream.destroyed = false;
+ readStream.start = options.start || 0;
+ readStream.endOffset = options.end;
+ // by the time this function returns, we'll be done.
+ readStream.pos = readStream.endOffset || this.buffer.length;
+
+ // respect the maxChunkSize option to slice up the chunk into smaller pieces.
+ var entireSlice = this.buffer.slice(readStream.start, readStream.pos);
+ var offset = 0;
+ while (true) {
+ var nextOffset = offset + this.maxChunkSize;
+ if (nextOffset >= entireSlice.length) {
+ // last chunk
+ if (offset < entireSlice.length) {
+ readStream.write(entireSlice.slice(offset, entireSlice.length));
+ }
+ break;
+ }
+ readStream.write(entireSlice.slice(offset, nextOffset));
+ offset = nextOffset;
+ }
+
+ readStream.end();
+ readStream.destroy = function() {
+ readStream.destroyed = true;
+ };
+ return readStream;
+};
+
+BufferSlicer.prototype.createWriteStream = function(options) {
+ var bufferSlicer = this;
+ options = options || {};
+ var writeStream = new Writable(options);
+ writeStream.start = options.start || 0;
+ writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end;
+ writeStream.bytesWritten = 0;
+ writeStream.pos = writeStream.start;
+ writeStream.destroyed = false;
+ writeStream._write = function(buffer, encoding, callback) {
+ if (writeStream.destroyed) return;
+
+ var end = writeStream.pos + buffer.length;
+ if (end > writeStream.endOffset) {
+ var err = new Error("maximum file length exceeded");
+ err.code = 'ETOOBIG';
+ writeStream.destroyed = true;
+ callback(err);
+ return;
+ }
+ buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length);
+
+ writeStream.bytesWritten += buffer.length;
+ writeStream.pos = end;
+ writeStream.emit('progress');
+ callback();
+ };
+ writeStream.destroy = function() {
+ writeStream.destroyed = true;
+ };
+ return writeStream;
+};
+
+BufferSlicer.prototype.ref = function() {
+ this.refCount += 1;
+};
+
+BufferSlicer.prototype.unref = function() {
+ this.refCount -= 1;
+
+ if (this.refCount < 0) {
+ throw new Error("invalid unref");
+ }
+};
+
+function createFromBuffer(buffer, options) {
+ return new BufferSlicer(buffer, options);
+}
+
+function createFromFd(fd, options) {
+ return new FdSlicer(fd, options);
+}
diff --git a/client/node_modules/fd-slicer/package.json b/client/node_modules/fd-slicer/package.json
new file mode 100644
index 0000000..407f677
--- /dev/null
+++ b/client/node_modules/fd-slicer/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "fd-slicer",
+ "version": "1.1.0",
+ "description": "safely create multiple ReadStream or WriteStream objects from the same file descriptor",
+ "main": "index.js",
+ "scripts": {
+ "test": "mocha --reporter spec --check-leaks",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/test.js",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --timeout 10000 --reporter spec --check-leaks test/test.js"
+ },
+ "author": "Andrew Kelley <superjoe30@gmail.com>",
+ "license": "MIT",
+ "devDependencies": {
+ "istanbul": "~0.3.3",
+ "mocha": "~2.0.1",
+ "stream-equal": "~0.1.5",
+ "streamsink": "~1.2.0"
+ },
+ "dependencies": {
+ "pend": "~1.2.0"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/andrewrk/node-fd-slicer.git"
+ },
+ "bugs": {
+ "url": "https://github.com/andrewrk/node-fd-slicer/issues"
+ },
+ "keywords": [
+ "createReadStream",
+ "createWriteStream"
+ ]
+}
diff --git a/client/node_modules/fd-slicer/test/test.js b/client/node_modules/fd-slicer/test/test.js
new file mode 100644
index 0000000..d05ab00
--- /dev/null
+++ b/client/node_modules/fd-slicer/test/test.js
@@ -0,0 +1,350 @@
+var fdSlicer = require('../');
+var fs = require('fs');
+var crypto = require('crypto');
+var path = require('path');
+var streamEqual = require('stream-equal');
+var assert = require('assert');
+var Pend = require('pend');
+var StreamSink = require('streamsink');
+
+var describe = global.describe;
+var it = global.it;
+var before = global.before;
+var beforeEach = global.beforeEach;
+var after = global.after;
+
+var testBlobFile = path.join(__dirname, "test-blob.bin");
+var testBlobFileSize = 20 * 1024 * 1024;
+var testOutBlobFile = path.join(__dirname, "test-blob-out.bin");
+
+describe("FdSlicer", function() {
+ before(function(done) {
+ var out = fs.createWriteStream(testBlobFile);
+ for (var i = 0; i < testBlobFileSize / 1024; i += 1) {
+ out.write(crypto.pseudoRandomBytes(1024));
+ }
+ out.end();
+ out.on('close', done);
+ });
+ beforeEach(function() {
+ try {
+ fs.unlinkSync(testOutBlobFile);
+ } catch (err) {
+ }
+ });
+ after(function() {
+ try {
+ fs.unlinkSync(testBlobFile);
+ fs.unlinkSync(testOutBlobFile);
+ } catch (err) {
+ }
+ });
+ it("reads a 20MB file (autoClose on)", function(done) {
+ fs.open(testBlobFile, 'r', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var actualStream = slicer.createReadStream();
+ var expectedStream = fs.createReadStream(testBlobFile);
+
+ var pend = new Pend();
+ pend.go(function(cb) {
+ slicer.on('close', cb);
+ });
+ pend.go(function(cb) {
+ streamEqual(expectedStream, actualStream, function(err, equal) {
+ if (err) return done(err);
+ assert.ok(equal);
+ cb();
+ });
+ });
+ pend.wait(done);
+ });
+ });
+ it("reads 4 chunks simultaneously", function(done) {
+ fs.open(testBlobFile, 'r', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd);
+ var actualPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4});
+ var actualPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4});
+ var actualPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4});
+ var actualPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4});
+ var expectedPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4});
+ var expectedPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4});
+ var expectedPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4});
+ var expectedPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4});
+ var pend = new Pend();
+ pend.go(function(cb) {
+ streamEqual(expectedPart1, actualPart1, function(err, equal) {
+ assert.ok(equal);
+ cb(err);
+ });
+ });
+ pend.go(function(cb) {
+ streamEqual(expectedPart2, actualPart2, function(err, equal) {
+ assert.ok(equal);
+ cb(err);
+ });
+ });
+ pend.go(function(cb) {
+ streamEqual(expectedPart3, actualPart3, function(err, equal) {
+ assert.ok(equal);
+ cb(err);
+ });
+ });
+ pend.go(function(cb) {
+ streamEqual(expectedPart4, actualPart4, function(err, equal) {
+ assert.ok(equal);
+ cb(err);
+ });
+ });
+ pend.wait(function(err) {
+ if (err) return done(err);
+ fs.close(fd, done);
+ });
+ });
+ });
+
+ it("writes a 20MB file (autoClose on)", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var actualStream = slicer.createWriteStream();
+ var inStream = fs.createReadStream(testBlobFile);
+
+ slicer.on('close', function() {
+ var expected = fs.createReadStream(testBlobFile);
+ var actual = fs.createReadStream(testOutBlobFile);
+
+ streamEqual(expected, actual, function(err, equal) {
+ if (err) return done(err);
+ assert.ok(equal);
+ done();
+ });
+ });
+ inStream.pipe(actualStream);
+ });
+ });
+
+ it("writes 4 chunks simultaneously", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd);
+ var actualPart1 = slicer.createWriteStream({start: testBlobFileSize * 0/4});
+ var actualPart2 = slicer.createWriteStream({start: testBlobFileSize * 1/4});
+ var actualPart3 = slicer.createWriteStream({start: testBlobFileSize * 2/4});
+ var actualPart4 = slicer.createWriteStream({start: testBlobFileSize * 3/4});
+ var in1 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4});
+ var in2 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4});
+ var in3 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4});
+ var in4 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4});
+ var pend = new Pend();
+ pend.go(function(cb) {
+ actualPart1.on('finish', cb);
+ });
+ pend.go(function(cb) {
+ actualPart2.on('finish', cb);
+ });
+ pend.go(function(cb) {
+ actualPart3.on('finish', cb);
+ });
+ pend.go(function(cb) {
+ actualPart4.on('finish', cb);
+ });
+ in1.pipe(actualPart1);
+ in2.pipe(actualPart2);
+ in3.pipe(actualPart3);
+ in4.pipe(actualPart4);
+ pend.wait(function() {
+ fs.close(fd, function(err) {
+ if (err) return done(err);
+ var expected = fs.createReadStream(testBlobFile);
+ var actual = fs.createReadStream(testOutBlobFile);
+ streamEqual(expected, actual, function(err, equal) {
+ if (err) return done(err);
+ assert.ok(equal);
+ done();
+ });
+ });
+ });
+ });
+ });
+
+ it("throws on invalid ref", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ assert.throws(function() {
+ slicer.unref();
+ }, /invalid unref/);
+ fs.close(fd, done);
+ });
+ });
+
+ it("write stream emits error when max size exceeded", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var ws = slicer.createWriteStream({start: 0, end: 1000});
+ ws.on('error', function(err) {
+ assert.strictEqual(err.code, 'ETOOBIG');
+ slicer.on('close', done);
+ });
+ ws.end(new Buffer(1001));
+ });
+ });
+
+ it("write stream does not emit error when max size not exceeded", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var ws = slicer.createWriteStream({end: 1000});
+ slicer.on('close', done);
+ ws.end(new Buffer(1000));
+ });
+ });
+
+ it("write stream start and end work together", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var ws = slicer.createWriteStream({start: 1, end: 1000});
+ ws.on('error', function(err) {
+ assert.strictEqual(err.code, 'ETOOBIG');
+ slicer.on('close', done);
+ });
+ ws.end(new Buffer(1000));
+ });
+ });
+
+ it("write stream emits progress events", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var ws = slicer.createWriteStream();
+ var progressEventCount = 0;
+ var prevBytesWritten = 0;
+ ws.on('progress', function() {
+ progressEventCount += 1;
+ assert.ok(ws.bytesWritten > prevBytesWritten);
+ prevBytesWritten = ws.bytesWritten;
+ });
+ slicer.on('close', function() {
+ assert.ok(progressEventCount > 5);
+ done();
+ });
+ for (var i = 0; i < 10; i += 1) {
+ ws.write(new Buffer(16 * 1024 * 2));
+ }
+ ws.end();
+ });
+ });
+
+ it("write stream unrefs when destroyed", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var ws = slicer.createWriteStream();
+ slicer.on('close', done);
+ ws.write(new Buffer(1000));
+ ws.destroy();
+ });
+ });
+
+ it("read stream unrefs when destroyed", function(done) {
+ fs.open(testBlobFile, 'r', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd, {autoClose: true});
+ var rs = slicer.createReadStream();
+ rs.on('error', function(err) {
+ assert.strictEqual(err.message, "stream destroyed");
+ slicer.on('close', done);
+ });
+ rs.destroy();
+ });
+ });
+
+ it("fdSlicer.read", function(done) {
+ fs.open(testBlobFile, 'r', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd);
+ var outBuf = new Buffer(1024);
+ slicer.read(outBuf, 0, 10, 0, function(err, bytesRead, buf) {
+ assert.strictEqual(bytesRead, 10);
+ fs.close(fd, done);
+ });
+ });
+ });
+
+ it("fdSlicer.write", function(done) {
+ fs.open(testOutBlobFile, 'w', function(err, fd) {
+ if (err) return done(err);
+ var slicer = fdSlicer.createFromFd(fd);
+ slicer.write(new Buffer("blah\n"), 0, 5, 0, function() {
+ if (err) return done(err);
+ fs.close(fd, done);
+ });
+ });
+ });
+});
+
+describe("BufferSlicer", function() {
+ it("invalid ref", function() {
+ var slicer = fdSlicer.createFromBuffer(new Buffer(16));
+ slicer.ref();
+ slicer.unref();
+ assert.throws(function() {
+ slicer.unref();
+ }, /invalid unref/);
+ });
+ it("read and write", function(done) {
+ var buf = new Buffer("through the tangled thread the needle finds its way");
+ var slicer = fdSlicer.createFromBuffer(buf);
+ var outBuf = new Buffer(1024);
+ slicer.read(outBuf, 10, 11, 8, function(err) {
+ if (err) return done(err);
+ assert.strictEqual(outBuf.toString('utf8', 10, 21), "the tangled");
+ slicer.write(new Buffer("derp"), 0, 4, 7, function(err) {
+ if (err) return done(err);
+ assert.strictEqual(buf.toString('utf8', 7, 19), "derp tangled");
+ done();
+ });
+ });
+ });
+ it("createReadStream", function(done) {
+ var str = "I never conquered rarely came, 16 just held such better days";
+ var buf = new Buffer(str);
+ var slicer = fdSlicer.createFromBuffer(buf);
+ var inStream = slicer.createReadStream();
+ var sink = new StreamSink();
+ inStream.pipe(sink);
+ sink.on('finish', function() {
+ assert.strictEqual(sink.toString(), str);
+ inStream.destroy();
+ done();
+ });
+ });
+ it("createWriteStream exceed buffer size", function(done) {
+ var slicer = fdSlicer.createFromBuffer(new Buffer(4));
+ var outStream = slicer.createWriteStream();
+ outStream.on('error', function(err) {
+ assert.strictEqual(err.code, 'ETOOBIG');
+ done();
+ });
+ outStream.write("hi!\n");
+ outStream.write("it warked\n");
+ outStream.end();
+ });
+ it("createWriteStream ok", function(done) {
+ var buf = new Buffer(1024);
+ var slicer = fdSlicer.createFromBuffer(buf);
+ var outStream = slicer.createWriteStream();
+ outStream.on('finish', function() {
+ assert.strictEqual(buf.toString('utf8', 0, "hi!\nit warked\n".length), "hi!\nit warked\n");
+ outStream.destroy();
+ done();
+ });
+ outStream.write("hi!\n");
+ outStream.write("it warked\n");
+ outStream.end();
+ });
+});
diff --git a/client/node_modules/fs-extra/CHANGELOG.md b/client/node_modules/fs-extra/CHANGELOG.md
new file mode 100644
index 0000000..3049b45
--- /dev/null
+++ b/client/node_modules/fs-extra/CHANGELOG.md
@@ -0,0 +1,864 @@
+8.1.0 / 2019-06-28
+------------------
+
+- Add support for promisified `fs.realpath.native` in Node v9.2+ ([#650](https://github.com/jprichardson/node-fs-extra/issues/650), [#682](https://github.com/jprichardson/node-fs-extra/pull/682))
+- Update `graceful-fs` dependency ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))
+- Use `graceful-fs` everywhere ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))
+
+8.0.1 / 2019-05-13
+------------------
+
+- Fix bug `Maximum call stack size exceeded` error in `util/stat` ([#679](https://github.com/jprichardson/node-fs-extra/pull/679))
+
+8.0.0 / 2019-05-11
+------------------
+
+**NOTE:** Node.js v6 support is deprecated, and will be dropped in the next major release.
+
+- Use `renameSync()` under the hood in `moveSync()`
+- Fix bug with bind-mounted directories in `copy*()` ([#613](https://github.com/jprichardson/node-fs-extra/issues/613), [#618](https://github.com/jprichardson/node-fs-extra/pull/618))
+- Fix bug in `move()` with case-insensitive file systems
+- Use `fs.stat()`'s `bigint` option in `copy*()` & `move*()` where possible ([#657](https://github.com/jprichardson/node-fs-extra/issues/657))
+
+7.0.1 / 2018-11-07
+------------------
+
+- Fix `removeSync()` on Windows, in some cases, it would error out with `ENOTEMPTY` ([#646](https://github.com/jprichardson/node-fs-extra/pull/646))
+- Document `mode` option for `ensureDir*()` ([#587](https://github.com/jprichardson/node-fs-extra/pull/587))
+- Don't include documentation files in npm package tarball ([#642](https://github.com/jprichardson/node-fs-extra/issues/642), [#643](https://github.com/jprichardson/node-fs-extra/pull/643))
+
+7.0.0 / 2018-07-16
+------------------
+
+- **BREAKING:** Refine `copy*()` handling of symlinks to properly detect symlinks that point to the same file. ([#582](https://github.com/jprichardson/node-fs-extra/pull/582))
+- Fix bug with copying write-protected directories ([#600](https://github.com/jprichardson/node-fs-extra/pull/600))
+- Universalify `fs.lchmod()` ([#596](https://github.com/jprichardson/node-fs-extra/pull/596))
+- Add `engines` field to `package.json` ([#580](https://github.com/jprichardson/node-fs-extra/pull/580))
+
+6.0.1 / 2018-05-09
+------------------
+
+- Fix `fs.promises` `ExperimentalWarning` on Node v10.1.0 ([#578](https://github.com/jprichardson/node-fs-extra/pull/578))
+
+6.0.0 / 2018-05-01
+------------------
+
+- Drop support for Node.js versions 4, 5, & 7 ([#564](https://github.com/jprichardson/node-fs-extra/pull/564))
+- Rewrite `move` to use `fs.rename` where possible ([#549](https://github.com/jprichardson/node-fs-extra/pull/549))
+- Don't convert relative paths to absolute paths for `filter` ([#554](https://github.com/jprichardson/node-fs-extra/pull/554))
+- `copy*`'s behavior when `preserveTimestamps` is `false` has been OS-dependent since 5.0.0, but that's now explicitly noted in the docs ([#563](https://github.com/jprichardson/node-fs-extra/pull/563))
+- Fix subdirectory detection for `copy*` & `move*` ([#541](https://github.com/jprichardson/node-fs-extra/pull/541))
+- Handle case-insensitive paths correctly in `copy*` ([#568](https://github.com/jprichardson/node-fs-extra/pull/568))
+
+5.0.0 / 2017-12-11
+------------------
+
+Significant refactor of `copy()` & `copySync()`, including breaking changes. No changes to other functions in this release.
+
+Huge thanks to **[@manidlou](https://github.com/manidlou)** for doing most of the work on this release.
+
+- The `filter` option can no longer be a RegExp (must be a function). This was deprecated since fs-extra v1.0.0. [#512](https://github.com/jprichardson/node-fs-extra/pull/512)
+- `copy()`'s `filter` option can now be a function that returns a Promise. [#518](https://github.com/jprichardson/node-fs-extra/pull/518)
+- `copy()` & `copySync()` now use `fs.copyFile()`/`fs.copyFileSync()` in environments that support it (currently Node 8.5.0+). Older Node versions still get the old implementation. [#505](https://github.com/jprichardson/node-fs-extra/pull/505)
+- Don't allow copying a directory into itself. [#83](https://github.com/jprichardson/node-fs-extra/issues/83)
+- Handle copying between identical files. [#198](https://github.com/jprichardson/node-fs-extra/issues/198)
+- Error out when copying an empty folder to a path that already exists. [#464](https://github.com/jprichardson/node-fs-extra/issues/464)
+- Don't create `dest`'s parent if the `filter` function aborts the `copy()` operation. [#517](https://github.com/jprichardson/node-fs-extra/pull/517)
+- Fix `writeStream` not being closed if there was an error in `copy()`. [#516](https://github.com/jprichardson/node-fs-extra/pull/516)
+
+4.0.3 / 2017-12-05
+------------------
+
+- Fix wrong `chmod` values in `fs.remove()` [#501](https://github.com/jprichardson/node-fs-extra/pull/501)
+- Fix `TypeError` on systems that don't have some `fs` operations like `lchown` [#520](https://github.com/jprichardson/node-fs-extra/pull/520)
+
+4.0.2 / 2017-09-12
+------------------
+
+- Added `EOL` option to `writeJson*` & `outputJson*` (via upgrade to jsonfile v4)
+- Added promise support to [`fs.copyFile()`](https://nodejs.org/api/fs.html#fs_fs_copyfile_src_dest_flags_callback) in Node 8.5+
+- Added `.js` extension to `main` field in `package.json` for better tooling compatibility. [#485](https://github.com/jprichardson/node-fs-extra/pull/485)
+
+4.0.1 / 2017-07-31
+------------------
+
+### Fixed
+
+- Previously, `ensureFile()` & `ensureFileSync()` would do nothing if the path was a directory. Now, they error out for consistency with `ensureDir()`. [#465](https://github.com/jprichardson/node-fs-extra/issues/465), [#466](https://github.com/jprichardson/node-fs-extra/pull/466), [#470](https://github.com/jprichardson/node-fs-extra/issues/470)
+
+4.0.0 / 2017-07-14
+------------------
+
+### Changed
+
+- **BREAKING:** The promisified versions of `fs.read()` & `fs.write()` now return objects. See [the docs](docs/fs-read-write.md) for details. [#436](https://github.com/jprichardson/node-fs-extra/issues/436), [#449](https://github.com/jprichardson/node-fs-extra/pull/449)
+- `fs.move()` now errors out when destination is a subdirectory of source. [#458](https://github.com/jprichardson/node-fs-extra/pull/458)
+- Applied upstream fixes from `rimraf` to `fs.remove()` & `fs.removeSync()`. [#459](https://github.com/jprichardson/node-fs-extra/pull/459)
+
+### Fixed
+
+- Got `fs.outputJSONSync()` working again; it was broken due to refactoring. [#428](https://github.com/jprichardson/node-fs-extra/pull/428)
+
+Also clarified the docs in a few places.
+
+3.0.1 / 2017-05-04
+------------------
+
+- Fix bug in `move()` & `moveSync()` when source and destination are the same, and source does not exist. [#415](https://github.com/jprichardson/node-fs-extra/pull/415)
+
+3.0.0 / 2017-04-27
+------------------
+
+### Added
+
+- **BREAKING:** Added Promise support. All asynchronous native fs methods and fs-extra methods now return a promise if the callback is not passed. [#403](https://github.com/jprichardson/node-fs-extra/pull/403)
+- `pathExists()`, a replacement for the deprecated `fs.exists`. `pathExists` has a normal error-first callback signature. Also added `pathExistsSync`, an alias to `fs.existsSync`, for completeness. [#406](https://github.com/jprichardson/node-fs-extra/pull/406)
+
+### Removed
+
+- **BREAKING:** Removed support for setting the default spaces for `writeJson()`, `writeJsonSync()`, `outputJson()`, & `outputJsonSync()`. This was undocumented. [#402](https://github.com/jprichardson/node-fs-extra/pull/402)
+
+### Changed
+
+- Upgraded jsonfile dependency to v3.0.0:
+ - **BREAKING:** Changed behavior of `throws` option for `readJsonSync()`; now does not throw filesystem errors when `throws` is `false`.
+- **BREAKING:** `writeJson()`, `writeJsonSync()`, `outputJson()`, & `outputJsonSync()` now output minified JSON by default for consistency with `JSON.stringify()`; set the `spaces` option to `2` to override this new behavior. [#402](https://github.com/jprichardson/node-fs-extra/pull/402)
+- Use `Buffer.allocUnsafe()` instead of `new Buffer()` in environments that support it. [#394](https://github.com/jprichardson/node-fs-extra/pull/394)
+
+### Fixed
+
+- `removeSync()` silently failed on Windows in some cases. Now throws an `EBUSY` error. [#408](https://github.com/jprichardson/node-fs-extra/pull/408)
+
+2.1.2 / 2017-03-16
+------------------
+
+### Fixed
+
+- Weird windows bug that resulted in `ensureDir()`'s callback being called twice in some cases. This bug may have also affected `remove()`. See [#392](https://github.com/jprichardson/node-fs-extra/issues/392), [#393](https://github.com/jprichardson/node-fs-extra/pull/393)
+
+2.1.1 / 2017-03-15
+------------------
+
+### Fixed
+
+- Reverted [`5597bd`](https://github.com/jprichardson/node-fs-extra/commit/5597bd5b67f7d060f5f5bf26e9635be48330f5d7), this broke compatibility with Node.js versions v4+ but less than `v4.5.0`.
+- Remove `Buffer.alloc()` usage in `moveSync()`.
+
+2.1.0 / 2017-03-15
+------------------
+
+Thanks to [Mani Maghsoudlou (@manidlou)](https://github.com/manidlou) & [Jan Peer Stöcklmair (@JPeer264)](https://github.com/JPeer264) for their extraordinary help with this release!
+
+### Added
+- `moveSync()` See [#309], [#381](https://github.com/jprichardson/node-fs-extra/pull/381). ([@manidlou](https://github.com/manidlou))
+- `copy()` and `copySync()`'s `filter` option now gets the destination path passed as the second parameter. [#366](https://github.com/jprichardson/node-fs-extra/pull/366) ([@manidlou](https://github.com/manidlou))
+
+### Changed
+- Use `Buffer.alloc()` instead of deprecated `new Buffer()` in `copySync()`. [#380](https://github.com/jprichardson/node-fs-extra/pull/380) ([@manidlou](https://github.com/manidlou))
+- Refactored entire codebase to use ES6 features supported by Node.js v4+ [#355](https://github.com/jprichardson/node-fs-extra/issues/355). [(@JPeer264)](https://github.com/JPeer264)
+- Refactored docs. ([@manidlou](https://github.com/manidlou))
+
+### Fixed
+
+- `move()` shouldn't error out when source and dest are the same. [#377](https://github.com/jprichardson/node-fs-extra/issues/377), [#378](https://github.com/jprichardson/node-fs-extra/pull/378) ([@jdalton](https://github.com/jdalton))
+
+2.0.0 / 2017-01-16
+------------------
+
+### Removed
+- **BREAKING:** Removed support for Node `v0.12`. The Node foundation stopped officially supporting it
+on Jan 1st, 2017.
+- **BREAKING:** Remove `walk()` and `walkSync()`. `walkSync()` was only part of `fs-extra` for a little
+over two months. Use [klaw](https://github.com/jprichardson/node-klaw) instead of `walk()`, in fact, `walk()` was just
+an alias to klaw. For `walkSync()` use [klaw-sync](https://github.com/mawni/node-klaw-sync). See: [#338], [#339]
+
+### Changed
+- **BREAKING:** Renamed `clobber` to `overwrite`. This affects `copy()`, `copySync()`, and `move()`. [#330], [#333]
+- Moved docs, to `docs/`. [#340]
+
+### Fixed
+- Apply filters to directories in `copySync()` like in `copy()`. [#324]
+- A specific condition when disk is under heavy use, `copy()` can fail. [#326]
+
+
+1.0.0 / 2016-11-01
+------------------
+
+After five years of development, we finally have reach the 1.0.0 milestone! Big thanks goes
+to [Ryan Zim](https://github.com/RyanZim) for leading the charge on this release!
+
+### Added
+- `walkSync()`
+
+### Changed
+- **BREAKING**: dropped Node v0.10 support.
+- disabled `rimaf` globbing, wasn't used. [#280]
+- deprecate `copy()/copySync()` option `filter` if it's a `RegExp`. `filter` should now be a function.
+- inline `rimraf`. This is temporary and was done because `rimraf` depended upon the beefy `glob` which `fs-extra` does not use. [#300]
+
+### Fixed
+- bug fix proper closing of file handle on `utimesMillis()` [#271]
+- proper escaping of files with dollar signs [#291]
+- `copySync()` failed if user didn't own file. [#199], [#301]
+
+
+0.30.0 / 2016-04-28
+-------------------
+- Brought back Node v0.10 support. I didn't realize there was still demand. Official support will end **2016-10-01**.
+
+0.29.0 / 2016-04-27
+-------------------
+- **BREAKING**: removed support for Node v0.10. If you still want to use Node v0.10, everything should work except for `ensureLink()/ensureSymlink()`. Node v0.12 is still supported but will be dropped in the near future as well.
+
+0.28.0 / 2016-04-17
+-------------------
+- **BREAKING**: removed `createOutputStream()`. Use https://www.npmjs.com/package/create-output-stream. See: [#192][#192]
+- `mkdirs()/mkdirsSync()` check for invalid win32 path chars. See: [#209][#209], [#237][#237]
+- `mkdirs()/mkdirsSync()` if drive not mounted, error. See: [#93][#93]
+
+0.27.0 / 2016-04-15
+-------------------
+- add `dereference` option to `copySync()`. [#235][#235]
+
+0.26.7 / 2016-03-16
+-------------------
+- fixed `copy()` if source and dest are the same. [#230][#230]
+
+0.26.6 / 2016-03-15
+-------------------
+- fixed if `emptyDir()` does not have a callback: [#229][#229]
+
+0.26.5 / 2016-01-27
+-------------------
+- `copy()` with two arguments (w/o callback) was broken. See: [#215][#215]
+
+0.26.4 / 2016-01-05
+-------------------
+- `copySync()` made `preserveTimestamps` default consistent with `copy()` which is `false`. See: [#208][#208]
+
+0.26.3 / 2015-12-17
+-------------------
+- fixed `copy()` hangup in copying blockDevice / characterDevice / `/dev/null`. See: [#193][#193]
+
+0.26.2 / 2015-11-02
+-------------------
+- fixed `outputJson{Sync}()` spacing adherence to `fs.spaces`
+
+0.26.1 / 2015-11-02
+-------------------
+- fixed `copySync()` when `clogger=true` and the destination is read only. See: [#190][#190]
+
+0.26.0 / 2015-10-25
+-------------------
+- extracted the `walk()` function into its own module [`klaw`](https://github.com/jprichardson/node-klaw).
+
+0.25.0 / 2015-10-24
+-------------------
+- now has a file walker `walk()`
+
+0.24.0 / 2015-08-28
+-------------------
+- removed alias `delete()` and `deleteSync()`. See: [#171][#171]
+
+0.23.1 / 2015-08-07
+-------------------
+- Better handling of errors for `move()` when moving across devices. [#170][#170]
+- `ensureSymlink()` and `ensureLink()` should not throw errors if link exists. [#169][#169]
+
+0.23.0 / 2015-08-06
+-------------------
+- added `ensureLink{Sync}()` and `ensureSymlink{Sync}()`. See: [#165][#165]
+
+0.22.1 / 2015-07-09
+-------------------
+- Prevent calling `hasMillisResSync()` on module load. See: [#149][#149].
+Fixes regression that was introduced in `0.21.0`.
+
+0.22.0 / 2015-07-09
+-------------------
+- preserve permissions / ownership in `copy()`. See: [#54][#54]
+
+0.21.0 / 2015-07-04
+-------------------
+- add option to preserve timestamps in `copy()` and `copySync()`. See: [#141][#141]
+- updated `graceful-fs@3.x` to `4.x`. This brings in features from `amazing-graceful-fs` (much cleaner code / less hacks)
+
+0.20.1 / 2015-06-23
+-------------------
+- fixed regression caused by latest jsonfile update: See: https://github.com/jprichardson/node-jsonfile/issues/26
+
+0.20.0 / 2015-06-19
+-------------------
+- removed `jsonfile` aliases with `File` in the name, they weren't documented and probably weren't in use e.g.
+this package had both `fs.readJsonFile` and `fs.readJson` that were aliases to each other, now use `fs.readJson`.
+- preliminary walker created. Intentionally not documented. If you use it, it will almost certainly change and break your code.
+- started moving tests inline
+- upgraded to `jsonfile@2.1.0`, can now pass JSON revivers/replacers to `readJson()`, `writeJson()`, `outputJson()`
+
+0.19.0 / 2015-06-08
+-------------------
+- `fs.copy()` had support for Node v0.8, dropped support
+
+0.18.4 / 2015-05-22
+-------------------
+- fixed license field according to this: [#136][#136] and https://github.com/npm/npm/releases/tag/v2.10.0
+
+0.18.3 / 2015-05-08
+-------------------
+- bugfix: handle `EEXIST` when clobbering on some Linux systems. [#134][#134]
+
+0.18.2 / 2015-04-17
+-------------------
+- bugfix: allow `F_OK` ([#120][#120])
+
+0.18.1 / 2015-04-15
+-------------------
+- improved windows support for `move()` a bit. https://github.com/jprichardson/node-fs-extra/commit/92838980f25dc2ee4ec46b43ee14d3c4a1d30c1b
+- fixed a lot of tests for Windows (appveyor)
+
+0.18.0 / 2015-03-31
+-------------------
+- added `emptyDir()` and `emptyDirSync()`
+
+0.17.0 / 2015-03-28
+-------------------
+- `copySync` added `clobber` option (before always would clobber, now if `clobber` is `false` it throws an error if the destination exists).
+**Only works with files at the moment.**
+- `createOutputStream()` added. See: [#118][#118]
+
+0.16.5 / 2015-03-08
+-------------------
+- fixed `fs.move` when `clobber` is `true` and destination is a directory, it should clobber. [#114][#114]
+
+0.16.4 / 2015-03-01
+-------------------
+- `fs.mkdirs` fix infinite loop on Windows. See: See https://github.com/substack/node-mkdirp/pull/74 and https://github.com/substack/node-mkdirp/issues/66
+
+0.16.3 / 2015-01-28
+-------------------
+- reverted https://github.com/jprichardson/node-fs-extra/commit/1ee77c8a805eba5b99382a2591ff99667847c9c9
+
+
+0.16.2 / 2015-01-28
+-------------------
+- fixed `fs.copy` for Node v0.8 (support is temporary and will be removed in the near future)
+
+0.16.1 / 2015-01-28
+-------------------
+- if `setImmediate` is not available, fall back to `process.nextTick`
+
+0.16.0 / 2015-01-28
+-------------------
+- bugfix `fs.move()` into itself. Closes [#104]
+- bugfix `fs.move()` moving directory across device. Closes [#108]
+- added coveralls support
+- bugfix: nasty multiple callback `fs.copy()` bug. Closes [#98]
+- misc fs.copy code cleanups
+
+0.15.0 / 2015-01-21
+-------------------
+- dropped `ncp`, imported code in
+- because of previous, now supports `io.js`
+- `graceful-fs` is now a dependency
+
+0.14.0 / 2015-01-05
+-------------------
+- changed `copy`/`copySync` from `fs.copy(src, dest, [filters], callback)` to `fs.copy(src, dest, [options], callback)` [#100][#100]
+- removed mockfs tests for mkdirp (this may be temporary, but was getting in the way of other tests)
+
+0.13.0 / 2014-12-10
+-------------------
+- removed `touch` and `touchSync` methods (they didn't handle permissions like UNIX touch)
+- updated `"ncp": "^0.6.0"` to `"ncp": "^1.0.1"`
+- imported `mkdirp` => `minimist` and `mkdirp` are no longer dependences, should now appease people who wanted `mkdirp` to be `--use_strict` safe. See [#59]([#59][#59])
+
+0.12.0 / 2014-09-22
+-------------------
+- copy symlinks in `copySync()` [#85][#85]
+
+0.11.1 / 2014-09-02
+-------------------
+- bugfix `copySync()` preserve file permissions [#80][#80]
+
+0.11.0 / 2014-08-11
+-------------------
+- upgraded `"ncp": "^0.5.1"` to `"ncp": "^0.6.0"`
+- upgrade `jsonfile": "^1.2.0"` to `jsonfile": "^2.0.0"` => on write, json files now have `\n` at end. Also adds `options.throws` to `readJsonSync()`
+see https://github.com/jprichardson/node-jsonfile#readfilesyncfilename-options for more details.
+
+0.10.0 / 2014-06-29
+------------------
+* bugfix: upgaded `"jsonfile": "~1.1.0"` to `"jsonfile": "^1.2.0"`, bumped minor because of `jsonfile` dep change
+from `~` to `^`. [#67]
+
+0.9.1 / 2014-05-22
+------------------
+* removed Node.js `0.8.x` support, `0.9.0` was published moments ago and should have been done there
+
+0.9.0 / 2014-05-22
+------------------
+* upgraded `ncp` from `~0.4.2` to `^0.5.1`, [#58]
+* upgraded `rimraf` from `~2.2.6` to `^2.2.8`
+* upgraded `mkdirp` from `0.3.x` to `^0.5.0`
+* added methods `ensureFile()`, `ensureFileSync()`
+* added methods `ensureDir()`, `ensureDirSync()` [#31]
+* added `move()` method. From: https://github.com/andrewrk/node-mv
+
+
+0.8.1 / 2013-10-24
+------------------
+* copy failed to return an error to the callback if a file doesn't exist (ulikoehler [#38], [#39])
+
+0.8.0 / 2013-10-14
+------------------
+* `filter` implemented on `copy()` and `copySync()`. (Srirangan / [#36])
+
+0.7.1 / 2013-10-12
+------------------
+* `copySync()` implemented (Srirangan / [#33])
+* updated to the latest `jsonfile` version `1.1.0` which gives `options` params for the JSON methods. Closes [#32]
+
+0.7.0 / 2013-10-07
+------------------
+* update readme conventions
+* `copy()` now works if destination directory does not exist. Closes [#29]
+
+0.6.4 / 2013-09-05
+------------------
+* changed `homepage` field in package.json to remove NPM warning
+
+0.6.3 / 2013-06-28
+------------------
+* changed JSON spacing default from `4` to `2` to follow Node conventions
+* updated `jsonfile` dep
+* updated `rimraf` dep
+
+0.6.2 / 2013-06-28
+------------------
+* added .npmignore, [#25]
+
+0.6.1 / 2013-05-14
+------------------
+* modified for `strict` mode, closes [#24]
+* added `outputJson()/outputJsonSync()`, closes [#23]
+
+0.6.0 / 2013-03-18
+------------------
+* removed node 0.6 support
+* added node 0.10 support
+* upgraded to latest `ncp` and `rimraf`.
+* optional `graceful-fs` support. Closes [#17]
+
+
+0.5.0 / 2013-02-03
+------------------
+* Removed `readTextFile`.
+* Renamed `readJSONFile` to `readJSON` and `readJson`, same with write.
+* Restructured documentation a bit. Added roadmap.
+
+0.4.0 / 2013-01-28
+------------------
+* Set default spaces in `jsonfile` from 4 to 2.
+* Updated `testutil` deps for tests.
+* Renamed `touch()` to `createFile()`
+* Added `outputFile()` and `outputFileSync()`
+* Changed creation of testing diretories so the /tmp dir is not littered.
+* Added `readTextFile()` and `readTextFileSync()`.
+
+0.3.2 / 2012-11-01
+------------------
+* Added `touch()` and `touchSync()` methods.
+
+0.3.1 / 2012-10-11
+------------------
+* Fixed some stray globals.
+
+0.3.0 / 2012-10-09
+------------------
+* Removed all CoffeeScript from tests.
+* Renamed `mkdir` to `mkdirs`/`mkdirp`.
+
+0.2.1 / 2012-09-11
+------------------
+* Updated `rimraf` dep.
+
+0.2.0 / 2012-09-10
+------------------
+* Rewrote module into JavaScript. (Must still rewrite tests into JavaScript)
+* Added all methods of [jsonfile](https://github.com/jprichardson/node-jsonfile)
+* Added Travis-CI.
+
+0.1.3 / 2012-08-13
+------------------
+* Added method `readJSONFile`.
+
+0.1.2 / 2012-06-15
+------------------
+* Bug fix: `deleteSync()` didn't exist.
+* Verified Node v0.8 compatibility.
+
+0.1.1 / 2012-06-15
+------------------
+* Fixed bug in `remove()`/`delete()` that wouldn't execute the function if a callback wasn't passed.
+
+0.1.0 / 2012-05-31
+------------------
+* Renamed `copyFile()` to `copy()`. `copy()` can now copy directories (recursively) too.
+* Renamed `rmrf()` to `remove()`.
+* `remove()` aliased with `delete()`.
+* Added `mkdirp` capabilities. Named: `mkdir()`. Hides Node.js native `mkdir()`.
+* Instead of exporting the native `fs` module with new functions, I now copy over the native methods to a new object and export that instead.
+
+0.0.4 / 2012-03-14
+------------------
+* Removed CoffeeScript dependency
+
+0.0.3 / 2012-01-11
+------------------
+* Added methods rmrf and rmrfSync
+* Moved tests from Jasmine to Mocha
+
+
+[#344]: https://github.com/jprichardson/node-fs-extra/issues/344 "Licence Year"
+[#343]: https://github.com/jprichardson/node-fs-extra/pull/343 "Add klaw-sync link to readme"
+[#342]: https://github.com/jprichardson/node-fs-extra/pull/342 "allow preserveTimestamps when use move"
+[#341]: https://github.com/jprichardson/node-fs-extra/issues/341 "mkdirp(path.dirname(dest) in move() logic needs cleaning up [question]"
+[#340]: https://github.com/jprichardson/node-fs-extra/pull/340 "Move docs to seperate docs folder [documentation]"
+[#339]: https://github.com/jprichardson/node-fs-extra/pull/339 "Remove walk() & walkSync() [feature-walk]"
+[#338]: https://github.com/jprichardson/node-fs-extra/issues/338 "Remove walk() and walkSync() [feature-walk]"
+[#337]: https://github.com/jprichardson/node-fs-extra/issues/337 "copy doesn't return a yieldable value"
+[#336]: https://github.com/jprichardson/node-fs-extra/pull/336 "Docs enhanced walk sync [documentation, feature-walk]"
+[#335]: https://github.com/jprichardson/node-fs-extra/pull/335 "Refactor move() tests [feature-move]"
+[#334]: https://github.com/jprichardson/node-fs-extra/pull/334 "Cleanup lib/move/index.js [feature-move]"
+[#333]: https://github.com/jprichardson/node-fs-extra/pull/333 "Rename clobber to overwrite [feature-copy, feature-move]"
+[#332]: https://github.com/jprichardson/node-fs-extra/pull/332 "BREAKING: Drop Node v0.12 & io.js support"
+[#331]: https://github.com/jprichardson/node-fs-extra/issues/331 "Add support for chmodr [enhancement, future]"
+[#330]: https://github.com/jprichardson/node-fs-extra/pull/330 "BREAKING: Do not error when copy destination exists & clobber: false [feature-copy]"
+[#329]: https://github.com/jprichardson/node-fs-extra/issues/329 "Does .walk() scale to large directories? [question]"
+[#328]: https://github.com/jprichardson/node-fs-extra/issues/328 "Copying files corrupts [feature-copy, needs-confirmed]"
+[#327]: https://github.com/jprichardson/node-fs-extra/pull/327 "Use writeStream 'finish' event instead of 'close' [bug, feature-copy]"
+[#326]: https://github.com/jprichardson/node-fs-extra/issues/326 "fs.copy fails with chmod error when disk under heavy use [bug, feature-copy]"
+[#325]: https://github.com/jprichardson/node-fs-extra/issues/325 "ensureDir is difficult to promisify [enhancement]"
+[#324]: https://github.com/jprichardson/node-fs-extra/pull/324 "copySync() should apply filter to directories like copy() [bug, feature-copy]"
+[#323]: https://github.com/jprichardson/node-fs-extra/issues/323 "Support for `dest` being a directory when using `copy*()`?"
+[#322]: https://github.com/jprichardson/node-fs-extra/pull/322 "Add fs-promise as fs-extra-promise alternative"
+[#321]: https://github.com/jprichardson/node-fs-extra/issues/321 "fs.copy() with clobber set to false return EEXIST error [feature-copy]"
+[#320]: https://github.com/jprichardson/node-fs-extra/issues/320 "fs.copySync: Error: EPERM: operation not permitted, unlink "
+[#319]: https://github.com/jprichardson/node-fs-extra/issues/319 "Create directory if not exists"
+[#318]: https://github.com/jprichardson/node-fs-extra/issues/318 "Support glob patterns [enhancement, future]"
+[#317]: https://github.com/jprichardson/node-fs-extra/pull/317 "Adding copy sync test for src file without write perms"
+[#316]: https://github.com/jprichardson/node-fs-extra/pull/316 "Remove move()'s broken limit option [feature-move]"
+[#315]: https://github.com/jprichardson/node-fs-extra/pull/315 "Fix move clobber tests to work around graceful-fs bug."
+[#314]: https://github.com/jprichardson/node-fs-extra/issues/314 "move() limit option [documentation, enhancement, feature-move]"
+[#313]: https://github.com/jprichardson/node-fs-extra/pull/313 "Test that remove() ignores glob characters."
+[#312]: https://github.com/jprichardson/node-fs-extra/pull/312 "Enhance walkSync() to return items with path and stats [feature-walk]"
+[#311]: https://github.com/jprichardson/node-fs-extra/issues/311 "move() not work when dest name not provided [feature-move]"
+[#310]: https://github.com/jprichardson/node-fs-extra/issues/310 "Edit walkSync to return items like what walk emits [documentation, enhancement, feature-walk]"
+[#309]: https://github.com/jprichardson/node-fs-extra/issues/309 "moveSync support [enhancement, feature-move]"
+[#308]: https://github.com/jprichardson/node-fs-extra/pull/308 "Fix incorrect anchor link"
+[#307]: https://github.com/jprichardson/node-fs-extra/pull/307 "Fix coverage"
+[#306]: https://github.com/jprichardson/node-fs-extra/pull/306 "Update devDeps, fix lint error"
+[#305]: https://github.com/jprichardson/node-fs-extra/pull/305 "Re-add Coveralls"
+[#304]: https://github.com/jprichardson/node-fs-extra/pull/304 "Remove path-is-absolute [enhancement]"
+[#303]: https://github.com/jprichardson/node-fs-extra/pull/303 "Document copySync filter inconsistency [documentation, feature-copy]"
+[#302]: https://github.com/jprichardson/node-fs-extra/pull/302 "fix(console): depreciated -> deprecated"
+[#301]: https://github.com/jprichardson/node-fs-extra/pull/301 "Remove chmod call from copySync [feature-copy]"
+[#300]: https://github.com/jprichardson/node-fs-extra/pull/300 "Inline Rimraf [enhancement, feature-move, feature-remove]"
+[#299]: https://github.com/jprichardson/node-fs-extra/pull/299 "Warn when filter is a RegExp [feature-copy]"
+[#298]: https://github.com/jprichardson/node-fs-extra/issues/298 "API Docs [documentation]"
+[#297]: https://github.com/jprichardson/node-fs-extra/pull/297 "Warn about using preserveTimestamps on 32-bit node"
+[#296]: https://github.com/jprichardson/node-fs-extra/pull/296 "Improve EEXIST error message for copySync [enhancement]"
+[#295]: https://github.com/jprichardson/node-fs-extra/pull/295 "Depreciate using regular expressions for copy's filter option [documentation]"
+[#294]: https://github.com/jprichardson/node-fs-extra/pull/294 "BREAKING: Refactor lib/copy/ncp.js [feature-copy]"
+[#293]: https://github.com/jprichardson/node-fs-extra/pull/293 "Update CI configs"
+[#292]: https://github.com/jprichardson/node-fs-extra/issues/292 "Rewrite lib/copy/ncp.js [enhancement, feature-copy]"
+[#291]: https://github.com/jprichardson/node-fs-extra/pull/291 "Escape '$' in replacement string for async file copying"
+[#290]: https://github.com/jprichardson/node-fs-extra/issues/290 "Exclude files pattern while copying using copy.config.js [question]"
+[#289]: https://github.com/jprichardson/node-fs-extra/pull/289 "(Closes #271) lib/util/utimes: properly close file descriptors in the event of an error"
+[#288]: https://github.com/jprichardson/node-fs-extra/pull/288 "(Closes #271) lib/util/utimes: properly close file descriptors in the event of an error"
+[#287]: https://github.com/jprichardson/node-fs-extra/issues/287 "emptyDir() callback arguments are inconsistent [enhancement, feature-remove]"
+[#286]: https://github.com/jprichardson/node-fs-extra/pull/286 "Added walkSync function"
+[#285]: https://github.com/jprichardson/node-fs-extra/issues/285 "CITGM test failing on s390"
+[#284]: https://github.com/jprichardson/node-fs-extra/issues/284 "outputFile method is missing a check to determine if existing item is a folder or not"
+[#283]: https://github.com/jprichardson/node-fs-extra/pull/283 "Apply filter also on directories and symlinks for copySync()"
+[#282]: https://github.com/jprichardson/node-fs-extra/pull/282 "Apply filter also on directories and symlinks for copySync()"
+[#281]: https://github.com/jprichardson/node-fs-extra/issues/281 "remove function executes 'successfully' but doesn't do anything?"
+[#280]: https://github.com/jprichardson/node-fs-extra/pull/280 "Disable rimraf globbing"
+[#279]: https://github.com/jprichardson/node-fs-extra/issues/279 "Some code is vendored instead of included [awaiting-reply]"
+[#278]: https://github.com/jprichardson/node-fs-extra/issues/278 "copy() does not preserve file/directory ownership"
+[#277]: https://github.com/jprichardson/node-fs-extra/pull/277 "Mention defaults for clobber and dereference options"
+[#276]: https://github.com/jprichardson/node-fs-extra/issues/276 "Cannot connect to Shared Folder [awaiting-reply]"
+[#275]: https://github.com/jprichardson/node-fs-extra/issues/275 "EMFILE, too many open files on Mac OS with JSON API"
+[#274]: https://github.com/jprichardson/node-fs-extra/issues/274 "Use with memory-fs? [enhancement, future]"
+[#273]: https://github.com/jprichardson/node-fs-extra/pull/273 "tests: rename `remote.test.js` to `remove.test.js`"
+[#272]: https://github.com/jprichardson/node-fs-extra/issues/272 "Copy clobber flag never err even when true [bug, feature-copy]"
+[#271]: https://github.com/jprichardson/node-fs-extra/issues/271 "Unclosed file handle on futimes error"
+[#270]: https://github.com/jprichardson/node-fs-extra/issues/270 "copy not working as desired on Windows [feature-copy, platform-windows]"
+[#269]: https://github.com/jprichardson/node-fs-extra/issues/269 "Copying with preserveTimeStamps: true is inaccurate using 32bit node [feature-copy]"
+[#268]: https://github.com/jprichardson/node-fs-extra/pull/268 "port fix for mkdirp issue #111"
+[#267]: https://github.com/jprichardson/node-fs-extra/issues/267 "WARN deprecated wrench@1.5.9: wrench.js is deprecated!"
+[#266]: https://github.com/jprichardson/node-fs-extra/issues/266 "fs-extra"
+[#265]: https://github.com/jprichardson/node-fs-extra/issues/265 "Link the `fs.stat fs.exists` etc. methods for replace the `fs` module forever?"
+[#264]: https://github.com/jprichardson/node-fs-extra/issues/264 "Renaming a file using move fails when a file inside is open (at least on windows) [wont-fix]"
+[#263]: https://github.com/jprichardson/node-fs-extra/issues/263 "ENOSYS: function not implemented, link [needs-confirmed]"
+[#262]: https://github.com/jprichardson/node-fs-extra/issues/262 "Add .exists() and .existsSync()"
+[#261]: https://github.com/jprichardson/node-fs-extra/issues/261 "Cannot read property 'prototype' of undefined"
+[#260]: https://github.com/jprichardson/node-fs-extra/pull/260 "use more specific path for method require"
+[#259]: https://github.com/jprichardson/node-fs-extra/issues/259 "Feature Request: isEmpty"
+[#258]: https://github.com/jprichardson/node-fs-extra/issues/258 "copy files does not preserve file timestamp"
+[#257]: https://github.com/jprichardson/node-fs-extra/issues/257 "Copying a file on windows fails"
+[#256]: https://github.com/jprichardson/node-fs-extra/pull/256 "Updated Readme "
+[#255]: https://github.com/jprichardson/node-fs-extra/issues/255 "Update rimraf required version"
+[#254]: https://github.com/jprichardson/node-fs-extra/issues/254 "request for readTree, readTreeSync, walkSync method"
+[#253]: https://github.com/jprichardson/node-fs-extra/issues/253 "outputFile does not touch mtime when file exists"
+[#252]: https://github.com/jprichardson/node-fs-extra/pull/252 "Fixing problem when copying file with no write permission"
+[#251]: https://github.com/jprichardson/node-fs-extra/issues/251 "Just wanted to say thank you"
+[#250]: https://github.com/jprichardson/node-fs-extra/issues/250 "`fs.remove()` not removing files (works with `rm -rf`)"
+[#249]: https://github.com/jprichardson/node-fs-extra/issues/249 "Just a Question ... Remove Servers"
+[#248]: https://github.com/jprichardson/node-fs-extra/issues/248 "Allow option to not preserve permissions for copy"
+[#247]: https://github.com/jprichardson/node-fs-extra/issues/247 "Add TypeScript typing directly in the fs-extra package"
+[#246]: https://github.com/jprichardson/node-fs-extra/issues/246 "fse.remove() && fse.removeSync() don't throw error on ENOENT file"
+[#245]: https://github.com/jprichardson/node-fs-extra/issues/245 "filter for empty dir [enhancement]"
+[#244]: https://github.com/jprichardson/node-fs-extra/issues/244 "copySync doesn't apply the filter to directories"
+[#243]: https://github.com/jprichardson/node-fs-extra/issues/243 "Can I request fs.walk() to be synchronous?"
+[#242]: https://github.com/jprichardson/node-fs-extra/issues/242 "Accidentally truncates file names ending with $$ [bug, feature-copy]"
+[#241]: https://github.com/jprichardson/node-fs-extra/pull/241 "Remove link to createOutputStream"
+[#240]: https://github.com/jprichardson/node-fs-extra/issues/240 "walkSync request"
+[#239]: https://github.com/jprichardson/node-fs-extra/issues/239 "Depreciate regular expressions for copy's filter [documentation, feature-copy]"
+[#238]: https://github.com/jprichardson/node-fs-extra/issues/238 "Can't write to files while in a worker thread."
+[#237]: https://github.com/jprichardson/node-fs-extra/issues/237 ".ensureDir(..) fails silently when passed an invalid path..."
+[#236]: https://github.com/jprichardson/node-fs-extra/issues/236 "[Removed] Filed under wrong repo"
+[#235]: https://github.com/jprichardson/node-fs-extra/pull/235 "Adds symlink dereference option to `fse.copySync` (#191)"
+[#234]: https://github.com/jprichardson/node-fs-extra/issues/234 "ensureDirSync fails silent when EACCES: permission denied on travis-ci"
+[#233]: https://github.com/jprichardson/node-fs-extra/issues/233 "please make sure the first argument in callback is error object [feature-copy]"
+[#232]: https://github.com/jprichardson/node-fs-extra/issues/232 "Copy a folder content to its child folder. "
+[#231]: https://github.com/jprichardson/node-fs-extra/issues/231 "Adding read/write/output functions for YAML"
+[#230]: https://github.com/jprichardson/node-fs-extra/pull/230 "throw error if src and dest are the same to avoid zeroing out + test"
+[#229]: https://github.com/jprichardson/node-fs-extra/pull/229 "fix 'TypeError: callback is not a function' in emptyDir"
+[#228]: https://github.com/jprichardson/node-fs-extra/pull/228 "Throw error when target is empty so file is not accidentally zeroed out"
+[#227]: https://github.com/jprichardson/node-fs-extra/issues/227 "Uncatchable errors when there are invalid arguments [feature-move]"
+[#226]: https://github.com/jprichardson/node-fs-extra/issues/226 "Moving to the current directory"
+[#225]: https://github.com/jprichardson/node-fs-extra/issues/225 "EBUSY: resource busy or locked, unlink"
+[#224]: https://github.com/jprichardson/node-fs-extra/issues/224 "fse.copy ENOENT error"
+[#223]: https://github.com/jprichardson/node-fs-extra/issues/223 "Suspicious behavior of fs.existsSync"
+[#222]: https://github.com/jprichardson/node-fs-extra/pull/222 "A clearer description of emtpyDir function"
+[#221]: https://github.com/jprichardson/node-fs-extra/pull/221 "Update README.md"
+[#220]: https://github.com/jprichardson/node-fs-extra/pull/220 "Non-breaking feature: add option 'passStats' to copy methods."
+[#219]: https://github.com/jprichardson/node-fs-extra/pull/219 "Add closing parenthesis in copySync example"
+[#218]: https://github.com/jprichardson/node-fs-extra/pull/218 "fix #187 #70 options.filter bug"
+[#217]: https://github.com/jprichardson/node-fs-extra/pull/217 "fix #187 #70 options.filter bug"
+[#216]: https://github.com/jprichardson/node-fs-extra/pull/216 "fix #187 #70 options.filter bug"
+[#215]: https://github.com/jprichardson/node-fs-extra/pull/215 "fse.copy throws error when only src and dest provided [bug, documentation, feature-copy]"
+[#214]: https://github.com/jprichardson/node-fs-extra/pull/214 "Fixing copySync anchor tag"
+[#213]: https://github.com/jprichardson/node-fs-extra/issues/213 "Merge extfs with this repo"
+[#212]: https://github.com/jprichardson/node-fs-extra/pull/212 "Update year to 2016 in README.md and LICENSE"
+[#211]: https://github.com/jprichardson/node-fs-extra/issues/211 "Not copying all files"
+[#210]: https://github.com/jprichardson/node-fs-extra/issues/210 "copy/copySync behave differently when copying a symbolic file [bug, documentation, feature-copy]"
+[#209]: https://github.com/jprichardson/node-fs-extra/issues/209 "In Windows invalid directory name causes infinite loop in ensureDir(). [bug]"
+[#208]: https://github.com/jprichardson/node-fs-extra/pull/208 "fix options.preserveTimestamps to false in copy-sync by default [feature-copy]"
+[#207]: https://github.com/jprichardson/node-fs-extra/issues/207 "Add `compare` suite of functions"
+[#206]: https://github.com/jprichardson/node-fs-extra/issues/206 "outputFileSync"
+[#205]: https://github.com/jprichardson/node-fs-extra/issues/205 "fix documents about copy/copySync [documentation, feature-copy]"
+[#204]: https://github.com/jprichardson/node-fs-extra/pull/204 "allow copy of block and character device files"
+[#203]: https://github.com/jprichardson/node-fs-extra/issues/203 "copy method's argument options couldn't be undefined [bug, feature-copy]"
+[#202]: https://github.com/jprichardson/node-fs-extra/issues/202 "why there is not a walkSync method?"
+[#201]: https://github.com/jprichardson/node-fs-extra/issues/201 "clobber for directories [feature-copy, future]"
+[#200]: https://github.com/jprichardson/node-fs-extra/issues/200 "'copySync' doesn't work in sync"
+[#199]: https://github.com/jprichardson/node-fs-extra/issues/199 "fs.copySync fails if user does not own file [bug, feature-copy]"
+[#198]: https://github.com/jprichardson/node-fs-extra/issues/198 "handle copying between identical files [feature-copy]"
+[#197]: https://github.com/jprichardson/node-fs-extra/issues/197 "Missing documentation for `outputFile` `options` 3rd parameter [documentation]"
+[#196]: https://github.com/jprichardson/node-fs-extra/issues/196 "copy filter: async function and/or function called with `fs.stat` result [future]"
+[#195]: https://github.com/jprichardson/node-fs-extra/issues/195 "How to override with outputFile?"
+[#194]: https://github.com/jprichardson/node-fs-extra/pull/194 "allow ensureFile(Sync) to provide data to be written to created file"
+[#193]: https://github.com/jprichardson/node-fs-extra/issues/193 "`fs.copy` fails silently if source file is /dev/null [bug, feature-copy]"
+[#192]: https://github.com/jprichardson/node-fs-extra/issues/192 "Remove fs.createOutputStream()"
+[#191]: https://github.com/jprichardson/node-fs-extra/issues/191 "How to copy symlinks to target as normal folders [feature-copy]"
+[#190]: https://github.com/jprichardson/node-fs-extra/pull/190 "copySync to overwrite destination file if readonly and clobber true"
+[#189]: https://github.com/jprichardson/node-fs-extra/pull/189 "move.test fix to support CRLF on Windows"
+[#188]: https://github.com/jprichardson/node-fs-extra/issues/188 "move.test failing on windows platform"
+[#187]: https://github.com/jprichardson/node-fs-extra/issues/187 "Not filter each file, stops on first false [feature-copy]"
+[#186]: https://github.com/jprichardson/node-fs-extra/issues/186 "Do you need a .size() function in this module? [future]"
+[#185]: https://github.com/jprichardson/node-fs-extra/issues/185 "Doesn't work on NodeJS v4.x"
+[#184]: https://github.com/jprichardson/node-fs-extra/issues/184 "CLI equivalent for fs-extra"
+[#183]: https://github.com/jprichardson/node-fs-extra/issues/183 "with clobber true, copy and copySync behave differently if destination file is read only [bug, feature-copy]"
+[#182]: https://github.com/jprichardson/node-fs-extra/issues/182 "ensureDir(dir, callback) second callback parameter not specified"
+[#181]: https://github.com/jprichardson/node-fs-extra/issues/181 "Add ability to remove file securely [enhancement, wont-fix]"
+[#180]: https://github.com/jprichardson/node-fs-extra/issues/180 "Filter option doesn't work the same way in copy and copySync [bug, feature-copy]"
+[#179]: https://github.com/jprichardson/node-fs-extra/issues/179 "Include opendir"
+[#178]: https://github.com/jprichardson/node-fs-extra/issues/178 "ENOTEMPTY is thrown on removeSync "
+[#177]: https://github.com/jprichardson/node-fs-extra/issues/177 "fix `remove()` wildcards (introduced by rimraf) [feature-remove]"
+[#176]: https://github.com/jprichardson/node-fs-extra/issues/176 "createOutputStream doesn't emit 'end' event"
+[#175]: https://github.com/jprichardson/node-fs-extra/issues/175 "[Feature Request].moveSync support [feature-move, future]"
+[#174]: https://github.com/jprichardson/node-fs-extra/pull/174 "Fix copy formatting and document options.filter"
+[#173]: https://github.com/jprichardson/node-fs-extra/issues/173 "Feature Request: writeJson should mkdirs"
+[#172]: https://github.com/jprichardson/node-fs-extra/issues/172 "rename `clobber` flags to `overwrite`"
+[#171]: https://github.com/jprichardson/node-fs-extra/issues/171 "remove unnecessary aliases"
+[#170]: https://github.com/jprichardson/node-fs-extra/pull/170 "More robust handling of errors moving across virtual drives"
+[#169]: https://github.com/jprichardson/node-fs-extra/pull/169 "suppress ensureLink & ensureSymlink dest exists error"
+[#168]: https://github.com/jprichardson/node-fs-extra/pull/168 "suppress ensurelink dest exists error"
+[#167]: https://github.com/jprichardson/node-fs-extra/pull/167 "Adds basic (string, buffer) support for ensureFile content [future]"
+[#166]: https://github.com/jprichardson/node-fs-extra/pull/166 "Adds basic (string, buffer) support for ensureFile content"
+[#165]: https://github.com/jprichardson/node-fs-extra/pull/165 "ensure for link & symlink"
+[#164]: https://github.com/jprichardson/node-fs-extra/issues/164 "Feature Request: ensureFile to take optional argument for file content"
+[#163]: https://github.com/jprichardson/node-fs-extra/issues/163 "ouputJson not formatted out of the box [bug]"
+[#162]: https://github.com/jprichardson/node-fs-extra/pull/162 "ensure symlink & link"
+[#161]: https://github.com/jprichardson/node-fs-extra/pull/161 "ensure symlink & link"
+[#160]: https://github.com/jprichardson/node-fs-extra/pull/160 "ensure symlink & link"
+[#159]: https://github.com/jprichardson/node-fs-extra/pull/159 "ensure symlink & link"
+[#158]: https://github.com/jprichardson/node-fs-extra/issues/158 "Feature Request: ensureLink and ensureSymlink methods"
+[#157]: https://github.com/jprichardson/node-fs-extra/issues/157 "writeJson isn't formatted"
+[#156]: https://github.com/jprichardson/node-fs-extra/issues/156 "Promise.promisifyAll doesn't work for some methods"
+[#155]: https://github.com/jprichardson/node-fs-extra/issues/155 "Readme"
+[#154]: https://github.com/jprichardson/node-fs-extra/issues/154 "/tmp/millis-test-sync"
+[#153]: https://github.com/jprichardson/node-fs-extra/pull/153 "Make preserveTimes also work on read-only files. Closes #152"
+[#152]: https://github.com/jprichardson/node-fs-extra/issues/152 "fs.copy fails for read-only files with preserveTimestamp=true [feature-copy]"
+[#151]: https://github.com/jprichardson/node-fs-extra/issues/151 "TOC does not work correctly on npm [documentation]"
+[#150]: https://github.com/jprichardson/node-fs-extra/issues/150 "Remove test file fixtures, create with code."
+[#149]: https://github.com/jprichardson/node-fs-extra/issues/149 "/tmp/millis-test-sync"
+[#148]: https://github.com/jprichardson/node-fs-extra/issues/148 "split out `Sync` methods in documentation"
+[#147]: https://github.com/jprichardson/node-fs-extra/issues/147 "Adding rmdirIfEmpty"
+[#146]: https://github.com/jprichardson/node-fs-extra/pull/146 "ensure test.js works"
+[#145]: https://github.com/jprichardson/node-fs-extra/issues/145 "Add `fs.exists` and `fs.existsSync` if it doesn't exist."
+[#144]: https://github.com/jprichardson/node-fs-extra/issues/144 "tests failing"
+[#143]: https://github.com/jprichardson/node-fs-extra/issues/143 "update graceful-fs"
+[#142]: https://github.com/jprichardson/node-fs-extra/issues/142 "PrependFile Feature"
+[#141]: https://github.com/jprichardson/node-fs-extra/pull/141 "Add option to preserve timestamps"
+[#140]: https://github.com/jprichardson/node-fs-extra/issues/140 "Json file reading fails with 'utf8'"
+[#139]: https://github.com/jprichardson/node-fs-extra/pull/139 "Preserve file timestamp on copy. Closes #138"
+[#138]: https://github.com/jprichardson/node-fs-extra/issues/138 "Preserve timestamps on copying files"
+[#137]: https://github.com/jprichardson/node-fs-extra/issues/137 "outputFile/outputJson: Unexpected end of input"
+[#136]: https://github.com/jprichardson/node-fs-extra/pull/136 "Update license attribute"
+[#135]: https://github.com/jprichardson/node-fs-extra/issues/135 "emptyDir throws Error if no callback is provided"
+[#134]: https://github.com/jprichardson/node-fs-extra/pull/134 "Handle EEXIST error when clobbering dir"
+[#133]: https://github.com/jprichardson/node-fs-extra/pull/133 "Travis runs with `sudo: false`"
+[#132]: https://github.com/jprichardson/node-fs-extra/pull/132 "isDirectory method"
+[#131]: https://github.com/jprichardson/node-fs-extra/issues/131 "copySync is not working iojs 1.8.4 on linux [feature-copy]"
+[#130]: https://github.com/jprichardson/node-fs-extra/pull/130 "Please review additional features."
+[#129]: https://github.com/jprichardson/node-fs-extra/pull/129 "can you review this feature?"
+[#128]: https://github.com/jprichardson/node-fs-extra/issues/128 "fsExtra.move(filepath, newPath) broken;"
+[#127]: https://github.com/jprichardson/node-fs-extra/issues/127 "consider using fs.access to remove deprecated warnings for fs.exists"
+[#126]: https://github.com/jprichardson/node-fs-extra/issues/126 " TypeError: Object #<Object> has no method 'access'"
+[#125]: https://github.com/jprichardson/node-fs-extra/issues/125 "Question: What do the *Sync function do different from non-sync"
+[#124]: https://github.com/jprichardson/node-fs-extra/issues/124 "move with clobber option 'ENOTEMPTY'"
+[#123]: https://github.com/jprichardson/node-fs-extra/issues/123 "Only copy the content of a directory"
+[#122]: https://github.com/jprichardson/node-fs-extra/pull/122 "Update section links in README to match current section ids."
+[#121]: https://github.com/jprichardson/node-fs-extra/issues/121 "emptyDir is undefined"
+[#120]: https://github.com/jprichardson/node-fs-extra/issues/120 "usage bug caused by shallow cloning methods of 'graceful-fs'"
+[#119]: https://github.com/jprichardson/node-fs-extra/issues/119 "mkdirs and ensureDir never invoke callback and consume CPU indefinitely if provided a path with invalid characters on Windows"
+[#118]: https://github.com/jprichardson/node-fs-extra/pull/118 "createOutputStream"
+[#117]: https://github.com/jprichardson/node-fs-extra/pull/117 "Fixed issue with slash separated paths on windows"
+[#116]: https://github.com/jprichardson/node-fs-extra/issues/116 "copySync can only copy directories not files [documentation, feature-copy]"
+[#115]: https://github.com/jprichardson/node-fs-extra/issues/115 ".Copy & .CopySync [feature-copy]"
+[#114]: https://github.com/jprichardson/node-fs-extra/issues/114 "Fails to move (rename) directory to non-empty directory even with clobber: true"
+[#113]: https://github.com/jprichardson/node-fs-extra/issues/113 "fs.copy seems to callback early if the destination file already exists"
+[#112]: https://github.com/jprichardson/node-fs-extra/pull/112 "Copying a file into an existing directory"
+[#111]: https://github.com/jprichardson/node-fs-extra/pull/111 "Moving a file into an existing directory "
+[#110]: https://github.com/jprichardson/node-fs-extra/pull/110 "Moving a file into an existing directory"
+[#109]: https://github.com/jprichardson/node-fs-extra/issues/109 "fs.move across windows drives fails"
+[#108]: https://github.com/jprichardson/node-fs-extra/issues/108 "fse.move directories across multiple devices doesn't work"
+[#107]: https://github.com/jprichardson/node-fs-extra/pull/107 "Check if dest path is an existing dir and copy or move source in it"
+[#106]: https://github.com/jprichardson/node-fs-extra/issues/106 "fse.copySync crashes while copying across devices D: [feature-copy]"
+[#105]: https://github.com/jprichardson/node-fs-extra/issues/105 "fs.copy hangs on iojs"
+[#104]: https://github.com/jprichardson/node-fs-extra/issues/104 "fse.move deletes folders [bug]"
+[#103]: https://github.com/jprichardson/node-fs-extra/issues/103 "Error: EMFILE with copy"
+[#102]: https://github.com/jprichardson/node-fs-extra/issues/102 "touch / touchSync was removed ?"
+[#101]: https://github.com/jprichardson/node-fs-extra/issues/101 "fs-extra promisified"
+[#100]: https://github.com/jprichardson/node-fs-extra/pull/100 "copy: options object or filter to pass to ncp"
+[#99]: https://github.com/jprichardson/node-fs-extra/issues/99 "ensureDir() modes [future]"
+[#98]: https://github.com/jprichardson/node-fs-extra/issues/98 "fs.copy() incorrect async behavior [bug]"
+[#97]: https://github.com/jprichardson/node-fs-extra/pull/97 "use path.join; fix copySync bug"
+[#96]: https://github.com/jprichardson/node-fs-extra/issues/96 "destFolderExists in copySync is always undefined."
+[#95]: https://github.com/jprichardson/node-fs-extra/pull/95 "Using graceful-ncp instead of ncp"
+[#94]: https://github.com/jprichardson/node-fs-extra/issues/94 "Error: EEXIST, file already exists '../mkdirp/bin/cmd.js' on fs.copySync() [enhancement, feature-copy]"
+[#93]: https://github.com/jprichardson/node-fs-extra/issues/93 "Confusing error if drive not mounted [enhancement]"
+[#92]: https://github.com/jprichardson/node-fs-extra/issues/92 "Problems with Bluebird"
+[#91]: https://github.com/jprichardson/node-fs-extra/issues/91 "fs.copySync('/test', '/haha') is different with 'cp -r /test /haha' [enhancement]"
+[#90]: https://github.com/jprichardson/node-fs-extra/issues/90 "Folder creation and file copy is Happening in 64 bit machine but not in 32 bit machine"
+[#89]: https://github.com/jprichardson/node-fs-extra/issues/89 "Error: EEXIST using fs-extra's fs.copy to copy a directory on Windows"
+[#88]: https://github.com/jprichardson/node-fs-extra/issues/88 "Stacking those libraries"
+[#87]: https://github.com/jprichardson/node-fs-extra/issues/87 "createWriteStream + outputFile = ?"
+[#86]: https://github.com/jprichardson/node-fs-extra/issues/86 "no moveSync?"
+[#85]: https://github.com/jprichardson/node-fs-extra/pull/85 "Copy symlinks in copySync"
+[#84]: https://github.com/jprichardson/node-fs-extra/issues/84 "Push latest version to npm ?"
+[#83]: https://github.com/jprichardson/node-fs-extra/issues/83 "Prevent copying a directory into itself [feature-copy]"
+[#82]: https://github.com/jprichardson/node-fs-extra/pull/82 "README updates for move"
+[#81]: https://github.com/jprichardson/node-fs-extra/issues/81 "fd leak after fs.move"
+[#80]: https://github.com/jprichardson/node-fs-extra/pull/80 "Preserve file mode in copySync"
+[#79]: https://github.com/jprichardson/node-fs-extra/issues/79 "fs.copy only .html file empty"
+[#78]: https://github.com/jprichardson/node-fs-extra/pull/78 "copySync was not applying filters to directories"
+[#77]: https://github.com/jprichardson/node-fs-extra/issues/77 "Create README reference to bluebird"
+[#76]: https://github.com/jprichardson/node-fs-extra/issues/76 "Create README reference to typescript"
+[#75]: https://github.com/jprichardson/node-fs-extra/issues/75 "add glob as a dep? [question]"
+[#74]: https://github.com/jprichardson/node-fs-extra/pull/74 "including new emptydir module"
+[#73]: https://github.com/jprichardson/node-fs-extra/pull/73 "add dependency status in readme"
+[#72]: https://github.com/jprichardson/node-fs-extra/pull/72 "Use svg instead of png to get better image quality"
+[#71]: https://github.com/jprichardson/node-fs-extra/issues/71 "fse.copy not working on Windows 7 x64 OS, but, copySync does work"
+[#70]: https://github.com/jprichardson/node-fs-extra/issues/70 "Not filter each file, stops on first false [bug]"
+[#69]: https://github.com/jprichardson/node-fs-extra/issues/69 "How to check if folder exist and read the folder name"
+[#68]: https://github.com/jprichardson/node-fs-extra/issues/68 "consider flag to readJsonSync (throw false) [enhancement]"
+[#67]: https://github.com/jprichardson/node-fs-extra/issues/67 "docs for readJson incorrectly states that is accepts options"
+[#66]: https://github.com/jprichardson/node-fs-extra/issues/66 "ENAMETOOLONG"
+[#65]: https://github.com/jprichardson/node-fs-extra/issues/65 "exclude filter in fs.copy"
+[#64]: https://github.com/jprichardson/node-fs-extra/issues/64 "Announce: mfs - monitor your fs-extra calls"
+[#63]: https://github.com/jprichardson/node-fs-extra/issues/63 "Walk"
+[#62]: https://github.com/jprichardson/node-fs-extra/issues/62 "npm install fs-extra doesn't work"
+[#61]: https://github.com/jprichardson/node-fs-extra/issues/61 "No longer supports node 0.8 due to use of `^` in package.json dependencies"
+[#60]: https://github.com/jprichardson/node-fs-extra/issues/60 "chmod & chown for mkdirs"
+[#59]: https://github.com/jprichardson/node-fs-extra/issues/59 "Consider including mkdirp and making fs-extra '--use_strict' safe [question]"
+[#58]: https://github.com/jprichardson/node-fs-extra/issues/58 "Stack trace not included in fs.copy error"
+[#57]: https://github.com/jprichardson/node-fs-extra/issues/57 "Possible to include wildcards in delete?"
+[#56]: https://github.com/jprichardson/node-fs-extra/issues/56 "Crash when have no access to write to destination file in copy "
+[#55]: https://github.com/jprichardson/node-fs-extra/issues/55 "Is it possible to have any console output similar to Grunt copy module?"
+[#54]: https://github.com/jprichardson/node-fs-extra/issues/54 "`copy` does not preserve file ownership and permissons"
+[#53]: https://github.com/jprichardson/node-fs-extra/issues/53 "outputFile() - ability to write data in appending mode"
+[#52]: https://github.com/jprichardson/node-fs-extra/pull/52 "This fixes (what I think) is a bug in copySync"
+[#51]: https://github.com/jprichardson/node-fs-extra/pull/51 "Add a Bitdeli Badge to README"
+[#50]: https://github.com/jprichardson/node-fs-extra/issues/50 "Replace mechanism in createFile"
+[#49]: https://github.com/jprichardson/node-fs-extra/pull/49 "update rimraf to v2.2.6"
+[#48]: https://github.com/jprichardson/node-fs-extra/issues/48 "fs.copy issue [bug]"
+[#47]: https://github.com/jprichardson/node-fs-extra/issues/47 "Bug in copy - callback called on readStream 'close' - Fixed in ncp 0.5.0"
+[#46]: https://github.com/jprichardson/node-fs-extra/pull/46 "update copyright year"
+[#45]: https://github.com/jprichardson/node-fs-extra/pull/45 "Added note about fse.outputFile() being the one that overwrites"
+[#44]: https://github.com/jprichardson/node-fs-extra/pull/44 "Proposal: Stream support"
+[#43]: https://github.com/jprichardson/node-fs-extra/issues/43 "Better error reporting "
+[#42]: https://github.com/jprichardson/node-fs-extra/issues/42 "Performance issue?"
+[#41]: https://github.com/jprichardson/node-fs-extra/pull/41 "There does seem to be a synchronous version now"
+[#40]: https://github.com/jprichardson/node-fs-extra/issues/40 "fs.copy throw unexplained error ENOENT, utime "
+[#39]: https://github.com/jprichardson/node-fs-extra/pull/39 "Added regression test for copy() return callback on error"
+[#38]: https://github.com/jprichardson/node-fs-extra/pull/38 "Return err in copy() fstat cb, because stat could be undefined or null"
+[#37]: https://github.com/jprichardson/node-fs-extra/issues/37 "Maybe include a line reader? [enhancement, question]"
+[#36]: https://github.com/jprichardson/node-fs-extra/pull/36 "`filter` parameter `fs.copy` and `fs.copySync`"
+[#35]: https://github.com/jprichardson/node-fs-extra/pull/35 "`filter` parameter `fs.copy` and `fs.copySync` "
+[#34]: https://github.com/jprichardson/node-fs-extra/issues/34 "update docs to include options for JSON methods [enhancement]"
+[#33]: https://github.com/jprichardson/node-fs-extra/pull/33 "fs_extra.copySync"
+[#32]: https://github.com/jprichardson/node-fs-extra/issues/32 "update to latest jsonfile [enhancement]"
+[#31]: https://github.com/jprichardson/node-fs-extra/issues/31 "Add ensure methods [enhancement]"
+[#30]: https://github.com/jprichardson/node-fs-extra/issues/30 "update package.json optional dep `graceful-fs`"
+[#29]: https://github.com/jprichardson/node-fs-extra/issues/29 "Copy failing if dest directory doesn't exist. Is this intended?"
+[#28]: https://github.com/jprichardson/node-fs-extra/issues/28 "homepage field must be a string url. Deleted."
+[#27]: https://github.com/jprichardson/node-fs-extra/issues/27 "Update Readme"
+[#26]: https://github.com/jprichardson/node-fs-extra/issues/26 "Add readdir recursive method. [enhancement]"
+[#25]: https://github.com/jprichardson/node-fs-extra/pull/25 "adding an `.npmignore` file"
+[#24]: https://github.com/jprichardson/node-fs-extra/issues/24 "[bug] cannot run in strict mode [bug]"
+[#23]: https://github.com/jprichardson/node-fs-extra/issues/23 "`writeJSON()` should create parent directories"
+[#22]: https://github.com/jprichardson/node-fs-extra/pull/22 "Add a limit option to mkdirs()"
+[#21]: https://github.com/jprichardson/node-fs-extra/issues/21 "touch() in 0.10.0"
+[#20]: https://github.com/jprichardson/node-fs-extra/issues/20 "fs.remove yields callback before directory is really deleted"
+[#19]: https://github.com/jprichardson/node-fs-extra/issues/19 "fs.copy err is empty array"
+[#18]: https://github.com/jprichardson/node-fs-extra/pull/18 "Exposed copyFile Function"
+[#17]: https://github.com/jprichardson/node-fs-extra/issues/17 "Use `require('graceful-fs')` if found instead of `require('fs')`"
+[#16]: https://github.com/jprichardson/node-fs-extra/pull/16 "Update README.md"
+[#15]: https://github.com/jprichardson/node-fs-extra/issues/15 "Implement cp -r but sync aka copySync. [enhancement]"
+[#14]: https://github.com/jprichardson/node-fs-extra/issues/14 "fs.mkdirSync is broken in 0.3.1"
+[#13]: https://github.com/jprichardson/node-fs-extra/issues/13 "Thoughts on including a directory tree / file watcher? [enhancement, question]"
+[#12]: https://github.com/jprichardson/node-fs-extra/issues/12 "copyFile & copyFileSync are global"
+[#11]: https://github.com/jprichardson/node-fs-extra/issues/11 "Thoughts on including a file walker? [enhancement, question]"
+[#10]: https://github.com/jprichardson/node-fs-extra/issues/10 "move / moveFile API [enhancement]"
+[#9]: https://github.com/jprichardson/node-fs-extra/issues/9 "don't import normal fs stuff into fs-extra"
+[#8]: https://github.com/jprichardson/node-fs-extra/pull/8 "Update rimraf to latest version"
+[#6]: https://github.com/jprichardson/node-fs-extra/issues/6 "Remove CoffeeScript development dependency"
+[#5]: https://github.com/jprichardson/node-fs-extra/issues/5 "comments on naming"
+[#4]: https://github.com/jprichardson/node-fs-extra/issues/4 "version bump to 0.2"
+[#3]: https://github.com/jprichardson/node-fs-extra/pull/3 "Hi! I fixed some code for you!"
+[#2]: https://github.com/jprichardson/node-fs-extra/issues/2 "Merge with fs.extra and mkdirp"
+[#1]: https://github.com/jprichardson/node-fs-extra/issues/1 "file-extra npm !exist"
diff --git a/client/node_modules/fs-extra/LICENSE b/client/node_modules/fs-extra/LICENSE
new file mode 100644
index 0000000..93546df
--- /dev/null
+++ b/client/node_modules/fs-extra/LICENSE
@@ -0,0 +1,15 @@
+(The MIT License)
+
+Copyright (c) 2011-2017 JP Richardson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
+(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/fs-extra/README.md b/client/node_modules/fs-extra/README.md
new file mode 100644
index 0000000..070a5e7
--- /dev/null
+++ b/client/node_modules/fs-extra/README.md
@@ -0,0 +1,261 @@
+Node.js: fs-extra
+=================
+
+`fs-extra` adds file system methods that aren't included in the native `fs` module and adds promise support to the `fs` methods. It also uses [`graceful-fs`](https://github.com/isaacs/node-graceful-fs) to prevent `EMFILE` errors. It should be a drop in replacement for `fs`.
+
+[![npm Package](https://img.shields.io/npm/v/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
+[![License](https://img.shields.io/npm/l/express.svg)](https://github.com/jprichardson/node-fs-extra/blob/master/LICENSE)
+[![build status](https://img.shields.io/travis/jprichardson/node-fs-extra/master.svg)](http://travis-ci.org/jprichardson/node-fs-extra)
+[![windows Build status](https://img.shields.io/appveyor/ci/jprichardson/node-fs-extra/master.svg?label=windows%20build)](https://ci.appveyor.com/project/jprichardson/node-fs-extra/branch/master)
+[![downloads per month](http://img.shields.io/npm/dm/fs-extra.svg)](https://www.npmjs.org/package/fs-extra)
+[![Coverage Status](https://img.shields.io/coveralls/github/jprichardson/node-fs-extra/master.svg)](https://coveralls.io/github/jprichardson/node-fs-extra)
+[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
+
+Why?
+----
+
+I got tired of including `mkdirp`, `rimraf`, and `ncp` in most of my projects.
+
+
+
+
+Installation
+------------
+
+ npm install fs-extra
+
+
+
+Usage
+-----
+
+`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are attached to `fs-extra`. All `fs` methods return promises if the callback isn't passed.
+
+You don't ever need to include the original `fs` module again:
+
+```js
+const fs = require('fs') // this is no longer necessary
+```
+
+you can now do this:
+
+```js
+const fs = require('fs-extra')
+```
+
+or if you prefer to make it clear that you're using `fs-extra` and not `fs`, you may want
+to name your `fs` variable `fse` like so:
+
+```js
+const fse = require('fs-extra')
+```
+
+you can also keep both, but it's redundant:
+
+```js
+const fs = require('fs')
+const fse = require('fs-extra')
+```
+
+Sync vs Async vs Async/Await
+-------------
+Most methods are async by default. All async methods will return a promise if the callback isn't passed.
+
+Sync methods on the other hand will throw if an error occurs.
+
+Also Async/Await will throw an error if one occurs.
+
+Example:
+
+```js
+const fs = require('fs-extra')
+
+// Async with promises:
+fs.copy('/tmp/myfile', '/tmp/mynewfile')
+ .then(() => console.log('success!'))
+ .catch(err => console.error(err))
+
+// Async with callbacks:
+fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
+ if (err) return console.error(err)
+ console.log('success!')
+})
+
+// Sync:
+try {
+ fs.copySync('/tmp/myfile', '/tmp/mynewfile')
+ console.log('success!')
+} catch (err) {
+ console.error(err)
+}
+
+// Async/Await:
+async function copyFiles () {
+ try {
+ await fs.copy('/tmp/myfile', '/tmp/mynewfile')
+ console.log('success!')
+ } catch (err) {
+ console.error(err)
+ }
+}
+
+copyFiles()
+```
+
+
+Methods
+-------
+
+### Async
+
+- [copy](docs/copy.md)
+- [emptyDir](docs/emptyDir.md)
+- [ensureFile](docs/ensureFile.md)
+- [ensureDir](docs/ensureDir.md)
+- [ensureLink](docs/ensureLink.md)
+- [ensureSymlink](docs/ensureSymlink.md)
+- [mkdirp](docs/ensureDir.md)
+- [mkdirs](docs/ensureDir.md)
+- [move](docs/move.md)
+- [outputFile](docs/outputFile.md)
+- [outputJson](docs/outputJson.md)
+- [pathExists](docs/pathExists.md)
+- [readJson](docs/readJson.md)
+- [remove](docs/remove.md)
+- [writeJson](docs/writeJson.md)
+
+### Sync
+
+- [copySync](docs/copy-sync.md)
+- [emptyDirSync](docs/emptyDir-sync.md)
+- [ensureFileSync](docs/ensureFile-sync.md)
+- [ensureDirSync](docs/ensureDir-sync.md)
+- [ensureLinkSync](docs/ensureLink-sync.md)
+- [ensureSymlinkSync](docs/ensureSymlink-sync.md)
+- [mkdirpSync](docs/ensureDir-sync.md)
+- [mkdirsSync](docs/ensureDir-sync.md)
+- [moveSync](docs/move-sync.md)
+- [outputFileSync](docs/outputFile-sync.md)
+- [outputJsonSync](docs/outputJson-sync.md)
+- [pathExistsSync](docs/pathExists-sync.md)
+- [readJsonSync](docs/readJson-sync.md)
+- [removeSync](docs/remove-sync.md)
+- [writeJsonSync](docs/writeJson-sync.md)
+
+
+**NOTE:** You can still use the native Node.js methods. They are promisified and copied over to `fs-extra`. See [notes on `fs.read()` & `fs.write()`](docs/fs-read-write.md)
+
+### What happened to `walk()` and `walkSync()`?
+
+They were removed from `fs-extra` in v2.0.0. If you need the functionality, `walk` and `walkSync` are available as separate packages, [`klaw`](https://github.com/jprichardson/node-klaw) and [`klaw-sync`](https://github.com/manidlou/node-klaw-sync).
+
+
+Third Party
+-----------
+
+
+### TypeScript
+
+If you like TypeScript, you can use `fs-extra` with it: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fs-extra
+
+
+### File / Directory Watching
+
+If you want to watch for changes to files or directories, then you should use [chokidar](https://github.com/paulmillr/chokidar).
+
+### Obtain Filesystem (Devices, Partitions) Information
+
+[fs-filesystem](https://github.com/arthurintelligence/node-fs-filesystem) allows you to read the state of the filesystem of the host on which it is run. It returns information about both the devices and the partitions (volumes) of the system.
+
+### Misc.
+
+- [fs-extra-debug](https://github.com/jdxcode/fs-extra-debug) - Send your fs-extra calls to [debug](https://npmjs.org/package/debug).
+- [mfs](https://github.com/cadorn/mfs) - Monitor your fs-extra calls.
+
+
+
+Hacking on fs-extra
+-------------------
+
+Wanna hack on `fs-extra`? Great! Your help is needed! [fs-extra is one of the most depended upon Node.js packages](http://nodei.co/npm/fs-extra.png?downloads=true&downloadRank=true&stars=true). This project
+uses [JavaScript Standard Style](https://github.com/feross/standard) - if the name or style choices bother you,
+you're gonna have to get over it :) If `standard` is good enough for `npm`, it's good enough for `fs-extra`.
+
+[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
+
+What's needed?
+- First, take a look at existing issues. Those are probably going to be where the priority lies.
+- More tests for edge cases. Specifically on different platforms. There can never be enough tests.
+- Improve test coverage. See coveralls output for more info.
+
+Note: If you make any big changes, **you should definitely file an issue for discussion first.**
+
+### Running the Test Suite
+
+fs-extra contains hundreds of tests.
+
+- `npm run lint`: runs the linter ([standard](http://standardjs.com/))
+- `npm run unit`: runs the unit tests
+- `npm test`: runs both the linter and the tests
+
+
+### Windows
+
+If you run the tests on the Windows and receive a lot of symbolic link `EPERM` permission errors, it's
+because on Windows you need elevated privilege to create symbolic links. You can add this to your Windows's
+account by following the instructions here: http://superuser.com/questions/104845/permission-to-make-symbolic-links-in-windows-7
+However, I didn't have much luck doing this.
+
+Since I develop on Mac OS X, I use VMWare Fusion for Windows testing. I create a shared folder that I map to a drive on Windows.
+I open the `Node.js command prompt` and run as `Administrator`. I then map the network drive running the following command:
+
+ net use z: "\\vmware-host\Shared Folders"
+
+I can then navigate to my `fs-extra` directory and run the tests.
+
+
+Naming
+------
+
+I put a lot of thought into the naming of these functions. Inspired by @coolaj86's request. So he deserves much of the credit for raising the issue. See discussion(s) here:
+
+* https://github.com/jprichardson/node-fs-extra/issues/2
+* https://github.com/flatiron/utile/issues/11
+* https://github.com/ryanmcgrath/wrench-js/issues/29
+* https://github.com/substack/node-mkdirp/issues/17
+
+First, I believe that in as many cases as possible, the [Node.js naming schemes](http://nodejs.org/api/fs.html) should be chosen. However, there are problems with the Node.js own naming schemes.
+
+For example, `fs.readFile()` and `fs.readdir()`: the **F** is capitalized in *File* and the **d** is not capitalized in *dir*. Perhaps a bit pedantic, but they should still be consistent. Also, Node.js has chosen a lot of POSIX naming schemes, which I believe is great. See: `fs.mkdir()`, `fs.rmdir()`, `fs.chown()`, etc.
+
+We have a dilemma though. How do you consistently name methods that perform the following POSIX commands: `cp`, `cp -r`, `mkdir -p`, and `rm -rf`?
+
+My perspective: when in doubt, err on the side of simplicity. A directory is just a hierarchical grouping of directories and files. Consider that for a moment. So when you want to copy it or remove it, in most cases you'll want to copy or remove all of its contents. When you want to create a directory, if the directory that it's suppose to be contained in does not exist, then in most cases you'll want to create that too.
+
+So, if you want to remove a file or a directory regardless of whether it has contents, just call `fs.remove(path)`. If you want to copy a file or a directory whether it has contents, just call `fs.copy(source, destination)`. If you want to create a directory regardless of whether its parent directories exist, just call `fs.mkdirs(path)` or `fs.mkdirp(path)`.
+
+
+Credit
+------
+
+`fs-extra` wouldn't be possible without using the modules from the following authors:
+
+- [Isaac Shlueter](https://github.com/isaacs)
+- [Charlie McConnel](https://github.com/avianflu)
+- [James Halliday](https://github.com/substack)
+- [Andrew Kelley](https://github.com/andrewrk)
+
+
+
+
+License
+-------
+
+Licensed under MIT
+
+Copyright (c) 2011-2017 [JP Richardson](https://github.com/jprichardson)
+
+[1]: http://nodejs.org/docs/latest/api/fs.html
+
+
+[jsonfile]: https://github.com/jprichardson/node-jsonfile
diff --git a/client/node_modules/fs-extra/lib/copy-sync/copy-sync.js b/client/node_modules/fs-extra/lib/copy-sync/copy-sync.js
new file mode 100644
index 0000000..f2831b3
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/copy-sync/copy-sync.js
@@ -0,0 +1,164 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const mkdirpSync = require('../mkdirs').mkdirsSync
+const utimesSync = require('../util/utimes.js').utimesMillisSync
+const stat = require('../util/stat')
+
+function copySync (src, dest, opts) {
+ if (typeof opts === 'function') {
+ opts = { filter: opts }
+ }
+
+ opts = opts || {}
+ opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now
+ opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber
+
+ // Warn about using preserveTimestamps on 32-bit node
+ if (opts.preserveTimestamps && process.arch === 'ia32') {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
+ see https://github.com/jprichardson/node-fs-extra/issues/269`)
+ }
+
+ const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy')
+ stat.checkParentPathsSync(src, srcStat, dest, 'copy')
+ return handleFilterAndCopy(destStat, src, dest, opts)
+}
+
+function handleFilterAndCopy (destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest)) return
+ const destParent = path.dirname(dest)
+ if (!fs.existsSync(destParent)) mkdirpSync(destParent)
+ return startCopy(destStat, src, dest, opts)
+}
+
+function startCopy (destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest)) return
+ return getStats(destStat, src, dest, opts)
+}
+
+function getStats (destStat, src, dest, opts) {
+ const statSync = opts.dereference ? fs.statSync : fs.lstatSync
+ const srcStat = statSync(src)
+
+ if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)
+ else if (srcStat.isFile() ||
+ srcStat.isCharacterDevice() ||
+ srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)
+ else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)
+}
+
+function onFile (srcStat, destStat, src, dest, opts) {
+ if (!destStat) return copyFile(srcStat, src, dest, opts)
+ return mayCopyFile(srcStat, src, dest, opts)
+}
+
+function mayCopyFile (srcStat, src, dest, opts) {
+ if (opts.overwrite) {
+ fs.unlinkSync(dest)
+ return copyFile(srcStat, src, dest, opts)
+ } else if (opts.errorOnExist) {
+ throw new Error(`'${dest}' already exists`)
+ }
+}
+
+function copyFile (srcStat, src, dest, opts) {
+ if (typeof fs.copyFileSync === 'function') {
+ fs.copyFileSync(src, dest)
+ fs.chmodSync(dest, srcStat.mode)
+ if (opts.preserveTimestamps) {
+ return utimesSync(dest, srcStat.atime, srcStat.mtime)
+ }
+ return
+ }
+ return copyFileFallback(srcStat, src, dest, opts)
+}
+
+function copyFileFallback (srcStat, src, dest, opts) {
+ const BUF_LENGTH = 64 * 1024
+ const _buff = require('../util/buffer')(BUF_LENGTH)
+
+ const fdr = fs.openSync(src, 'r')
+ const fdw = fs.openSync(dest, 'w', srcStat.mode)
+ let pos = 0
+
+ while (pos < srcStat.size) {
+ const bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos)
+ fs.writeSync(fdw, _buff, 0, bytesRead)
+ pos += bytesRead
+ }
+
+ if (opts.preserveTimestamps) fs.futimesSync(fdw, srcStat.atime, srcStat.mtime)
+
+ fs.closeSync(fdr)
+ fs.closeSync(fdw)
+}
+
+function onDir (srcStat, destStat, src, dest, opts) {
+ if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts)
+ if (destStat && !destStat.isDirectory()) {
+ throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)
+ }
+ return copyDir(src, dest, opts)
+}
+
+function mkDirAndCopy (srcStat, src, dest, opts) {
+ fs.mkdirSync(dest)
+ copyDir(src, dest, opts)
+ return fs.chmodSync(dest, srcStat.mode)
+}
+
+function copyDir (src, dest, opts) {
+ fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))
+}
+
+function copyDirItem (item, src, dest, opts) {
+ const srcItem = path.join(src, item)
+ const destItem = path.join(dest, item)
+ const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy')
+ return startCopy(destStat, srcItem, destItem, opts)
+}
+
+function onLink (destStat, src, dest, opts) {
+ let resolvedSrc = fs.readlinkSync(src)
+ if (opts.dereference) {
+ resolvedSrc = path.resolve(process.cwd(), resolvedSrc)
+ }
+
+ if (!destStat) {
+ return fs.symlinkSync(resolvedSrc, dest)
+ } else {
+ let resolvedDest
+ try {
+ resolvedDest = fs.readlinkSync(dest)
+ } catch (err) {
+ // dest exists and is a regular file or directory,
+ // Windows may throw UNKNOWN error. If dest already exists,
+ // fs throws error anyway, so no need to guard against it here.
+ if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)
+ throw err
+ }
+ if (opts.dereference) {
+ resolvedDest = path.resolve(process.cwd(), resolvedDest)
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)
+ }
+
+ // prevent copy if src is a subdir of dest since unlinking
+ // dest in this case would result in removing src contents
+ // and therefore a broken symlink would be created.
+ if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)
+ }
+ return copyLink(resolvedSrc, dest)
+ }
+}
+
+function copyLink (resolvedSrc, dest) {
+ fs.unlinkSync(dest)
+ return fs.symlinkSync(resolvedSrc, dest)
+}
+
+module.exports = copySync
diff --git a/client/node_modules/fs-extra/lib/copy-sync/index.js b/client/node_modules/fs-extra/lib/copy-sync/index.js
new file mode 100644
index 0000000..65945ae
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/copy-sync/index.js
@@ -0,0 +1,5 @@
+'use strict'
+
+module.exports = {
+ copySync: require('./copy-sync')
+}
diff --git a/client/node_modules/fs-extra/lib/copy/copy.js b/client/node_modules/fs-extra/lib/copy/copy.js
new file mode 100644
index 0000000..411fc64
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/copy/copy.js
@@ -0,0 +1,212 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const mkdirp = require('../mkdirs').mkdirs
+const pathExists = require('../path-exists').pathExists
+const utimes = require('../util/utimes').utimesMillis
+const stat = require('../util/stat')
+
+function copy (src, dest, opts, cb) {
+ if (typeof opts === 'function' && !cb) {
+ cb = opts
+ opts = {}
+ } else if (typeof opts === 'function') {
+ opts = { filter: opts }
+ }
+
+ cb = cb || function () {}
+ opts = opts || {}
+
+ opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now
+ opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber
+
+ // Warn about using preserveTimestamps on 32-bit node
+ if (opts.preserveTimestamps && process.arch === 'ia32') {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
+ see https://github.com/jprichardson/node-fs-extra/issues/269`)
+ }
+
+ stat.checkPaths(src, dest, 'copy', (err, stats) => {
+ if (err) return cb(err)
+ const { srcStat, destStat } = stats
+ stat.checkParentPaths(src, srcStat, dest, 'copy', err => {
+ if (err) return cb(err)
+ if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb)
+ return checkParentDir(destStat, src, dest, opts, cb)
+ })
+ })
+}
+
+function checkParentDir (destStat, src, dest, opts, cb) {
+ const destParent = path.dirname(dest)
+ pathExists(destParent, (err, dirExists) => {
+ if (err) return cb(err)
+ if (dirExists) return startCopy(destStat, src, dest, opts, cb)
+ mkdirp(destParent, err => {
+ if (err) return cb(err)
+ return startCopy(destStat, src, dest, opts, cb)
+ })
+ })
+}
+
+function handleFilter (onInclude, destStat, src, dest, opts, cb) {
+ Promise.resolve(opts.filter(src, dest)).then(include => {
+ if (include) return onInclude(destStat, src, dest, opts, cb)
+ return cb()
+ }, error => cb(error))
+}
+
+function startCopy (destStat, src, dest, opts, cb) {
+ if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb)
+ return getStats(destStat, src, dest, opts, cb)
+}
+
+function getStats (destStat, src, dest, opts, cb) {
+ const stat = opts.dereference ? fs.stat : fs.lstat
+ stat(src, (err, srcStat) => {
+ if (err) return cb(err)
+
+ if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb)
+ else if (srcStat.isFile() ||
+ srcStat.isCharacterDevice() ||
+ srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb)
+ else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb)
+ })
+}
+
+function onFile (srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat) return copyFile(srcStat, src, dest, opts, cb)
+ return mayCopyFile(srcStat, src, dest, opts, cb)
+}
+
+function mayCopyFile (srcStat, src, dest, opts, cb) {
+ if (opts.overwrite) {
+ fs.unlink(dest, err => {
+ if (err) return cb(err)
+ return copyFile(srcStat, src, dest, opts, cb)
+ })
+ } else if (opts.errorOnExist) {
+ return cb(new Error(`'${dest}' already exists`))
+ } else return cb()
+}
+
+function copyFile (srcStat, src, dest, opts, cb) {
+ if (typeof fs.copyFile === 'function') {
+ return fs.copyFile(src, dest, err => {
+ if (err) return cb(err)
+ return setDestModeAndTimestamps(srcStat, dest, opts, cb)
+ })
+ }
+ return copyFileFallback(srcStat, src, dest, opts, cb)
+}
+
+function copyFileFallback (srcStat, src, dest, opts, cb) {
+ const rs = fs.createReadStream(src)
+ rs.on('error', err => cb(err)).once('open', () => {
+ const ws = fs.createWriteStream(dest, { mode: srcStat.mode })
+ ws.on('error', err => cb(err))
+ .on('open', () => rs.pipe(ws))
+ .once('close', () => setDestModeAndTimestamps(srcStat, dest, opts, cb))
+ })
+}
+
+function setDestModeAndTimestamps (srcStat, dest, opts, cb) {
+ fs.chmod(dest, srcStat.mode, err => {
+ if (err) return cb(err)
+ if (opts.preserveTimestamps) {
+ return utimes(dest, srcStat.atime, srcStat.mtime, cb)
+ }
+ return cb()
+ })
+}
+
+function onDir (srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat) return mkDirAndCopy(srcStat, src, dest, opts, cb)
+ if (destStat && !destStat.isDirectory()) {
+ return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`))
+ }
+ return copyDir(src, dest, opts, cb)
+}
+
+function mkDirAndCopy (srcStat, src, dest, opts, cb) {
+ fs.mkdir(dest, err => {
+ if (err) return cb(err)
+ copyDir(src, dest, opts, err => {
+ if (err) return cb(err)
+ return fs.chmod(dest, srcStat.mode, cb)
+ })
+ })
+}
+
+function copyDir (src, dest, opts, cb) {
+ fs.readdir(src, (err, items) => {
+ if (err) return cb(err)
+ return copyDirItems(items, src, dest, opts, cb)
+ })
+}
+
+function copyDirItems (items, src, dest, opts, cb) {
+ const item = items.pop()
+ if (!item) return cb()
+ return copyDirItem(items, item, src, dest, opts, cb)
+}
+
+function copyDirItem (items, item, src, dest, opts, cb) {
+ const srcItem = path.join(src, item)
+ const destItem = path.join(dest, item)
+ stat.checkPaths(srcItem, destItem, 'copy', (err, stats) => {
+ if (err) return cb(err)
+ const { destStat } = stats
+ startCopy(destStat, srcItem, destItem, opts, err => {
+ if (err) return cb(err)
+ return copyDirItems(items, src, dest, opts, cb)
+ })
+ })
+}
+
+function onLink (destStat, src, dest, opts, cb) {
+ fs.readlink(src, (err, resolvedSrc) => {
+ if (err) return cb(err)
+ if (opts.dereference) {
+ resolvedSrc = path.resolve(process.cwd(), resolvedSrc)
+ }
+
+ if (!destStat) {
+ return fs.symlink(resolvedSrc, dest, cb)
+ } else {
+ fs.readlink(dest, (err, resolvedDest) => {
+ if (err) {
+ // dest exists and is a regular file or directory,
+ // Windows may throw UNKNOWN error. If dest already exists,
+ // fs throws error anyway, so no need to guard against it here.
+ if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb)
+ return cb(err)
+ }
+ if (opts.dereference) {
+ resolvedDest = path.resolve(process.cwd(), resolvedDest)
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`))
+ }
+
+ // do not copy if src is a subdir of dest since unlinking
+ // dest in this case would result in removing src contents
+ // and therefore a broken symlink would be created.
+ if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))
+ }
+ return copyLink(resolvedSrc, dest, cb)
+ })
+ }
+ })
+}
+
+function copyLink (resolvedSrc, dest, cb) {
+ fs.unlink(dest, err => {
+ if (err) return cb(err)
+ return fs.symlink(resolvedSrc, dest, cb)
+ })
+}
+
+module.exports = copy
diff --git a/client/node_modules/fs-extra/lib/copy/index.js b/client/node_modules/fs-extra/lib/copy/index.js
new file mode 100644
index 0000000..b7e4f7f
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/copy/index.js
@@ -0,0 +1,6 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+module.exports = {
+ copy: u(require('./copy'))
+}
diff --git a/client/node_modules/fs-extra/lib/empty/index.js b/client/node_modules/fs-extra/lib/empty/index.js
new file mode 100644
index 0000000..204d53b
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/empty/index.js
@@ -0,0 +1,48 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const fs = require('graceful-fs')
+const path = require('path')
+const mkdir = require('../mkdirs')
+const remove = require('../remove')
+
+const emptyDir = u(function emptyDir (dir, callback) {
+ callback = callback || function () {}
+ fs.readdir(dir, (err, items) => {
+ if (err) return mkdir.mkdirs(dir, callback)
+
+ items = items.map(item => path.join(dir, item))
+
+ deleteItem()
+
+ function deleteItem () {
+ const item = items.pop()
+ if (!item) return callback()
+ remove.remove(item, err => {
+ if (err) return callback(err)
+ deleteItem()
+ })
+ }
+ })
+})
+
+function emptyDirSync (dir) {
+ let items
+ try {
+ items = fs.readdirSync(dir)
+ } catch (err) {
+ return mkdir.mkdirsSync(dir)
+ }
+
+ items.forEach(item => {
+ item = path.join(dir, item)
+ remove.removeSync(item)
+ })
+}
+
+module.exports = {
+ emptyDirSync,
+ emptydirSync: emptyDirSync,
+ emptyDir,
+ emptydir: emptyDir
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/file.js b/client/node_modules/fs-extra/lib/ensure/file.js
new file mode 100644
index 0000000..67eed30
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/file.js
@@ -0,0 +1,49 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const path = require('path')
+const fs = require('graceful-fs')
+const mkdir = require('../mkdirs')
+const pathExists = require('../path-exists').pathExists
+
+function createFile (file, callback) {
+ function makeFile () {
+ fs.writeFile(file, '', err => {
+ if (err) return callback(err)
+ callback()
+ })
+ }
+
+ fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err
+ if (!err && stats.isFile()) return callback()
+ const dir = path.dirname(file)
+ pathExists(dir, (err, dirExists) => {
+ if (err) return callback(err)
+ if (dirExists) return makeFile()
+ mkdir.mkdirs(dir, err => {
+ if (err) return callback(err)
+ makeFile()
+ })
+ })
+ })
+}
+
+function createFileSync (file) {
+ let stats
+ try {
+ stats = fs.statSync(file)
+ } catch (e) {}
+ if (stats && stats.isFile()) return
+
+ const dir = path.dirname(file)
+ if (!fs.existsSync(dir)) {
+ mkdir.mkdirsSync(dir)
+ }
+
+ fs.writeFileSync(file, '')
+}
+
+module.exports = {
+ createFile: u(createFile),
+ createFileSync
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/index.js b/client/node_modules/fs-extra/lib/ensure/index.js
new file mode 100644
index 0000000..c1f67b7
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/index.js
@@ -0,0 +1,23 @@
+'use strict'
+
+const file = require('./file')
+const link = require('./link')
+const symlink = require('./symlink')
+
+module.exports = {
+ // file
+ createFile: file.createFile,
+ createFileSync: file.createFileSync,
+ ensureFile: file.createFile,
+ ensureFileSync: file.createFileSync,
+ // link
+ createLink: link.createLink,
+ createLinkSync: link.createLinkSync,
+ ensureLink: link.createLink,
+ ensureLinkSync: link.createLinkSync,
+ // symlink
+ createSymlink: symlink.createSymlink,
+ createSymlinkSync: symlink.createSymlinkSync,
+ ensureSymlink: symlink.createSymlink,
+ ensureSymlinkSync: symlink.createSymlinkSync
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/link.js b/client/node_modules/fs-extra/lib/ensure/link.js
new file mode 100644
index 0000000..2cd4196
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/link.js
@@ -0,0 +1,61 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const path = require('path')
+const fs = require('graceful-fs')
+const mkdir = require('../mkdirs')
+const pathExists = require('../path-exists').pathExists
+
+function createLink (srcpath, dstpath, callback) {
+ function makeLink (srcpath, dstpath) {
+ fs.link(srcpath, dstpath, err => {
+ if (err) return callback(err)
+ callback(null)
+ })
+ }
+
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err) return callback(err)
+ if (destinationExists) return callback(null)
+ fs.lstat(srcpath, (err) => {
+ if (err) {
+ err.message = err.message.replace('lstat', 'ensureLink')
+ return callback(err)
+ }
+
+ const dir = path.dirname(dstpath)
+ pathExists(dir, (err, dirExists) => {
+ if (err) return callback(err)
+ if (dirExists) return makeLink(srcpath, dstpath)
+ mkdir.mkdirs(dir, err => {
+ if (err) return callback(err)
+ makeLink(srcpath, dstpath)
+ })
+ })
+ })
+ })
+}
+
+function createLinkSync (srcpath, dstpath) {
+ const destinationExists = fs.existsSync(dstpath)
+ if (destinationExists) return undefined
+
+ try {
+ fs.lstatSync(srcpath)
+ } catch (err) {
+ err.message = err.message.replace('lstat', 'ensureLink')
+ throw err
+ }
+
+ const dir = path.dirname(dstpath)
+ const dirExists = fs.existsSync(dir)
+ if (dirExists) return fs.linkSync(srcpath, dstpath)
+ mkdir.mkdirsSync(dir)
+
+ return fs.linkSync(srcpath, dstpath)
+}
+
+module.exports = {
+ createLink: u(createLink),
+ createLinkSync
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/symlink-paths.js b/client/node_modules/fs-extra/lib/ensure/symlink-paths.js
new file mode 100644
index 0000000..24e7e1c
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/symlink-paths.js
@@ -0,0 +1,99 @@
+'use strict'
+
+const path = require('path')
+const fs = require('graceful-fs')
+const pathExists = require('../path-exists').pathExists
+
+/**
+ * Function that returns two types of paths, one relative to symlink, and one
+ * relative to the current working directory. Checks if path is absolute or
+ * relative. If the path is relative, this function checks if the path is
+ * relative to symlink or relative to current working directory. This is an
+ * initiative to find a smarter `srcpath` to supply when building symlinks.
+ * This allows you to determine which path to use out of one of three possible
+ * types of source paths. The first is an absolute path. This is detected by
+ * `path.isAbsolute()`. When an absolute path is provided, it is checked to
+ * see if it exists. If it does it's used, if not an error is returned
+ * (callback)/ thrown (sync). The other two options for `srcpath` are a
+ * relative url. By default Node's `fs.symlink` works by creating a symlink
+ * using `dstpath` and expects the `srcpath` to be relative to the newly
+ * created symlink. If you provide a `srcpath` that does not exist on the file
+ * system it results in a broken symlink. To minimize this, the function
+ * checks to see if the 'relative to symlink' source file exists, and if it
+ * does it will use it. If it does not, it checks if there's a file that
+ * exists that is relative to the current working directory, if does its used.
+ * This preserves the expectations of the original fs.symlink spec and adds
+ * the ability to pass in `relative to current working direcotry` paths.
+ */
+
+function symlinkPaths (srcpath, dstpath, callback) {
+ if (path.isAbsolute(srcpath)) {
+ return fs.lstat(srcpath, (err) => {
+ if (err) {
+ err.message = err.message.replace('lstat', 'ensureSymlink')
+ return callback(err)
+ }
+ return callback(null, {
+ 'toCwd': srcpath,
+ 'toDst': srcpath
+ })
+ })
+ } else {
+ const dstdir = path.dirname(dstpath)
+ const relativeToDst = path.join(dstdir, srcpath)
+ return pathExists(relativeToDst, (err, exists) => {
+ if (err) return callback(err)
+ if (exists) {
+ return callback(null, {
+ 'toCwd': relativeToDst,
+ 'toDst': srcpath
+ })
+ } else {
+ return fs.lstat(srcpath, (err) => {
+ if (err) {
+ err.message = err.message.replace('lstat', 'ensureSymlink')
+ return callback(err)
+ }
+ return callback(null, {
+ 'toCwd': srcpath,
+ 'toDst': path.relative(dstdir, srcpath)
+ })
+ })
+ }
+ })
+ }
+}
+
+function symlinkPathsSync (srcpath, dstpath) {
+ let exists
+ if (path.isAbsolute(srcpath)) {
+ exists = fs.existsSync(srcpath)
+ if (!exists) throw new Error('absolute srcpath does not exist')
+ return {
+ 'toCwd': srcpath,
+ 'toDst': srcpath
+ }
+ } else {
+ const dstdir = path.dirname(dstpath)
+ const relativeToDst = path.join(dstdir, srcpath)
+ exists = fs.existsSync(relativeToDst)
+ if (exists) {
+ return {
+ 'toCwd': relativeToDst,
+ 'toDst': srcpath
+ }
+ } else {
+ exists = fs.existsSync(srcpath)
+ if (!exists) throw new Error('relative srcpath does not exist')
+ return {
+ 'toCwd': srcpath,
+ 'toDst': path.relative(dstdir, srcpath)
+ }
+ }
+ }
+}
+
+module.exports = {
+ symlinkPaths,
+ symlinkPathsSync
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/symlink-type.js b/client/node_modules/fs-extra/lib/ensure/symlink-type.js
new file mode 100644
index 0000000..4f8787c
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/symlink-type.js
@@ -0,0 +1,31 @@
+'use strict'
+
+const fs = require('graceful-fs')
+
+function symlinkType (srcpath, type, callback) {
+ callback = (typeof type === 'function') ? type : callback
+ type = (typeof type === 'function') ? false : type
+ if (type) return callback(null, type)
+ fs.lstat(srcpath, (err, stats) => {
+ if (err) return callback(null, 'file')
+ type = (stats && stats.isDirectory()) ? 'dir' : 'file'
+ callback(null, type)
+ })
+}
+
+function symlinkTypeSync (srcpath, type) {
+ let stats
+
+ if (type) return type
+ try {
+ stats = fs.lstatSync(srcpath)
+ } catch (e) {
+ return 'file'
+ }
+ return (stats && stats.isDirectory()) ? 'dir' : 'file'
+}
+
+module.exports = {
+ symlinkType,
+ symlinkTypeSync
+}
diff --git a/client/node_modules/fs-extra/lib/ensure/symlink.js b/client/node_modules/fs-extra/lib/ensure/symlink.js
new file mode 100644
index 0000000..fe68b79
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/ensure/symlink.js
@@ -0,0 +1,63 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const path = require('path')
+const fs = require('graceful-fs')
+const _mkdirs = require('../mkdirs')
+const mkdirs = _mkdirs.mkdirs
+const mkdirsSync = _mkdirs.mkdirsSync
+
+const _symlinkPaths = require('./symlink-paths')
+const symlinkPaths = _symlinkPaths.symlinkPaths
+const symlinkPathsSync = _symlinkPaths.symlinkPathsSync
+
+const _symlinkType = require('./symlink-type')
+const symlinkType = _symlinkType.symlinkType
+const symlinkTypeSync = _symlinkType.symlinkTypeSync
+
+const pathExists = require('../path-exists').pathExists
+
+function createSymlink (srcpath, dstpath, type, callback) {
+ callback = (typeof type === 'function') ? type : callback
+ type = (typeof type === 'function') ? false : type
+
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err) return callback(err)
+ if (destinationExists) return callback(null)
+ symlinkPaths(srcpath, dstpath, (err, relative) => {
+ if (err) return callback(err)
+ srcpath = relative.toDst
+ symlinkType(relative.toCwd, type, (err, type) => {
+ if (err) return callback(err)
+ const dir = path.dirname(dstpath)
+ pathExists(dir, (err, dirExists) => {
+ if (err) return callback(err)
+ if (dirExists) return fs.symlink(srcpath, dstpath, type, callback)
+ mkdirs(dir, err => {
+ if (err) return callback(err)
+ fs.symlink(srcpath, dstpath, type, callback)
+ })
+ })
+ })
+ })
+ })
+}
+
+function createSymlinkSync (srcpath, dstpath, type) {
+ const destinationExists = fs.existsSync(dstpath)
+ if (destinationExists) return undefined
+
+ const relative = symlinkPathsSync(srcpath, dstpath)
+ srcpath = relative.toDst
+ type = symlinkTypeSync(relative.toCwd, type)
+ const dir = path.dirname(dstpath)
+ const exists = fs.existsSync(dir)
+ if (exists) return fs.symlinkSync(srcpath, dstpath, type)
+ mkdirsSync(dir)
+ return fs.symlinkSync(srcpath, dstpath, type)
+}
+
+module.exports = {
+ createSymlink: u(createSymlink),
+ createSymlinkSync
+}
diff --git a/client/node_modules/fs-extra/lib/fs/index.js b/client/node_modules/fs-extra/lib/fs/index.js
new file mode 100644
index 0000000..a7b2292
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/fs/index.js
@@ -0,0 +1,109 @@
+'use strict'
+// This is adapted from https://github.com/normalize/mz
+// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors
+const u = require('universalify').fromCallback
+const fs = require('graceful-fs')
+
+const api = [
+ 'access',
+ 'appendFile',
+ 'chmod',
+ 'chown',
+ 'close',
+ 'copyFile',
+ 'fchmod',
+ 'fchown',
+ 'fdatasync',
+ 'fstat',
+ 'fsync',
+ 'ftruncate',
+ 'futimes',
+ 'lchown',
+ 'lchmod',
+ 'link',
+ 'lstat',
+ 'mkdir',
+ 'mkdtemp',
+ 'open',
+ 'readFile',
+ 'readdir',
+ 'readlink',
+ 'realpath',
+ 'rename',
+ 'rmdir',
+ 'stat',
+ 'symlink',
+ 'truncate',
+ 'unlink',
+ 'utimes',
+ 'writeFile'
+].filter(key => {
+ // Some commands are not available on some systems. Ex:
+ // fs.copyFile was added in Node.js v8.5.0
+ // fs.mkdtemp was added in Node.js v5.10.0
+ // fs.lchown is not available on at least some Linux
+ return typeof fs[key] === 'function'
+})
+
+// Export all keys:
+Object.keys(fs).forEach(key => {
+ if (key === 'promises') {
+ // fs.promises is a getter property that triggers ExperimentalWarning
+ // Don't re-export it here, the getter is defined in "lib/index.js"
+ return
+ }
+ exports[key] = fs[key]
+})
+
+// Universalify async methods:
+api.forEach(method => {
+ exports[method] = u(fs[method])
+})
+
+// We differ from mz/fs in that we still ship the old, broken, fs.exists()
+// since we are a drop-in replacement for the native module
+exports.exists = function (filename, callback) {
+ if (typeof callback === 'function') {
+ return fs.exists(filename, callback)
+ }
+ return new Promise(resolve => {
+ return fs.exists(filename, resolve)
+ })
+}
+
+// fs.read() & fs.write need special treatment due to multiple callback args
+
+exports.read = function (fd, buffer, offset, length, position, callback) {
+ if (typeof callback === 'function') {
+ return fs.read(fd, buffer, offset, length, position, callback)
+ }
+ return new Promise((resolve, reject) => {
+ fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {
+ if (err) return reject(err)
+ resolve({ bytesRead, buffer })
+ })
+ })
+}
+
+// Function signature can be
+// fs.write(fd, buffer[, offset[, length[, position]]], callback)
+// OR
+// fs.write(fd, string[, position[, encoding]], callback)
+// We need to handle both cases, so we use ...args
+exports.write = function (fd, buffer, ...args) {
+ if (typeof args[args.length - 1] === 'function') {
+ return fs.write(fd, buffer, ...args)
+ }
+
+ return new Promise((resolve, reject) => {
+ fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {
+ if (err) return reject(err)
+ resolve({ bytesWritten, buffer })
+ })
+ })
+}
+
+// fs.realpath.native only available in Node v9.2+
+if (typeof fs.realpath.native === 'function') {
+ exports.realpath.native = u(fs.realpath.native)
+}
diff --git a/client/node_modules/fs-extra/lib/index.js b/client/node_modules/fs-extra/lib/index.js
new file mode 100644
index 0000000..40e37b1
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/index.js
@@ -0,0 +1,28 @@
+'use strict'
+
+module.exports = Object.assign(
+ {},
+ // Export promiseified graceful-fs:
+ require('./fs'),
+ // Export extra methods:
+ require('./copy-sync'),
+ require('./copy'),
+ require('./empty'),
+ require('./ensure'),
+ require('./json'),
+ require('./mkdirs'),
+ require('./move-sync'),
+ require('./move'),
+ require('./output'),
+ require('./path-exists'),
+ require('./remove')
+)
+
+// Export fs.promises as a getter property so that we don't trigger
+// ExperimentalWarning before fs.promises is actually accessed.
+const fs = require('fs')
+if (Object.getOwnPropertyDescriptor(fs, 'promises')) {
+ Object.defineProperty(module.exports, 'promises', {
+ get () { return fs.promises }
+ })
+}
diff --git a/client/node_modules/fs-extra/lib/json/index.js b/client/node_modules/fs-extra/lib/json/index.js
new file mode 100644
index 0000000..bae68d4
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/json/index.js
@@ -0,0 +1,16 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const jsonFile = require('./jsonfile')
+
+jsonFile.outputJson = u(require('./output-json'))
+jsonFile.outputJsonSync = require('./output-json-sync')
+// aliases
+jsonFile.outputJSON = jsonFile.outputJson
+jsonFile.outputJSONSync = jsonFile.outputJsonSync
+jsonFile.writeJSON = jsonFile.writeJson
+jsonFile.writeJSONSync = jsonFile.writeJsonSync
+jsonFile.readJSON = jsonFile.readJson
+jsonFile.readJSONSync = jsonFile.readJsonSync
+
+module.exports = jsonFile
diff --git a/client/node_modules/fs-extra/lib/json/jsonfile.js b/client/node_modules/fs-extra/lib/json/jsonfile.js
new file mode 100644
index 0000000..59cdb3e
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/json/jsonfile.js
@@ -0,0 +1,12 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const jsonFile = require('jsonfile')
+
+module.exports = {
+ // jsonfile exports
+ readJson: u(jsonFile.readFile),
+ readJsonSync: jsonFile.readFileSync,
+ writeJson: u(jsonFile.writeFile),
+ writeJsonSync: jsonFile.writeFileSync
+}
diff --git a/client/node_modules/fs-extra/lib/json/output-json-sync.js b/client/node_modules/fs-extra/lib/json/output-json-sync.js
new file mode 100644
index 0000000..6f76710
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/json/output-json-sync.js
@@ -0,0 +1,18 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const mkdir = require('../mkdirs')
+const jsonFile = require('./jsonfile')
+
+function outputJsonSync (file, data, options) {
+ const dir = path.dirname(file)
+
+ if (!fs.existsSync(dir)) {
+ mkdir.mkdirsSync(dir)
+ }
+
+ jsonFile.writeJsonSync(file, data, options)
+}
+
+module.exports = outputJsonSync
diff --git a/client/node_modules/fs-extra/lib/json/output-json.js b/client/node_modules/fs-extra/lib/json/output-json.js
new file mode 100644
index 0000000..d45edb8
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/json/output-json.js
@@ -0,0 +1,27 @@
+'use strict'
+
+const path = require('path')
+const mkdir = require('../mkdirs')
+const pathExists = require('../path-exists').pathExists
+const jsonFile = require('./jsonfile')
+
+function outputJson (file, data, options, callback) {
+ if (typeof options === 'function') {
+ callback = options
+ options = {}
+ }
+
+ const dir = path.dirname(file)
+
+ pathExists(dir, (err, itDoes) => {
+ if (err) return callback(err)
+ if (itDoes) return jsonFile.writeJson(file, data, options, callback)
+
+ mkdir.mkdirs(dir, err => {
+ if (err) return callback(err)
+ jsonFile.writeJson(file, data, options, callback)
+ })
+ })
+}
+
+module.exports = outputJson
diff --git a/client/node_modules/fs-extra/lib/mkdirs/index.js b/client/node_modules/fs-extra/lib/mkdirs/index.js
new file mode 100644
index 0000000..d6e7e5b
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/mkdirs/index.js
@@ -0,0 +1,14 @@
+'use strict'
+const u = require('universalify').fromCallback
+const mkdirs = u(require('./mkdirs'))
+const mkdirsSync = require('./mkdirs-sync')
+
+module.exports = {
+ mkdirs,
+ mkdirsSync,
+ // alias
+ mkdirp: mkdirs,
+ mkdirpSync: mkdirsSync,
+ ensureDir: mkdirs,
+ ensureDirSync: mkdirsSync
+}
diff --git a/client/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js b/client/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js
new file mode 100644
index 0000000..a34acb9
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js
@@ -0,0 +1,54 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const invalidWin32Path = require('./win32').invalidWin32Path
+
+const o777 = parseInt('0777', 8)
+
+function mkdirsSync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts }
+ }
+
+ let mode = opts.mode
+ const xfs = opts.fs || fs
+
+ if (process.platform === 'win32' && invalidWin32Path(p)) {
+ const errInval = new Error(p + ' contains invalid WIN32 path characters.')
+ errInval.code = 'EINVAL'
+ throw errInval
+ }
+
+ if (mode === undefined) {
+ mode = o777 & (~process.umask())
+ }
+ if (!made) made = null
+
+ p = path.resolve(p)
+
+ try {
+ xfs.mkdirSync(p, mode)
+ made = made || p
+ } catch (err0) {
+ if (err0.code === 'ENOENT') {
+ if (path.dirname(p) === p) throw err0
+ made = mkdirsSync(path.dirname(p), opts, made)
+ mkdirsSync(p, opts, made)
+ } else {
+ // In the case of any other error, just see if there's a dir there
+ // already. If so, then hooray! If not, then something is borked.
+ let stat
+ try {
+ stat = xfs.statSync(p)
+ } catch (err1) {
+ throw err0
+ }
+ if (!stat.isDirectory()) throw err0
+ }
+ }
+
+ return made
+}
+
+module.exports = mkdirsSync
diff --git a/client/node_modules/fs-extra/lib/mkdirs/mkdirs.js b/client/node_modules/fs-extra/lib/mkdirs/mkdirs.js
new file mode 100644
index 0000000..1897533
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/mkdirs/mkdirs.js
@@ -0,0 +1,63 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const invalidWin32Path = require('./win32').invalidWin32Path
+
+const o777 = parseInt('0777', 8)
+
+function mkdirs (p, opts, callback, made) {
+ if (typeof opts === 'function') {
+ callback = opts
+ opts = {}
+ } else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts }
+ }
+
+ if (process.platform === 'win32' && invalidWin32Path(p)) {
+ const errInval = new Error(p + ' contains invalid WIN32 path characters.')
+ errInval.code = 'EINVAL'
+ return callback(errInval)
+ }
+
+ let mode = opts.mode
+ const xfs = opts.fs || fs
+
+ if (mode === undefined) {
+ mode = o777 & (~process.umask())
+ }
+ if (!made) made = null
+
+ callback = callback || function () {}
+ p = path.resolve(p)
+
+ xfs.mkdir(p, mode, er => {
+ if (!er) {
+ made = made || p
+ return callback(null, made)
+ }
+ switch (er.code) {
+ case 'ENOENT':
+ if (path.dirname(p) === p) return callback(er)
+ mkdirs(path.dirname(p), opts, (er, made) => {
+ if (er) callback(er, made)
+ else mkdirs(p, opts, callback, made)
+ })
+ break
+
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ xfs.stat(p, (er2, stat) => {
+ // if the stat fails, then that's super weird.
+ // let the original error be the failure reason.
+ if (er2 || !stat.isDirectory()) callback(er, made)
+ else callback(null, made)
+ })
+ break
+ }
+ })
+}
+
+module.exports = mkdirs
diff --git a/client/node_modules/fs-extra/lib/mkdirs/win32.js b/client/node_modules/fs-extra/lib/mkdirs/win32.js
new file mode 100644
index 0000000..99b3920
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/mkdirs/win32.js
@@ -0,0 +1,25 @@
+'use strict'
+
+const path = require('path')
+
+// get drive on windows
+function getRootPath (p) {
+ p = path.normalize(path.resolve(p)).split(path.sep)
+ if (p.length > 0) return p[0]
+ return null
+}
+
+// http://stackoverflow.com/a/62888/10333 contains more accurate
+// TODO: expand to include the rest
+const INVALID_PATH_CHARS = /[<>:"|?*]/
+
+function invalidWin32Path (p) {
+ const rp = getRootPath(p)
+ p = p.replace(rp, '')
+ return INVALID_PATH_CHARS.test(p)
+}
+
+module.exports = {
+ getRootPath,
+ invalidWin32Path
+}
diff --git a/client/node_modules/fs-extra/lib/move-sync/index.js b/client/node_modules/fs-extra/lib/move-sync/index.js
new file mode 100644
index 0000000..af90b06
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/move-sync/index.js
@@ -0,0 +1,5 @@
+'use strict'
+
+module.exports = {
+ moveSync: require('./move-sync')
+}
diff --git a/client/node_modules/fs-extra/lib/move-sync/move-sync.js b/client/node_modules/fs-extra/lib/move-sync/move-sync.js
new file mode 100644
index 0000000..20f910c
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/move-sync/move-sync.js
@@ -0,0 +1,47 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const copySync = require('../copy-sync').copySync
+const removeSync = require('../remove').removeSync
+const mkdirpSync = require('../mkdirs').mkdirpSync
+const stat = require('../util/stat')
+
+function moveSync (src, dest, opts) {
+ opts = opts || {}
+ const overwrite = opts.overwrite || opts.clobber || false
+
+ const { srcStat } = stat.checkPathsSync(src, dest, 'move')
+ stat.checkParentPathsSync(src, srcStat, dest, 'move')
+ mkdirpSync(path.dirname(dest))
+ return doRename(src, dest, overwrite)
+}
+
+function doRename (src, dest, overwrite) {
+ if (overwrite) {
+ removeSync(dest)
+ return rename(src, dest, overwrite)
+ }
+ if (fs.existsSync(dest)) throw new Error('dest already exists.')
+ return rename(src, dest, overwrite)
+}
+
+function rename (src, dest, overwrite) {
+ try {
+ fs.renameSync(src, dest)
+ } catch (err) {
+ if (err.code !== 'EXDEV') throw err
+ return moveAcrossDevice(src, dest, overwrite)
+ }
+}
+
+function moveAcrossDevice (src, dest, overwrite) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ }
+ copySync(src, dest, opts)
+ return removeSync(src)
+}
+
+module.exports = moveSync
diff --git a/client/node_modules/fs-extra/lib/move/index.js b/client/node_modules/fs-extra/lib/move/index.js
new file mode 100644
index 0000000..3785345
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/move/index.js
@@ -0,0 +1,6 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+module.exports = {
+ move: u(require('./move'))
+}
diff --git a/client/node_modules/fs-extra/lib/move/move.js b/client/node_modules/fs-extra/lib/move/move.js
new file mode 100644
index 0000000..fa3ea61
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/move/move.js
@@ -0,0 +1,65 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const copy = require('../copy').copy
+const remove = require('../remove').remove
+const mkdirp = require('../mkdirs').mkdirp
+const pathExists = require('../path-exists').pathExists
+const stat = require('../util/stat')
+
+function move (src, dest, opts, cb) {
+ if (typeof opts === 'function') {
+ cb = opts
+ opts = {}
+ }
+
+ const overwrite = opts.overwrite || opts.clobber || false
+
+ stat.checkPaths(src, dest, 'move', (err, stats) => {
+ if (err) return cb(err)
+ const { srcStat } = stats
+ stat.checkParentPaths(src, srcStat, dest, 'move', err => {
+ if (err) return cb(err)
+ mkdirp(path.dirname(dest), err => {
+ if (err) return cb(err)
+ return doRename(src, dest, overwrite, cb)
+ })
+ })
+ })
+}
+
+function doRename (src, dest, overwrite, cb) {
+ if (overwrite) {
+ return remove(dest, err => {
+ if (err) return cb(err)
+ return rename(src, dest, overwrite, cb)
+ })
+ }
+ pathExists(dest, (err, destExists) => {
+ if (err) return cb(err)
+ if (destExists) return cb(new Error('dest already exists.'))
+ return rename(src, dest, overwrite, cb)
+ })
+}
+
+function rename (src, dest, overwrite, cb) {
+ fs.rename(src, dest, err => {
+ if (!err) return cb()
+ if (err.code !== 'EXDEV') return cb(err)
+ return moveAcrossDevice(src, dest, overwrite, cb)
+ })
+}
+
+function moveAcrossDevice (src, dest, overwrite, cb) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ }
+ copy(src, dest, opts, err => {
+ if (err) return cb(err)
+ return remove(src, cb)
+ })
+}
+
+module.exports = move
diff --git a/client/node_modules/fs-extra/lib/output/index.js b/client/node_modules/fs-extra/lib/output/index.js
new file mode 100644
index 0000000..92297ca
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/output/index.js
@@ -0,0 +1,40 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const fs = require('graceful-fs')
+const path = require('path')
+const mkdir = require('../mkdirs')
+const pathExists = require('../path-exists').pathExists
+
+function outputFile (file, data, encoding, callback) {
+ if (typeof encoding === 'function') {
+ callback = encoding
+ encoding = 'utf8'
+ }
+
+ const dir = path.dirname(file)
+ pathExists(dir, (err, itDoes) => {
+ if (err) return callback(err)
+ if (itDoes) return fs.writeFile(file, data, encoding, callback)
+
+ mkdir.mkdirs(dir, err => {
+ if (err) return callback(err)
+
+ fs.writeFile(file, data, encoding, callback)
+ })
+ })
+}
+
+function outputFileSync (file, ...args) {
+ const dir = path.dirname(file)
+ if (fs.existsSync(dir)) {
+ return fs.writeFileSync(file, ...args)
+ }
+ mkdir.mkdirsSync(dir)
+ fs.writeFileSync(file, ...args)
+}
+
+module.exports = {
+ outputFile: u(outputFile),
+ outputFileSync
+}
diff --git a/client/node_modules/fs-extra/lib/path-exists/index.js b/client/node_modules/fs-extra/lib/path-exists/index.js
new file mode 100644
index 0000000..ddd9bc7
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/path-exists/index.js
@@ -0,0 +1,12 @@
+'use strict'
+const u = require('universalify').fromPromise
+const fs = require('../fs')
+
+function pathExists (path) {
+ return fs.access(path).then(() => true).catch(() => false)
+}
+
+module.exports = {
+ pathExists: u(pathExists),
+ pathExistsSync: fs.existsSync
+}
diff --git a/client/node_modules/fs-extra/lib/remove/index.js b/client/node_modules/fs-extra/lib/remove/index.js
new file mode 100644
index 0000000..cee5340
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/remove/index.js
@@ -0,0 +1,9 @@
+'use strict'
+
+const u = require('universalify').fromCallback
+const rimraf = require('./rimraf')
+
+module.exports = {
+ remove: u(rimraf),
+ removeSync: rimraf.sync
+}
diff --git a/client/node_modules/fs-extra/lib/remove/rimraf.js b/client/node_modules/fs-extra/lib/remove/rimraf.js
new file mode 100644
index 0000000..f287e4e
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/remove/rimraf.js
@@ -0,0 +1,314 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+const assert = require('assert')
+
+const isWindows = (process.platform === 'win32')
+
+function defaults (options) {
+ const methods = [
+ 'unlink',
+ 'chmod',
+ 'stat',
+ 'lstat',
+ 'rmdir',
+ 'readdir'
+ ]
+ methods.forEach(m => {
+ options[m] = options[m] || fs[m]
+ m = m + 'Sync'
+ options[m] = options[m] || fs[m]
+ })
+
+ options.maxBusyTries = options.maxBusyTries || 3
+}
+
+function rimraf (p, options, cb) {
+ let busyTries = 0
+
+ if (typeof options === 'function') {
+ cb = options
+ options = {}
+ }
+
+ assert(p, 'rimraf: missing path')
+ assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')
+ assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required')
+ assert(options, 'rimraf: invalid options argument provided')
+ assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')
+
+ defaults(options)
+
+ rimraf_(p, options, function CB (er) {
+ if (er) {
+ if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') &&
+ busyTries < options.maxBusyTries) {
+ busyTries++
+ const time = busyTries * 100
+ // try again, with the same exact callback as this one.
+ return setTimeout(() => rimraf_(p, options, CB), time)
+ }
+
+ // already gone
+ if (er.code === 'ENOENT') er = null
+ }
+
+ cb(er)
+ })
+}
+
+// Two possible strategies.
+// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR
+// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR
+//
+// Both result in an extra syscall when you guess wrong. However, there
+// are likely far more normal files in the world than directories. This
+// is based on the assumption that a the average number of files per
+// directory is >= 1.
+//
+// If anyone ever complains about this, then I guess the strategy could
+// be made configurable somehow. But until then, YAGNI.
+function rimraf_ (p, options, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
+
+ // sunos lets the root user unlink directories, which is... weird.
+ // so we have to lstat here and make sure it's not a dir.
+ options.lstat(p, (er, st) => {
+ if (er && er.code === 'ENOENT') {
+ return cb(null)
+ }
+
+ // Windows can EPERM on stat. Life is suffering.
+ if (er && er.code === 'EPERM' && isWindows) {
+ return fixWinEPERM(p, options, er, cb)
+ }
+
+ if (st && st.isDirectory()) {
+ return rmdir(p, options, er, cb)
+ }
+
+ options.unlink(p, er => {
+ if (er) {
+ if (er.code === 'ENOENT') {
+ return cb(null)
+ }
+ if (er.code === 'EPERM') {
+ return (isWindows)
+ ? fixWinEPERM(p, options, er, cb)
+ : rmdir(p, options, er, cb)
+ }
+ if (er.code === 'EISDIR') {
+ return rmdir(p, options, er, cb)
+ }
+ }
+ return cb(er)
+ })
+ })
+}
+
+function fixWinEPERM (p, options, er, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
+ if (er) {
+ assert(er instanceof Error)
+ }
+
+ options.chmod(p, 0o666, er2 => {
+ if (er2) {
+ cb(er2.code === 'ENOENT' ? null : er)
+ } else {
+ options.stat(p, (er3, stats) => {
+ if (er3) {
+ cb(er3.code === 'ENOENT' ? null : er)
+ } else if (stats.isDirectory()) {
+ rmdir(p, options, er, cb)
+ } else {
+ options.unlink(p, cb)
+ }
+ })
+ }
+ })
+}
+
+function fixWinEPERMSync (p, options, er) {
+ let stats
+
+ assert(p)
+ assert(options)
+ if (er) {
+ assert(er instanceof Error)
+ }
+
+ try {
+ options.chmodSync(p, 0o666)
+ } catch (er2) {
+ if (er2.code === 'ENOENT') {
+ return
+ } else {
+ throw er
+ }
+ }
+
+ try {
+ stats = options.statSync(p)
+ } catch (er3) {
+ if (er3.code === 'ENOENT') {
+ return
+ } else {
+ throw er
+ }
+ }
+
+ if (stats.isDirectory()) {
+ rmdirSync(p, options, er)
+ } else {
+ options.unlinkSync(p)
+ }
+}
+
+function rmdir (p, options, originalEr, cb) {
+ assert(p)
+ assert(options)
+ if (originalEr) {
+ assert(originalEr instanceof Error)
+ }
+ assert(typeof cb === 'function')
+
+ // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
+ // if we guessed wrong, and it's not a directory, then
+ // raise the original error.
+ options.rmdir(p, er => {
+ if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) {
+ rmkids(p, options, cb)
+ } else if (er && er.code === 'ENOTDIR') {
+ cb(originalEr)
+ } else {
+ cb(er)
+ }
+ })
+}
+
+function rmkids (p, options, cb) {
+ assert(p)
+ assert(options)
+ assert(typeof cb === 'function')
+
+ options.readdir(p, (er, files) => {
+ if (er) return cb(er)
+
+ let n = files.length
+ let errState
+
+ if (n === 0) return options.rmdir(p, cb)
+
+ files.forEach(f => {
+ rimraf(path.join(p, f), options, er => {
+ if (errState) {
+ return
+ }
+ if (er) return cb(errState = er)
+ if (--n === 0) {
+ options.rmdir(p, cb)
+ }
+ })
+ })
+ })
+}
+
+// this looks simpler, and is strictly *faster*, but will
+// tie up the JavaScript thread and fail on excessively
+// deep directory trees.
+function rimrafSync (p, options) {
+ let st
+
+ options = options || {}
+ defaults(options)
+
+ assert(p, 'rimraf: missing path')
+ assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string')
+ assert(options, 'rimraf: missing options')
+ assert.strictEqual(typeof options, 'object', 'rimraf: options should be object')
+
+ try {
+ st = options.lstatSync(p)
+ } catch (er) {
+ if (er.code === 'ENOENT') {
+ return
+ }
+
+ // Windows can EPERM on stat. Life is suffering.
+ if (er.code === 'EPERM' && isWindows) {
+ fixWinEPERMSync(p, options, er)
+ }
+ }
+
+ try {
+ // sunos lets the root user unlink directories, which is... weird.
+ if (st && st.isDirectory()) {
+ rmdirSync(p, options, null)
+ } else {
+ options.unlinkSync(p)
+ }
+ } catch (er) {
+ if (er.code === 'ENOENT') {
+ return
+ } else if (er.code === 'EPERM') {
+ return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
+ } else if (er.code !== 'EISDIR') {
+ throw er
+ }
+ rmdirSync(p, options, er)
+ }
+}
+
+function rmdirSync (p, options, originalEr) {
+ assert(p)
+ assert(options)
+ if (originalEr) {
+ assert(originalEr instanceof Error)
+ }
+
+ try {
+ options.rmdirSync(p)
+ } catch (er) {
+ if (er.code === 'ENOTDIR') {
+ throw originalEr
+ } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') {
+ rmkidsSync(p, options)
+ } else if (er.code !== 'ENOENT') {
+ throw er
+ }
+ }
+}
+
+function rmkidsSync (p, options) {
+ assert(p)
+ assert(options)
+ options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))
+
+ if (isWindows) {
+ // We only end up here once we got ENOTEMPTY at least once, and
+ // at this point, we are guaranteed to have removed all the kids.
+ // So, we know that it won't be ENOENT or ENOTDIR or anything else.
+ // try really hard to delete stuff on windows, because it has a
+ // PROFOUNDLY annoying habit of not closing handles promptly when
+ // files are deleted, resulting in spurious ENOTEMPTY errors.
+ const startTime = Date.now()
+ do {
+ try {
+ const ret = options.rmdirSync(p, options)
+ return ret
+ } catch (er) { }
+ } while (Date.now() - startTime < 500) // give up after 500ms
+ } else {
+ const ret = options.rmdirSync(p, options)
+ return ret
+ }
+}
+
+module.exports = rimraf
+rimraf.sync = rimrafSync
diff --git a/client/node_modules/fs-extra/lib/util/buffer.js b/client/node_modules/fs-extra/lib/util/buffer.js
new file mode 100644
index 0000000..dabf288
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/util/buffer.js
@@ -0,0 +1,12 @@
+'use strict'
+/* eslint-disable node/no-deprecated-api */
+module.exports = function (size) {
+ if (typeof Buffer.allocUnsafe === 'function') {
+ try {
+ return Buffer.allocUnsafe(size)
+ } catch (e) {
+ return new Buffer(size)
+ }
+ }
+ return new Buffer(size)
+}
diff --git a/client/node_modules/fs-extra/lib/util/stat.js b/client/node_modules/fs-extra/lib/util/stat.js
new file mode 100644
index 0000000..350cb9f
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/util/stat.js
@@ -0,0 +1,172 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const path = require('path')
+
+const NODE_VERSION_MAJOR_WITH_BIGINT = 10
+const NODE_VERSION_MINOR_WITH_BIGINT = 5
+const NODE_VERSION_PATCH_WITH_BIGINT = 0
+const nodeVersion = process.versions.node.split('.')
+const nodeVersionMajor = Number.parseInt(nodeVersion[0], 10)
+const nodeVersionMinor = Number.parseInt(nodeVersion[1], 10)
+const nodeVersionPatch = Number.parseInt(nodeVersion[2], 10)
+
+function nodeSupportsBigInt () {
+ if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) {
+ return true
+ } else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) {
+ if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) {
+ return true
+ } else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) {
+ if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+function getStats (src, dest, cb) {
+ if (nodeSupportsBigInt()) {
+ fs.stat(src, { bigint: true }, (err, srcStat) => {
+ if (err) return cb(err)
+ fs.stat(dest, { bigint: true }, (err, destStat) => {
+ if (err) {
+ if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null })
+ return cb(err)
+ }
+ return cb(null, { srcStat, destStat })
+ })
+ })
+ } else {
+ fs.stat(src, (err, srcStat) => {
+ if (err) return cb(err)
+ fs.stat(dest, (err, destStat) => {
+ if (err) {
+ if (err.code === 'ENOENT') return cb(null, { srcStat, destStat: null })
+ return cb(err)
+ }
+ return cb(null, { srcStat, destStat })
+ })
+ })
+ }
+}
+
+function getStatsSync (src, dest) {
+ let srcStat, destStat
+ if (nodeSupportsBigInt()) {
+ srcStat = fs.statSync(src, { bigint: true })
+ } else {
+ srcStat = fs.statSync(src)
+ }
+ try {
+ if (nodeSupportsBigInt()) {
+ destStat = fs.statSync(dest, { bigint: true })
+ } else {
+ destStat = fs.statSync(dest)
+ }
+ } catch (err) {
+ if (err.code === 'ENOENT') return { srcStat, destStat: null }
+ throw err
+ }
+ return { srcStat, destStat }
+}
+
+function checkPaths (src, dest, funcName, cb) {
+ getStats(src, dest, (err, stats) => {
+ if (err) return cb(err)
+ const { srcStat, destStat } = stats
+ if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error('Source and destination must not be the same.'))
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ return cb(new Error(errMsg(src, dest, funcName)))
+ }
+ return cb(null, { srcStat, destStat })
+ })
+}
+
+function checkPathsSync (src, dest, funcName) {
+ const { srcStat, destStat } = getStatsSync(src, dest)
+ if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ throw new Error('Source and destination must not be the same.')
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ throw new Error(errMsg(src, dest, funcName))
+ }
+ return { srcStat, destStat }
+}
+
+// recursively check if dest parent is a subdirectory of src.
+// It works for all file types including symlinks since it
+// checks the src and dest inodes. It starts from the deepest
+// parent and stops once it reaches the src parent or the root path.
+function checkParentPaths (src, srcStat, dest, funcName, cb) {
+ const srcParent = path.resolve(path.dirname(src))
+ const destParent = path.resolve(path.dirname(dest))
+ if (destParent === srcParent || destParent === path.parse(destParent).root) return cb()
+ if (nodeSupportsBigInt()) {
+ fs.stat(destParent, { bigint: true }, (err, destStat) => {
+ if (err) {
+ if (err.code === 'ENOENT') return cb()
+ return cb(err)
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error(errMsg(src, dest, funcName)))
+ }
+ return checkParentPaths(src, srcStat, destParent, funcName, cb)
+ })
+ } else {
+ fs.stat(destParent, (err, destStat) => {
+ if (err) {
+ if (err.code === 'ENOENT') return cb()
+ return cb(err)
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error(errMsg(src, dest, funcName)))
+ }
+ return checkParentPaths(src, srcStat, destParent, funcName, cb)
+ })
+ }
+}
+
+function checkParentPathsSync (src, srcStat, dest, funcName) {
+ const srcParent = path.resolve(path.dirname(src))
+ const destParent = path.resolve(path.dirname(dest))
+ if (destParent === srcParent || destParent === path.parse(destParent).root) return
+ let destStat
+ try {
+ if (nodeSupportsBigInt()) {
+ destStat = fs.statSync(destParent, { bigint: true })
+ } else {
+ destStat = fs.statSync(destParent)
+ }
+ } catch (err) {
+ if (err.code === 'ENOENT') return
+ throw err
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ throw new Error(errMsg(src, dest, funcName))
+ }
+ return checkParentPathsSync(src, srcStat, destParent, funcName)
+}
+
+// return true if dest is a subdir of src, otherwise false.
+// It only checks the path strings.
+function isSrcSubdir (src, dest) {
+ const srcArr = path.resolve(src).split(path.sep).filter(i => i)
+ const destArr = path.resolve(dest).split(path.sep).filter(i => i)
+ return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true)
+}
+
+function errMsg (src, dest, funcName) {
+ return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`
+}
+
+module.exports = {
+ checkPaths,
+ checkPathsSync,
+ checkParentPaths,
+ checkParentPathsSync,
+ isSrcSubdir
+}
diff --git a/client/node_modules/fs-extra/lib/util/utimes.js b/client/node_modules/fs-extra/lib/util/utimes.js
new file mode 100644
index 0000000..8916a1b
--- /dev/null
+++ b/client/node_modules/fs-extra/lib/util/utimes.js
@@ -0,0 +1,79 @@
+'use strict'
+
+const fs = require('graceful-fs')
+const os = require('os')
+const path = require('path')
+
+// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not
+function hasMillisResSync () {
+ let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2))
+ tmpfile = path.join(os.tmpdir(), tmpfile)
+
+ // 550 millis past UNIX epoch
+ const d = new Date(1435410243862)
+ fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141')
+ const fd = fs.openSync(tmpfile, 'r+')
+ fs.futimesSync(fd, d, d)
+ fs.closeSync(fd)
+ return fs.statSync(tmpfile).mtime > 1435410243000
+}
+
+function hasMillisRes (callback) {
+ let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2))
+ tmpfile = path.join(os.tmpdir(), tmpfile)
+
+ // 550 millis past UNIX epoch
+ const d = new Date(1435410243862)
+ fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => {
+ if (err) return callback(err)
+ fs.open(tmpfile, 'r+', (err, fd) => {
+ if (err) return callback(err)
+ fs.futimes(fd, d, d, err => {
+ if (err) return callback(err)
+ fs.close(fd, err => {
+ if (err) return callback(err)
+ fs.stat(tmpfile, (err, stats) => {
+ if (err) return callback(err)
+ callback(null, stats.mtime > 1435410243000)
+ })
+ })
+ })
+ })
+ })
+}
+
+function timeRemoveMillis (timestamp) {
+ if (typeof timestamp === 'number') {
+ return Math.floor(timestamp / 1000) * 1000
+ } else if (timestamp instanceof Date) {
+ return new Date(Math.floor(timestamp.getTime() / 1000) * 1000)
+ } else {
+ throw new Error('fs-extra: timeRemoveMillis() unknown parameter type')
+ }
+}
+
+function utimesMillis (path, atime, mtime, callback) {
+ // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)
+ fs.open(path, 'r+', (err, fd) => {
+ if (err) return callback(err)
+ fs.futimes(fd, atime, mtime, futimesErr => {
+ fs.close(fd, closeErr => {
+ if (callback) callback(futimesErr || closeErr)
+ })
+ })
+ })
+}
+
+function utimesMillisSync (path, atime, mtime) {
+ const fd = fs.openSync(path, 'r+')
+ fs.futimesSync(fd, atime, mtime)
+ return fs.closeSync(fd)
+}
+
+module.exports = {
+ hasMillisRes,
+ hasMillisResSync,
+ timeRemoveMillis,
+ utimesMillis,
+ utimesMillisSync
+}
diff --git a/client/node_modules/fs-extra/package.json b/client/node_modules/fs-extra/package.json
new file mode 100644
index 0000000..559d88b
--- /dev/null
+++ b/client/node_modules/fs-extra/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "fs-extra",
+ "version": "8.1.0",
+ "description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf.",
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ },
+ "homepage": "https://github.com/jprichardson/node-fs-extra",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jprichardson/node-fs-extra"
+ },
+ "keywords": [
+ "fs",
+ "file",
+ "file system",
+ "copy",
+ "directory",
+ "extra",
+ "mkdirp",
+ "mkdir",
+ "mkdirs",
+ "recursive",
+ "json",
+ "read",
+ "write",
+ "extra",
+ "delete",
+ "remove",
+ "touch",
+ "create",
+ "text",
+ "output",
+ "move"
+ ],
+ "author": "JP Richardson <jprichardson@gmail.com>",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "devDependencies": {
+ "coveralls": "^3.0.0",
+ "istanbul": "^0.4.5",
+ "klaw": "^2.1.1",
+ "klaw-sync": "^3.0.2",
+ "minimist": "^1.1.1",
+ "mocha": "^5.0.5",
+ "proxyquire": "^2.0.1",
+ "read-dir-files": "^0.1.1",
+ "semver": "^5.3.0",
+ "standard": "^12.0.1"
+ },
+ "main": "./lib/index.js",
+ "files": [
+ "lib/",
+ "!lib/**/__tests__/"
+ ],
+ "scripts": {
+ "full-ci": "npm run lint && npm run coverage",
+ "coverage": "istanbul cover -i 'lib/**' -x '**/__tests__/**' test.js",
+ "coveralls": "coveralls < coverage/lcov.info",
+ "lint": "standard",
+ "test-find": "find ./lib/**/__tests__ -name *.test.js | xargs mocha",
+ "test": "npm run lint && npm run unit",
+ "unit": "node test.js"
+ }
+}
diff --git a/client/node_modules/function-bind/.eslintrc b/client/node_modules/function-bind/.eslintrc
new file mode 100644
index 0000000..71a054f
--- /dev/null
+++ b/client/node_modules/function-bind/.eslintrc
@@ -0,0 +1,21 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "func-name-matching": 0,
+ "indent": [2, 4],
+ "no-new-func": [1],
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "max-lines-per-function": 0,
+ "strict": [0]
+ },
+ },
+ ],
+}
diff --git a/client/node_modules/function-bind/.github/FUNDING.yml b/client/node_modules/function-bind/.github/FUNDING.yml
new file mode 100644
index 0000000..7448219
--- /dev/null
+++ b/client/node_modules/function-bind/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/function-bind
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/function-bind/.github/SECURITY.md b/client/node_modules/function-bind/.github/SECURITY.md
new file mode 100644
index 0000000..82e4285
--- /dev/null
+++ b/client/node_modules/function-bind/.github/SECURITY.md
@@ -0,0 +1,3 @@
+# Security
+
+Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
diff --git a/client/node_modules/function-bind/.nycrc b/client/node_modules/function-bind/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/client/node_modules/function-bind/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/function-bind/CHANGELOG.md b/client/node_modules/function-bind/CHANGELOG.md
new file mode 100644
index 0000000..f9e6cc0
--- /dev/null
+++ b/client/node_modules/function-bind/CHANGELOG.md
@@ -0,0 +1,136 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.1.2](https://github.com/ljharb/function-bind/compare/v1.1.1...v1.1.2) - 2023-10-12
+
+### Merged
+
+- Point to the correct file [`#16`](https://github.com/ljharb/function-bind/pull/16)
+
+### Commits
+
+- [Tests] migrate tests to Github Actions [`4f8b57c`](https://github.com/ljharb/function-bind/commit/4f8b57c02f2011fe9ae353d5e74e8745f0988af8)
+- [Tests] remove `jscs` [`90eb2ed`](https://github.com/ljharb/function-bind/commit/90eb2edbeefd5b76cd6c3a482ea3454db169b31f)
+- [meta] update `.gitignore` [`53fcdc3`](https://github.com/ljharb/function-bind/commit/53fcdc371cd66634d6e9b71c836a50f437e89fed)
+- [Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests [`1fe8f6e`](https://github.com/ljharb/function-bind/commit/1fe8f6e9aed0dfa8d8b3cdbd00c7f5ea0cd2b36e)
+- [meta] add `auto-changelog` [`1921fcb`](https://github.com/ljharb/function-bind/commit/1921fcb5b416b63ffc4acad051b6aad5722f777d)
+- [Robustness] remove runtime dependency on all builtins except `.apply` [`f743e61`](https://github.com/ljharb/function-bind/commit/f743e61aa6bb2360358c04d4884c9db853d118b7)
+- Docs: enable badges; update wording [`503cb12`](https://github.com/ljharb/function-bind/commit/503cb12d998b5f91822776c73332c7adcd6355dd)
+- [readme] update badges [`290c5db`](https://github.com/ljharb/function-bind/commit/290c5dbbbda7264efaeb886552a374b869a4bb48)
+- [Tests] switch to nyc for coverage [`ea360ba`](https://github.com/ljharb/function-bind/commit/ea360ba907fc2601ed18d01a3827fa2d3533cdf8)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`cae5e9e`](https://github.com/ljharb/function-bind/commit/cae5e9e07a5578dc6df26c03ee22851ce05b943c)
+- [meta] add `funding` field; create FUNDING.yml [`c9f4274`](https://github.com/ljharb/function-bind/commit/c9f4274aa80ea3aae9657a3938fdba41a3b04ca6)
+- [Tests] fix eslint errors from #15 [`f69aaa2`](https://github.com/ljharb/function-bind/commit/f69aaa2beb2fdab4415bfb885760a699d0b9c964)
+- [actions] fix permissions [`99a0cd9`](https://github.com/ljharb/function-bind/commit/99a0cd9f3b5bac223a0d572f081834cd73314be7)
+- [meta] use `npmignore` to autogenerate an npmignore file [`f03b524`](https://github.com/ljharb/function-bind/commit/f03b524ca91f75a109a5d062f029122c86ecd1ae)
+- [Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape` [`7af9300`](https://github.com/ljharb/function-bind/commit/7af930023ae2ce7645489532821e4fbbcd7a2280)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape` [`64a9127`](https://github.com/ljharb/function-bind/commit/64a9127ab0bd331b93d6572eaf6e9971967fc08c)
+- [Tests] use `aud` instead of `npm audit` [`e75069c`](https://github.com/ljharb/function-bind/commit/e75069c50010a8fcce2a9ce2324934c35fdb4386)
+- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`d03555c`](https://github.com/ljharb/function-bind/commit/d03555ca59dea3b71ce710045e4303b9e2619e28)
+- [meta] add `safe-publish-latest` [`9c8f809`](https://github.com/ljharb/function-bind/commit/9c8f8092aed027d7e80c94f517aa892385b64f09)
+- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`baf6893`](https://github.com/ljharb/function-bind/commit/baf6893e27f5b59abe88bc1995e6f6ed1e527397)
+- [meta] create SECURITY.md [`4db1779`](https://github.com/ljharb/function-bind/commit/4db17799f1f28ae294cb95e0081ca2b591c3911b)
+- [Tests] add `npm run audit` [`c8b38ec`](https://github.com/ljharb/function-bind/commit/c8b38ec40ed3f85dabdee40ed4148f1748375bc2)
+- Revert "Point to the correct file" [`05cdf0f`](https://github.com/ljharb/function-bind/commit/05cdf0fa205c6a3c5ba40bbedd1dfa9874f915c9)
+
+## [v1.1.1](https://github.com/ljharb/function-bind/compare/v1.1.0...v1.1.1) - 2017-08-28
+
+### Commits
+
+- [Tests] up to `node` `v8`; newer npm breaks on older node; fix scripts [`817f7d2`](https://github.com/ljharb/function-bind/commit/817f7d28470fdbff8ef608d4d565dd4d1430bc5e)
+- [Dev Deps] update `eslint`, `jscs`, `tape`, `@ljharb/eslint-config` [`854288b`](https://github.com/ljharb/function-bind/commit/854288b1b6f5c555f89aceb9eff1152510262084)
+- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`83e639f`](https://github.com/ljharb/function-bind/commit/83e639ff74e6cd6921285bccec22c1bcf72311bd)
+- Only apps should have lockfiles [`5ed97f5`](https://github.com/ljharb/function-bind/commit/5ed97f51235c17774e0832e122abda0f3229c908)
+- Use a SPDX-compliant “license” field. [`5feefea`](https://github.com/ljharb/function-bind/commit/5feefea0dc0193993e83e5df01ded424403a5381)
+
+## [v1.1.0](https://github.com/ljharb/function-bind/compare/v1.0.2...v1.1.0) - 2016-02-14
+
+### Commits
+
+- Update `eslint`, `tape`; use my personal shared `eslint` config [`9c9062a`](https://github.com/ljharb/function-bind/commit/9c9062abbe9dd70b59ea2c3a3c3a81f29b457097)
+- Add `npm run eslint` [`dd96c56`](https://github.com/ljharb/function-bind/commit/dd96c56720034a3c1ffee10b8a59a6f7c53e24ad)
+- [New] return the native `bind` when available. [`82186e0`](https://github.com/ljharb/function-bind/commit/82186e03d73e580f95ff167e03f3582bed90ed72)
+- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`a3dd767`](https://github.com/ljharb/function-bind/commit/a3dd76720c795cb7f4586b0544efabf8aa107b8b)
+- Update `eslint` [`3dae2f7`](https://github.com/ljharb/function-bind/commit/3dae2f7423de30a2d20313ddb1edc19660142fe9)
+- Update `tape`, `covert`, `jscs` [`a181eee`](https://github.com/ljharb/function-bind/commit/a181eee0cfa24eb229c6e843a971f36e060a2f6a)
+- [Tests] up to `node` `v5.6`, `v4.3` [`964929a`](https://github.com/ljharb/function-bind/commit/964929a6a4ddb36fb128de2bcc20af5e4f22e1ed)
+- Test up to `io.js` `v2.1` [`2be7310`](https://github.com/ljharb/function-bind/commit/2be7310f2f74886a7124ca925be411117d41d5ea)
+- Update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`45f3d68`](https://github.com/ljharb/function-bind/commit/45f3d6865c6ca93726abcef54febe009087af101)
+- [Dev Deps] update `tape`, `jscs` [`6e1340d`](https://github.com/ljharb/function-bind/commit/6e1340d94642deaecad3e717825db641af4f8b1f)
+- [Tests] up to `io.js` `v3.3`, `node` `v4.1` [`d9bad2b`](https://github.com/ljharb/function-bind/commit/d9bad2b778b1b3a6dd2876087b88b3acf319f8cc)
+- Update `eslint` [`935590c`](https://github.com/ljharb/function-bind/commit/935590caa024ab356102e4858e8fc315b2ccc446)
+- [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config` [`8c9a1ef`](https://github.com/ljharb/function-bind/commit/8c9a1efd848e5167887aa8501857a0940a480c57)
+- Test on `io.js` `v2.2` [`9a3a38c`](https://github.com/ljharb/function-bind/commit/9a3a38c92013aed6e108666e7bd40969b84ac86e)
+- Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures. [`69afc26`](https://github.com/ljharb/function-bind/commit/69afc2617405b147dd2a8d8ae73ca9e9283f18b4)
+- [Dev Deps] Update `tape`, `eslint` [`36c1be0`](https://github.com/ljharb/function-bind/commit/36c1be0ab12b45fe5df6b0fdb01a5d5137fd0115)
+- Update `tape`, `jscs` [`98d8303`](https://github.com/ljharb/function-bind/commit/98d8303cd5ca1c6b8f985469f86b0d44d7d45f6e)
+- Update `jscs` [`9633a4e`](https://github.com/ljharb/function-bind/commit/9633a4e9fbf82051c240855166e468ba8ba0846f)
+- Update `tape`, `jscs` [`c80ef0f`](https://github.com/ljharb/function-bind/commit/c80ef0f46efc9791e76fa50de4414092ac147831)
+- Test up to `io.js` `v3.0` [`7e2c853`](https://github.com/ljharb/function-bind/commit/7e2c8537d52ab9cf5a655755561d8917684c0df4)
+- Test on `io.js` `v2.4` [`5a199a2`](https://github.com/ljharb/function-bind/commit/5a199a27ba46795ba5eaf0845d07d4b8232895c9)
+- Test on `io.js` `v2.3` [`a511b88`](https://github.com/ljharb/function-bind/commit/a511b8896de0bddf3b56862daa416c701f4d0453)
+- Fixing a typo from 822b4e1938db02dc9584aa434fd3a45cb20caf43 [`732d6b6`](https://github.com/ljharb/function-bind/commit/732d6b63a9b33b45230e630dbcac7a10855d3266)
+- Update `jscs` [`da52a48`](https://github.com/ljharb/function-bind/commit/da52a4886c06d6490f46ae30b15e4163ba08905d)
+- Lock covert to v1.0.0. [`d6150fd`](https://github.com/ljharb/function-bind/commit/d6150fda1e6f486718ebdeff823333d9e48e7430)
+
+## [v1.0.2](https://github.com/ljharb/function-bind/compare/v1.0.1...v1.0.2) - 2014-10-04
+
+## [v1.0.1](https://github.com/ljharb/function-bind/compare/v1.0.0...v1.0.1) - 2014-10-03
+
+### Merged
+
+- make CI build faster [`#3`](https://github.com/ljharb/function-bind/pull/3)
+
+### Commits
+
+- Using my standard jscs.json [`d8ee94c`](https://github.com/ljharb/function-bind/commit/d8ee94c993eff0a84cf5744fe6a29627f5cffa1a)
+- Adding `npm run lint` [`7571ab7`](https://github.com/ljharb/function-bind/commit/7571ab7dfdbd99b25a1dbb2d232622bd6f4f9c10)
+- Using consistent indentation [`e91a1b1`](https://github.com/ljharb/function-bind/commit/e91a1b13a61e99ec1e530e299b55508f74218a95)
+- Updating jscs [`7e17892`](https://github.com/ljharb/function-bind/commit/7e1789284bc629bc9c1547a61c9b227bbd8c7a65)
+- Using consistent quotes [`c50b57f`](https://github.com/ljharb/function-bind/commit/c50b57fcd1c5ec38320979c837006069ebe02b77)
+- Adding keywords [`cb94631`](https://github.com/ljharb/function-bind/commit/cb946314eed35f21186a25fb42fc118772f9ee00)
+- Directly export a function expression instead of using a declaration, and relying on hoisting. [`5a33c5f`](https://github.com/ljharb/function-bind/commit/5a33c5f45642de180e0d207110bf7d1843ceb87c)
+- Naming npm URL and badge in README; use SVG [`2aef8fc`](https://github.com/ljharb/function-bind/commit/2aef8fcb79d54e63a58ae557c4e60949e05d5e16)
+- Naming deps URLs in README [`04228d7`](https://github.com/ljharb/function-bind/commit/04228d766670ee45ca24e98345c1f6a7621065b5)
+- Naming travis-ci URLs in README; using SVG [`62c810c`](https://github.com/ljharb/function-bind/commit/62c810c2f54ced956cd4d4ab7b793055addfe36e)
+- Make sure functions are invoked correctly (also passing coverage tests) [`2b289b4`](https://github.com/ljharb/function-bind/commit/2b289b4dfbf037ffcfa4dc95eb540f6165e9e43a)
+- Removing the strict mode pragmas; they make tests fail. [`1aa701d`](https://github.com/ljharb/function-bind/commit/1aa701d199ddc3782476e8f7eef82679be97b845)
+- Adding myself as a contributor [`85fd57b`](https://github.com/ljharb/function-bind/commit/85fd57b0860e5a7af42de9a287f3f265fc6d72fc)
+- Adding strict mode pragmas [`915b08e`](https://github.com/ljharb/function-bind/commit/915b08e084c86a722eafe7245e21db74aa21ca4c)
+- Adding devDeps URLs to README [`4ccc731`](https://github.com/ljharb/function-bind/commit/4ccc73112c1769859e4ca3076caf4086b3cba2cd)
+- Fixing the description. [`a7a472c`](https://github.com/ljharb/function-bind/commit/a7a472cf649af515c635cf560fc478fbe48999c8)
+- Using a function expression instead of a function declaration. [`b5d3e4e`](https://github.com/ljharb/function-bind/commit/b5d3e4ea6aaffc63888953eeb1fbc7ff45f1fa14)
+- Updating tape [`f086be6`](https://github.com/ljharb/function-bind/commit/f086be6029fb56dde61a258c1340600fa174d1e0)
+- Updating jscs [`5f9bdb3`](https://github.com/ljharb/function-bind/commit/5f9bdb375ab13ba48f30852aab94029520c54d71)
+- Updating jscs [`9b409ba`](https://github.com/ljharb/function-bind/commit/9b409ba6118e23395a4e5d83ef39152aab9d3bfc)
+- Run coverage as part of tests. [`8e1b6d4`](https://github.com/ljharb/function-bind/commit/8e1b6d459f047d1bd4fee814e01247c984c80bd0)
+- Run linter as part of tests [`c1ca83f`](https://github.com/ljharb/function-bind/commit/c1ca83f832df94587d09e621beba682fabfaa987)
+- Updating covert [`701e837`](https://github.com/ljharb/function-bind/commit/701e83774b57b4d3ef631e1948143f43a72f4bb9)
+
+## [v1.0.0](https://github.com/ljharb/function-bind/compare/v0.2.0...v1.0.0) - 2014-08-09
+
+### Commits
+
+- Make sure old and unstable nodes don't fail Travis [`27adca3`](https://github.com/ljharb/function-bind/commit/27adca34a4ab6ad67b6dfde43942a1b103ce4d75)
+- Fixing an issue when the bound function is called as a constructor in ES3. [`e20122d`](https://github.com/ljharb/function-bind/commit/e20122d267d92ce553859b280cbbea5d27c07731)
+- Adding `npm run coverage` [`a2e29c4`](https://github.com/ljharb/function-bind/commit/a2e29c4ecaef9e2f6cd1603e868c139073375502)
+- Updating tape [`b741168`](https://github.com/ljharb/function-bind/commit/b741168b12b235b1717ff696087645526b69213c)
+- Upgrading tape [`63631a0`](https://github.com/ljharb/function-bind/commit/63631a04c7fbe97cc2fa61829cc27246d6986f74)
+- Updating tape [`363cb46`](https://github.com/ljharb/function-bind/commit/363cb46dafb23cb3e347729a22f9448051d78464)
+
+## v0.2.0 - 2014-03-23
+
+### Commits
+
+- Updating test coverage to match es5-shim. [`aa94d44`](https://github.com/ljharb/function-bind/commit/aa94d44b8f9d7f69f10e060db7709aa7a694e5d4)
+- initial [`942ee07`](https://github.com/ljharb/function-bind/commit/942ee07e94e542d91798137bc4b80b926137e066)
+- Setting the bound function's length properly. [`079f46a`](https://github.com/ljharb/function-bind/commit/079f46a2d3515b7c0b308c2c13fceb641f97ca25)
+- Ensuring that some older browsers will throw when given a regex. [`36ac55b`](https://github.com/ljharb/function-bind/commit/36ac55b87f460d4330253c92870aa26fbfe8227f)
+- Removing npm scripts that don't have dependencies [`9d2be60`](https://github.com/ljharb/function-bind/commit/9d2be600002cb8bc8606f8f3585ad3e05868c750)
+- Updating tape [`297a4ac`](https://github.com/ljharb/function-bind/commit/297a4acc5464db381940aafb194d1c88f4e678f3)
+- Skipping length tests for now. [`d9891ea`](https://github.com/ljharb/function-bind/commit/d9891ea4d2aaffa69f408339cdd61ff740f70565)
+- don't take my tea [`dccd930`](https://github.com/ljharb/function-bind/commit/dccd930bfd60ea10cb178d28c97550c3bc8c1e07)
diff --git a/client/node_modules/function-bind/LICENSE b/client/node_modules/function-bind/LICENSE
new file mode 100644
index 0000000..62d6d23
--- /dev/null
+++ b/client/node_modules/function-bind/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2013 Raynos.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/client/node_modules/function-bind/README.md b/client/node_modules/function-bind/README.md
new file mode 100644
index 0000000..814c20b
--- /dev/null
+++ b/client/node_modules/function-bind/README.md
@@ -0,0 +1,46 @@
+# function-bind <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+<!--[![coverage][codecov-image]][codecov-url]-->
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Implementation of function.prototype.bind
+
+Old versions of phantomjs, Internet Explorer < 9, and node < 0.6 don't support `Function.prototype.bind`.
+
+## Example
+
+```js
+Function.prototype.bind = require("function-bind")
+```
+
+## Installation
+
+`npm install function-bind`
+
+## Contributors
+
+ - Raynos
+
+## MIT Licenced
+
+[package-url]: https://npmjs.org/package/function-bind
+[npm-version-svg]: https://versionbadg.es/Raynos/function-bind.svg
+[deps-svg]: https://david-dm.org/Raynos/function-bind.svg
+[deps-url]: https://david-dm.org/Raynos/function-bind
+[dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg
+[dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/function-bind.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/function-bind.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/function-bind.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=function-bind
+[codecov-image]: https://codecov.io/gh/Raynos/function-bind/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/Raynos/function-bind/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/Raynos/function-bind
+[actions-url]: https://github.com/Raynos/function-bind/actions
diff --git a/client/node_modules/function-bind/implementation.js b/client/node_modules/function-bind/implementation.js
new file mode 100644
index 0000000..fd4384c
--- /dev/null
+++ b/client/node_modules/function-bind/implementation.js
@@ -0,0 +1,84 @@
+'use strict';
+
+/* eslint no-invalid-this: 1 */
+
+var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
+var toStr = Object.prototype.toString;
+var max = Math.max;
+var funcType = '[object Function]';
+
+var concatty = function concatty(a, b) {
+ var arr = [];
+
+ for (var i = 0; i < a.length; i += 1) {
+ arr[i] = a[i];
+ }
+ for (var j = 0; j < b.length; j += 1) {
+ arr[j + a.length] = b[j];
+ }
+
+ return arr;
+};
+
+var slicy = function slicy(arrLike, offset) {
+ var arr = [];
+ for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
+ arr[j] = arrLike[i];
+ }
+ return arr;
+};
+
+var joiny = function (arr, joiner) {
+ var str = '';
+ for (var i = 0; i < arr.length; i += 1) {
+ str += arr[i];
+ if (i + 1 < arr.length) {
+ str += joiner;
+ }
+ }
+ return str;
+};
+
+module.exports = function bind(that) {
+ var target = this;
+ if (typeof target !== 'function' || toStr.apply(target) !== funcType) {
+ throw new TypeError(ERROR_MESSAGE + target);
+ }
+ var args = slicy(arguments, 1);
+
+ var bound;
+ var binder = function () {
+ if (this instanceof bound) {
+ var result = target.apply(
+ this,
+ concatty(args, arguments)
+ );
+ if (Object(result) === result) {
+ return result;
+ }
+ return this;
+ }
+ return target.apply(
+ that,
+ concatty(args, arguments)
+ );
+
+ };
+
+ var boundLength = max(0, target.length - args.length);
+ var boundArgs = [];
+ for (var i = 0; i < boundLength; i++) {
+ boundArgs[i] = '$' + i;
+ }
+
+ bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);
+
+ if (target.prototype) {
+ var Empty = function Empty() {};
+ Empty.prototype = target.prototype;
+ bound.prototype = new Empty();
+ Empty.prototype = null;
+ }
+
+ return bound;
+};
diff --git a/client/node_modules/function-bind/index.js b/client/node_modules/function-bind/index.js
new file mode 100644
index 0000000..3bb6b96
--- /dev/null
+++ b/client/node_modules/function-bind/index.js
@@ -0,0 +1,5 @@
+'use strict';
+
+var implementation = require('./implementation');
+
+module.exports = Function.prototype.bind || implementation;
diff --git a/client/node_modules/function-bind/package.json b/client/node_modules/function-bind/package.json
new file mode 100644
index 0000000..6185963
--- /dev/null
+++ b/client/node_modules/function-bind/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "function-bind",
+ "version": "1.1.2",
+ "description": "Implementation of Function.prototype.bind",
+ "keywords": [
+ "function",
+ "bind",
+ "shim",
+ "es5"
+ ],
+ "author": "Raynos <raynos2@gmail.com>",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Raynos/function-bind.git"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "main": "index",
+ "homepage": "https://github.com/Raynos/function-bind",
+ "contributors": [
+ {
+ "name": "Raynos"
+ },
+ {
+ "name": "Jordan Harband",
+ "url": "https://github.com/ljharb"
+ }
+ ],
+ "bugs": {
+ "url": "https://github.com/Raynos/function-bind/issues",
+ "email": "raynos2@gmail.com"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.7.1"
+ },
+ "license": "MIT",
+ "scripts": {
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "lint": "eslint --ext=js,mjs .",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "testling": {
+ "files": "test/index.js",
+ "browsers": [
+ "ie/8..latest",
+ "firefox/16..latest",
+ "firefox/nightly",
+ "chrome/22..latest",
+ "chrome/canary",
+ "opera/12..latest",
+ "opera/next",
+ "safari/5.1..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2..latest"
+ ]
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/function-bind/test/.eslintrc b/client/node_modules/function-bind/test/.eslintrc
new file mode 100644
index 0000000..8a56d5b
--- /dev/null
+++ b/client/node_modules/function-bind/test/.eslintrc
@@ -0,0 +1,9 @@
+{
+ "rules": {
+ "array-bracket-newline": 0,
+ "array-element-newline": 0,
+ "max-statements-per-line": [2, { "max": 2 }],
+ "no-invalid-this": 0,
+ "no-magic-numbers": 0,
+ }
+}
diff --git a/client/node_modules/function-bind/test/index.js b/client/node_modules/function-bind/test/index.js
new file mode 100644
index 0000000..2edecce
--- /dev/null
+++ b/client/node_modules/function-bind/test/index.js
@@ -0,0 +1,252 @@
+// jscs:disable requireUseStrict
+
+var test = require('tape');
+
+var functionBind = require('../implementation');
+var getCurrentContext = function () { return this; };
+
+test('functionBind is a function', function (t) {
+ t.equal(typeof functionBind, 'function');
+ t.end();
+});
+
+test('non-functions', function (t) {
+ var nonFunctions = [true, false, [], {}, 42, 'foo', NaN, /a/g];
+ t.plan(nonFunctions.length);
+ for (var i = 0; i < nonFunctions.length; ++i) {
+ try { functionBind.call(nonFunctions[i]); } catch (ex) {
+ t.ok(ex instanceof TypeError, 'throws when given ' + String(nonFunctions[i]));
+ }
+ }
+ t.end();
+});
+
+test('without a context', function (t) {
+ t.test('binds properly', function (st) {
+ var args, context;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ context = this;
+ })
+ };
+ namespace.func(1, 2, 3);
+ st.deepEqual(args, [1, 2, 3]);
+ st.equal(context, getCurrentContext.call());
+ st.end();
+ });
+
+ t.test('binds properly, and still supplies bound arguments', function (st) {
+ var args, context;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ context = this;
+ }, undefined, 1, 2, 3)
+ };
+ namespace.func(4, 5, 6);
+ st.deepEqual(args, [1, 2, 3, 4, 5, 6]);
+ st.equal(context, getCurrentContext.call());
+ st.end();
+ });
+
+ t.test('returns properly', function (st) {
+ var args;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ return this;
+ }, null)
+ };
+ var context = namespace.func(1, 2, 3);
+ st.equal(context, getCurrentContext.call(), 'returned context is namespaced context');
+ st.deepEqual(args, [1, 2, 3], 'passed arguments are correct');
+ st.end();
+ });
+
+ t.test('returns properly with bound arguments', function (st) {
+ var args;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ return this;
+ }, null, 1, 2, 3)
+ };
+ var context = namespace.func(4, 5, 6);
+ st.equal(context, getCurrentContext.call(), 'returned context is namespaced context');
+ st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct');
+ st.end();
+ });
+
+ t.test('called as a constructor', function (st) {
+ var thunkify = function (value) {
+ return function () { return value; };
+ };
+ st.test('returns object value', function (sst) {
+ var expectedReturnValue = [1, 2, 3];
+ var Constructor = functionBind.call(thunkify(expectedReturnValue), null);
+ var result = new Constructor();
+ sst.equal(result, expectedReturnValue);
+ sst.end();
+ });
+
+ st.test('does not return primitive value', function (sst) {
+ var Constructor = functionBind.call(thunkify(42), null);
+ var result = new Constructor();
+ sst.notEqual(result, 42);
+ sst.end();
+ });
+
+ st.test('object from bound constructor is instance of original and bound constructor', function (sst) {
+ var A = function (x) {
+ this.name = x || 'A';
+ };
+ var B = functionBind.call(A, null, 'B');
+
+ var result = new B();
+ sst.ok(result instanceof B, 'result is instance of bound constructor');
+ sst.ok(result instanceof A, 'result is instance of original constructor');
+ sst.end();
+ });
+
+ st.end();
+ });
+
+ t.end();
+});
+
+test('with a context', function (t) {
+ t.test('with no bound arguments', function (st) {
+ var args, context;
+ var boundContext = {};
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ context = this;
+ }, boundContext)
+ };
+ namespace.func(1, 2, 3);
+ st.equal(context, boundContext, 'binds a context properly');
+ st.deepEqual(args, [1, 2, 3], 'supplies passed arguments');
+ st.end();
+ });
+
+ t.test('with bound arguments', function (st) {
+ var args, context;
+ var boundContext = {};
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ context = this;
+ }, boundContext, 1, 2, 3)
+ };
+ namespace.func(4, 5, 6);
+ st.equal(context, boundContext, 'binds a context properly');
+ st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'supplies bound and passed arguments');
+ st.end();
+ });
+
+ t.test('returns properly', function (st) {
+ var boundContext = {};
+ var args;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ return this;
+ }, boundContext)
+ };
+ var context = namespace.func(1, 2, 3);
+ st.equal(context, boundContext, 'returned context is bound context');
+ st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context');
+ st.deepEqual(args, [1, 2, 3], 'passed arguments are correct');
+ st.end();
+ });
+
+ t.test('returns properly with bound arguments', function (st) {
+ var boundContext = {};
+ var args;
+ var namespace = {
+ func: functionBind.call(function () {
+ args = Array.prototype.slice.call(arguments);
+ return this;
+ }, boundContext, 1, 2, 3)
+ };
+ var context = namespace.func(4, 5, 6);
+ st.equal(context, boundContext, 'returned context is bound context');
+ st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context');
+ st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct');
+ st.end();
+ });
+
+ t.test('passes the correct arguments when called as a constructor', function (st) {
+ var expected = { name: 'Correct' };
+ var namespace = {
+ Func: functionBind.call(function (arg) {
+ return arg;
+ }, { name: 'Incorrect' })
+ };
+ var returned = new namespace.Func(expected);
+ st.equal(returned, expected, 'returns the right arg when called as a constructor');
+ st.end();
+ });
+
+ t.test('has the new instance\'s context when called as a constructor', function (st) {
+ var actualContext;
+ var expectedContext = { foo: 'bar' };
+ var namespace = {
+ Func: functionBind.call(function () {
+ actualContext = this;
+ }, expectedContext)
+ };
+ var result = new namespace.Func();
+ st.equal(result instanceof namespace.Func, true);
+ st.notEqual(actualContext, expectedContext);
+ st.end();
+ });
+
+ t.end();
+});
+
+test('bound function length', function (t) {
+ t.test('sets a correct length without thisArg', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; });
+ st.equal(subject.length, 3);
+ st.equal(subject(1, 2, 3), 6);
+ st.end();
+ });
+
+ t.test('sets a correct length with thisArg', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {});
+ st.equal(subject.length, 3);
+ st.equal(subject(1, 2, 3), 6);
+ st.end();
+ });
+
+ t.test('sets a correct length without thisArg and first argument', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1);
+ st.equal(subject.length, 2);
+ st.equal(subject(2, 3), 6);
+ st.end();
+ });
+
+ t.test('sets a correct length with thisArg and first argument', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1);
+ st.equal(subject.length, 2);
+ st.equal(subject(2, 3), 6);
+ st.end();
+ });
+
+ t.test('sets a correct length without thisArg and too many arguments', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1, 2, 3, 4);
+ st.equal(subject.length, 0);
+ st.equal(subject(), 6);
+ st.end();
+ });
+
+ t.test('sets a correct length with thisArg and too many arguments', function (st) {
+ var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1, 2, 3, 4);
+ st.equal(subject.length, 0);
+ st.equal(subject(), 6);
+ st.end();
+ });
+});
diff --git a/client/node_modules/get-intrinsic/.eslintrc b/client/node_modules/get-intrinsic/.eslintrc
new file mode 100644
index 0000000..8376636
--- /dev/null
+++ b/client/node_modules/get-intrinsic/.eslintrc
@@ -0,0 +1,38 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "env": {
+ "es6": true,
+ "es2017": true,
+ "es2020": true,
+ "es2021": true,
+ "es2022": true,
+ },
+
+ "rules": {
+ "array-bracket-newline": 0,
+ "complexity": 0,
+ "eqeqeq": [2, "allow-null"],
+ "func-name-matching": 0,
+ "id-length": 0,
+ "max-lines": 0,
+ "max-lines-per-function": [2, 90],
+ "max-params": [2, 4],
+ "max-statements": 0,
+ "max-statements-per-line": [2, { "max": 2 }],
+ "multiline-comment-style": 0,
+ "no-magic-numbers": 0,
+ "sort-keys": 0,
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "new-cap": 0,
+ },
+ },
+ ],
+}
diff --git a/client/node_modules/get-intrinsic/.github/FUNDING.yml b/client/node_modules/get-intrinsic/.github/FUNDING.yml
new file mode 100644
index 0000000..8e8da0d
--- /dev/null
+++ b/client/node_modules/get-intrinsic/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/get-intrinsic
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/get-intrinsic/.nycrc b/client/node_modules/get-intrinsic/.nycrc
new file mode 100644
index 0000000..bdd626c
--- /dev/null
+++ b/client/node_modules/get-intrinsic/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/get-intrinsic/CHANGELOG.md b/client/node_modules/get-intrinsic/CHANGELOG.md
new file mode 100644
index 0000000..870b590
--- /dev/null
+++ b/client/node_modules/get-intrinsic/CHANGELOG.md
@@ -0,0 +1,125 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.2.2](https://github.com/ljharb/get-intrinsic/compare/v1.2.1...v1.2.2) - 2023-10-20
+
+### Commits
+
+- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape` [`f51bcf2`](https://github.com/ljharb/get-intrinsic/commit/f51bcf26412d58d17ce17c91c9afd0ad271f0762)
+- [Refactor] use `hasown` instead of `has` [`18d14b7`](https://github.com/ljharb/get-intrinsic/commit/18d14b799bea6b5765e1cec91890830cbcdb0587)
+- [Deps] update `function-bind` [`6e109c8`](https://github.com/ljharb/get-intrinsic/commit/6e109c81e03804cc5e7824fb64353cdc3d8ee2c7)
+
+## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13
+
+### Commits
+
+- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64)
+- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5)
+
+## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19
+
+### Commits
+
+- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb)
+- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8)
+- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3)
+- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67)
+- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26)
+- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c)
+- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd)
+
+## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12
+
+### Commits
+
+- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688)
+- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5)
+
+## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08
+
+### Fixed
+
+- [Fix] properly validate against extra % signs [`#16`](https://github.com/ljharb/get-intrinsic/issues/16)
+
+### Commits
+
+- [actions] reuse common workflows [`0972547`](https://github.com/ljharb/get-intrinsic/commit/0972547efd0abc863fe4c445a6ca7eb4f8c6901d)
+- [meta] use `npmignore` to autogenerate an npmignore file [`5ba0b51`](https://github.com/ljharb/get-intrinsic/commit/5ba0b51d8d8d4f1c31d426d74abc0770fd106bad)
+- [actions] use `node/install` instead of `node/run`; use `codecov` action [`c364492`](https://github.com/ljharb/get-intrinsic/commit/c364492af4af51333e6f81c0bf21fd3d602c3661)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `es-abstract`, `object-inspect`, `tape` [`dc04dad`](https://github.com/ljharb/get-intrinsic/commit/dc04dad86f6e5608775a2640cb0db5927ae29ed9)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `safe-publish-latest`, `tape` [`1c14059`](https://github.com/ljharb/get-intrinsic/commit/1c1405984e86dd2dc9366c15d8a0294a96a146a5)
+- [Tests] use `mock-property` [`b396ef0`](https://github.com/ljharb/get-intrinsic/commit/b396ef05bb73b1d699811abd64b0d9b97997fdda)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `object-inspect`, `tape` [`c2c758d`](https://github.com/ljharb/get-intrinsic/commit/c2c758d3b90af4fef0a76910d8d3c292ec8d1d3e)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`29e3c09`](https://github.com/ljharb/get-intrinsic/commit/29e3c091c2bf3e17099969847e8729d0e46896de)
+- [actions] update codecov uploader [`8cbc141`](https://github.com/ljharb/get-intrinsic/commit/8cbc1418940d7a8941f3a7985cbc4ac095c5e13d)
+- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`10b6f5c`](https://github.com/ljharb/get-intrinsic/commit/10b6f5c02593fb3680c581d696ac124e30652932)
+- [readme] add github actions/codecov badges [`4e25400`](https://github.com/ljharb/get-intrinsic/commit/4e25400d9f51ae9eb059cbe22d9144e70ea214e8)
+- [Tests] use `for-each` instead of `foreach` [`c05b957`](https://github.com/ljharb/get-intrinsic/commit/c05b957ad9a7bc7721af7cc9e9be1edbfe057496)
+- [Dev Deps] update `es-abstract` [`29b05ae`](https://github.com/ljharb/get-intrinsic/commit/29b05aec3e7330e9ad0b8e0f685a9112c20cdd97)
+- [meta] use `prepublishOnly` script for npm 7+ [`95c285d`](https://github.com/ljharb/get-intrinsic/commit/95c285da810516057d3bbfa871176031af38f05d)
+- [Deps] update `has-symbols` [`593cb4f`](https://github.com/ljharb/get-intrinsic/commit/593cb4fb38e7922e40e42c183f45274b636424cd)
+- [readme] fix repo URLs [`1c8305b`](https://github.com/ljharb/get-intrinsic/commit/1c8305b5365827c9b6fc785434aac0e1328ff2f5)
+- [Deps] update `has-symbols` [`c7138b6`](https://github.com/ljharb/get-intrinsic/commit/c7138b6c6d73132d859471fb8c13304e1e7c8b20)
+- [Dev Deps] remove unused `has-bigints` [`bd63aff`](https://github.com/ljharb/get-intrinsic/commit/bd63aff6ad8f3a986c557fcda2914187bdaab359)
+
+## [v1.1.1](https://github.com/ljharb/get-intrinsic/compare/v1.1.0...v1.1.1) - 2021-02-03
+
+### Fixed
+
+- [meta] export `./package.json` [`#9`](https://github.com/ljharb/get-intrinsic/issues/9)
+
+### Commits
+
+- [readme] flesh out the readme; use `evalmd` [`d12f12c`](https://github.com/ljharb/get-intrinsic/commit/d12f12c15345a0a0772cc65a7c64369529abd614)
+- [eslint] set up proper globals config [`5a8c098`](https://github.com/ljharb/get-intrinsic/commit/5a8c0984e3319d1ac0e64b102f8ec18b64e79f36)
+- [Dev Deps] update `eslint` [`7b9a5c0`](https://github.com/ljharb/get-intrinsic/commit/7b9a5c0d31a90ca1a1234181c74988fb046701cd)
+
+## [v1.1.0](https://github.com/ljharb/get-intrinsic/compare/v1.0.2...v1.1.0) - 2021-01-25
+
+### Fixed
+
+- [Refactor] delay `Function` eval until syntax-derived values are requested [`#3`](https://github.com/ljharb/get-intrinsic/issues/3)
+
+### Commits
+
+- [Tests] migrate tests to Github Actions [`2ab762b`](https://github.com/ljharb/get-intrinsic/commit/2ab762b48164aea8af37a40ba105bbc8246ab8c4)
+- [meta] do not publish github action workflow files [`5e7108e`](https://github.com/ljharb/get-intrinsic/commit/5e7108e4768b244d48d9567ba4f8a6cab9c65b8e)
+- [Tests] add some coverage [`01ac7a8`](https://github.com/ljharb/get-intrinsic/commit/01ac7a87ac29738567e8524cd8c9e026b1fa8cb3)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `call-bind`, `es-abstract`, `tape`; add `call-bind` [`911b672`](https://github.com/ljharb/get-intrinsic/commit/911b672fbffae433a96924c6ce013585e425f4b7)
+- [Refactor] rearrange evalled constructors a bit [`7e7e4bf`](https://github.com/ljharb/get-intrinsic/commit/7e7e4bf583f3799c8ac1c6c5e10d2cb553957347)
+- [meta] add Automatic Rebase and Require Allow Edits workflows [`0199968`](https://github.com/ljharb/get-intrinsic/commit/01999687a263ffce0a3cb011dfbcb761754aedbc)
+
+## [v1.0.2](https://github.com/ljharb/get-intrinsic/compare/v1.0.1...v1.0.2) - 2020-12-17
+
+### Commits
+
+- [Fix] Throw for non‑existent intrinsics [`68f873b`](https://github.com/ljharb/get-intrinsic/commit/68f873b013c732a05ad6f5fc54f697e55515461b)
+- [Fix] Throw for non‑existent segments in the intrinsic path [`8325dee`](https://github.com/ljharb/get-intrinsic/commit/8325deee43128f3654d3399aa9591741ebe17b21)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-bigints`, `object-inspect` [`0c227a7`](https://github.com/ljharb/get-intrinsic/commit/0c227a7d8b629166f25715fd242553892e458525)
+- [meta] do not lint coverage output [`70d2419`](https://github.com/ljharb/get-intrinsic/commit/70d24199b620043cd9110fc5f426d214ebe21dc9)
+
+## [v1.0.1](https://github.com/ljharb/get-intrinsic/compare/v1.0.0...v1.0.1) - 2020-10-30
+
+### Commits
+
+- [Tests] gather coverage data on every job [`d1d280d`](https://github.com/ljharb/get-intrinsic/commit/d1d280dec714e3f0519cc877dbcb193057d9cac6)
+- [Fix] add missing dependencies [`5031771`](https://github.com/ljharb/get-intrinsic/commit/5031771bb1095b38be88ce7c41d5de88718e432e)
+- [Tests] use `es-value-fixtures` [`af48765`](https://github.com/ljharb/get-intrinsic/commit/af48765a23c5323fb0b6b38dbf00eb5099c7bebc)
+
+## v1.0.0 - 2020-10-29
+
+### Commits
+
+- Implementation [`bbce57c`](https://github.com/ljharb/get-intrinsic/commit/bbce57c6f33d05b2d8d3efa273ceeb3ee01127bb)
+- Tests [`17b4f0d`](https://github.com/ljharb/get-intrinsic/commit/17b4f0d56dea6b4059b56fc30ef3ee4d9500ebc2)
+- Initial commit [`3153294`](https://github.com/ljharb/get-intrinsic/commit/31532948de363b0a27dd9fd4649e7b7028ec4b44)
+- npm init [`fb326c4`](https://github.com/ljharb/get-intrinsic/commit/fb326c4d2817c8419ec31de1295f06bb268a7902)
+- [meta] add Automatic Rebase and Require Allow Edits workflows [`48862fb`](https://github.com/ljharb/get-intrinsic/commit/48862fb2508c8f6a57968e6d08b7c883afc9d550)
+- [meta] add `auto-changelog` [`5f28ad0`](https://github.com/ljharb/get-intrinsic/commit/5f28ad019e060a353d8028f9f2591a9cc93074a1)
+- [meta] add "funding"; create `FUNDING.yml` [`c2bbdde`](https://github.com/ljharb/get-intrinsic/commit/c2bbddeba73a875be61484ee4680b129a6d4e0a1)
+- [Tests] add `npm run lint` [`0a84b98`](https://github.com/ljharb/get-intrinsic/commit/0a84b98b22b7cf7a748666f705b0003a493c35fd)
+- Only apps should have lockfiles [`9586c75`](https://github.com/ljharb/get-intrinsic/commit/9586c75866c1ee678e4d5d4dbbdef6997e511b05)
diff --git a/client/node_modules/get-intrinsic/LICENSE b/client/node_modules/get-intrinsic/LICENSE
new file mode 100644
index 0000000..48f05d0
--- /dev/null
+++ b/client/node_modules/get-intrinsic/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/get-intrinsic/README.md b/client/node_modules/get-intrinsic/README.md
new file mode 100644
index 0000000..3aa0bba
--- /dev/null
+++ b/client/node_modules/get-intrinsic/README.md
@@ -0,0 +1,71 @@
+# get-intrinsic <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Get and robustly cache all JS language-level intrinsics at first require time.
+
+See the syntax described [in the JS spec](https://tc39.es/ecma262/#sec-well-known-intrinsic-objects) for reference.
+
+## Example
+
+```js
+var GetIntrinsic = require('get-intrinsic');
+var assert = require('assert');
+
+// static methods
+assert.equal(GetIntrinsic('%Math.pow%'), Math.pow);
+assert.equal(Math.pow(2, 3), 8);
+assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8);
+delete Math.pow;
+assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8);
+
+// instance methods
+var arr = [1];
+assert.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push);
+assert.deepEqual(arr, [1]);
+
+arr.push(2);
+assert.deepEqual(arr, [1, 2]);
+
+GetIntrinsic('%Array.prototype.push%').call(arr, 3);
+assert.deepEqual(arr, [1, 2, 3]);
+
+delete Array.prototype.push;
+GetIntrinsic('%Array.prototype.push%').call(arr, 4);
+assert.deepEqual(arr, [1, 2, 3, 4]);
+
+// missing features
+delete JSON.parse; // to simulate a real intrinsic that is missing in the environment
+assert.throws(() => GetIntrinsic('%JSON.parse%'));
+assert.equal(undefined, GetIntrinsic('%JSON.parse%', true));
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+## Security
+
+Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
+
+[package-url]: https://npmjs.org/package/get-intrinsic
+[npm-version-svg]: https://versionbadg.es/ljharb/get-intrinsic.svg
+[deps-svg]: https://david-dm.org/ljharb/get-intrinsic.svg
+[deps-url]: https://david-dm.org/ljharb/get-intrinsic
+[dev-deps-svg]: https://david-dm.org/ljharb/get-intrinsic/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/get-intrinsic#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/get-intrinsic.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/get-intrinsic.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/get-intrinsic.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=get-intrinsic
+[codecov-image]: https://codecov.io/gh/ljharb/get-intrinsic/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/get-intrinsic/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-intrinsic
+[actions-url]: https://github.com/ljharb/get-intrinsic/actions
diff --git a/client/node_modules/get-intrinsic/index.js b/client/node_modules/get-intrinsic/index.js
new file mode 100644
index 0000000..be180b0
--- /dev/null
+++ b/client/node_modules/get-intrinsic/index.js
@@ -0,0 +1,351 @@
+'use strict';
+
+var undefined;
+
+var $SyntaxError = SyntaxError;
+var $Function = Function;
+var $TypeError = TypeError;
+
+// eslint-disable-next-line consistent-return
+var getEvalledConstructor = function (expressionSyntax) {
+ try {
+ return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
+ } catch (e) {}
+};
+
+var $gOPD = Object.getOwnPropertyDescriptor;
+if ($gOPD) {
+ try {
+ $gOPD({}, '');
+ } catch (e) {
+ $gOPD = null; // this is IE 8, which has a broken gOPD
+ }
+}
+
+var throwTypeError = function () {
+ throw new $TypeError();
+};
+var ThrowTypeError = $gOPD
+ ? (function () {
+ try {
+ // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
+ arguments.callee; // IE 8 does not throw here
+ return throwTypeError;
+ } catch (calleeThrows) {
+ try {
+ // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
+ return $gOPD(arguments, 'callee').get;
+ } catch (gOPDthrows) {
+ return throwTypeError;
+ }
+ }
+ }())
+ : throwTypeError;
+
+var hasSymbols = require('has-symbols')();
+var hasProto = require('has-proto')();
+
+var getProto = Object.getPrototypeOf || (
+ hasProto
+ ? function (x) { return x.__proto__; } // eslint-disable-line no-proto
+ : null
+);
+
+var needsEval = {};
+
+var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);
+
+var INTRINSICS = {
+ '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
+ '%Array%': Array,
+ '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
+ '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
+ '%AsyncFromSyncIteratorPrototype%': undefined,
+ '%AsyncFunction%': needsEval,
+ '%AsyncGenerator%': needsEval,
+ '%AsyncGeneratorFunction%': needsEval,
+ '%AsyncIteratorPrototype%': needsEval,
+ '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
+ '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
+ '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,
+ '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,
+ '%Boolean%': Boolean,
+ '%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
+ '%Date%': Date,
+ '%decodeURI%': decodeURI,
+ '%decodeURIComponent%': decodeURIComponent,
+ '%encodeURI%': encodeURI,
+ '%encodeURIComponent%': encodeURIComponent,
+ '%Error%': Error,
+ '%eval%': eval, // eslint-disable-line no-eval
+ '%EvalError%': EvalError,
+ '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
+ '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
+ '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
+ '%Function%': $Function,
+ '%GeneratorFunction%': needsEval,
+ '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
+ '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
+ '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
+ '%isFinite%': isFinite,
+ '%isNaN%': isNaN,
+ '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
+ '%JSON%': typeof JSON === 'object' ? JSON : undefined,
+ '%Map%': typeof Map === 'undefined' ? undefined : Map,
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),
+ '%Math%': Math,
+ '%Number%': Number,
+ '%Object%': Object,
+ '%parseFloat%': parseFloat,
+ '%parseInt%': parseInt,
+ '%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
+ '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
+ '%RangeError%': RangeError,
+ '%ReferenceError%': ReferenceError,
+ '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
+ '%RegExp%': RegExp,
+ '%Set%': typeof Set === 'undefined' ? undefined : Set,
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),
+ '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
+ '%String%': String,
+ '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,
+ '%Symbol%': hasSymbols ? Symbol : undefined,
+ '%SyntaxError%': $SyntaxError,
+ '%ThrowTypeError%': ThrowTypeError,
+ '%TypedArray%': TypedArray,
+ '%TypeError%': $TypeError,
+ '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
+ '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
+ '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
+ '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
+ '%URIError%': URIError,
+ '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
+ '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
+ '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
+};
+
+if (getProto) {
+ try {
+ null.error; // eslint-disable-line no-unused-expressions
+ } catch (e) {
+ // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
+ var errorProto = getProto(getProto(e));
+ INTRINSICS['%Error.prototype%'] = errorProto;
+ }
+}
+
+var doEval = function doEval(name) {
+ var value;
+ if (name === '%AsyncFunction%') {
+ value = getEvalledConstructor('async function () {}');
+ } else if (name === '%GeneratorFunction%') {
+ value = getEvalledConstructor('function* () {}');
+ } else if (name === '%AsyncGeneratorFunction%') {
+ value = getEvalledConstructor('async function* () {}');
+ } else if (name === '%AsyncGenerator%') {
+ var fn = doEval('%AsyncGeneratorFunction%');
+ if (fn) {
+ value = fn.prototype;
+ }
+ } else if (name === '%AsyncIteratorPrototype%') {
+ var gen = doEval('%AsyncGenerator%');
+ if (gen && getProto) {
+ value = getProto(gen.prototype);
+ }
+ }
+
+ INTRINSICS[name] = value;
+
+ return value;
+};
+
+var LEGACY_ALIASES = {
+ '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
+ '%ArrayPrototype%': ['Array', 'prototype'],
+ '%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
+ '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
+ '%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
+ '%ArrayProto_values%': ['Array', 'prototype', 'values'],
+ '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
+ '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
+ '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
+ '%BooleanPrototype%': ['Boolean', 'prototype'],
+ '%DataViewPrototype%': ['DataView', 'prototype'],
+ '%DatePrototype%': ['Date', 'prototype'],
+ '%ErrorPrototype%': ['Error', 'prototype'],
+ '%EvalErrorPrototype%': ['EvalError', 'prototype'],
+ '%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
+ '%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
+ '%FunctionPrototype%': ['Function', 'prototype'],
+ '%Generator%': ['GeneratorFunction', 'prototype'],
+ '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
+ '%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
+ '%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
+ '%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
+ '%JSONParse%': ['JSON', 'parse'],
+ '%JSONStringify%': ['JSON', 'stringify'],
+ '%MapPrototype%': ['Map', 'prototype'],
+ '%NumberPrototype%': ['Number', 'prototype'],
+ '%ObjectPrototype%': ['Object', 'prototype'],
+ '%ObjProto_toString%': ['Object', 'prototype', 'toString'],
+ '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
+ '%PromisePrototype%': ['Promise', 'prototype'],
+ '%PromiseProto_then%': ['Promise', 'prototype', 'then'],
+ '%Promise_all%': ['Promise', 'all'],
+ '%Promise_reject%': ['Promise', 'reject'],
+ '%Promise_resolve%': ['Promise', 'resolve'],
+ '%RangeErrorPrototype%': ['RangeError', 'prototype'],
+ '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
+ '%RegExpPrototype%': ['RegExp', 'prototype'],
+ '%SetPrototype%': ['Set', 'prototype'],
+ '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
+ '%StringPrototype%': ['String', 'prototype'],
+ '%SymbolPrototype%': ['Symbol', 'prototype'],
+ '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
+ '%TypedArrayPrototype%': ['TypedArray', 'prototype'],
+ '%TypeErrorPrototype%': ['TypeError', 'prototype'],
+ '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
+ '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
+ '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
+ '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
+ '%URIErrorPrototype%': ['URIError', 'prototype'],
+ '%WeakMapPrototype%': ['WeakMap', 'prototype'],
+ '%WeakSetPrototype%': ['WeakSet', 'prototype']
+};
+
+var bind = require('function-bind');
+var hasOwn = require('hasown');
+var $concat = bind.call(Function.call, Array.prototype.concat);
+var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
+var $replace = bind.call(Function.call, String.prototype.replace);
+var $strSlice = bind.call(Function.call, String.prototype.slice);
+var $exec = bind.call(Function.call, RegExp.prototype.exec);
+
+/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
+var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
+var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
+var stringToPath = function stringToPath(string) {
+ var first = $strSlice(string, 0, 1);
+ var last = $strSlice(string, -1);
+ if (first === '%' && last !== '%') {
+ throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
+ } else if (last === '%' && first !== '%') {
+ throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
+ }
+ var result = [];
+ $replace(string, rePropName, function (match, number, quote, subString) {
+ result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
+ });
+ return result;
+};
+/* end adaptation */
+
+var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
+ var intrinsicName = name;
+ var alias;
+ if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
+ alias = LEGACY_ALIASES[intrinsicName];
+ intrinsicName = '%' + alias[0] + '%';
+ }
+
+ if (hasOwn(INTRINSICS, intrinsicName)) {
+ var value = INTRINSICS[intrinsicName];
+ if (value === needsEval) {
+ value = doEval(intrinsicName);
+ }
+ if (typeof value === 'undefined' && !allowMissing) {
+ throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
+ }
+
+ return {
+ alias: alias,
+ name: intrinsicName,
+ value: value
+ };
+ }
+
+ throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
+};
+
+module.exports = function GetIntrinsic(name, allowMissing) {
+ if (typeof name !== 'string' || name.length === 0) {
+ throw new $TypeError('intrinsic name must be a non-empty string');
+ }
+ if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
+ throw new $TypeError('"allowMissing" argument must be a boolean');
+ }
+
+ if ($exec(/^%?[^%]*%?$/, name) === null) {
+ throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
+ }
+ var parts = stringToPath(name);
+ var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
+
+ var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
+ var intrinsicRealName = intrinsic.name;
+ var value = intrinsic.value;
+ var skipFurtherCaching = false;
+
+ var alias = intrinsic.alias;
+ if (alias) {
+ intrinsicBaseName = alias[0];
+ $spliceApply(parts, $concat([0, 1], alias));
+ }
+
+ for (var i = 1, isOwn = true; i < parts.length; i += 1) {
+ var part = parts[i];
+ var first = $strSlice(part, 0, 1);
+ var last = $strSlice(part, -1);
+ if (
+ (
+ (first === '"' || first === "'" || first === '`')
+ || (last === '"' || last === "'" || last === '`')
+ )
+ && first !== last
+ ) {
+ throw new $SyntaxError('property names with quotes must have matching quotes');
+ }
+ if (part === 'constructor' || !isOwn) {
+ skipFurtherCaching = true;
+ }
+
+ intrinsicBaseName += '.' + part;
+ intrinsicRealName = '%' + intrinsicBaseName + '%';
+
+ if (hasOwn(INTRINSICS, intrinsicRealName)) {
+ value = INTRINSICS[intrinsicRealName];
+ } else if (value != null) {
+ if (!(part in value)) {
+ if (!allowMissing) {
+ throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
+ }
+ return void undefined;
+ }
+ if ($gOPD && (i + 1) >= parts.length) {
+ var desc = $gOPD(value, part);
+ isOwn = !!desc;
+
+ // By convention, when a data property is converted to an accessor
+ // property to emulate a data property that does not suffer from
+ // the override mistake, that accessor's getter is marked with
+ // an `originalValue` property. Here, when we detect this, we
+ // uphold the illusion by pretending to see that original data
+ // property, i.e., returning the value rather than the getter
+ // itself.
+ if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
+ value = desc.get;
+ } else {
+ value = value[part];
+ }
+ } else {
+ isOwn = hasOwn(value, part);
+ value = value[part];
+ }
+
+ if (isOwn && !skipFurtherCaching) {
+ INTRINSICS[intrinsicRealName] = value;
+ }
+ }
+ }
+ return value;
+};
diff --git a/client/node_modules/get-intrinsic/package.json b/client/node_modules/get-intrinsic/package.json
new file mode 100644
index 0000000..ffffe09
--- /dev/null
+++ b/client/node_modules/get-intrinsic/package.json
@@ -0,0 +1,93 @@
+{
+ "name": "get-intrinsic",
+ "version": "1.2.2",
+ "description": "Get and robustly cache all JS language-level intrinsics at first require time",
+ "main": "index.js",
+ "exports": {
+ ".": [
+ {
+ "default": "./index.js"
+ },
+ "./index.js"
+ ],
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=.js,.mjs .",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/get-intrinsic.git"
+ },
+ "keywords": [
+ "javascript",
+ "ecmascript",
+ "es",
+ "js",
+ "intrinsic",
+ "getintrinsic",
+ "es-abstract"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/get-intrinsic/issues"
+ },
+ "homepage": "https://github.com/ljharb/get-intrinsic#readme",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "call-bind": "^1.0.5",
+ "es-abstract": "^1.22.2",
+ "es-value-fixtures": "^1.4.2",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "make-async-function": "^1.0.0",
+ "make-async-generator-function": "^1.0.0",
+ "make-generator-function": "^2.0.0",
+ "mock-property": "^1.0.2",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "object-inspect": "^1.13.1",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.7.2"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "testling": {
+ "files": "test/GetIntrinsic.js"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/get-intrinsic/test/GetIntrinsic.js b/client/node_modules/get-intrinsic/test/GetIntrinsic.js
new file mode 100644
index 0000000..1cc08e0
--- /dev/null
+++ b/client/node_modules/get-intrinsic/test/GetIntrinsic.js
@@ -0,0 +1,274 @@
+'use strict';
+
+var GetIntrinsic = require('../');
+
+var test = require('tape');
+var forEach = require('for-each');
+var debug = require('object-inspect');
+var generatorFns = require('make-generator-function')();
+var asyncFns = require('make-async-function').list();
+var asyncGenFns = require('make-async-generator-function')();
+var mockProperty = require('mock-property');
+
+var callBound = require('call-bind/callBound');
+var v = require('es-value-fixtures');
+var $gOPD = require('gopd');
+var DefinePropertyOrThrow = require('es-abstract/2021/DefinePropertyOrThrow');
+
+var $isProto = callBound('%Object.prototype.isPrototypeOf%');
+
+test('export', function (t) {
+ t.equal(typeof GetIntrinsic, 'function', 'it is a function');
+ t.equal(GetIntrinsic.length, 2, 'function has length of 2');
+
+ t.end();
+});
+
+test('throws', function (t) {
+ t['throws'](
+ function () { GetIntrinsic('not an intrinsic'); },
+ SyntaxError,
+ 'nonexistent intrinsic throws a syntax error'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic(''); },
+ TypeError,
+ 'empty string intrinsic throws a type error'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('.'); },
+ SyntaxError,
+ '"just a dot" intrinsic throws a syntax error'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('%String'); },
+ SyntaxError,
+ 'Leading % without trailing % throws a syntax error'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('String%'); },
+ SyntaxError,
+ 'Trailing % without leading % throws a syntax error'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic("String['prototype]"); },
+ SyntaxError,
+ 'Dynamic property access is disallowed for intrinsics (unterminated string)'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('%Proxy.prototype.undefined%'); },
+ TypeError,
+ "Throws when middle part doesn't exist (%Proxy.prototype.undefined%)"
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('%Array.prototype%garbage%'); },
+ SyntaxError,
+ 'Throws with extra percent signs'
+ );
+
+ t['throws'](
+ function () { GetIntrinsic('%Array.prototype%push%'); },
+ SyntaxError,
+ 'Throws with extra percent signs, even on an existing intrinsic'
+ );
+
+ forEach(v.nonStrings, function (nonString) {
+ t['throws'](
+ function () { GetIntrinsic(nonString); },
+ TypeError,
+ debug(nonString) + ' is not a String'
+ );
+ });
+
+ forEach(v.nonBooleans, function (nonBoolean) {
+ t['throws'](
+ function () { GetIntrinsic('%', nonBoolean); },
+ TypeError,
+ debug(nonBoolean) + ' is not a Boolean'
+ );
+ });
+
+ forEach([
+ 'toString',
+ 'propertyIsEnumerable',
+ 'hasOwnProperty'
+ ], function (objectProtoMember) {
+ t['throws'](
+ function () { GetIntrinsic(objectProtoMember); },
+ SyntaxError,
+ debug(objectProtoMember) + ' is not an intrinsic'
+ );
+ });
+
+ t.end();
+});
+
+test('base intrinsics', function (t) {
+ t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object');
+ t.equal(GetIntrinsic('Object'), Object, 'Object yields Object');
+ t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array');
+ t.equal(GetIntrinsic('Array'), Array, 'Array yields Array');
+
+ t.end();
+});
+
+test('dotted paths', function (t) {
+ t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString');
+ t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString');
+ t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push');
+ t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push');
+
+ test('underscore paths are aliases for dotted paths', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) {
+ var original = GetIntrinsic('%ObjProto_toString%');
+
+ forEach([
+ '%Object.prototype.toString%',
+ 'Object.prototype.toString',
+ '%ObjectPrototype.toString%',
+ 'ObjectPrototype.toString',
+ '%ObjProto_toString%',
+ 'ObjProto_toString'
+ ], function (name) {
+ DefinePropertyOrThrow(Object.prototype, 'toString', {
+ '[[Value]]': function toString() {
+ return original.apply(this, arguments);
+ }
+ });
+ st.equal(GetIntrinsic(name), original, name + ' yields original Object.prototype.toString');
+ });
+
+ DefinePropertyOrThrow(Object.prototype, 'toString', { '[[Value]]': original });
+ st.end();
+ });
+
+ test('dotted paths cache', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) {
+ var original = GetIntrinsic('%Object.prototype.propertyIsEnumerable%');
+
+ forEach([
+ '%Object.prototype.propertyIsEnumerable%',
+ 'Object.prototype.propertyIsEnumerable',
+ '%ObjectPrototype.propertyIsEnumerable%',
+ 'ObjectPrototype.propertyIsEnumerable'
+ ], function (name) {
+ var restore = mockProperty(Object.prototype, 'propertyIsEnumerable', {
+ value: function propertyIsEnumerable() {
+ return original.apply(this, arguments);
+ }
+ });
+ st.equal(GetIntrinsic(name), original, name + ' yields cached Object.prototype.propertyIsEnumerable');
+
+ restore();
+ });
+
+ st.end();
+ });
+
+ test('dotted path reports correct error', function (st) {
+ st['throws'](function () {
+ GetIntrinsic('%NonExistentIntrinsic.prototype.property%');
+ }, /%NonExistentIntrinsic%/, 'The base intrinsic of %NonExistentIntrinsic.prototype.property% is %NonExistentIntrinsic%');
+
+ st['throws'](function () {
+ GetIntrinsic('%NonExistentIntrinsicPrototype.property%');
+ }, /%NonExistentIntrinsicPrototype%/, 'The base intrinsic of %NonExistentIntrinsicPrototype.property% is %NonExistentIntrinsicPrototype%');
+
+ st.end();
+ });
+
+ t.end();
+});
+
+test('accessors', { skip: !$gOPD || typeof Map !== 'function' }, function (t) {
+ var actual = $gOPD(Map.prototype, 'size');
+ t.ok(actual, 'Map.prototype.size has a descriptor');
+ t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function');
+ t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it');
+ t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it');
+
+ t.end();
+});
+
+test('generator functions', { skip: !generatorFns.length }, function (t) {
+ var $GeneratorFunction = GetIntrinsic('%GeneratorFunction%');
+ var $GeneratorFunctionPrototype = GetIntrinsic('%Generator%');
+ var $GeneratorPrototype = GetIntrinsic('%GeneratorPrototype%');
+
+ forEach(generatorFns, function (genFn) {
+ var fnName = genFn.name;
+ fnName = fnName ? "'" + fnName + "'" : 'genFn';
+
+ t.ok(genFn instanceof $GeneratorFunction, fnName + ' instanceof %GeneratorFunction%');
+ t.ok($isProto($GeneratorFunctionPrototype, genFn), '%Generator% is prototype of ' + fnName);
+ t.ok($isProto($GeneratorPrototype, genFn.prototype), '%GeneratorPrototype% is prototype of ' + fnName + '.prototype');
+ });
+
+ t.end();
+});
+
+test('async functions', { skip: !asyncFns.length }, function (t) {
+ var $AsyncFunction = GetIntrinsic('%AsyncFunction%');
+ var $AsyncFunctionPrototype = GetIntrinsic('%AsyncFunctionPrototype%');
+
+ forEach(asyncFns, function (asyncFn) {
+ var fnName = asyncFn.name;
+ fnName = fnName ? "'" + fnName + "'" : 'asyncFn';
+
+ t.ok(asyncFn instanceof $AsyncFunction, fnName + ' instanceof %AsyncFunction%');
+ t.ok($isProto($AsyncFunctionPrototype, asyncFn), '%AsyncFunctionPrototype% is prototype of ' + fnName);
+ });
+
+ t.end();
+});
+
+test('async generator functions', { skip: asyncGenFns.length === 0 }, function (t) {
+ var $AsyncGeneratorFunction = GetIntrinsic('%AsyncGeneratorFunction%');
+ var $AsyncGeneratorFunctionPrototype = GetIntrinsic('%AsyncGenerator%');
+ var $AsyncGeneratorPrototype = GetIntrinsic('%AsyncGeneratorPrototype%');
+
+ forEach(asyncGenFns, function (asyncGenFn) {
+ var fnName = asyncGenFn.name;
+ fnName = fnName ? "'" + fnName + "'" : 'asyncGenFn';
+
+ t.ok(asyncGenFn instanceof $AsyncGeneratorFunction, fnName + ' instanceof %AsyncGeneratorFunction%');
+ t.ok($isProto($AsyncGeneratorFunctionPrototype, asyncGenFn), '%AsyncGenerator% is prototype of ' + fnName);
+ t.ok($isProto($AsyncGeneratorPrototype, asyncGenFn.prototype), '%AsyncGeneratorPrototype% is prototype of ' + fnName + '.prototype');
+ });
+
+ t.end();
+});
+
+test('%ThrowTypeError%', function (t) {
+ var $ThrowTypeError = GetIntrinsic('%ThrowTypeError%');
+
+ t.equal(typeof $ThrowTypeError, 'function', 'is a function');
+ t['throws'](
+ $ThrowTypeError,
+ TypeError,
+ '%ThrowTypeError% throws a TypeError'
+ );
+
+ t.end();
+});
+
+test('allowMissing', { skip: asyncGenFns.length > 0 }, function (t) {
+ t['throws'](
+ function () { GetIntrinsic('%AsyncGeneratorPrototype%'); },
+ TypeError,
+ 'throws when missing'
+ );
+
+ t.equal(
+ GetIntrinsic('%AsyncGeneratorPrototype%', true),
+ undefined,
+ 'does not throw when allowMissing'
+ );
+
+ t.end();
+});
diff --git a/client/node_modules/get-stream/buffer-stream.js b/client/node_modules/get-stream/buffer-stream.js
new file mode 100644
index 0000000..2dd7574
--- /dev/null
+++ b/client/node_modules/get-stream/buffer-stream.js
@@ -0,0 +1,52 @@
+'use strict';
+const {PassThrough: PassThroughStream} = require('stream');
+
+module.exports = options => {
+ options = {...options};
+
+ const {array} = options;
+ let {encoding} = options;
+ const isBuffer = encoding === 'buffer';
+ let objectMode = false;
+
+ if (array) {
+ objectMode = !(encoding || isBuffer);
+ } else {
+ encoding = encoding || 'utf8';
+ }
+
+ if (isBuffer) {
+ encoding = null;
+ }
+
+ const stream = new PassThroughStream({objectMode});
+
+ if (encoding) {
+ stream.setEncoding(encoding);
+ }
+
+ let length = 0;
+ const chunks = [];
+
+ stream.on('data', chunk => {
+ chunks.push(chunk);
+
+ if (objectMode) {
+ length = chunks.length;
+ } else {
+ length += chunk.length;
+ }
+ });
+
+ stream.getBufferedValue = () => {
+ if (array) {
+ return chunks;
+ }
+
+ return isBuffer ? Buffer.concat(chunks, length) : chunks.join('');
+ };
+
+ stream.getBufferedLength = () => length;
+
+ return stream;
+};
diff --git a/client/node_modules/get-stream/index.d.ts b/client/node_modules/get-stream/index.d.ts
new file mode 100644
index 0000000..7b98134
--- /dev/null
+++ b/client/node_modules/get-stream/index.d.ts
@@ -0,0 +1,108 @@
+/// <reference types="node"/>
+import {Stream} from 'stream';
+
+declare class MaxBufferErrorClass extends Error {
+ readonly name: 'MaxBufferError';
+ constructor();
+}
+
+declare namespace getStream {
+ interface Options {
+ /**
+ Maximum length of the returned string. If it exceeds this value before the stream ends, the promise will be rejected with a `MaxBufferError` error.
+
+ @default Infinity
+ */
+ readonly maxBuffer?: number;
+ }
+
+ interface OptionsWithEncoding<EncodingType = BufferEncoding> extends Options {
+ /**
+ [Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream.
+
+ @default 'utf8'
+ */
+ readonly encoding?: EncodingType;
+ }
+
+ type MaxBufferError = MaxBufferErrorClass;
+}
+
+declare const getStream: {
+ /**
+ Get the `stream` as a string.
+
+ @returns A promise that resolves when the end event fires on the stream, indicating that there is no more data to be read. The stream is switched to flowing mode.
+
+ @example
+ ```
+ import * as fs from 'fs';
+ import getStream = require('get-stream');
+
+ (async () => {
+ const stream = fs.createReadStream('unicorn.txt');
+
+ console.log(await getStream(stream));
+ // ,,))))))));,
+ // __)))))))))))))),
+ // \|/ -\(((((''''((((((((.
+ // -*-==//////(('' . `)))))),
+ // /|\ ))| o ;-. '((((( ,(,
+ // ( `| / ) ;))))' ,_))^;(~
+ // | | | ,))((((_ _____------~~~-. %,;(;(>';'~
+ // o_); ; )))(((` ~---~ `:: \ %%~~)(v;(`('~
+ // ; ''''```` `: `:::|\,__,%% );`'; ~
+ // | _ ) / `:|`----' `-'
+ // ______/\/~ | / /
+ // /~;;.____/;;' / ___--,-( `;;;/
+ // / // _;______;'------~~~~~ /;;/\ /
+ // // | | / ; \;;,\
+ // (<_ | ; /',/-----' _>
+ // \_| ||_ //~;~~~~~~~~~
+ // `\_| (,~~
+ // \~\
+ // ~~
+ })();
+ ```
+ */
+ (stream: Stream, options?: getStream.OptionsWithEncoding): Promise<string>;
+
+ /**
+ Get the `stream` as a buffer.
+
+ It honors the `maxBuffer` option as above, but it refers to byte length rather than string length.
+ */
+ buffer(
+ stream: Stream,
+ options?: getStream.OptionsWithEncoding
+ ): Promise<Buffer>;
+
+ /**
+ Get the `stream` as an array of values.
+
+ It honors both the `maxBuffer` and `encoding` options. The behavior changes slightly based on the encoding chosen:
+
+ - When `encoding` is unset, it assumes an [object mode stream](https://nodesource.com/blog/understanding-object-streams/) and collects values emitted from `stream` unmodified. In this case `maxBuffer` refers to the number of items in the array (not the sum of their sizes).
+ - When `encoding` is set to `buffer`, it collects an array of buffers. `maxBuffer` refers to the summed byte lengths of every buffer in the array.
+ - When `encoding` is set to anything else, it collects an array of strings. `maxBuffer` refers to the summed character lengths of every string in the array.
+ */
+ array<StreamObjectModeType>(
+ stream: Stream,
+ options?: getStream.Options
+ ): Promise<StreamObjectModeType[]>;
+ array(
+ stream: Stream,
+ options: getStream.OptionsWithEncoding<'buffer'>
+ ): Promise<Buffer[]>;
+ array(
+ stream: Stream,
+ options: getStream.OptionsWithEncoding<BufferEncoding>
+ ): Promise<string[]>;
+
+ MaxBufferError: typeof MaxBufferErrorClass;
+
+ // TODO: Remove this for the next major release
+ default: typeof getStream;
+};
+
+export = getStream;
diff --git a/client/node_modules/get-stream/index.js b/client/node_modules/get-stream/index.js
new file mode 100644
index 0000000..71f3991
--- /dev/null
+++ b/client/node_modules/get-stream/index.js
@@ -0,0 +1,60 @@
+'use strict';
+const {constants: BufferConstants} = require('buffer');
+const pump = require('pump');
+const bufferStream = require('./buffer-stream');
+
+class MaxBufferError extends Error {
+ constructor() {
+ super('maxBuffer exceeded');
+ this.name = 'MaxBufferError';
+ }
+}
+
+async function getStream(inputStream, options) {
+ if (!inputStream) {
+ return Promise.reject(new Error('Expected a stream'));
+ }
+
+ options = {
+ maxBuffer: Infinity,
+ ...options
+ };
+
+ const {maxBuffer} = options;
+
+ let stream;
+ await new Promise((resolve, reject) => {
+ const rejectPromise = error => {
+ // Don't retrieve an oversized buffer.
+ if (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {
+ error.bufferedData = stream.getBufferedValue();
+ }
+
+ reject(error);
+ };
+
+ stream = pump(inputStream, bufferStream(options), error => {
+ if (error) {
+ rejectPromise(error);
+ return;
+ }
+
+ resolve();
+ });
+
+ stream.on('data', () => {
+ if (stream.getBufferedLength() > maxBuffer) {
+ rejectPromise(new MaxBufferError());
+ }
+ });
+ });
+
+ return stream.getBufferedValue();
+}
+
+module.exports = getStream;
+// TODO: Remove this for the next major release
+module.exports.default = getStream;
+module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});
+module.exports.array = (stream, options) => getStream(stream, {...options, array: true});
+module.exports.MaxBufferError = MaxBufferError;
diff --git a/client/node_modules/get-stream/license b/client/node_modules/get-stream/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/get-stream/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/get-stream/package.json b/client/node_modules/get-stream/package.json
new file mode 100644
index 0000000..e2f1687
--- /dev/null
+++ b/client/node_modules/get-stream/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "get-stream",
+ "version": "5.2.0",
+ "description": "Get a stream as a string, buffer, or array",
+ "license": "MIT",
+ "repository": "sindresorhus/get-stream",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts",
+ "buffer-stream.js"
+ ],
+ "keywords": [
+ "get",
+ "stream",
+ "promise",
+ "concat",
+ "string",
+ "text",
+ "buffer",
+ "read",
+ "data",
+ "consume",
+ "readable",
+ "readablestream",
+ "array",
+ "object"
+ ],
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "devDependencies": {
+ "@types/node": "^12.0.7",
+ "ava": "^2.0.0",
+ "into-stream": "^5.0.0",
+ "tsd": "^0.7.2",
+ "xo": "^0.24.0"
+ }
+}
diff --git a/client/node_modules/get-stream/readme.md b/client/node_modules/get-stream/readme.md
new file mode 100644
index 0000000..7d7565d
--- /dev/null
+++ b/client/node_modules/get-stream/readme.md
@@ -0,0 +1,124 @@
+# get-stream [![Build Status](https://travis-ci.com/sindresorhus/get-stream.svg?branch=master)](https://travis-ci.com/github/sindresorhus/get-stream)
+
+> Get a stream as a string, buffer, or array
+
+## Install
+
+```
+$ npm install get-stream
+```
+
+## Usage
+
+```js
+const fs = require('fs');
+const getStream = require('get-stream');
+
+(async () => {
+ const stream = fs.createReadStream('unicorn.txt');
+
+ console.log(await getStream(stream));
+ /*
+ ,,))))))));,
+ __)))))))))))))),
+ \|/ -\(((((''''((((((((.
+ -*-==//////(('' . `)))))),
+ /|\ ))| o ;-. '((((( ,(,
+ ( `| / ) ;))))' ,_))^;(~
+ | | | ,))((((_ _____------~~~-. %,;(;(>';'~
+ o_); ; )))(((` ~---~ `:: \ %%~~)(v;(`('~
+ ; ''''```` `: `:::|\,__,%% );`'; ~
+ | _ ) / `:|`----' `-'
+ ______/\/~ | / /
+ /~;;.____/;;' / ___--,-( `;;;/
+ / // _;______;'------~~~~~ /;;/\ /
+ // | | / ; \;;,\
+ (<_ | ; /',/-----' _>
+ \_| ||_ //~;~~~~~~~~~
+ `\_| (,~~
+ \~\
+ ~~
+ */
+})();
+```
+
+## API
+
+The methods returns a promise that resolves when the `end` event fires on the stream, indicating that there is no more data to be read. The stream is switched to flowing mode.
+
+### getStream(stream, options?)
+
+Get the `stream` as a string.
+
+#### options
+
+Type: `object`
+
+##### encoding
+
+Type: `string`\
+Default: `'utf8'`
+
+[Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream.
+
+##### maxBuffer
+
+Type: `number`\
+Default: `Infinity`
+
+Maximum length of the returned string. If it exceeds this value before the stream ends, the promise will be rejected with a `getStream.MaxBufferError` error.
+
+### getStream.buffer(stream, options?)
+
+Get the `stream` as a buffer.
+
+It honors the `maxBuffer` option as above, but it refers to byte length rather than string length.
+
+### getStream.array(stream, options?)
+
+Get the `stream` as an array of values.
+
+It honors both the `maxBuffer` and `encoding` options. The behavior changes slightly based on the encoding chosen:
+
+- When `encoding` is unset, it assumes an [object mode stream](https://nodesource.com/blog/understanding-object-streams/) and collects values emitted from `stream` unmodified. In this case `maxBuffer` refers to the number of items in the array (not the sum of their sizes).
+
+- When `encoding` is set to `buffer`, it collects an array of buffers. `maxBuffer` refers to the summed byte lengths of every buffer in the array.
+
+- When `encoding` is set to anything else, it collects an array of strings. `maxBuffer` refers to the summed character lengths of every string in the array.
+
+## Errors
+
+If the input stream emits an `error` event, the promise will be rejected with the error. The buffered data will be attached to the `bufferedData` property of the error.
+
+```js
+(async () => {
+ try {
+ await getStream(streamThatErrorsAtTheEnd('unicorn'));
+ } catch (error) {
+ console.log(error.bufferedData);
+ //=> 'unicorn'
+ }
+})()
+```
+
+## FAQ
+
+### How is this different from [`concat-stream`](https://github.com/maxogden/concat-stream)?
+
+This module accepts a stream instead of being one and returns a promise instead of using a callback. The API is simpler and it only supports returning a string, buffer, or array. It doesn't have a fragile type inference. You explicitly choose what you want. And it doesn't depend on the huge `readable-stream` package.
+
+## Related
+
+- [get-stdin](https://github.com/sindresorhus/get-stdin) - Get stdin as a string or buffer
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-get-stream?utm_source=npm-get-stream&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/global-agent/.flowconfig b/client/node_modules/global-agent/.flowconfig
new file mode 100644
index 0000000..029d8c2
--- /dev/null
+++ b/client/node_modules/global-agent/.flowconfig
@@ -0,0 +1,3 @@
+[ignore]
+.*/node_modules/.*/test/.*
+<PROJECT_ROOT>/dist/.*
diff --git a/client/node_modules/global-agent/LICENSE b/client/node_modules/global-agent/LICENSE
new file mode 100644
index 0000000..5065086
--- /dev/null
+++ b/client/node_modules/global-agent/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2019, Gajus Kuizinas (http://gajus.com/)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the Gajus Kuizinas (http://gajus.com/) nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANUARY BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/global-agent/README.md b/client/node_modules/global-agent/README.md
new file mode 100644
index 0000000..8a8b525
--- /dev/null
+++ b/client/node_modules/global-agent/README.md
@@ -0,0 +1,239 @@
+# global-agent
+
+[![GitSpo Mentions](https://gitspo.com/badges/mentions/gajus/global-agent?style=flat-square)](https://gitspo.com/mentions/gajus/global-agent)
+[![Travis build status](http://img.shields.io/travis/gajus/global-agent/master.svg?style=flat-square)](https://travis-ci.org/gajus/global-agent)
+[![Coveralls](https://img.shields.io/coveralls/gajus/global-agent.svg?style=flat-square)](https://coveralls.io/github/gajus/global-agent)
+[![NPM version](http://img.shields.io/npm/v/global-agent.svg?style=flat-square)](https://www.npmjs.org/package/global-agent)
+[![Canonical Code Style](https://img.shields.io/badge/code%20style-canonical-blue.svg?style=flat-square)](https://github.com/gajus/canonical)
+[![Twitter Follow](https://img.shields.io/twitter/follow/kuizinas.svg?style=social&label=Follow)](https://twitter.com/kuizinas)
+
+Global HTTP/HTTPS proxy configurable using environment variables.
+
+* [Usage](#usage)
+ * [Setup proxy using `global-agent/bootstrap`](#setup-proxy-using-global-agentbootstrap)
+ * [Setup proxy using `bootstrap` routine](#setup-proxy-using-bootstrap-routine)
+ * [Runtime configuration](#runtime-configuration)
+ * [Exclude URLs](#exclude-urls)
+ * [Enable logging](#enable-logging)
+* [API](#api)
+ * [`createGlobalProxyAgent`](#createglobalproxyagent)
+ * [Environment variables](#environment-variables)
+ * [`global.GLOBAL_AGENT`](#globalglobal_agent)
+* [Supported libraries](#supported-libraries)
+* [FAQ](#faq)
+ * [What is the reason `global-agent` overrides explicitly configured HTTP(S) agent?](#what-is-the-reason-global-agent-overrides-explicitly-configured-https-agent)
+ * [What is the reason `global-agent/bootstrap` does not use `HTTP_PROXY`?](#what-is-the-reason-global-agentbootstrap-does-not-use-http_proxy)
+ * [What is the difference from `global-tunnel` and `tunnel`?](#what-is-the-difference-from-global-tunnel-and-tunnel)
+
+## Usage
+
+### Setup proxy using `global-agent/bootstrap`
+
+To configure HTTP proxy:
+
+1. Import `global-agent/bootstrap`.
+1. Export HTTP proxy address as `GLOBAL_AGENT_HTTP_PROXY` environment variable.
+
+Code:
+
+```js
+import 'global-agent/bootstrap';
+
+// or:
+// import {bootstrap} from 'global-agent';
+// bootstrap();
+
+```
+
+Bash:
+
+```bash
+$ export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8080
+
+```
+
+Alternatively, you can preload module using Node.js `--require, -r` configuration, e.g.
+
+```bash
+$ export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8080
+$ node -r 'global-agent/bootstrap' your-script.js
+
+```
+
+### Setup proxy using `bootstrap` routine
+
+Instead of importing a self-initialising script with side-effects as demonstrated in the [setup proxy using `global-agent/bootstrap`](#setup-proxy-using-global-agentbootstrap) documentation, you can import `bootstrap` routine and explicitly evaluate the bootstrap logic, e.g.
+
+```js
+import {
+ bootstrap
+} from 'global-agent';
+
+bootstrap();
+
+```
+
+This is useful if you need to conditionally bootstrap `global-agent`, e.g.
+
+```js
+import {
+ bootstrap
+} from 'global-agent';
+import globalTunnel from 'global-tunnel-ng';
+
+const MAJOR_NODEJS_VERSION = parseInt(process.version.slice(1).split('.')[0], 10);
+
+if (MAJOR_NODEJS_VERSION >= 10) {
+ // `global-agent` works with Node.js v10 and above.
+ bootstrap();
+} else {
+ // `global-tunnel-ng` works only with Node.js v10 and below.
+ globalTunnel.initialize();
+}
+
+```
+
+### Setup proxy using `createGlobalProxyAgent`
+
+If you do not want to use `global.GLOBAL_AGENT` variable, then you can use `createGlobalProxyAgent` to instantiate a controlled instance of `global-agent`, e.g.
+
+```js
+import {
+ createGlobalProxyAgent
+} from 'global-agent';
+
+const globalProxyAgent = createGlobalProxyAgent();
+
+```
+
+Unlike `bootstrap` routine, `createGlobalProxyAgent` factory does not create `global.GLOBAL_AGENT` variable and does not guard against multiple initializations of `global-agent`. The result object of `createGlobalProxyAgent` is equivalent to `global.GLOBAL_AGENT`.
+
+### Runtime configuration
+
+`global-agent/bootstrap` script copies `process.env.GLOBAL_AGENT_HTTP_PROXY` value to `global.GLOBAL_AGENT.HTTP_PROXY` and continues to use the latter variable.
+
+You can override the `global.GLOBAL_AGENT.HTTP_PROXY` value at runtime to change proxy behaviour, e.g.
+
+```js
+http.get('http://127.0.0.1:8000');
+
+global.GLOBAL_AGENT.HTTP_PROXY = 'http://127.0.0.1:8001';
+
+http.get('http://127.0.0.1:8000');
+
+global.GLOBAL_AGENT.HTTP_PROXY = 'http://127.0.0.1:8002';
+
+```
+
+The first HTTP request is going to use http://127.0.0.1:8001 proxy and the secord request is going to use http://127.0.0.1:8002.
+
+All `global-agent` configuration is available under `global.GLOBAL_AGENT` namespace.
+
+### Exclude URLs
+
+The `GLOBAL_AGENT_NO_PROXY` environment variable specifies a pattern of URLs that should be excluded from proxying. `GLOBAL_AGENT_NO_PROXY` value is a comma-separated list of domain names. Asterisks can be used as wildcards, e.g.
+
+```bash
+export GLOBAL_AGENT_NO_PROXY='*.foo.com,baz.com'
+
+```
+
+says to contact all machines with the 'foo.com' TLD and 'baz.com' domains directly.
+
+### Separate proxy for HTTPS
+
+The environment variable `GLOBAL_AGENT_HTTPS_PROXY` can be set to specify a separate proxy for HTTPS requests. When this variable is not set `GLOBAL_AGENT_HTTP_PROXY` is used for both HTTP and HTTPS requests.
+
+### Enable logging
+
+`global-agent` is using [`roarr`](https://www.npmjs.com/package/roarr) logger to log HTTP requests and response (HTTP status code and headers), e.g.
+
+```json
+{"context":{"program":"global-agent","namespace":"Agent","logLevel":10,"destination":"http://gajus.com","proxy":"http://127.0.0.1:8076"},"message":"proxying request","sequence":1,"time":1556269669663,"version":"1.0.0"}
+{"context":{"program":"global-agent","namespace":"Agent","logLevel":10,"headers":{"content-type":"text/plain","content-length":"2","date":"Fri, 26 Apr 2019 12:07:50 GMT","connection":"close"},"requestId":6,"statusCode":200},"message":"proxying response","sequence":2,"time":1557133856955,"version":"1.0.0"}
+
+```
+
+Export `ROARR_LOG=true` environment variable to enable log printing to stdout.
+
+Use [`roarr-cli`](https://github.com/gajus/roarr-cli) program to pretty-print the logs.
+
+## API
+
+### `createGlobalProxyAgent`
+
+```js
+/**
+ * @property environmentVariableNamespace Defines namespace of `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` environment variables. (Default: `GLOBAL_AGENT_`)
+ * @property forceGlobalAgent Forces to use `global-agent` HTTP(S) agent even when request was explicitly constructed with another agent. (Default: `true`)
+ * @property socketConnectionTimeout Destroys socket if connection is not established within the timeout. (Default: `60000`)
+ */
+type ProxyAgentConfigurationInputType = {|
+ +environmentVariableNamespace?: string,
+ +forceGlobalAgent?: boolean,
+ +socketConnectionTimeout?: number,
+|};
+
+(configurationInput: ProxyAgentConfigurationInputType) => ProxyAgentConfigurationType;
+
+```
+
+### Environment variables
+
+|Name|Description|Default|
+|---|---|---|
+|`GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE`|Defines namespace of `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` environment variables.|`GLOBAL_AGENT_`|
+|`GLOBAL_AGENT_FORCE_GLOBAL_AGENT`|Forces to use `global-agent` HTTP(S) agent even when request was explicitly constructed with another agent.|`true`|
+|`GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT`|Destroys socket if connection is not established within the timeout.|`60000`|
+|`${NAMESPACE}_HTTP_PROXY`|Sets the initial proxy controller HTTP_PROXY value.|N/A|
+|`${NAMESPACE}_HTTPS_PROXY`|Sets the initial proxy controller HTTPS_PROXY value.|N/A|
+|`${NAMESPACE}_NO_PROXY`|Sets the initial proxy controller NO_PROXY value.|N/A|
+
+### `global.GLOBAL_AGENT`
+
+`global.GLOBAL_AGENT` is initialized by `bootstrap` routine.
+
+`global.GLOBAL_AGENT` has the following properties:
+
+|Name|Description|Configurable|
+|---|---|---|
+|`HTTP_PROXY`|Yes|Sets HTTP proxy to use.|
+|`HTTPS_PROXY`|Yes|Sets a distinct proxy to use for HTTPS requests.|
+|`NO_PROXY`|Yes|Specifies a pattern of URLs that should be excluded from proxying. See [Exclude URLs](#exclude-urls).|
+
+## Supported libraries
+
+`global-agent` works with all libraries that internally use [`http.request`](https://nodejs.org/api/http.html#http_http_request_options_callback).
+
+`global-agent` has been tested to work with:
+
+* [`got`](https://www.npmjs.com/package/got)
+* [`axios`](https://www.npmjs.com/package/axios)
+* [`request`](https://www.npmjs.com/package/axios)
+
+## FAQ
+
+### What is the reason `global-agent` overrides explicitly configured HTTP(S) agent?
+
+By default, `global-agent` overrides [`agent` property](https://nodejs.org/api/http.html#http_http_request_options_callback) of any HTTP request, even if `agent` property was explicitly set when constructing a HTTP request. This behaviour allows to intercept requests of libraries that use a custom instance of an agent per default (e.g. Stripe SDK [uses an `http(s).globalAgent` instance pre-configured with `keepAlive: true`](https://github.com/stripe/stripe-node/blob/e542902dd8fbe591fe3c3ce07a7e89d1d60e4cf7/lib/StripeResource.js#L11-L12)).
+
+This behaviour can be disabled with `GLOBAL_AGENT_FORCE_GLOBAL_AGENT=false` environment variable. When disabled, then `global-agent` will only set `agent` property when it is not already defined or if `agent` is an instance of `http(s).globalAgent`.
+
+### What is the reason `global-agent/bootstrap` does not use `HTTP_PROXY`?
+
+Some libraries (e.g. [`request`](https://npmjs.org/package/request)) change their behaviour when `HTTP_PROXY` environment variable is present. Using a namespaced environment variable prevents conflicting library behaviour.
+
+You can override this behaviour by configuring `GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE` variable, e.g.
+
+```bash
+$ export GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE=
+
+```
+
+Now script initialized using `global-agent/bootstrap` will use `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` environment variables.
+
+### What is the difference from `global-tunnel` and `tunnel`?
+
+[`global-tunnel`](https://github.com/salesforce/global-tunnel) (including [`global-tunnel-ng`](https://github.com/np-maintain/global-tunnel) and [`tunnel`](https://npmjs.com/package/tunnel)) are designed to support legacy Node.js versions. They use various [workarounds](https://github.com/koichik/node-tunnel/blob/5fb2fb424788597146b7be6729006cad1cf9e9a8/lib/tunnel.js#L134-L144) and rely on [monkey-patching `http.request`, `http.get`, `https.request` and `https.get` methods](https://github.com/np-maintain/global-tunnel/blob/51413dcf0534252b5049ec213105c7063ccc6367/index.js#L302-L338).
+
+In contrast, `global-agent` supports Node.js v10 and above, and does not implements workarounds for the older Node.js versions.
diff --git a/client/node_modules/global-agent/bootstrap.js b/client/node_modules/global-agent/bootstrap.js
new file mode 100644
index 0000000..0204420
--- /dev/null
+++ b/client/node_modules/global-agent/bootstrap.js
@@ -0,0 +1 @@
+require('./dist/index').bootstrap();
diff --git a/client/node_modules/global-agent/dist/Logger.js b/client/node_modules/global-agent/dist/Logger.js
new file mode 100644
index 0000000..a72a177
--- /dev/null
+++ b/client/node_modules/global-agent/dist/Logger.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _roarr = _interopRequireDefault(require("roarr"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const Logger = _roarr.default.child({
+ package: 'global-agent'
+});
+
+var _default = Logger;
+exports.default = _default;
+//# sourceMappingURL=Logger.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/Logger.js.flow b/client/node_modules/global-agent/dist/Logger.js.flow
new file mode 100644
index 0000000..166f1e4
--- /dev/null
+++ b/client/node_modules/global-agent/dist/Logger.js.flow
@@ -0,0 +1,10 @@
+// @flow
+
+import Roarr from 'roarr';
+
+const Logger = Roarr
+ .child({
+ package: 'global-agent',
+ });
+
+export default Logger;
diff --git a/client/node_modules/global-agent/dist/Logger.js.map b/client/node_modules/global-agent/dist/Logger.js.map
new file mode 100644
index 0000000..e31661f
--- /dev/null
+++ b/client/node_modules/global-agent/dist/Logger.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/Logger.js"],"names":["Logger","Roarr","child","package"],"mappings":";;;;;;;AAEA;;;;AAEA,MAAMA,MAAM,GAAGC,eACZC,KADY,CACN;AACLC,EAAAA,OAAO,EAAE;AADJ,CADM,CAAf;;eAKeH,M","sourcesContent":["// @flow\n\nimport Roarr from 'roarr';\n\nconst Logger = Roarr\n .child({\n package: 'global-agent',\n });\n\nexport default Logger;\n"],"file":"Logger.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/Agent.js b/client/node_modules/global-agent/dist/classes/Agent.js
new file mode 100644
index 0000000..ba8cc1a
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/Agent.js
@@ -0,0 +1,174 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _serializeError = require("serialize-error");
+
+var _boolean = require("boolean");
+
+var _Logger = _interopRequireDefault(require("../Logger"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const log = _Logger.default.child({
+ namespace: 'Agent'
+});
+
+let requestId = 0;
+
+class Agent {
+ constructor(isProxyConfigured, mustUrlUseProxy, getUrlProxy, fallbackAgent, socketConnectionTimeout) {
+ this.fallbackAgent = fallbackAgent;
+ this.isProxyConfigured = isProxyConfigured;
+ this.mustUrlUseProxy = mustUrlUseProxy;
+ this.getUrlProxy = getUrlProxy;
+ this.socketConnectionTimeout = socketConnectionTimeout;
+ }
+
+ addRequest(request, configuration) {
+ let requestUrl; // It is possible that addRequest was constructed for a proxied request already, e.g.
+ // "request" package does this when it detects that a proxy should be used
+ // https://github.com/request/request/blob/212570b6971a732b8dd9f3c73354bcdda158a737/request.js#L402
+ // https://gist.github.com/gajus/e2074cd3b747864ffeaabbd530d30218
+
+ if (request.path.startsWith('http://') || request.path.startsWith('https://')) {
+ requestUrl = request.path;
+ } else {
+ requestUrl = this.protocol + '//' + (configuration.hostname || configuration.host) + (configuration.port === 80 || configuration.port === 443 ? '' : ':' + configuration.port) + request.path;
+ }
+
+ if (!this.isProxyConfigured()) {
+ log.trace({
+ destination: requestUrl
+ }, 'not proxying request; GLOBAL_AGENT.HTTP_PROXY is not configured'); // $FlowFixMe It appears that Flow is missing the method description.
+
+ this.fallbackAgent.addRequest(request, configuration);
+ return;
+ }
+
+ if (!this.mustUrlUseProxy(requestUrl)) {
+ log.trace({
+ destination: requestUrl
+ }, 'not proxying request; url matches GLOBAL_AGENT.NO_PROXY'); // $FlowFixMe It appears that Flow is missing the method description.
+
+ this.fallbackAgent.addRequest(request, configuration);
+ return;
+ }
+
+ const currentRequestId = requestId++;
+ const proxy = this.getUrlProxy(requestUrl);
+
+ if (this.protocol === 'http:') {
+ request.path = requestUrl;
+
+ if (proxy.authorization) {
+ request.setHeader('proxy-authorization', 'Basic ' + Buffer.from(proxy.authorization).toString('base64'));
+ }
+ }
+
+ log.trace({
+ destination: requestUrl,
+ proxy: 'http://' + proxy.hostname + ':' + proxy.port,
+ requestId: currentRequestId
+ }, 'proxying request');
+ request.on('error', error => {
+ log.error({
+ error: (0, _serializeError.serializeError)(error)
+ }, 'request error');
+ });
+ request.once('response', response => {
+ log.trace({
+ headers: response.headers,
+ requestId: currentRequestId,
+ statusCode: response.statusCode
+ }, 'proxying response');
+ });
+ request.shouldKeepAlive = false;
+ const connectionConfiguration = {
+ host: configuration.hostname || configuration.host,
+ port: configuration.port || 80,
+ proxy,
+ tls: {}
+ }; // add optional tls options for https requests.
+ // @see https://nodejs.org/docs/latest-v12.x/api/https.html#https_https_request_url_options_callback :
+ // > The following additional options from tls.connect()
+ // > - https://nodejs.org/docs/latest-v12.x/api/tls.html#tls_tls_connect_options_callback -
+ // > are also accepted:
+ // > ca, cert, ciphers, clientCertEngine, crl, dhparam, ecdhCurve, honorCipherOrder,
+ // > key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext.
+
+ if (this.protocol === 'https:') {
+ connectionConfiguration.tls = {
+ ca: configuration.ca,
+ cert: configuration.cert,
+ ciphers: configuration.ciphers,
+ clientCertEngine: configuration.clientCertEngine,
+ crl: configuration.crl,
+ dhparam: configuration.dhparam,
+ ecdhCurve: configuration.ecdhCurve,
+ honorCipherOrder: configuration.honorCipherOrder,
+ key: configuration.key,
+ passphrase: configuration.passphrase,
+ pfx: configuration.pfx,
+ rejectUnauthorized: configuration.rejectUnauthorized,
+ secureOptions: configuration.secureOptions,
+ secureProtocol: configuration.secureProtocol,
+ servername: configuration.servername || connectionConfiguration.host,
+ sessionIdContext: configuration.sessionIdContext
+ }; // This is not ideal because there is no way to override this setting using `tls` configuration if `NODE_TLS_REJECT_UNAUTHORIZED=0`.
+ // However, popular HTTP clients (such as https://github.com/sindresorhus/got) come with pre-configured value for `rejectUnauthorized`,
+ // which makes it impossible to override that value globally and respect `rejectUnauthorized` for specific requests only.
+ //
+ // eslint-disable-next-line no-process-env
+
+ if (typeof process.env.NODE_TLS_REJECT_UNAUTHORIZED === 'string' && (0, _boolean.boolean)(process.env.NODE_TLS_REJECT_UNAUTHORIZED) === false) {
+ connectionConfiguration.tls.rejectUnauthorized = false;
+ }
+ } // $FlowFixMe It appears that Flow is missing the method description.
+
+
+ this.createConnection(connectionConfiguration, (error, socket) => {
+ log.trace({
+ target: connectionConfiguration
+ }, 'connecting'); // @see https://github.com/nodejs/node/issues/5757#issuecomment-305969057
+
+ if (socket) {
+ socket.setTimeout(this.socketConnectionTimeout, () => {
+ socket.destroy();
+ });
+ socket.once('connect', () => {
+ log.trace({
+ target: connectionConfiguration
+ }, 'connected');
+ socket.setTimeout(0);
+ });
+ socket.once('secureConnect', () => {
+ log.trace({
+ target: connectionConfiguration
+ }, 'connected (secure)');
+ socket.setTimeout(0);
+ });
+ }
+
+ if (error) {
+ request.emit('error', error);
+ } else {
+ log.debug('created socket');
+ socket.on('error', socketError => {
+ log.error({
+ error: (0, _serializeError.serializeError)(socketError)
+ }, 'socket error');
+ });
+ request.onSocket(socket);
+ }
+ });
+ }
+
+}
+
+var _default = Agent;
+exports.default = _default;
+//# sourceMappingURL=Agent.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/Agent.js.flow b/client/node_modules/global-agent/dist/classes/Agent.js.flow
new file mode 100644
index 0000000..801dd1f
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/Agent.js.flow
@@ -0,0 +1,212 @@
+// @flow
+
+import {
+ serializeError,
+} from 'serialize-error';
+import {
+ boolean,
+} from 'boolean';
+import Logger from '../Logger';
+import type {
+ AgentType,
+ GetUrlProxyMethodType,
+ IsProxyConfiguredMethodType,
+ MustUrlUseProxyMethodType,
+ ProtocolType,
+} from '../types';
+
+const log = Logger.child({
+ namespace: 'Agent',
+});
+
+let requestId = 0;
+
+class Agent {
+ defaultPort: number;
+
+ protocol: ProtocolType;
+
+ fallbackAgent: AgentType;
+
+ isProxyConfigured: IsProxyConfiguredMethodType;
+
+ mustUrlUseProxy: MustUrlUseProxyMethodType;
+
+ getUrlProxy: GetUrlProxyMethodType;
+
+ socketConnectionTimeout: number;
+
+ constructor (
+ isProxyConfigured: IsProxyConfiguredMethodType,
+ mustUrlUseProxy: MustUrlUseProxyMethodType,
+ getUrlProxy: GetUrlProxyMethodType,
+ fallbackAgent: AgentType,
+ socketConnectionTimeout: number,
+ ) {
+ this.fallbackAgent = fallbackAgent;
+ this.isProxyConfigured = isProxyConfigured;
+ this.mustUrlUseProxy = mustUrlUseProxy;
+ this.getUrlProxy = getUrlProxy;
+ this.socketConnectionTimeout = socketConnectionTimeout;
+ }
+
+ addRequest (request: *, configuration: *) {
+ let requestUrl;
+
+ // It is possible that addRequest was constructed for a proxied request already, e.g.
+ // "request" package does this when it detects that a proxy should be used
+ // https://github.com/request/request/blob/212570b6971a732b8dd9f3c73354bcdda158a737/request.js#L402
+ // https://gist.github.com/gajus/e2074cd3b747864ffeaabbd530d30218
+ if (request.path.startsWith('http://') || request.path.startsWith('https://')) {
+ requestUrl = request.path;
+ } else {
+ requestUrl = this.protocol + '//' + (configuration.hostname || configuration.host) + (configuration.port === 80 || configuration.port === 443 ? '' : ':' + configuration.port) + request.path;
+ }
+
+ if (!this.isProxyConfigured()) {
+ log.trace({
+ destination: requestUrl,
+ }, 'not proxying request; GLOBAL_AGENT.HTTP_PROXY is not configured');
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.fallbackAgent.addRequest(request, configuration);
+
+ return;
+ }
+
+ if (!this.mustUrlUseProxy(requestUrl)) {
+ log.trace({
+ destination: requestUrl,
+ }, 'not proxying request; url matches GLOBAL_AGENT.NO_PROXY');
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.fallbackAgent.addRequest(request, configuration);
+
+ return;
+ }
+
+ const currentRequestId = requestId++;
+
+ const proxy = this.getUrlProxy(requestUrl);
+
+ if (this.protocol === 'http:') {
+ request.path = requestUrl;
+
+ if (proxy.authorization) {
+ request.setHeader('proxy-authorization', 'Basic ' + Buffer.from(proxy.authorization).toString('base64'));
+ }
+ }
+
+ log.trace({
+ destination: requestUrl,
+ proxy: 'http://' + proxy.hostname + ':' + proxy.port,
+ requestId: currentRequestId,
+ }, 'proxying request');
+
+ request.on('error', (error) => {
+ log.error({
+ error: serializeError(error),
+ }, 'request error');
+ });
+
+ request.once('response', (response) => {
+ log.trace({
+ headers: response.headers,
+ requestId: currentRequestId,
+ statusCode: response.statusCode,
+ }, 'proxying response');
+ });
+
+ request.shouldKeepAlive = false;
+
+ const connectionConfiguration = {
+ host: configuration.hostname || configuration.host,
+ port: configuration.port || 80,
+ proxy,
+ tls: {},
+ };
+
+ // add optional tls options for https requests.
+ // @see https://nodejs.org/docs/latest-v12.x/api/https.html#https_https_request_url_options_callback :
+ // > The following additional options from tls.connect()
+ // > - https://nodejs.org/docs/latest-v12.x/api/tls.html#tls_tls_connect_options_callback -
+ // > are also accepted:
+ // > ca, cert, ciphers, clientCertEngine, crl, dhparam, ecdhCurve, honorCipherOrder,
+ // > key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext.
+ if (this.protocol === 'https:') {
+ connectionConfiguration.tls = {
+ ca: configuration.ca,
+ cert: configuration.cert,
+ ciphers: configuration.ciphers,
+ clientCertEngine: configuration.clientCertEngine,
+ crl: configuration.crl,
+ dhparam: configuration.dhparam,
+ ecdhCurve: configuration.ecdhCurve,
+ honorCipherOrder: configuration.honorCipherOrder,
+ key: configuration.key,
+ passphrase: configuration.passphrase,
+ pfx: configuration.pfx,
+ rejectUnauthorized: configuration.rejectUnauthorized,
+ secureOptions: configuration.secureOptions,
+ secureProtocol: configuration.secureProtocol,
+ servername: configuration.servername || connectionConfiguration.host,
+ sessionIdContext: configuration.sessionIdContext,
+ };
+
+ // This is not ideal because there is no way to override this setting using `tls` configuration if `NODE_TLS_REJECT_UNAUTHORIZED=0`.
+ // However, popular HTTP clients (such as https://github.com/sindresorhus/got) come with pre-configured value for `rejectUnauthorized`,
+ // which makes it impossible to override that value globally and respect `rejectUnauthorized` for specific requests only.
+ //
+ // eslint-disable-next-line no-process-env
+ if (typeof process.env.NODE_TLS_REJECT_UNAUTHORIZED === 'string' && boolean(process.env.NODE_TLS_REJECT_UNAUTHORIZED) === false) {
+ connectionConfiguration.tls.rejectUnauthorized = false;
+ }
+ }
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.createConnection(connectionConfiguration, (error, socket) => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connecting');
+
+ // @see https://github.com/nodejs/node/issues/5757#issuecomment-305969057
+ if (socket) {
+ socket.setTimeout(this.socketConnectionTimeout, () => {
+ socket.destroy();
+ });
+
+ socket.once('connect', () => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connected');
+
+ socket.setTimeout(0);
+ });
+
+ socket.once('secureConnect', () => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connected (secure)');
+
+ socket.setTimeout(0);
+ });
+ }
+
+ if (error) {
+ request.emit('error', error);
+ } else {
+ log.debug('created socket');
+
+ socket.on('error', (socketError) => {
+ log.error({
+ error: serializeError(socketError),
+ }, 'socket error');
+ });
+
+ request.onSocket(socket);
+ }
+ });
+ }
+}
+
+export default Agent;
diff --git a/client/node_modules/global-agent/dist/classes/Agent.js.map b/client/node_modules/global-agent/dist/classes/Agent.js.map
new file mode 100644
index 0000000..af6283e
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/Agent.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/classes/Agent.js"],"names":["log","Logger","child","namespace","requestId","Agent","constructor","isProxyConfigured","mustUrlUseProxy","getUrlProxy","fallbackAgent","socketConnectionTimeout","addRequest","request","configuration","requestUrl","path","startsWith","protocol","hostname","host","port","trace","destination","currentRequestId","proxy","authorization","setHeader","Buffer","from","toString","on","error","once","response","headers","statusCode","shouldKeepAlive","connectionConfiguration","tls","ca","cert","ciphers","clientCertEngine","crl","dhparam","ecdhCurve","honorCipherOrder","key","passphrase","pfx","rejectUnauthorized","secureOptions","secureProtocol","servername","sessionIdContext","process","env","NODE_TLS_REJECT_UNAUTHORIZED","createConnection","socket","target","setTimeout","destroy","emit","debug","socketError","onSocket"],"mappings":"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","sourcesContent":["// @flow\n\nimport {\n serializeError,\n} from 'serialize-error';\nimport {\n boolean,\n} from 'boolean';\nimport Logger from '../Logger';\nimport type {\n AgentType,\n GetUrlProxyMethodType,\n IsProxyConfiguredMethodType,\n MustUrlUseProxyMethodType,\n ProtocolType,\n} from '../types';\n\nconst log = Logger.child({\n namespace: 'Agent',\n});\n\nlet requestId = 0;\n\nclass Agent {\n defaultPort: number;\n\n protocol: ProtocolType;\n\n fallbackAgent: AgentType;\n\n isProxyConfigured: IsProxyConfiguredMethodType;\n\n mustUrlUseProxy: MustUrlUseProxyMethodType;\n\n getUrlProxy: GetUrlProxyMethodType;\n\n socketConnectionTimeout: number;\n\n constructor (\n isProxyConfigured: IsProxyConfiguredMethodType,\n mustUrlUseProxy: MustUrlUseProxyMethodType,\n getUrlProxy: GetUrlProxyMethodType,\n fallbackAgent: AgentType,\n socketConnectionTimeout: number,\n ) {\n this.fallbackAgent = fallbackAgent;\n this.isProxyConfigured = isProxyConfigured;\n this.mustUrlUseProxy = mustUrlUseProxy;\n this.getUrlProxy = getUrlProxy;\n this.socketConnectionTimeout = socketConnectionTimeout;\n }\n\n addRequest (request: *, configuration: *) {\n let requestUrl;\n\n // It is possible that addRequest was constructed for a proxied request already, e.g.\n // \"request\" package does this when it detects that a proxy should be used\n // https://github.com/request/request/blob/212570b6971a732b8dd9f3c73354bcdda158a737/request.js#L402\n // https://gist.github.com/gajus/e2074cd3b747864ffeaabbd530d30218\n if (request.path.startsWith('http://') || request.path.startsWith('https://')) {\n requestUrl = request.path;\n } else {\n requestUrl = this.protocol + '//' + (configuration.hostname || configuration.host) + (configuration.port === 80 || configuration.port === 443 ? '' : ':' + configuration.port) + request.path;\n }\n\n if (!this.isProxyConfigured()) {\n log.trace({\n destination: requestUrl,\n }, 'not proxying request; GLOBAL_AGENT.HTTP_PROXY is not configured');\n\n // $FlowFixMe It appears that Flow is missing the method description.\n this.fallbackAgent.addRequest(request, configuration);\n\n return;\n }\n\n if (!this.mustUrlUseProxy(requestUrl)) {\n log.trace({\n destination: requestUrl,\n }, 'not proxying request; url matches GLOBAL_AGENT.NO_PROXY');\n\n // $FlowFixMe It appears that Flow is missing the method description.\n this.fallbackAgent.addRequest(request, configuration);\n\n return;\n }\n\n const currentRequestId = requestId++;\n\n const proxy = this.getUrlProxy(requestUrl);\n\n if (this.protocol === 'http:') {\n request.path = requestUrl;\n\n if (proxy.authorization) {\n request.setHeader('proxy-authorization', 'Basic ' + Buffer.from(proxy.authorization).toString('base64'));\n }\n }\n\n log.trace({\n destination: requestUrl,\n proxy: 'http://' + proxy.hostname + ':' + proxy.port,\n requestId: currentRequestId,\n }, 'proxying request');\n\n request.on('error', (error) => {\n log.error({\n error: serializeError(error),\n }, 'request error');\n });\n\n request.once('response', (response) => {\n log.trace({\n headers: response.headers,\n requestId: currentRequestId,\n statusCode: response.statusCode,\n }, 'proxying response');\n });\n\n request.shouldKeepAlive = false;\n\n const connectionConfiguration = {\n host: configuration.hostname || configuration.host,\n port: configuration.port || 80,\n proxy,\n tls: {},\n };\n\n // add optional tls options for https requests.\n // @see https://nodejs.org/docs/latest-v12.x/api/https.html#https_https_request_url_options_callback :\n // > The following additional options from tls.connect()\n // > - https://nodejs.org/docs/latest-v12.x/api/tls.html#tls_tls_connect_options_callback -\n // > are also accepted:\n // > ca, cert, ciphers, clientCertEngine, crl, dhparam, ecdhCurve, honorCipherOrder,\n // > key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext.\n if (this.protocol === 'https:') {\n connectionConfiguration.tls = {\n ca: configuration.ca,\n cert: configuration.cert,\n ciphers: configuration.ciphers,\n clientCertEngine: configuration.clientCertEngine,\n crl: configuration.crl,\n dhparam: configuration.dhparam,\n ecdhCurve: configuration.ecdhCurve,\n honorCipherOrder: configuration.honorCipherOrder,\n key: configuration.key,\n passphrase: configuration.passphrase,\n pfx: configuration.pfx,\n rejectUnauthorized: configuration.rejectUnauthorized,\n secureOptions: configuration.secureOptions,\n secureProtocol: configuration.secureProtocol,\n servername: configuration.servername || connectionConfiguration.host,\n sessionIdContext: configuration.sessionIdContext,\n };\n\n // This is not ideal because there is no way to override this setting using `tls` configuration if `NODE_TLS_REJECT_UNAUTHORIZED=0`.\n // However, popular HTTP clients (such as https://github.com/sindresorhus/got) come with pre-configured value for `rejectUnauthorized`,\n // which makes it impossible to override that value globally and respect `rejectUnauthorized` for specific requests only.\n //\n // eslint-disable-next-line no-process-env\n if (typeof process.env.NODE_TLS_REJECT_UNAUTHORIZED === 'string' && boolean(process.env.NODE_TLS_REJECT_UNAUTHORIZED) === false) {\n connectionConfiguration.tls.rejectUnauthorized = false;\n }\n }\n\n // $FlowFixMe It appears that Flow is missing the method description.\n this.createConnection(connectionConfiguration, (error, socket) => {\n log.trace({\n target: connectionConfiguration,\n }, 'connecting');\n\n // @see https://github.com/nodejs/node/issues/5757#issuecomment-305969057\n if (socket) {\n socket.setTimeout(this.socketConnectionTimeout, () => {\n socket.destroy();\n });\n\n socket.once('connect', () => {\n log.trace({\n target: connectionConfiguration,\n }, 'connected');\n\n socket.setTimeout(0);\n });\n\n socket.once('secureConnect', () => {\n log.trace({\n target: connectionConfiguration,\n }, 'connected (secure)');\n\n socket.setTimeout(0);\n });\n }\n\n if (error) {\n request.emit('error', error);\n } else {\n log.debug('created socket');\n\n socket.on('error', (socketError) => {\n log.error({\n error: serializeError(socketError),\n }, 'socket error');\n });\n\n request.onSocket(socket);\n }\n });\n }\n}\n\nexport default Agent;\n"],"file":"Agent.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js
new file mode 100644
index 0000000..6d1c831
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _net = _interopRequireDefault(require("net"));
+
+var _Agent = _interopRequireDefault(require("./Agent"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+class HttpProxyAgent extends _Agent.default {
+ // @see https://github.com/sindresorhus/eslint-plugin-unicorn/issues/169#issuecomment-486980290
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor(...args) {
+ super(...args);
+ this.protocol = 'http:';
+ this.defaultPort = 80;
+ }
+
+ createConnection(configuration, callback) {
+ const socket = _net.default.connect(configuration.proxy.port, configuration.proxy.hostname);
+
+ callback(null, socket);
+ }
+
+}
+
+var _default = HttpProxyAgent;
+exports.default = _default;
+//# sourceMappingURL=HttpProxyAgent.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.flow b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.flow
new file mode 100644
index 0000000..8b9b471
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.flow
@@ -0,0 +1,30 @@
+// @flow
+
+import net from 'net';
+import type {
+ ConnectionCallbackType,
+ ConnectionConfigurationType,
+} from '../types';
+import Agent from './Agent';
+
+class HttpProxyAgent extends Agent {
+ // @see https://github.com/sindresorhus/eslint-plugin-unicorn/issues/169#issuecomment-486980290
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor (...args: *) {
+ super(...args);
+
+ this.protocol = 'http:';
+ this.defaultPort = 80;
+ }
+
+ createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {
+ const socket = net.connect(
+ configuration.proxy.port,
+ configuration.proxy.hostname,
+ );
+
+ callback(null, socket);
+ }
+}
+
+export default HttpProxyAgent;
diff --git a/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.map b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.map
new file mode 100644
index 0000000..f2586b9
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpProxyAgent.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/classes/HttpProxyAgent.js"],"names":["HttpProxyAgent","Agent","constructor","args","protocol","defaultPort","createConnection","configuration","callback","socket","net","connect","proxy","port","hostname"],"mappings":";;;;;;;AAEA;;AAKA;;;;AAEA,MAAMA,cAAN,SAA6BC,cAA7B,CAAmC;AACjC;AACA;AACAC,EAAAA,WAAW,CAAE,GAAGC,IAAL,EAAc;AACvB,UAAM,GAAGA,IAAT;AAEA,SAAKC,QAAL,GAAgB,OAAhB;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACD;;AAEDC,EAAAA,gBAAgB,CAAEC,aAAF,EAA8CC,QAA9C,EAAgF;AAC9F,UAAMC,MAAM,GAAGC,aAAIC,OAAJ,CACbJ,aAAa,CAACK,KAAd,CAAoBC,IADP,EAEbN,aAAa,CAACK,KAAd,CAAoBE,QAFP,CAAf;;AAKAN,IAAAA,QAAQ,CAAC,IAAD,EAAOC,MAAP,CAAR;AACD;;AAjBgC;;eAoBpBT,c","sourcesContent":["// @flow\n\nimport net from 'net';\nimport type {\n ConnectionCallbackType,\n ConnectionConfigurationType,\n} from '../types';\nimport Agent from './Agent';\n\nclass HttpProxyAgent extends Agent {\n // @see https://github.com/sindresorhus/eslint-plugin-unicorn/issues/169#issuecomment-486980290\n // eslint-disable-next-line unicorn/prevent-abbreviations\n constructor (...args: *) {\n super(...args);\n\n this.protocol = 'http:';\n this.defaultPort = 80;\n }\n\n createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {\n const socket = net.connect(\n configuration.proxy.port,\n configuration.proxy.hostname,\n );\n\n callback(null, socket);\n }\n}\n\nexport default HttpProxyAgent;\n"],"file":"HttpProxyAgent.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js
new file mode 100644
index 0000000..1206ffa
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _net = _interopRequireDefault(require("net"));
+
+var _tls = _interopRequireDefault(require("tls"));
+
+var _Agent = _interopRequireDefault(require("./Agent"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+class HttpsProxyAgent extends _Agent.default {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor(...args) {
+ super(...args);
+ this.protocol = 'https:';
+ this.defaultPort = 443;
+ }
+
+ createConnection(configuration, callback) {
+ const socket = _net.default.connect(configuration.proxy.port, configuration.proxy.hostname);
+
+ socket.on('error', error => {
+ callback(error);
+ });
+ socket.once('data', () => {
+ const secureSocket = _tls.default.connect({ ...configuration.tls,
+ socket
+ });
+
+ callback(null, secureSocket);
+ });
+ let connectMessage = '';
+ connectMessage += 'CONNECT ' + configuration.host + ':' + configuration.port + ' HTTP/1.1\r\n';
+ connectMessage += 'Host: ' + configuration.host + ':' + configuration.port + '\r\n';
+
+ if (configuration.proxy.authorization) {
+ connectMessage += 'Proxy-Authorization: Basic ' + Buffer.from(configuration.proxy.authorization).toString('base64') + '\r\n';
+ }
+
+ connectMessage += '\r\n';
+ socket.write(connectMessage);
+ }
+
+}
+
+var _default = HttpsProxyAgent;
+exports.default = _default;
+//# sourceMappingURL=HttpsProxyAgent.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.flow b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.flow
new file mode 100644
index 0000000..24d724f
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.flow
@@ -0,0 +1,54 @@
+// @flow
+
+import net from 'net';
+import tls from 'tls';
+import type {
+ ConnectionCallbackType,
+ ConnectionConfigurationType,
+} from '../types';
+import Agent from './Agent';
+
+class HttpsProxyAgent extends Agent {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor (...args: *) {
+ super(...args);
+
+ this.protocol = 'https:';
+ this.defaultPort = 443;
+ }
+
+ createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {
+ const socket = net.connect(
+ configuration.proxy.port,
+ configuration.proxy.hostname,
+ );
+
+ socket.on('error', (error) => {
+ callback(error);
+ });
+
+ socket.once('data', () => {
+ const secureSocket = tls.connect({
+ ...configuration.tls,
+ socket,
+ });
+
+ callback(null, secureSocket);
+ });
+
+ let connectMessage = '';
+
+ connectMessage += 'CONNECT ' + configuration.host + ':' + configuration.port + ' HTTP/1.1\r\n';
+ connectMessage += 'Host: ' + configuration.host + ':' + configuration.port + '\r\n';
+
+ if (configuration.proxy.authorization) {
+ connectMessage += 'Proxy-Authorization: Basic ' + Buffer.from(configuration.proxy.authorization).toString('base64') + '\r\n';
+ }
+
+ connectMessage += '\r\n';
+
+ socket.write(connectMessage);
+ }
+}
+
+export default HttpsProxyAgent;
diff --git a/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.map b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.map
new file mode 100644
index 0000000..0bad4a9
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/HttpsProxyAgent.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/classes/HttpsProxyAgent.js"],"names":["HttpsProxyAgent","Agent","constructor","args","protocol","defaultPort","createConnection","configuration","callback","socket","net","connect","proxy","port","hostname","on","error","once","secureSocket","tls","connectMessage","host","authorization","Buffer","from","toString","write"],"mappings":";;;;;;;AAEA;;AACA;;AAKA;;;;AAEA,MAAMA,eAAN,SAA8BC,cAA9B,CAAoC;AAClC;AACAC,EAAAA,WAAW,CAAE,GAAGC,IAAL,EAAc;AACvB,UAAM,GAAGA,IAAT;AAEA,SAAKC,QAAL,GAAgB,QAAhB;AACA,SAAKC,WAAL,GAAmB,GAAnB;AACD;;AAEDC,EAAAA,gBAAgB,CAAEC,aAAF,EAA8CC,QAA9C,EAAgF;AAC9F,UAAMC,MAAM,GAAGC,aAAIC,OAAJ,CACbJ,aAAa,CAACK,KAAd,CAAoBC,IADP,EAEbN,aAAa,CAACK,KAAd,CAAoBE,QAFP,CAAf;;AAKAL,IAAAA,MAAM,CAACM,EAAP,CAAU,OAAV,EAAoBC,KAAD,IAAW;AAC5BR,MAAAA,QAAQ,CAACQ,KAAD,CAAR;AACD,KAFD;AAIAP,IAAAA,MAAM,CAACQ,IAAP,CAAY,MAAZ,EAAoB,MAAM;AACxB,YAAMC,YAAY,GAAGC,aAAIR,OAAJ,CAAY,EAC/B,GAAGJ,aAAa,CAACY,GADc;AAE/BV,QAAAA;AAF+B,OAAZ,CAArB;;AAKAD,MAAAA,QAAQ,CAAC,IAAD,EAAOU,YAAP,CAAR;AACD,KAPD;AASA,QAAIE,cAAc,GAAG,EAArB;AAEAA,IAAAA,cAAc,IAAI,aAAab,aAAa,CAACc,IAA3B,GAAkC,GAAlC,GAAwCd,aAAa,CAACM,IAAtD,GAA6D,eAA/E;AACAO,IAAAA,cAAc,IAAI,WAAWb,aAAa,CAACc,IAAzB,GAAgC,GAAhC,GAAsCd,aAAa,CAACM,IAApD,GAA2D,MAA7E;;AAEA,QAAIN,aAAa,CAACK,KAAd,CAAoBU,aAAxB,EAAuC;AACrCF,MAAAA,cAAc,IAAI,gCAAgCG,MAAM,CAACC,IAAP,CAAYjB,aAAa,CAACK,KAAd,CAAoBU,aAAhC,EAA+CG,QAA/C,CAAwD,QAAxD,CAAhC,GAAoG,MAAtH;AACD;;AAEDL,IAAAA,cAAc,IAAI,MAAlB;AAEAX,IAAAA,MAAM,CAACiB,KAAP,CAAaN,cAAb;AACD;;AAxCiC;;eA2CrBpB,e","sourcesContent":["// @flow\n\nimport net from 'net';\nimport tls from 'tls';\nimport type {\n ConnectionCallbackType,\n ConnectionConfigurationType,\n} from '../types';\nimport Agent from './Agent';\n\nclass HttpsProxyAgent extends Agent {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n constructor (...args: *) {\n super(...args);\n\n this.protocol = 'https:';\n this.defaultPort = 443;\n }\n\n createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {\n const socket = net.connect(\n configuration.proxy.port,\n configuration.proxy.hostname,\n );\n\n socket.on('error', (error) => {\n callback(error);\n });\n\n socket.once('data', () => {\n const secureSocket = tls.connect({\n ...configuration.tls,\n socket,\n });\n\n callback(null, secureSocket);\n });\n\n let connectMessage = '';\n\n connectMessage += 'CONNECT ' + configuration.host + ':' + configuration.port + ' HTTP/1.1\\r\\n';\n connectMessage += 'Host: ' + configuration.host + ':' + configuration.port + '\\r\\n';\n\n if (configuration.proxy.authorization) {\n connectMessage += 'Proxy-Authorization: Basic ' + Buffer.from(configuration.proxy.authorization).toString('base64') + '\\r\\n';\n }\n\n connectMessage += '\\r\\n';\n\n socket.write(connectMessage);\n }\n}\n\nexport default HttpsProxyAgent;\n"],"file":"HttpsProxyAgent.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/index.js b/client/node_modules/global-agent/dist/classes/index.js
new file mode 100644
index 0000000..b3889d2
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/index.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "Agent", {
+ enumerable: true,
+ get: function () {
+ return _Agent.default;
+ }
+});
+Object.defineProperty(exports, "HttpProxyAgent", {
+ enumerable: true,
+ get: function () {
+ return _HttpProxyAgent.default;
+ }
+});
+Object.defineProperty(exports, "HttpsProxyAgent", {
+ enumerable: true,
+ get: function () {
+ return _HttpsProxyAgent.default;
+ }
+});
+
+var _Agent = _interopRequireDefault(require("./Agent"));
+
+var _HttpProxyAgent = _interopRequireDefault(require("./HttpProxyAgent"));
+
+var _HttpsProxyAgent = _interopRequireDefault(require("./HttpsProxyAgent"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/classes/index.js.flow b/client/node_modules/global-agent/dist/classes/index.js.flow
new file mode 100644
index 0000000..9e8418a
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/index.js.flow
@@ -0,0 +1,5 @@
+// @flow
+
+export {default as Agent} from './Agent';
+export {default as HttpProxyAgent} from './HttpProxyAgent';
+export {default as HttpsProxyAgent} from './HttpsProxyAgent';
diff --git a/client/node_modules/global-agent/dist/classes/index.js.map b/client/node_modules/global-agent/dist/classes/index.js.map
new file mode 100644
index 0000000..59a05bb
--- /dev/null
+++ b/client/node_modules/global-agent/dist/classes/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/classes/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AACA","sourcesContent":["// @flow\n\nexport {default as Agent} from './Agent';\nexport {default as HttpProxyAgent} from './HttpProxyAgent';\nexport {default as HttpsProxyAgent} from './HttpsProxyAgent';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/errors.js b/client/node_modules/global-agent/dist/errors.js
new file mode 100644
index 0000000..578d19e
--- /dev/null
+++ b/client/node_modules/global-agent/dist/errors.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.UnexpectedStateError = void 0;
+
+var _es6Error = _interopRequireDefault(require("es6-error"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint-disable fp/no-class, fp/no-this */
+class UnexpectedStateError extends _es6Error.default {
+ constructor(message, code = 'UNEXPECTED_STATE_ERROR') {
+ super(message);
+ this.code = code;
+ }
+
+}
+
+exports.UnexpectedStateError = UnexpectedStateError;
+//# sourceMappingURL=errors.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/errors.js.flow b/client/node_modules/global-agent/dist/errors.js.flow
new file mode 100644
index 0000000..d93ba6f
--- /dev/null
+++ b/client/node_modules/global-agent/dist/errors.js.flow
@@ -0,0 +1,15 @@
+// @flow
+
+/* eslint-disable fp/no-class, fp/no-this */
+
+import ExtendableError from 'es6-error';
+
+export class UnexpectedStateError extends ExtendableError {
+ code: string;
+
+ constructor (message: string, code: string = 'UNEXPECTED_STATE_ERROR') {
+ super(message);
+
+ this.code = code;
+ }
+}
diff --git a/client/node_modules/global-agent/dist/errors.js.map b/client/node_modules/global-agent/dist/errors.js.map
new file mode 100644
index 0000000..7388bd1
--- /dev/null
+++ b/client/node_modules/global-agent/dist/errors.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/errors.js"],"names":["UnexpectedStateError","ExtendableError","constructor","message","code"],"mappings":";;;;;;;AAIA;;;;AAFA;AAIO,MAAMA,oBAAN,SAAmCC,iBAAnC,CAAmD;AAGxDC,EAAAA,WAAW,CAAEC,OAAF,EAAmBC,IAAY,GAAG,wBAAlC,EAA4D;AACrE,UAAMD,OAAN;AAEA,SAAKC,IAAL,GAAYA,IAAZ;AACD;;AAPuD","sourcesContent":["// @flow\n\n/* eslint-disable fp/no-class, fp/no-this */\n\nimport ExtendableError from 'es6-error';\n\nexport class UnexpectedStateError extends ExtendableError {\n code: string;\n\n constructor (message: string, code: string = 'UNEXPECTED_STATE_ERROR') {\n super(message);\n\n this.code = code;\n }\n}\n"],"file":"errors.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js
new file mode 100644
index 0000000..c87b9ed
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js
@@ -0,0 +1,175 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _http = _interopRequireDefault(require("http"));
+
+var _https = _interopRequireDefault(require("https"));
+
+var _boolean = require("boolean");
+
+var _semver = _interopRequireDefault(require("semver"));
+
+var _Logger = _interopRequireDefault(require("../Logger"));
+
+var _classes = require("../classes");
+
+var _errors = require("../errors");
+
+var _utilities = require("../utilities");
+
+var _createProxyController = _interopRequireDefault(require("./createProxyController"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const httpGet = _http.default.get;
+const httpRequest = _http.default.request;
+const httpsGet = _https.default.get;
+const httpsRequest = _https.default.request;
+
+const log = _Logger.default.child({
+ namespace: 'createGlobalProxyAgent'
+});
+
+const defaultConfigurationInput = {
+ environmentVariableNamespace: undefined,
+ forceGlobalAgent: undefined,
+ socketConnectionTimeout: 60000
+};
+
+const omitUndefined = subject => {
+ const keys = Object.keys(subject);
+ const result = {};
+
+ for (const key of keys) {
+ const value = subject[key];
+
+ if (value !== undefined) {
+ result[key] = value;
+ }
+ }
+
+ return result;
+};
+
+const createConfiguration = configurationInput => {
+ // eslint-disable-next-line no-process-env
+ const environment = process.env;
+ const defaultConfiguration = {
+ environmentVariableNamespace: typeof environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE === 'string' ? environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE : 'GLOBAL_AGENT_',
+ forceGlobalAgent: typeof environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT === 'string' ? (0, _boolean.boolean)(environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT) : true,
+ socketConnectionTimeout: typeof environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT === 'string' ? Number.parseInt(environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT, 10) : defaultConfigurationInput.socketConnectionTimeout
+ }; // $FlowFixMe
+
+ return { ...defaultConfiguration,
+ ...omitUndefined(configurationInput)
+ };
+};
+
+const createGlobalProxyAgent = (configurationInput = defaultConfigurationInput) => {
+ const configuration = createConfiguration(configurationInput);
+ const proxyController = (0, _createProxyController.default)(); // eslint-disable-next-line no-process-env
+
+ proxyController.HTTP_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTP_PROXY'] || null; // eslint-disable-next-line no-process-env
+
+ proxyController.HTTPS_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTPS_PROXY'] || null; // eslint-disable-next-line no-process-env
+
+ proxyController.NO_PROXY = process.env[configuration.environmentVariableNamespace + 'NO_PROXY'] || null;
+ log.info({
+ configuration,
+ state: proxyController
+ }, 'global agent has been initialized');
+
+ const mustUrlUseProxy = getProxy => {
+ return url => {
+ if (!getProxy()) {
+ return false;
+ }
+
+ if (!proxyController.NO_PROXY) {
+ return true;
+ }
+
+ return !(0, _utilities.isUrlMatchingNoProxy)(url, proxyController.NO_PROXY);
+ };
+ };
+
+ const getUrlProxy = getProxy => {
+ return () => {
+ const proxy = getProxy();
+
+ if (!proxy) {
+ throw new _errors.UnexpectedStateError('HTTP(S) proxy must be configured.');
+ }
+
+ return (0, _utilities.parseProxyUrl)(proxy);
+ };
+ };
+
+ const getHttpProxy = () => {
+ return proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpProxyAgent = class extends _classes.HttpProxyAgent {
+ constructor() {
+ super(() => {
+ return getHttpProxy();
+ }, mustUrlUseProxy(getHttpProxy), getUrlProxy(getHttpProxy), _http.default.globalAgent, configuration.socketConnectionTimeout);
+ }
+
+ };
+ const httpAgent = new BoundHttpProxyAgent();
+
+ const getHttpsProxy = () => {
+ return proxyController.HTTPS_PROXY || proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpsProxyAgent = class extends _classes.HttpsProxyAgent {
+ constructor() {
+ super(() => {
+ return getHttpsProxy();
+ }, mustUrlUseProxy(getHttpsProxy), getUrlProxy(getHttpsProxy), _https.default.globalAgent, configuration.socketConnectionTimeout);
+ }
+
+ };
+ const httpsAgent = new BoundHttpsProxyAgent(); // Overriding globalAgent was added in v11.7.
+ // @see https://nodejs.org/uk/blog/release/v11.7.0/
+
+ if (_semver.default.gte(process.version, 'v11.7.0')) {
+ // @see https://github.com/facebook/flow/issues/7670
+ // $FlowFixMe
+ _http.default.globalAgent = httpAgent; // $FlowFixMe
+
+ _https.default.globalAgent = httpsAgent;
+ } // The reason this logic is used in addition to overriding http(s).globalAgent
+ // is because there is no guarantee that we set http(s).globalAgent variable
+ // before an instance of http(s).Agent has been already constructed by someone,
+ // e.g. Stripe SDK creates instances of http(s).Agent at the top-level.
+ // @see https://github.com/gajus/global-agent/pull/13
+ //
+ // We still want to override http(s).globalAgent when possible to enable logic
+ // in `bindHttpMethod`.
+
+
+ if (_semver.default.gte(process.version, 'v10.0.0')) {
+ // $FlowFixMe
+ _http.default.get = (0, _utilities.bindHttpMethod)(httpGet, httpAgent, configuration.forceGlobalAgent); // $FlowFixMe
+
+ _http.default.request = (0, _utilities.bindHttpMethod)(httpRequest, httpAgent, configuration.forceGlobalAgent); // $FlowFixMe
+
+ _https.default.get = (0, _utilities.bindHttpMethod)(httpsGet, httpsAgent, configuration.forceGlobalAgent); // $FlowFixMe
+
+ _https.default.request = (0, _utilities.bindHttpMethod)(httpsRequest, httpsAgent, configuration.forceGlobalAgent);
+ } else {
+ log.warn('attempt to initialize global-agent in unsupported Node.js version was ignored');
+ }
+
+ return proxyController;
+};
+
+var _default = createGlobalProxyAgent;
+exports.default = _default;
+//# sourceMappingURL=createGlobalProxyAgent.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.flow b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.flow
new file mode 100644
index 0000000..d515a9d
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.flow
@@ -0,0 +1,197 @@
+// @flow
+
+import http from 'http';
+import https from 'https';
+import {
+ boolean as parseBoolean,
+} from 'boolean';
+import semver from 'semver';
+import Logger from '../Logger';
+import {
+ HttpProxyAgent,
+ HttpsProxyAgent,
+} from '../classes';
+import {
+ UnexpectedStateError,
+} from '../errors';
+import {
+ bindHttpMethod,
+ isUrlMatchingNoProxy,
+ parseProxyUrl,
+} from '../utilities';
+import type {
+ ProxyAgentConfigurationInputType,
+ ProxyAgentConfigurationType,
+} from '../types';
+import createProxyController from './createProxyController';
+
+const httpGet = http.get;
+const httpRequest = http.request;
+const httpsGet = https.get;
+const httpsRequest = https.request;
+
+const log = Logger.child({
+ namespace: 'createGlobalProxyAgent',
+});
+
+const defaultConfigurationInput = {
+ environmentVariableNamespace: undefined,
+ forceGlobalAgent: undefined,
+ socketConnectionTimeout: 60000,
+};
+
+const omitUndefined = (subject) => {
+ const keys = Object.keys(subject);
+
+ const result = {};
+
+ for (const key of keys) {
+ const value = subject[key];
+
+ if (value !== undefined) {
+ result[key] = value;
+ }
+ }
+
+ return result;
+};
+
+const createConfiguration = (configurationInput: ProxyAgentConfigurationInputType): ProxyAgentConfigurationType => {
+ // eslint-disable-next-line no-process-env
+ const environment = process.env;
+
+ const defaultConfiguration = {
+ environmentVariableNamespace: typeof environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE === 'string' ? environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE : 'GLOBAL_AGENT_',
+ forceGlobalAgent: typeof environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT === 'string' ? parseBoolean(environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT) : true,
+ socketConnectionTimeout: typeof environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT === 'string' ? Number.parseInt(environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT, 10) : defaultConfigurationInput.socketConnectionTimeout,
+ };
+
+ // $FlowFixMe
+ return {
+ ...defaultConfiguration,
+ ...omitUndefined(configurationInput),
+ };
+};
+
+export default (configurationInput: ProxyAgentConfigurationInputType = defaultConfigurationInput) => {
+ const configuration = createConfiguration(configurationInput);
+
+ const proxyController = createProxyController();
+
+ // eslint-disable-next-line no-process-env
+ proxyController.HTTP_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTP_PROXY'] || null;
+
+ // eslint-disable-next-line no-process-env
+ proxyController.HTTPS_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTPS_PROXY'] || null;
+
+ // eslint-disable-next-line no-process-env
+ proxyController.NO_PROXY = process.env[configuration.environmentVariableNamespace + 'NO_PROXY'] || null;
+
+ log.info({
+ configuration,
+ state: proxyController,
+ }, 'global agent has been initialized');
+
+ const mustUrlUseProxy = (getProxy) => {
+ return (url) => {
+ if (!getProxy()) {
+ return false;
+ }
+
+ if (!proxyController.NO_PROXY) {
+ return true;
+ }
+
+ return !isUrlMatchingNoProxy(url, proxyController.NO_PROXY);
+ };
+ };
+
+ const getUrlProxy = (getProxy) => {
+ return () => {
+ const proxy = getProxy();
+
+ if (!proxy) {
+ throw new UnexpectedStateError('HTTP(S) proxy must be configured.');
+ }
+
+ return parseProxyUrl(proxy);
+ };
+ };
+
+ const getHttpProxy = () => {
+ return proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpProxyAgent = class extends HttpProxyAgent {
+ constructor () {
+ super(
+ () => {
+ return getHttpProxy();
+ },
+ mustUrlUseProxy(getHttpProxy),
+ getUrlProxy(getHttpProxy),
+ http.globalAgent,
+ configuration.socketConnectionTimeout,
+ );
+ }
+ };
+
+ const httpAgent = new BoundHttpProxyAgent();
+
+ const getHttpsProxy = () => {
+ return proxyController.HTTPS_PROXY || proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpsProxyAgent = class extends HttpsProxyAgent {
+ constructor () {
+ super(
+ () => {
+ return getHttpsProxy();
+ },
+ mustUrlUseProxy(getHttpsProxy),
+ getUrlProxy(getHttpsProxy),
+ https.globalAgent,
+ configuration.socketConnectionTimeout,
+ );
+ }
+ };
+
+ const httpsAgent = new BoundHttpsProxyAgent();
+
+ // Overriding globalAgent was added in v11.7.
+ // @see https://nodejs.org/uk/blog/release/v11.7.0/
+ if (semver.gte(process.version, 'v11.7.0')) {
+ // @see https://github.com/facebook/flow/issues/7670
+ // $FlowFixMe
+ http.globalAgent = httpAgent;
+
+ // $FlowFixMe
+ https.globalAgent = httpsAgent;
+ }
+
+ // The reason this logic is used in addition to overriding http(s).globalAgent
+ // is because there is no guarantee that we set http(s).globalAgent variable
+ // before an instance of http(s).Agent has been already constructed by someone,
+ // e.g. Stripe SDK creates instances of http(s).Agent at the top-level.
+ // @see https://github.com/gajus/global-agent/pull/13
+ //
+ // We still want to override http(s).globalAgent when possible to enable logic
+ // in `bindHttpMethod`.
+ if (semver.gte(process.version, 'v10.0.0')) {
+ // $FlowFixMe
+ http.get = bindHttpMethod(httpGet, httpAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ http.request = bindHttpMethod(httpRequest, httpAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ https.get = bindHttpMethod(httpsGet, httpsAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ https.request = bindHttpMethod(httpsRequest, httpsAgent, configuration.forceGlobalAgent);
+ } else {
+ log.warn('attempt to initialize global-agent in unsupported Node.js version was ignored');
+ }
+
+ return proxyController;
+};
diff --git a/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.map b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.map
new file mode 100644
index 0000000..00b69f9
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createGlobalProxyAgent.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createGlobalProxyAgent.js"],"names":["httpGet","http","get","httpRequest","request","httpsGet","https","httpsRequest","log","Logger","child","namespace","defaultConfigurationInput","environmentVariableNamespace","undefined","forceGlobalAgent","socketConnectionTimeout","omitUndefined","subject","keys","Object","result","key","value","createConfiguration","configurationInput","environment","process","env","defaultConfiguration","GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE","GLOBAL_AGENT_FORCE_GLOBAL_AGENT","GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT","Number","parseInt","configuration","proxyController","HTTP_PROXY","HTTPS_PROXY","NO_PROXY","info","state","mustUrlUseProxy","getProxy","url","getUrlProxy","proxy","UnexpectedStateError","getHttpProxy","BoundHttpProxyAgent","HttpProxyAgent","constructor","globalAgent","httpAgent","getHttpsProxy","BoundHttpsProxyAgent","HttpsProxyAgent","httpsAgent","semver","gte","version","warn"],"mappings":"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","sourcesContent":["// @flow\n\nimport http from 'http';\nimport https from 'https';\nimport {\n boolean as parseBoolean,\n} from 'boolean';\nimport semver from 'semver';\nimport Logger from '../Logger';\nimport {\n HttpProxyAgent,\n HttpsProxyAgent,\n} from '../classes';\nimport {\n UnexpectedStateError,\n} from '../errors';\nimport {\n bindHttpMethod,\n isUrlMatchingNoProxy,\n parseProxyUrl,\n} from '../utilities';\nimport type {\n ProxyAgentConfigurationInputType,\n ProxyAgentConfigurationType,\n} from '../types';\nimport createProxyController from './createProxyController';\n\nconst httpGet = http.get;\nconst httpRequest = http.request;\nconst httpsGet = https.get;\nconst httpsRequest = https.request;\n\nconst log = Logger.child({\n namespace: 'createGlobalProxyAgent',\n});\n\nconst defaultConfigurationInput = {\n environmentVariableNamespace: undefined,\n forceGlobalAgent: undefined,\n socketConnectionTimeout: 60000,\n};\n\nconst omitUndefined = (subject) => {\n const keys = Object.keys(subject);\n\n const result = {};\n\n for (const key of keys) {\n const value = subject[key];\n\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return result;\n};\n\nconst createConfiguration = (configurationInput: ProxyAgentConfigurationInputType): ProxyAgentConfigurationType => {\n // eslint-disable-next-line no-process-env\n const environment = process.env;\n\n const defaultConfiguration = {\n environmentVariableNamespace: typeof environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE === 'string' ? environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE : 'GLOBAL_AGENT_',\n forceGlobalAgent: typeof environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT === 'string' ? parseBoolean(environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT) : true,\n socketConnectionTimeout: typeof environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT === 'string' ? Number.parseInt(environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT, 10) : defaultConfigurationInput.socketConnectionTimeout,\n };\n\n // $FlowFixMe\n return {\n ...defaultConfiguration,\n ...omitUndefined(configurationInput),\n };\n};\n\nexport default (configurationInput: ProxyAgentConfigurationInputType = defaultConfigurationInput) => {\n const configuration = createConfiguration(configurationInput);\n\n const proxyController = createProxyController();\n\n // eslint-disable-next-line no-process-env\n proxyController.HTTP_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTP_PROXY'] || null;\n\n // eslint-disable-next-line no-process-env\n proxyController.HTTPS_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTPS_PROXY'] || null;\n\n // eslint-disable-next-line no-process-env\n proxyController.NO_PROXY = process.env[configuration.environmentVariableNamespace + 'NO_PROXY'] || null;\n\n log.info({\n configuration,\n state: proxyController,\n }, 'global agent has been initialized');\n\n const mustUrlUseProxy = (getProxy) => {\n return (url) => {\n if (!getProxy()) {\n return false;\n }\n\n if (!proxyController.NO_PROXY) {\n return true;\n }\n\n return !isUrlMatchingNoProxy(url, proxyController.NO_PROXY);\n };\n };\n\n const getUrlProxy = (getProxy) => {\n return () => {\n const proxy = getProxy();\n\n if (!proxy) {\n throw new UnexpectedStateError('HTTP(S) proxy must be configured.');\n }\n\n return parseProxyUrl(proxy);\n };\n };\n\n const getHttpProxy = () => {\n return proxyController.HTTP_PROXY;\n };\n\n const BoundHttpProxyAgent = class extends HttpProxyAgent {\n constructor () {\n super(\n () => {\n return getHttpProxy();\n },\n mustUrlUseProxy(getHttpProxy),\n getUrlProxy(getHttpProxy),\n http.globalAgent,\n configuration.socketConnectionTimeout,\n );\n }\n };\n\n const httpAgent = new BoundHttpProxyAgent();\n\n const getHttpsProxy = () => {\n return proxyController.HTTPS_PROXY || proxyController.HTTP_PROXY;\n };\n\n const BoundHttpsProxyAgent = class extends HttpsProxyAgent {\n constructor () {\n super(\n () => {\n return getHttpsProxy();\n },\n mustUrlUseProxy(getHttpsProxy),\n getUrlProxy(getHttpsProxy),\n https.globalAgent,\n configuration.socketConnectionTimeout,\n );\n }\n };\n\n const httpsAgent = new BoundHttpsProxyAgent();\n\n // Overriding globalAgent was added in v11.7.\n // @see https://nodejs.org/uk/blog/release/v11.7.0/\n if (semver.gte(process.version, 'v11.7.0')) {\n // @see https://github.com/facebook/flow/issues/7670\n // $FlowFixMe\n http.globalAgent = httpAgent;\n\n // $FlowFixMe\n https.globalAgent = httpsAgent;\n }\n\n // The reason this logic is used in addition to overriding http(s).globalAgent\n // is because there is no guarantee that we set http(s).globalAgent variable\n // before an instance of http(s).Agent has been already constructed by someone,\n // e.g. Stripe SDK creates instances of http(s).Agent at the top-level.\n // @see https://github.com/gajus/global-agent/pull/13\n //\n // We still want to override http(s).globalAgent when possible to enable logic\n // in `bindHttpMethod`.\n if (semver.gte(process.version, 'v10.0.0')) {\n // $FlowFixMe\n http.get = bindHttpMethod(httpGet, httpAgent, configuration.forceGlobalAgent);\n\n // $FlowFixMe\n http.request = bindHttpMethod(httpRequest, httpAgent, configuration.forceGlobalAgent);\n\n // $FlowFixMe\n https.get = bindHttpMethod(httpsGet, httpsAgent, configuration.forceGlobalAgent);\n\n // $FlowFixMe\n https.request = bindHttpMethod(httpsRequest, httpsAgent, configuration.forceGlobalAgent);\n } else {\n log.warn('attempt to initialize global-agent in unsupported Node.js version was ignored');\n }\n\n return proxyController;\n};\n"],"file":"createGlobalProxyAgent.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/createProxyController.js b/client/node_modules/global-agent/dist/factories/createProxyController.js
new file mode 100644
index 0000000..7746081
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createProxyController.js
@@ -0,0 +1,45 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _Logger = _interopRequireDefault(require("../Logger"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const log = _Logger.default.child({
+ namespace: 'createProxyController'
+});
+
+const KNOWN_PROPERTY_NAMES = ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY'];
+
+const createProxyController = () => {
+ // eslint-disable-next-line fp/no-proxy
+ return new Proxy({
+ HTTP_PROXY: null,
+ HTTPS_PROXY: null,
+ NO_PROXY: null
+ }, {
+ set: (subject, name, value) => {
+ if (!KNOWN_PROPERTY_NAMES.includes(name)) {
+ throw new Error('Cannot set an unmapped property "' + name + '".');
+ }
+
+ subject[name] = value;
+ log.info({
+ change: {
+ name,
+ value
+ },
+ newConfiguration: subject
+ }, 'configuration changed');
+ return true;
+ }
+ });
+};
+
+var _default = createProxyController;
+exports.default = _default;
+//# sourceMappingURL=createProxyController.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/createProxyController.js.flow b/client/node_modules/global-agent/dist/factories/createProxyController.js.flow
new file mode 100644
index 0000000..5805ec8
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createProxyController.js.flow
@@ -0,0 +1,46 @@
+// @flow
+
+import Logger from '../Logger';
+
+type ProxyControllerType = {|
+ HTTP_PROXY: string | null,
+ HTTPS_PROXY: string | null,
+ NO_PROXY: string | null,
+|};
+
+const log = Logger.child({
+ namespace: 'createProxyController',
+});
+
+const KNOWN_PROPERTY_NAMES = [
+ 'HTTP_PROXY',
+ 'HTTPS_PROXY',
+ 'NO_PROXY',
+];
+
+export default (): ProxyControllerType => {
+ // eslint-disable-next-line fp/no-proxy
+ return new Proxy({
+ HTTP_PROXY: null,
+ HTTPS_PROXY: null,
+ NO_PROXY: null,
+ }, {
+ set: (subject, name, value) => {
+ if (!KNOWN_PROPERTY_NAMES.includes(name)) {
+ throw new Error('Cannot set an unmapped property "' + name + '".');
+ }
+
+ subject[name] = value;
+
+ log.info({
+ change: {
+ name,
+ value,
+ },
+ newConfiguration: subject,
+ }, 'configuration changed');
+
+ return true;
+ },
+ });
+};
diff --git a/client/node_modules/global-agent/dist/factories/createProxyController.js.map b/client/node_modules/global-agent/dist/factories/createProxyController.js.map
new file mode 100644
index 0000000..da7b0e7
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/createProxyController.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createProxyController.js"],"names":["log","Logger","child","namespace","KNOWN_PROPERTY_NAMES","Proxy","HTTP_PROXY","HTTPS_PROXY","NO_PROXY","set","subject","name","value","includes","Error","info","change","newConfiguration"],"mappings":";;;;;;;AAEA;;;;AAQA,MAAMA,GAAG,GAAGC,gBAAOC,KAAP,CAAa;AACvBC,EAAAA,SAAS,EAAE;AADY,CAAb,CAAZ;;AAIA,MAAMC,oBAAoB,GAAG,CAC3B,YAD2B,EAE3B,aAF2B,EAG3B,UAH2B,CAA7B;;oCAM0C;AACxC;AACA,SAAO,IAAIC,KAAJ,CAAU;AACfC,IAAAA,UAAU,EAAE,IADG;AAEfC,IAAAA,WAAW,EAAE,IAFE;AAGfC,IAAAA,QAAQ,EAAE;AAHK,GAAV,EAIJ;AACDC,IAAAA,GAAG,EAAE,CAACC,OAAD,EAAUC,IAAV,EAAgBC,KAAhB,KAA0B;AAC7B,UAAI,CAACR,oBAAoB,CAACS,QAArB,CAA8BF,IAA9B,CAAL,EAA0C;AACxC,cAAM,IAAIG,KAAJ,CAAU,sCAAsCH,IAAtC,GAA6C,IAAvD,CAAN;AACD;;AAEDD,MAAAA,OAAO,CAACC,IAAD,CAAP,GAAgBC,KAAhB;AAEAZ,MAAAA,GAAG,CAACe,IAAJ,CAAS;AACPC,QAAAA,MAAM,EAAE;AACNL,UAAAA,IADM;AAENC,UAAAA;AAFM,SADD;AAKPK,QAAAA,gBAAgB,EAAEP;AALX,OAAT,EAMG,uBANH;AAQA,aAAO,IAAP;AACD;AAjBA,GAJI,CAAP;AAuBD,C","sourcesContent":["// @flow\n\nimport Logger from '../Logger';\n\ntype ProxyControllerType = {|\n HTTP_PROXY: string | null,\n HTTPS_PROXY: string | null,\n NO_PROXY: string | null,\n|};\n\nconst log = Logger.child({\n namespace: 'createProxyController',\n});\n\nconst KNOWN_PROPERTY_NAMES = [\n 'HTTP_PROXY',\n 'HTTPS_PROXY',\n 'NO_PROXY',\n];\n\nexport default (): ProxyControllerType => {\n // eslint-disable-next-line fp/no-proxy\n return new Proxy({\n HTTP_PROXY: null,\n HTTPS_PROXY: null,\n NO_PROXY: null,\n }, {\n set: (subject, name, value) => {\n if (!KNOWN_PROPERTY_NAMES.includes(name)) {\n throw new Error('Cannot set an unmapped property \"' + name + '\".');\n }\n\n subject[name] = value;\n\n log.info({\n change: {\n name,\n value,\n },\n newConfiguration: subject,\n }, 'configuration changed');\n\n return true;\n },\n });\n};\n"],"file":"createProxyController.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/index.js b/client/node_modules/global-agent/dist/factories/index.js
new file mode 100644
index 0000000..3193022
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/index.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "createGlobalProxyAgent", {
+ enumerable: true,
+ get: function () {
+ return _createGlobalProxyAgent.default;
+ }
+});
+Object.defineProperty(exports, "createProxyController", {
+ enumerable: true,
+ get: function () {
+ return _createProxyController.default;
+ }
+});
+
+var _createGlobalProxyAgent = _interopRequireDefault(require("./createGlobalProxyAgent"));
+
+var _createProxyController = _interopRequireDefault(require("./createProxyController"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/factories/index.js.flow b/client/node_modules/global-agent/dist/factories/index.js.flow
new file mode 100644
index 0000000..c16eca6
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/index.js.flow
@@ -0,0 +1,4 @@
+// @flow
+
+export {default as createGlobalProxyAgent} from './createGlobalProxyAgent';
+export {default as createProxyController} from './createProxyController';
diff --git a/client/node_modules/global-agent/dist/factories/index.js.map b/client/node_modules/global-agent/dist/factories/index.js.map
new file mode 100644
index 0000000..2e61240
--- /dev/null
+++ b/client/node_modules/global-agent/dist/factories/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA;;AACA","sourcesContent":["// @flow\n\nexport {default as createGlobalProxyAgent} from './createGlobalProxyAgent';\nexport {default as createProxyController} from './createProxyController';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/index.js b/client/node_modules/global-agent/dist/index.js
new file mode 100644
index 0000000..242a88a
--- /dev/null
+++ b/client/node_modules/global-agent/dist/index.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "bootstrap", {
+ enumerable: true,
+ get: function () {
+ return _routines.bootstrap;
+ }
+});
+Object.defineProperty(exports, "createGlobalProxyAgent", {
+ enumerable: true,
+ get: function () {
+ return _factories.createGlobalProxyAgent;
+ }
+});
+
+var _routines = require("./routines");
+
+var _factories = require("./factories");
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/index.js.flow b/client/node_modules/global-agent/dist/index.js.flow
new file mode 100644
index 0000000..14da1ba
--- /dev/null
+++ b/client/node_modules/global-agent/dist/index.js.flow
@@ -0,0 +1,4 @@
+// @flow
+
+export {bootstrap} from './routines';
+export {createGlobalProxyAgent} from './factories';
diff --git a/client/node_modules/global-agent/dist/index.js.map b/client/node_modules/global-agent/dist/index.js.map
new file mode 100644
index 0000000..42901df
--- /dev/null
+++ b/client/node_modules/global-agent/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA;;AACA","sourcesContent":["// @flow\n\nexport {bootstrap} from './routines';\nexport {createGlobalProxyAgent} from './factories';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/routines/bootstrap.js b/client/node_modules/global-agent/dist/routines/bootstrap.js
new file mode 100644
index 0000000..444df53
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/bootstrap.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _Logger = _interopRequireDefault(require("../Logger"));
+
+var _factories = require("../factories");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const log = _Logger.default.child({
+ namespace: 'bootstrap'
+});
+
+const bootstrap = configurationInput => {
+ if (global.GLOBAL_AGENT) {
+ log.warn('found global.GLOBAL_AGENT; second attempt to bootstrap global-agent was ignored');
+ return false;
+ }
+
+ global.GLOBAL_AGENT = (0, _factories.createGlobalProxyAgent)(configurationInput);
+ return true;
+};
+
+var _default = bootstrap;
+exports.default = _default;
+//# sourceMappingURL=bootstrap.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/routines/bootstrap.js.flow b/client/node_modules/global-agent/dist/routines/bootstrap.js.flow
new file mode 100644
index 0000000..038feb3
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/bootstrap.js.flow
@@ -0,0 +1,25 @@
+// @flow
+
+import Logger from '../Logger';
+import {
+ createGlobalProxyAgent,
+} from '../factories';
+import type {
+ ProxyAgentConfigurationInputType,
+} from '../types';
+
+const log = Logger.child({
+ namespace: 'bootstrap',
+});
+
+export default (configurationInput?: ProxyAgentConfigurationInputType): boolean => {
+ if (global.GLOBAL_AGENT) {
+ log.warn('found global.GLOBAL_AGENT; second attempt to bootstrap global-agent was ignored');
+
+ return false;
+ }
+
+ global.GLOBAL_AGENT = createGlobalProxyAgent(configurationInput);
+
+ return true;
+};
diff --git a/client/node_modules/global-agent/dist/routines/bootstrap.js.map b/client/node_modules/global-agent/dist/routines/bootstrap.js.map
new file mode 100644
index 0000000..84bbf79
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/bootstrap.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/routines/bootstrap.js"],"names":["log","Logger","child","namespace","configurationInput","global","GLOBAL_AGENT","warn"],"mappings":";;;;;;;AAEA;;AACA;;;;AAOA,MAAMA,GAAG,GAAGC,gBAAOC,KAAP,CAAa;AACvBC,EAAAA,SAAS,EAAE;AADY,CAAb,CAAZ;;kBAIgBC,kB,IAAmE;AACjF,MAAIC,MAAM,CAACC,YAAX,EAAyB;AACvBN,IAAAA,GAAG,CAACO,IAAJ,CAAS,iFAAT;AAEA,WAAO,KAAP;AACD;;AAEDF,EAAAA,MAAM,CAACC,YAAP,GAAsB,uCAAuBF,kBAAvB,CAAtB;AAEA,SAAO,IAAP;AACD,C","sourcesContent":["// @flow\n\nimport Logger from '../Logger';\nimport {\n createGlobalProxyAgent,\n} from '../factories';\nimport type {\n ProxyAgentConfigurationInputType,\n} from '../types';\n\nconst log = Logger.child({\n namespace: 'bootstrap',\n});\n\nexport default (configurationInput?: ProxyAgentConfigurationInputType): boolean => {\n if (global.GLOBAL_AGENT) {\n log.warn('found global.GLOBAL_AGENT; second attempt to bootstrap global-agent was ignored');\n\n return false;\n }\n\n global.GLOBAL_AGENT = createGlobalProxyAgent(configurationInput);\n\n return true;\n};\n"],"file":"bootstrap.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/routines/index.js b/client/node_modules/global-agent/dist/routines/index.js
new file mode 100644
index 0000000..2ae1be2
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/index.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "bootstrap", {
+ enumerable: true,
+ get: function () {
+ return _bootstrap.default;
+ }
+});
+
+var _bootstrap = _interopRequireDefault(require("./bootstrap"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/routines/index.js.flow b/client/node_modules/global-agent/dist/routines/index.js.flow
new file mode 100644
index 0000000..e47a8a0
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/index.js.flow
@@ -0,0 +1,3 @@
+// @flow
+
+export {default as bootstrap} from './bootstrap';
diff --git a/client/node_modules/global-agent/dist/routines/index.js.map b/client/node_modules/global-agent/dist/routines/index.js.map
new file mode 100644
index 0000000..97295d9
--- /dev/null
+++ b/client/node_modules/global-agent/dist/routines/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/routines/index.js"],"names":[],"mappings":";;;;;;;;;;;;AAEA","sourcesContent":["// @flow\n\nexport {default as bootstrap} from './bootstrap';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/types.js b/client/node_modules/global-agent/dist/types.js
new file mode 100644
index 0000000..fb07a95
--- /dev/null
+++ b/client/node_modules/global-agent/dist/types.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var _net = require("net");
+
+var _tls = require("tls");
+
+var _http = require("http");
+
+var _https = require("https");
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/types.js.flow b/client/node_modules/global-agent/dist/types.js.flow
new file mode 100644
index 0000000..e2f1a99
--- /dev/null
+++ b/client/node_modules/global-agent/dist/types.js.flow
@@ -0,0 +1,66 @@
+// @flow
+
+import {
+ Socket,
+} from 'net';
+import {
+ TLSSocket,
+} from 'tls';
+import {
+ Agent as HttpAgent,
+} from 'http';
+import {
+ Agent as HttpsAgent,
+} from 'https';
+
+export type ProxyConfigurationType = {|
+ +authorization: string,
+ +hostname: string,
+ +port: number,
+|};
+
+export type TlsConfigurationType = {|
+ +ca?: string,
+ +cert?: string,
+ +ciphers?: string,
+ +clientCertEngine?: string,
+ +crl?: string,
+ +dhparam?: string,
+ +ecdhCurve?: string,
+ +honorCipherOrder?: boolean,
+ +key?: string,
+ +passphrase?: string,
+ +pfx?: string,
+ +rejectUnauthorized?: boolean,
+ +secureOptions?: number,
+ +secureProtocol?: string,
+ +servername?: string,
+ +sessionIdContext?: string,
+|};
+
+export type ConnectionConfigurationType = {|
+ +host: string,
+ +port: number,
+ +tls?: TlsConfigurationType,
+ +proxy: ProxyConfigurationType,
+|};
+
+export type ConnectionCallbackType = (error: Error | null, socket?: Socket | TLSSocket) => void;
+
+export type AgentType = HttpAgent | HttpsAgent;
+export type IsProxyConfiguredMethodType = () => boolean;
+export type MustUrlUseProxyMethodType = (url: string) => boolean;
+export type GetUrlProxyMethodType = (url: string) => ProxyConfigurationType;
+export type ProtocolType = 'http:' | 'https:';
+
+export type ProxyAgentConfigurationInputType = {|
+ +environmentVariableNamespace?: string,
+ +forceGlobalAgent?: boolean,
+ +socketConnectionTimeout?: number,
+|};
+
+export type ProxyAgentConfigurationType = {|
+ +environmentVariableNamespace: string,
+ +forceGlobalAgent: boolean,
+ +socketConnectionTimeout: number,
+|};
diff --git a/client/node_modules/global-agent/dist/types.js.map b/client/node_modules/global-agent/dist/types.js.map
new file mode 100644
index 0000000..46e65bc
--- /dev/null
+++ b/client/node_modules/global-agent/dist/types.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/types.js"],"names":[],"mappings":";;AAEA;;AAGA;;AAGA;;AAGA","sourcesContent":["// @flow\n\nimport {\n Socket,\n} from 'net';\nimport {\n TLSSocket,\n} from 'tls';\nimport {\n Agent as HttpAgent,\n} from 'http';\nimport {\n Agent as HttpsAgent,\n} from 'https';\n\nexport type ProxyConfigurationType = {|\n +authorization: string,\n +hostname: string,\n +port: number,\n|};\n\nexport type TlsConfigurationType = {|\n +ca?: string,\n +cert?: string,\n +ciphers?: string,\n +clientCertEngine?: string,\n +crl?: string,\n +dhparam?: string,\n +ecdhCurve?: string,\n +honorCipherOrder?: boolean,\n +key?: string,\n +passphrase?: string,\n +pfx?: string,\n +rejectUnauthorized?: boolean,\n +secureOptions?: number,\n +secureProtocol?: string,\n +servername?: string,\n +sessionIdContext?: string,\n|};\n\nexport type ConnectionConfigurationType = {|\n +host: string,\n +port: number,\n +tls?: TlsConfigurationType,\n +proxy: ProxyConfigurationType,\n|};\n\nexport type ConnectionCallbackType = (error: Error | null, socket?: Socket | TLSSocket) => void;\n\nexport type AgentType = HttpAgent | HttpsAgent;\nexport type IsProxyConfiguredMethodType = () => boolean;\nexport type MustUrlUseProxyMethodType = (url: string) => boolean;\nexport type GetUrlProxyMethodType = (url: string) => ProxyConfigurationType;\nexport type ProtocolType = 'http:' | 'https:';\n\nexport type ProxyAgentConfigurationInputType = {|\n +environmentVariableNamespace?: string,\n +forceGlobalAgent?: boolean,\n +socketConnectionTimeout?: number,\n|};\n\nexport type ProxyAgentConfigurationType = {|\n +environmentVariableNamespace: string,\n +forceGlobalAgent: boolean,\n +socketConnectionTimeout: number,\n|};\n"],"file":"types.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js
new file mode 100644
index 0000000..4ce571a
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _http = _interopRequireDefault(require("http"));
+
+var _https = _interopRequireDefault(require("https"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// eslint-disable-next-line flowtype/no-weak-types
+const bindHttpMethod = (originalMethod, agent, forceGlobalAgent) => {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ return (...args) => {
+ let url;
+ let options;
+ let callback;
+
+ if (typeof args[0] === 'string' || args[0] instanceof URL) {
+ url = args[0];
+
+ if (typeof args[1] === 'function') {
+ options = {};
+ callback = args[1];
+ } else {
+ options = { ...args[1]
+ };
+ callback = args[2];
+ }
+ } else {
+ options = { ...args[0]
+ };
+ callback = args[1];
+ }
+
+ if (forceGlobalAgent) {
+ options.agent = agent;
+ } else {
+ if (!options.agent) {
+ options.agent = agent;
+ }
+
+ if (options.agent === _http.default.globalAgent || options.agent === _https.default.globalAgent) {
+ options.agent = agent;
+ }
+ }
+
+ if (url) {
+ // $FlowFixMe
+ return originalMethod(url, options, callback);
+ } else {
+ return originalMethod(options, callback);
+ }
+ };
+};
+
+var _default = bindHttpMethod;
+exports.default = _default;
+//# sourceMappingURL=bindHttpMethod.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.flow b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.flow
new file mode 100644
index 0000000..f8859b5
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.flow
@@ -0,0 +1,54 @@
+// @flow
+
+import http from 'http';
+import https from 'https';
+
+type AgentType = http.Agent | https.Agent;
+
+// eslint-disable-next-line flowtype/no-weak-types
+export default (originalMethod: Function, agent: AgentType, forceGlobalAgent: boolean) => {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ return (...args: *) => {
+ let url;
+ let options;
+ let callback;
+
+ if (typeof args[0] === 'string' || args[0] instanceof URL) {
+ url = args[0];
+
+ if (typeof args[1] === 'function') {
+ options = {};
+ callback = args[1];
+ } else {
+ options = {
+ ...args[1],
+ };
+ callback = args[2];
+ }
+ } else {
+ options = {
+ ...args[0],
+ };
+ callback = args[1];
+ }
+
+ if (forceGlobalAgent) {
+ options.agent = agent;
+ } else {
+ if (!options.agent) {
+ options.agent = agent;
+ }
+
+ if (options.agent === http.globalAgent || options.agent === https.globalAgent) {
+ options.agent = agent;
+ }
+ }
+
+ if (url) {
+ // $FlowFixMe
+ return originalMethod(url, options, callback);
+ } else {
+ return originalMethod(options, callback);
+ }
+ };
+};
diff --git a/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.map b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.map
new file mode 100644
index 0000000..0d49171
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/bindHttpMethod.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utilities/bindHttpMethod.js"],"names":["originalMethod","agent","forceGlobalAgent","args","url","options","callback","URL","http","globalAgent","https"],"mappings":";;;;;;;AAEA;;AACA;;;;AAIA;wBACgBA,c,EAA0BC,K,EAAkBC,gB,KAA8B;AACxF;AACA,SAAO,CAAC,GAAGC,IAAJ,KAAgB;AACrB,QAAIC,GAAJ;AACA,QAAIC,OAAJ;AACA,QAAIC,QAAJ;;AAEA,QAAI,OAAOH,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAnB,IAA+BA,IAAI,CAAC,CAAD,CAAJ,YAAmBI,GAAtD,EAA2D;AACzDH,MAAAA,GAAG,GAAGD,IAAI,CAAC,CAAD,CAAV;;AAEA,UAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;AACjCE,QAAAA,OAAO,GAAG,EAAV;AACAC,QAAAA,QAAQ,GAAGH,IAAI,CAAC,CAAD,CAAf;AACD,OAHD,MAGO;AACLE,QAAAA,OAAO,GAAG,EACR,GAAGF,IAAI,CAAC,CAAD;AADC,SAAV;AAGAG,QAAAA,QAAQ,GAAGH,IAAI,CAAC,CAAD,CAAf;AACD;AACF,KAZD,MAYO;AACLE,MAAAA,OAAO,GAAG,EACR,GAAGF,IAAI,CAAC,CAAD;AADC,OAAV;AAGAG,MAAAA,QAAQ,GAAGH,IAAI,CAAC,CAAD,CAAf;AACD;;AAED,QAAID,gBAAJ,EAAsB;AACpBG,MAAAA,OAAO,CAACJ,KAAR,GAAgBA,KAAhB;AACD,KAFD,MAEO;AACL,UAAI,CAACI,OAAO,CAACJ,KAAb,EAAoB;AAClBI,QAAAA,OAAO,CAACJ,KAAR,GAAgBA,KAAhB;AACD;;AAED,UAAII,OAAO,CAACJ,KAAR,KAAkBO,cAAKC,WAAvB,IAAsCJ,OAAO,CAACJ,KAAR,KAAkBS,eAAMD,WAAlE,EAA+E;AAC7EJ,QAAAA,OAAO,CAACJ,KAAR,GAAgBA,KAAhB;AACD;AACF;;AAED,QAAIG,GAAJ,EAAS;AACP;AACA,aAAOJ,cAAc,CAACI,GAAD,EAAMC,OAAN,EAAeC,QAAf,CAArB;AACD,KAHD,MAGO;AACL,aAAON,cAAc,CAACK,OAAD,EAAUC,QAAV,CAArB;AACD;AACF,GA1CD;AA2CD,C","sourcesContent":["// @flow\n\nimport http from 'http';\nimport https from 'https';\n\ntype AgentType = http.Agent | https.Agent;\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport default (originalMethod: Function, agent: AgentType, forceGlobalAgent: boolean) => {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n return (...args: *) => {\n let url;\n let options;\n let callback;\n\n if (typeof args[0] === 'string' || args[0] instanceof URL) {\n url = args[0];\n\n if (typeof args[1] === 'function') {\n options = {};\n callback = args[1];\n } else {\n options = {\n ...args[1],\n };\n callback = args[2];\n }\n } else {\n options = {\n ...args[0],\n };\n callback = args[1];\n }\n\n if (forceGlobalAgent) {\n options.agent = agent;\n } else {\n if (!options.agent) {\n options.agent = agent;\n }\n\n if (options.agent === http.globalAgent || options.agent === https.globalAgent) {\n options.agent = agent;\n }\n }\n\n if (url) {\n // $FlowFixMe\n return originalMethod(url, options, callback);\n } else {\n return originalMethod(options, callback);\n }\n };\n};\n"],"file":"bindHttpMethod.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/index.js b/client/node_modules/global-agent/dist/utilities/index.js
new file mode 100644
index 0000000..5b9ff43
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/index.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "bindHttpMethod", {
+ enumerable: true,
+ get: function () {
+ return _bindHttpMethod.default;
+ }
+});
+Object.defineProperty(exports, "isUrlMatchingNoProxy", {
+ enumerable: true,
+ get: function () {
+ return _isUrlMatchingNoProxy.default;
+ }
+});
+Object.defineProperty(exports, "parseProxyUrl", {
+ enumerable: true,
+ get: function () {
+ return _parseProxyUrl.default;
+ }
+});
+
+var _bindHttpMethod = _interopRequireDefault(require("./bindHttpMethod"));
+
+var _isUrlMatchingNoProxy = _interopRequireDefault(require("./isUrlMatchingNoProxy"));
+
+var _parseProxyUrl = _interopRequireDefault(require("./parseProxyUrl"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/index.js.flow b/client/node_modules/global-agent/dist/utilities/index.js.flow
new file mode 100644
index 0000000..3412387
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/index.js.flow
@@ -0,0 +1,5 @@
+// @flow
+
+export {default as bindHttpMethod} from './bindHttpMethod';
+export {default as isUrlMatchingNoProxy} from './isUrlMatchingNoProxy';
+export {default as parseProxyUrl} from './parseProxyUrl';
diff --git a/client/node_modules/global-agent/dist/utilities/index.js.map b/client/node_modules/global-agent/dist/utilities/index.js.map
new file mode 100644
index 0000000..6861a5a
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utilities/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AACA","sourcesContent":["// @flow\n\nexport {default as bindHttpMethod} from './bindHttpMethod';\nexport {default as isUrlMatchingNoProxy} from './isUrlMatchingNoProxy';\nexport {default as parseProxyUrl} from './parseProxyUrl';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js
new file mode 100644
index 0000000..92a3436
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js
@@ -0,0 +1,43 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _url = require("url");
+
+var _matcher = _interopRequireDefault(require("matcher"));
+
+var _errors = require("../errors");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const isUrlMatchingNoProxy = (subjectUrl, noProxy) => {
+ const subjectUrlTokens = (0, _url.parse)(subjectUrl);
+ const rules = noProxy.split(/[\s,]+/);
+
+ for (const rule of rules) {
+ const ruleMatch = rule.replace(/^(?<leadingDot>\.)/, '*').match(/^(?<hostname>.+?)(?::(?<port>\d+))?$/);
+
+ if (!ruleMatch || !ruleMatch.groups) {
+ throw new _errors.UnexpectedStateError('Invalid NO_PROXY pattern.');
+ }
+
+ if (!ruleMatch.groups.hostname) {
+ throw new _errors.UnexpectedStateError('NO_PROXY entry pattern must include hostname. Use * to match any hostname.');
+ }
+
+ const hostnameIsMatch = _matcher.default.isMatch(subjectUrlTokens.hostname, ruleMatch.groups.hostname);
+
+ if (hostnameIsMatch && (!ruleMatch.groups || !ruleMatch.groups.port || subjectUrlTokens.port && subjectUrlTokens.port === ruleMatch.groups.port)) {
+ return true;
+ }
+ }
+
+ return false;
+};
+
+var _default = isUrlMatchingNoProxy;
+exports.default = _default;
+//# sourceMappingURL=isUrlMatchingNoProxy.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.flow b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.flow
new file mode 100644
index 0000000..f2de584
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.flow
@@ -0,0 +1,37 @@
+// @flow
+
+import {
+ parse as parseUrl,
+} from 'url';
+import matcher from 'matcher';
+import {
+ UnexpectedStateError,
+} from '../errors';
+
+export default (subjectUrl: string, noProxy: string) => {
+ const subjectUrlTokens = parseUrl(subjectUrl);
+
+ const rules = noProxy.split(/[\s,]+/);
+
+ for (const rule of rules) {
+ const ruleMatch = rule
+ .replace(/^(?<leadingDot>\.)/, '*')
+ .match(/^(?<hostname>.+?)(?::(?<port>\d+))?$/);
+
+ if (!ruleMatch || !ruleMatch.groups) {
+ throw new UnexpectedStateError('Invalid NO_PROXY pattern.');
+ }
+
+ if (!ruleMatch.groups.hostname) {
+ throw new UnexpectedStateError('NO_PROXY entry pattern must include hostname. Use * to match any hostname.');
+ }
+
+ const hostnameIsMatch = matcher.isMatch(subjectUrlTokens.hostname, ruleMatch.groups.hostname);
+
+ if (hostnameIsMatch && (!ruleMatch.groups || !ruleMatch.groups.port || subjectUrlTokens.port && subjectUrlTokens.port === ruleMatch.groups.port)) {
+ return true;
+ }
+ }
+
+ return false;
+};
diff --git a/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.map b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.map
new file mode 100644
index 0000000..9f60970
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/isUrlMatchingNoProxy.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utilities/isUrlMatchingNoProxy.js"],"names":["subjectUrl","noProxy","subjectUrlTokens","rules","split","rule","ruleMatch","replace","match","groups","UnexpectedStateError","hostname","hostnameIsMatch","matcher","isMatch","port"],"mappings":";;;;;;;AAEA;;AAGA;;AACA;;;;8BAIgBA,U,EAAoBC,O,KAAoB;AACtD,QAAMC,gBAAgB,GAAG,gBAASF,UAAT,CAAzB;AAEA,QAAMG,KAAK,GAAGF,OAAO,CAACG,KAAR,CAAc,QAAd,CAAd;;AAEA,OAAK,MAAMC,IAAX,IAAmBF,KAAnB,EAA0B;AACxB,UAAMG,SAAS,GAAGD,IAAI,CACnBE,OADe,CACP,oBADO,EACe,GADf,EAEfC,KAFe,CAET,sCAFS,CAAlB;;AAIA,QAAI,CAACF,SAAD,IAAc,CAACA,SAAS,CAACG,MAA7B,EAAqC;AACnC,YAAM,IAAIC,4BAAJ,CAAyB,2BAAzB,CAAN;AACD;;AAED,QAAI,CAACJ,SAAS,CAACG,MAAV,CAAiBE,QAAtB,EAAgC;AAC9B,YAAM,IAAID,4BAAJ,CAAyB,4EAAzB,CAAN;AACD;;AAED,UAAME,eAAe,GAAGC,iBAAQC,OAAR,CAAgBZ,gBAAgB,CAACS,QAAjC,EAA2CL,SAAS,CAACG,MAAV,CAAiBE,QAA5D,CAAxB;;AAEA,QAAIC,eAAe,KAAK,CAACN,SAAS,CAACG,MAAX,IAAqB,CAACH,SAAS,CAACG,MAAV,CAAiBM,IAAvC,IAA+Cb,gBAAgB,CAACa,IAAjB,IAAyBb,gBAAgB,CAACa,IAAjB,KAA0BT,SAAS,CAACG,MAAV,CAAiBM,IAAxH,CAAnB,EAAkJ;AAChJ,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,C","sourcesContent":["// @flow\n\nimport {\n parse as parseUrl,\n} from 'url';\nimport matcher from 'matcher';\nimport {\n UnexpectedStateError,\n} from '../errors';\n\nexport default (subjectUrl: string, noProxy: string) => {\n const subjectUrlTokens = parseUrl(subjectUrl);\n\n const rules = noProxy.split(/[\\s,]+/);\n\n for (const rule of rules) {\n const ruleMatch = rule\n .replace(/^(?<leadingDot>\\.)/, '*')\n .match(/^(?<hostname>.+?)(?::(?<port>\\d+))?$/);\n\n if (!ruleMatch || !ruleMatch.groups) {\n throw new UnexpectedStateError('Invalid NO_PROXY pattern.');\n }\n\n if (!ruleMatch.groups.hostname) {\n throw new UnexpectedStateError('NO_PROXY entry pattern must include hostname. Use * to match any hostname.');\n }\n\n const hostnameIsMatch = matcher.isMatch(subjectUrlTokens.hostname, ruleMatch.groups.hostname);\n\n if (hostnameIsMatch && (!ruleMatch.groups || !ruleMatch.groups.port || subjectUrlTokens.port && subjectUrlTokens.port === ruleMatch.groups.port)) {\n return true;\n }\n }\n\n return false;\n};\n"],"file":"isUrlMatchingNoProxy.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js
new file mode 100644
index 0000000..e4f1185
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _url = require("url");
+
+var _errors = require("../errors");
+
+const parseProxyUrl = url => {
+ const urlTokens = (0, _url.parse)(url);
+
+ if (urlTokens.query !== null) {
+ throw new _errors.UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have query.');
+ }
+
+ if (urlTokens.hash !== null) {
+ throw new _errors.UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have hash.');
+ }
+
+ if (urlTokens.protocol !== 'http:') {
+ throw new _errors.UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be "http:".');
+ }
+
+ let port = 80;
+
+ if (urlTokens.port) {
+ port = Number.parseInt(urlTokens.port, 10);
+ }
+
+ return {
+ authorization: urlTokens.auth || null,
+ hostname: urlTokens.hostname,
+ port
+ };
+};
+
+var _default = parseProxyUrl;
+exports.default = _default;
+//# sourceMappingURL=parseProxyUrl.js.map \ No newline at end of file
diff --git a/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.flow b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.flow
new file mode 100644
index 0000000..e2e9a6b
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.flow
@@ -0,0 +1,36 @@
+// @flow
+
+import {
+ parse as parseUrl,
+} from 'url';
+import {
+ UnexpectedStateError,
+} from '../errors';
+
+export default (url: string) => {
+ const urlTokens = parseUrl(url);
+
+ if (urlTokens.query !== null) {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have query.');
+ }
+
+ if (urlTokens.hash !== null) {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have hash.');
+ }
+
+ if (urlTokens.protocol !== 'http:') {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be "http:".');
+ }
+
+ let port = 80;
+
+ if (urlTokens.port) {
+ port = Number.parseInt(urlTokens.port, 10);
+ }
+
+ return {
+ authorization: urlTokens.auth || null,
+ hostname: urlTokens.hostname,
+ port,
+ };
+};
diff --git a/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.map b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.map
new file mode 100644
index 0000000..4457f10
--- /dev/null
+++ b/client/node_modules/global-agent/dist/utilities/parseProxyUrl.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utilities/parseProxyUrl.js"],"names":["url","urlTokens","query","UnexpectedStateError","hash","protocol","port","Number","parseInt","authorization","auth","hostname"],"mappings":";;;;;;;AAEA;;AAGA;;sBAIgBA,G,IAAgB;AAC9B,QAAMC,SAAS,GAAG,gBAASD,GAAT,CAAlB;;AAEA,MAAIC,SAAS,CAACC,KAAV,KAAoB,IAAxB,EAA8B;AAC5B,UAAM,IAAIC,4BAAJ,CAAyB,qFAAzB,CAAN;AACD;;AAED,MAAIF,SAAS,CAACG,IAAV,KAAmB,IAAvB,EAA6B;AAC3B,UAAM,IAAID,4BAAJ,CAAyB,oFAAzB,CAAN;AACD;;AAED,MAAIF,SAAS,CAACI,QAAV,KAAuB,OAA3B,EAAoC;AAClC,UAAM,IAAIF,4BAAJ,CAAyB,0FAAzB,CAAN;AACD;;AAED,MAAIG,IAAI,GAAG,EAAX;;AAEA,MAAIL,SAAS,CAACK,IAAd,EAAoB;AAClBA,IAAAA,IAAI,GAAGC,MAAM,CAACC,QAAP,CAAgBP,SAAS,CAACK,IAA1B,EAAgC,EAAhC,CAAP;AACD;;AAED,SAAO;AACLG,IAAAA,aAAa,EAAER,SAAS,CAACS,IAAV,IAAkB,IAD5B;AAELC,IAAAA,QAAQ,EAAEV,SAAS,CAACU,QAFf;AAGLL,IAAAA;AAHK,GAAP;AAKD,C","sourcesContent":["// @flow\n\nimport {\n parse as parseUrl,\n} from 'url';\nimport {\n UnexpectedStateError,\n} from '../errors';\n\nexport default (url: string) => {\n const urlTokens = parseUrl(url);\n\n if (urlTokens.query !== null) {\n throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have query.');\n }\n\n if (urlTokens.hash !== null) {\n throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have hash.');\n }\n\n if (urlTokens.protocol !== 'http:') {\n throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be \"http:\".');\n }\n\n let port = 80;\n\n if (urlTokens.port) {\n port = Number.parseInt(urlTokens.port, 10);\n }\n\n return {\n authorization: urlTokens.auth || null,\n hostname: urlTokens.hostname,\n port,\n };\n};\n"],"file":"parseProxyUrl.js"} \ No newline at end of file
diff --git a/client/node_modules/global-agent/node_modules/.bin/semver b/client/node_modules/global-agent/node_modules/.bin/semver
new file mode 120000
index 0000000..5aaadf4
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver.js \ No newline at end of file
diff --git a/client/node_modules/global-agent/node_modules/semver/LICENSE b/client/node_modules/global-agent/node_modules/semver/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/global-agent/node_modules/semver/README.md b/client/node_modules/global-agent/node_modules/semver/README.md
new file mode 100644
index 0000000..53ea9b5
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/README.md
@@ -0,0 +1,637 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+You can also just load the module for the function that you care about, if
+you'd like to minimize your footprint.
+
+```js
+// load the whole API at once in a single object
+const semver = require('semver')
+
+// or just load the bits you need
+// all of them listed here, just pick and choose what you want
+
+// classes
+const SemVer = require('semver/classes/semver')
+const Comparator = require('semver/classes/comparator')
+const Range = require('semver/classes/range')
+
+// functions for working with versions
+const semverParse = require('semver/functions/parse')
+const semverValid = require('semver/functions/valid')
+const semverClean = require('semver/functions/clean')
+const semverInc = require('semver/functions/inc')
+const semverDiff = require('semver/functions/diff')
+const semverMajor = require('semver/functions/major')
+const semverMinor = require('semver/functions/minor')
+const semverPatch = require('semver/functions/patch')
+const semverPrerelease = require('semver/functions/prerelease')
+const semverCompare = require('semver/functions/compare')
+const semverRcompare = require('semver/functions/rcompare')
+const semverCompareLoose = require('semver/functions/compare-loose')
+const semverCompareBuild = require('semver/functions/compare-build')
+const semverSort = require('semver/functions/sort')
+const semverRsort = require('semver/functions/rsort')
+
+// low-level comparators between versions
+const semverGt = require('semver/functions/gt')
+const semverLt = require('semver/functions/lt')
+const semverEq = require('semver/functions/eq')
+const semverNeq = require('semver/functions/neq')
+const semverGte = require('semver/functions/gte')
+const semverLte = require('semver/functions/lte')
+const semverCmp = require('semver/functions/cmp')
+const semverCoerce = require('semver/functions/coerce')
+
+// working with ranges
+const semverSatisfies = require('semver/functions/satisfies')
+const semverMaxSatisfying = require('semver/ranges/max-satisfying')
+const semverMinSatisfying = require('semver/ranges/min-satisfying')
+const semverToComparators = require('semver/ranges/to-comparators')
+const semverMinVersion = require('semver/ranges/min-version')
+const semverValidRange = require('semver/ranges/valid')
+const semverOutside = require('semver/ranges/outside')
+const semverGtr = require('semver/ranges/gtr')
+const semverLtr = require('semver/ranges/ltr')
+const semverIntersects = require('semver/ranges/intersects')
+const simplifyRange = require('semver/ranges/simplify')
+const rangeSubset = require('semver/ranges/subset')
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-n <0|1>
+ This is the base to be used for the prerelease identifier.
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and
+would match the versions `2.0.0` and `3.1.0`, but not the versions
+`1.0.1` or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+#### Prerelease Identifier Base
+
+The method `.inc` takes an optional parameter 'identifierBase' string
+that will let you let your prerelease number as zero-based or one-based.
+Set to `false` to omit the prerelease number altogether.
+If you do not specify this parameter, it will default to zero-based.
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta', '1')
+// '1.2.4-beta.1'
+```
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta', false)
+// '1.2.4-beta'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta -n 1
+1.2.4-beta.1
+```
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta -n false
+1.2.4-beta
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless
+ `includePrerelease` is specified, in which case any version at all
+ satisfies)
+* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0-0`
+* `^0.2.3` := `>=0.2.3 <0.3.0-0`
+* `^0.0.3` := `>=0.0.3 <0.0.4-0`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0-0`
+* `^0.0.x` := `>=0.0.0 <0.1.0-0`
+* `^0.0` := `>=0.0.0 <0.1.0-0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0-0`
+* `^0.x` := `>=0.0.0 <1.0.0-0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+* `simplifyRange(versions, range)`: Return a "simplified" range that
+ matches the same items in `versions` list as the range specified. Note
+ that it does *not* guarantee that it would match the same versions in all
+ cases, only for the set of versions provided. This is useful when
+ generating ranges by joining together multiple versions with `||`
+ programmatically, to provide the user with something a bit more
+ ergonomic. If the provided range is shorter in string-length than the
+ generated range, then that is returned.
+* `subset(subRange, superRange)`: Return `true` if the `subRange` range is
+ entirely contained by the `superRange` range.
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided
+version is not valid a null will be returned. This does not work for
+ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
+
+## Constants
+
+As a convenience, helper constants are exported to provide information about what `node-semver` supports:
+
+### `RELEASE_TYPES`
+
+- major
+- premajor
+- minor
+- preminor
+- patch
+- prepatch
+- prerelease
+
+```
+const semver = require('semver');
+
+if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) {
+ console.log('This is a valid release type!');
+} else {
+ console.warn('This is NOT a valid release type!');
+}
+```
+
+### `SEMVER_SPEC_VERSION`
+
+2.0.0
+
+```
+const semver = require('semver');
+
+console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION);
+```
+
+## Exported Modules
+
+<!--
+TODO: Make sure that all of these items are documented (classes aren't,
+eg), and then pull the module name into the documentation for that specific
+thing.
+-->
+
+You may pull in just the part of this semver utility that you need, if you
+are sensitive to packing and tree-shaking concerns. The main
+`require('semver')` export uses getter functions to lazily load the parts
+of the API that are used.
+
+The following modules are available:
+
+* `require('semver')`
+* `require('semver/classes')`
+* `require('semver/classes/comparator')`
+* `require('semver/classes/range')`
+* `require('semver/classes/semver')`
+* `require('semver/functions/clean')`
+* `require('semver/functions/cmp')`
+* `require('semver/functions/coerce')`
+* `require('semver/functions/compare')`
+* `require('semver/functions/compare-build')`
+* `require('semver/functions/compare-loose')`
+* `require('semver/functions/diff')`
+* `require('semver/functions/eq')`
+* `require('semver/functions/gt')`
+* `require('semver/functions/gte')`
+* `require('semver/functions/inc')`
+* `require('semver/functions/lt')`
+* `require('semver/functions/lte')`
+* `require('semver/functions/major')`
+* `require('semver/functions/minor')`
+* `require('semver/functions/neq')`
+* `require('semver/functions/parse')`
+* `require('semver/functions/patch')`
+* `require('semver/functions/prerelease')`
+* `require('semver/functions/rcompare')`
+* `require('semver/functions/rsort')`
+* `require('semver/functions/satisfies')`
+* `require('semver/functions/sort')`
+* `require('semver/functions/valid')`
+* `require('semver/ranges/gtr')`
+* `require('semver/ranges/intersects')`
+* `require('semver/ranges/ltr')`
+* `require('semver/ranges/max-satisfying')`
+* `require('semver/ranges/min-satisfying')`
+* `require('semver/ranges/min-version')`
+* `require('semver/ranges/outside')`
+* `require('semver/ranges/to-comparators')`
+* `require('semver/ranges/valid')`
+
diff --git a/client/node_modules/global-agent/node_modules/semver/bin/semver.js b/client/node_modules/global-agent/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000..242b7ad
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/bin/semver.js
@@ -0,0 +1,197 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+const argv = process.argv.slice(2)
+
+let versions = []
+
+const range = []
+
+let inc = null
+
+const version = require('../package.json').version
+
+let loose = false
+
+let includePrerelease = false
+
+let coerce = false
+
+let rtl = false
+
+let identifier
+
+let identifierBase
+
+const semver = require('../')
+const parseOptions = require('../internal/parse-options')
+
+let reverse = false
+
+let options = {}
+
+const main = () => {
+ if (!argv.length) {
+ return help()
+ }
+ while (argv.length) {
+ let a = argv.shift()
+ const indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ const value = a.slice(indexOfEqualSign + 1)
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(value)
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-n':
+ identifierBase = argv.shift()
+ if (identifierBase === 'false') {
+ identifierBase = false
+ }
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ options = parseOptions({ loose, includePrerelease, rtl })
+
+ versions = versions.map((v) => {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter((v) => {
+ return semver.valid(v)
+ })
+ if (!versions.length) {
+ return fail()
+ }
+ if (inc && (versions.length !== 1 || range.length)) {
+ return failInc()
+ }
+
+ for (let i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter((v) => {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) {
+ return fail()
+ }
+ }
+ return success(versions)
+}
+
+const failInc = () => {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+const fail = () => process.exit(1)
+
+const success = () => {
+ const compare = reverse ? 'rcompare' : 'compare'
+ versions.sort((a, b) => {
+ return semver[compare](a, b, options)
+ }).map((v) => {
+ return semver.clean(v, options)
+ }).map((v) => {
+ return inc ? semver.inc(v, inc, options, identifier, identifierBase) : v
+ }).forEach((v, i, _) => {
+ console.log(v)
+ })
+}
+
+const help = () => console.log(
+`SemVer ${version}
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+-n <base>
+ Base number to be used for the prerelease identifier.
+ Can be either 0 or 1, or false to omit the number altogether.
+ Defaults to 0.
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.`)
+
+main()
diff --git a/client/node_modules/global-agent/node_modules/semver/classes/comparator.js b/client/node_modules/global-agent/node_modules/semver/classes/comparator.js
new file mode 100644
index 0000000..3d39c0e
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/classes/comparator.js
@@ -0,0 +1,141 @@
+const ANY = Symbol('SemVer ANY')
+// hoisted class for cyclic dependency
+class Comparator {
+ static get ANY () {
+ return ANY
+ }
+
+ constructor (comp, options) {
+ options = parseOptions(options)
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ comp = comp.trim().split(/\s+/).join(' ')
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+ }
+
+ parse (comp) {
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ const m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError(`Invalid comparator: ${comp}`)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+ }
+
+ toString () {
+ return this.value
+ }
+
+ test (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+ }
+
+ intersects (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ return new Range(comp.value, options).test(this.value)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ return new Range(this.value, options).test(comp.semver)
+ }
+
+ options = parseOptions(options)
+
+ // Special cases where nothing can possibly be lower
+ if (options.includePrerelease &&
+ (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {
+ return false
+ }
+ if (!options.includePrerelease &&
+ (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {
+ return false
+ }
+
+ // Same direction increasing (> or >=)
+ if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {
+ return true
+ }
+ // Same direction decreasing (< or <=)
+ if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // same SemVer and both sides are inclusive (<= or >=)
+ if (
+ (this.semver.version === comp.semver.version) &&
+ this.operator.includes('=') && comp.operator.includes('=')) {
+ return true
+ }
+ // opposite directions less than
+ if (cmp(this.semver, '<', comp.semver, options) &&
+ this.operator.startsWith('>') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // opposite directions greater than
+ if (cmp(this.semver, '>', comp.semver, options) &&
+ this.operator.startsWith('<') && comp.operator.startsWith('>')) {
+ return true
+ }
+ return false
+ }
+}
+
+module.exports = Comparator
+
+const parseOptions = require('../internal/parse-options')
+const { safeRe: re, t } = require('../internal/re')
+const cmp = require('../functions/cmp')
+const debug = require('../internal/debug')
+const SemVer = require('./semver')
+const Range = require('./range')
diff --git a/client/node_modules/global-agent/node_modules/semver/classes/index.js b/client/node_modules/global-agent/node_modules/semver/classes/index.js
new file mode 100644
index 0000000..5e3f5c9
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/classes/index.js
@@ -0,0 +1,5 @@
+module.exports = {
+ SemVer: require('./semver.js'),
+ Range: require('./range.js'),
+ Comparator: require('./comparator.js'),
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/classes/range.js b/client/node_modules/global-agent/node_modules/semver/classes/range.js
new file mode 100644
index 0000000..7e7c414
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/classes/range.js
@@ -0,0 +1,539 @@
+// hoisted class for cyclic dependency
+class Range {
+ constructor (range, options) {
+ options = parseOptions(options)
+
+ if (range instanceof Range) {
+ if (
+ range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease
+ ) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ // just put it in the set and return
+ this.raw = range.value
+ this.set = [[range]]
+ this.format()
+ return this
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First reduce all whitespace as much as possible so we do not have to rely
+ // on potentially slow regexes like \s*. This is then stored and used for
+ // future error messages as well.
+ this.raw = range
+ .trim()
+ .split(/\s+/)
+ .join(' ')
+
+ // First, split on ||
+ this.set = this.raw
+ .split('||')
+ // map the range to a 2d array of comparators
+ .map(r => this.parseRange(r.trim()))
+ // throw out any comparator lists that are empty
+ // this generally means that it was not a valid range, which is allowed
+ // in loose mode, but will still throw if the WHOLE range is invalid.
+ .filter(c => c.length)
+
+ if (!this.set.length) {
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
+ }
+
+ // if we have any that are not the null set, throw out null sets.
+ if (this.set.length > 1) {
+ // keep the first one, in case they're all null sets
+ const first = this.set[0]
+ this.set = this.set.filter(c => !isNullSet(c[0]))
+ if (this.set.length === 0) {
+ this.set = [first]
+ } else if (this.set.length > 1) {
+ // if we have any that are *, then the range is just *
+ for (const c of this.set) {
+ if (c.length === 1 && isAny(c[0])) {
+ this.set = [c]
+ break
+ }
+ }
+ }
+ }
+
+ this.format()
+ }
+
+ format () {
+ this.range = this.set
+ .map((comps) => comps.join(' ').trim())
+ .join('||')
+ .trim()
+ return this.range
+ }
+
+ toString () {
+ return this.range
+ }
+
+ parseRange (range) {
+ // memoize range parsing for performance.
+ // this is a very hot path, and fully deterministic.
+ const memoOpts =
+ (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
+ (this.options.loose && FLAG_LOOSE)
+ const memoKey = memoOpts + ':' + range
+ const cached = cache.get(memoKey)
+ if (cached) {
+ return cached
+ }
+
+ const loose = this.options.loose
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
+ debug('hyphen replace', range)
+
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range)
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+ debug('tilde trim', range)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+ debug('caret trim', range)
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ let rangeList = range
+ .split(' ')
+ .map(comp => parseComparator(comp, this.options))
+ .join(' ')
+ .split(/\s+/)
+ // >=0.0.0 is equivalent to *
+ .map(comp => replaceGTE0(comp, this.options))
+
+ if (loose) {
+ // in loose mode, throw out any that are not valid comparators
+ rangeList = rangeList.filter(comp => {
+ debug('loose invalid filter', comp, this.options)
+ return !!comp.match(re[t.COMPARATORLOOSE])
+ })
+ }
+ debug('range list', rangeList)
+
+ // if any comparators are the null set, then replace with JUST null set
+ // if more than one comparator, remove any * comparators
+ // also, don't include the same comparator more than once
+ const rangeMap = new Map()
+ const comparators = rangeList.map(comp => new Comparator(comp, this.options))
+ for (const comp of comparators) {
+ if (isNullSet(comp)) {
+ return [comp]
+ }
+ rangeMap.set(comp.value, comp)
+ }
+ if (rangeMap.size > 1 && rangeMap.has('')) {
+ rangeMap.delete('')
+ }
+
+ const result = [...rangeMap.values()]
+ cache.set(memoKey, result)
+ return result
+ }
+
+ intersects (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some((thisComparators) => {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some((rangeComparators) => {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every((thisComparator) => {
+ return rangeComparators.every((rangeComparator) => {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+ }
+
+ // if ANY of the sets match ALL of its comparators, then pass
+ test (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (let i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+ }
+}
+
+module.exports = Range
+
+const LRU = require('lru-cache')
+const cache = new LRU({ max: 1000 })
+
+const parseOptions = require('../internal/parse-options')
+const Comparator = require('./comparator')
+const debug = require('../internal/debug')
+const SemVer = require('./semver')
+const {
+ safeRe: re,
+ t,
+ comparatorTrimReplace,
+ tildeTrimReplace,
+ caretTrimReplace,
+} = require('../internal/re')
+const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')
+
+const isNullSet = c => c.value === '<0.0.0-0'
+const isAny = c => c.value === ''
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+const isSatisfiable = (comparators, options) => {
+ let result = true
+ const remainingComparators = comparators.slice()
+ let testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every((otherComparator) => {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+const parseComparator = (comp, options) => {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
+// ~0.0.1 --> >=0.0.1 <0.1.0-0
+const replaceTildes = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceTilde(c, options))
+ .join(' ')
+}
+
+const replaceTilde = (comp, options) => {
+ const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('tilde', comp, _, M, m, p, pr)
+ let ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0-0
+ ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0-0
+ ret = `>=${M}.${m}.${p
+ } <${M}.${+m + 1}.0-0`
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
+// ^1.2.3 --> >=1.2.3 <2.0.0-0
+// ^1.2.0 --> >=1.2.0 <2.0.0-0
+// ^0.0.1 --> >=0.0.1 <0.0.2-0
+// ^0.1.0 --> >=0.1.0 <0.2.0-0
+const replaceCarets = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceCaret(c, options))
+ .join(' ')
+}
+
+const replaceCaret = (comp, options) => {
+ debug('caret', comp, options)
+ const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ const z = options.includePrerelease ? '-0' : ''
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('caret', comp, _, M, m, p, pr)
+ let ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
+ } else {
+ ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${+M + 1}.0.0-0`
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p
+ } <${+M + 1}.0.0-0`
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+const replaceXRanges = (comp, options) => {
+ debug('replaceXRanges', comp, options)
+ return comp
+ .split(/\s+/)
+ .map((c) => replaceXRange(c, options))
+ .join(' ')
+}
+
+const replaceXRange = (comp, options) => {
+ comp = comp.trim()
+ const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ const xM = isX(M)
+ const xm = xM || isX(m)
+ const xp = xm || isX(p)
+ const anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ if (gtlt === '<') {
+ pr = '-0'
+ }
+
+ ret = `${gtlt + M}.${m}.${p}${pr}`
+ } else if (xm) {
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
+ } else if (xp) {
+ ret = `>=${M}.${m}.0${pr
+ } <${M}.${+m + 1}.0-0`
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+const replaceStars = (comp, options) => {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp
+ .trim()
+ .replace(re[t.STAR], '')
+}
+
+const replaceGTE0 = (comp, options) => {
+ debug('replaceGTE0', comp, options)
+ return comp
+ .trim()
+ .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
+const hyphenReplace = incPr => ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) => {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = `>=${fM}.0.0${incPr ? '-0' : ''}`
+ } else if (isX(fp)) {
+ from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
+ } else if (fpr) {
+ from = `>=${from}`
+ } else {
+ from = `>=${from}${incPr ? '-0' : ''}`
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = `<${+tM + 1}.0.0-0`
+ } else if (isX(tp)) {
+ to = `<${tM}.${+tm + 1}.0-0`
+ } else if (tpr) {
+ to = `<=${tM}.${tm}.${tp}-${tpr}`
+ } else if (incPr) {
+ to = `<${tM}.${tm}.${+tp + 1}-0`
+ } else {
+ to = `<=${to}`
+ }
+
+ return `${from} ${to}`.trim()
+}
+
+const testSet = (set, version, options) => {
+ for (let i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (let i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === Comparator.ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ const allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/classes/semver.js b/client/node_modules/global-agent/node_modules/semver/classes/semver.js
new file mode 100644
index 0000000..84e8459
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/classes/semver.js
@@ -0,0 +1,302 @@
+const debug = require('../internal/debug')
+const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')
+const { safeRe: re, t } = require('../internal/re')
+
+const parseOptions = require('../internal/parse-options')
+const { compareIdentifiers } = require('../internal/identifiers')
+class SemVer {
+ constructor (version, options) {
+ options = parseOptions(options)
+
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose &&
+ version.includePrerelease === !!options.includePrerelease) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError(
+ `version is longer than ${MAX_LENGTH} characters`
+ )
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+ // this isn't actually relevant for versions, but keep it so that we
+ // don't run into trouble passing this.options around.
+ this.includePrerelease = !!options.includePrerelease
+
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map((id) => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+ }
+
+ format () {
+ this.version = `${this.major}.${this.minor}.${this.patch}`
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join('.')}`
+ }
+ return this.version
+ }
+
+ toString () {
+ return this.version
+ }
+
+ compare (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0
+ }
+ other = new SemVer(other, this.options)
+ }
+
+ if (other.version === this.version) {
+ return 0
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+ }
+
+ compareMain (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return (
+ compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+ )
+ }
+
+ comparePre (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ let i = 0
+ do {
+ const a = this.prerelease[i]
+ const b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ compareBuild (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ let i = 0
+ do {
+ const a = this.build[i]
+ const b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+ inc (release, identifier, identifierBase) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier, identifierBase)
+ this.inc('pre', identifier, identifierBase)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier, identifierBase)
+ }
+ this.inc('pre', identifier, identifierBase)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (
+ this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0
+ ) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+ case 'pre': {
+ const base = Number(identifierBase) ? 1 : 0
+
+ if (!identifier && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier is empty')
+ }
+
+ if (this.prerelease.length === 0) {
+ this.prerelease = [base]
+ } else {
+ let i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ if (identifier === this.prerelease.join('.') && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier already exists')
+ }
+ this.prerelease.push(base)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ let prerelease = [identifier, base]
+ if (identifierBase === false) {
+ prerelease = [identifier]
+ }
+ if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = prerelease
+ }
+ } else {
+ this.prerelease = prerelease
+ }
+ }
+ break
+ }
+ default:
+ throw new Error(`invalid increment argument: ${release}`)
+ }
+ this.raw = this.format()
+ if (this.build.length) {
+ this.raw += `+${this.build.join('.')}`
+ }
+ return this
+ }
+}
+
+module.exports = SemVer
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/clean.js b/client/node_modules/global-agent/node_modules/semver/functions/clean.js
new file mode 100644
index 0000000..811fe6b
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/clean.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const clean = (version, options) => {
+ const s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+module.exports = clean
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/cmp.js b/client/node_modules/global-agent/node_modules/semver/functions/cmp.js
new file mode 100644
index 0000000..4011909
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/cmp.js
@@ -0,0 +1,52 @@
+const eq = require('./eq')
+const neq = require('./neq')
+const gt = require('./gt')
+const gte = require('./gte')
+const lt = require('./lt')
+const lte = require('./lte')
+
+const cmp = (a, op, b, loose) => {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError(`Invalid operator: ${op}`)
+ }
+}
+module.exports = cmp
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/coerce.js b/client/node_modules/global-agent/node_modules/semver/functions/coerce.js
new file mode 100644
index 0000000..febbff9
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/coerce.js
@@ -0,0 +1,52 @@
+const SemVer = require('../classes/semver')
+const parse = require('./parse')
+const { safeRe: re, t } = require('../internal/re')
+
+const coerce = (version, options) => {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ let match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ let next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
+}
+module.exports = coerce
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/compare-build.js b/client/node_modules/global-agent/node_modules/semver/functions/compare-build.js
new file mode 100644
index 0000000..9eb881b
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/compare-build.js
@@ -0,0 +1,7 @@
+const SemVer = require('../classes/semver')
+const compareBuild = (a, b, loose) => {
+ const versionA = new SemVer(a, loose)
+ const versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+module.exports = compareBuild
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/compare-loose.js b/client/node_modules/global-agent/node_modules/semver/functions/compare-loose.js
new file mode 100644
index 0000000..4881fbe
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/compare-loose.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const compareLoose = (a, b) => compare(a, b, true)
+module.exports = compareLoose
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/compare.js b/client/node_modules/global-agent/node_modules/semver/functions/compare.js
new file mode 100644
index 0000000..748b7af
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/compare.js
@@ -0,0 +1,5 @@
+const SemVer = require('../classes/semver')
+const compare = (a, b, loose) =>
+ new SemVer(a, loose).compare(new SemVer(b, loose))
+
+module.exports = compare
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/diff.js b/client/node_modules/global-agent/node_modules/semver/functions/diff.js
new file mode 100644
index 0000000..fc224e3
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/diff.js
@@ -0,0 +1,65 @@
+const parse = require('./parse.js')
+
+const diff = (version1, version2) => {
+ const v1 = parse(version1, null, true)
+ const v2 = parse(version2, null, true)
+ const comparison = v1.compare(v2)
+
+ if (comparison === 0) {
+ return null
+ }
+
+ const v1Higher = comparison > 0
+ const highVersion = v1Higher ? v1 : v2
+ const lowVersion = v1Higher ? v2 : v1
+ const highHasPre = !!highVersion.prerelease.length
+ const lowHasPre = !!lowVersion.prerelease.length
+
+ if (lowHasPre && !highHasPre) {
+ // Going from prerelease -> no prerelease requires some special casing
+
+ // If the low version has only a major, then it will always be a major
+ // Some examples:
+ // 1.0.0-1 -> 1.0.0
+ // 1.0.0-1 -> 1.1.1
+ // 1.0.0-1 -> 2.0.0
+ if (!lowVersion.patch && !lowVersion.minor) {
+ return 'major'
+ }
+
+ // Otherwise it can be determined by checking the high version
+
+ if (highVersion.patch) {
+ // anything higher than a patch bump would result in the wrong version
+ return 'patch'
+ }
+
+ if (highVersion.minor) {
+ // anything higher than a minor bump would result in the wrong version
+ return 'minor'
+ }
+
+ // bumping major/minor/patch all have same result
+ return 'major'
+ }
+
+ // add the `pre` prefix if we are going to a prerelease version
+ const prefix = highHasPre ? 'pre' : ''
+
+ if (v1.major !== v2.major) {
+ return prefix + 'major'
+ }
+
+ if (v1.minor !== v2.minor) {
+ return prefix + 'minor'
+ }
+
+ if (v1.patch !== v2.patch) {
+ return prefix + 'patch'
+ }
+
+ // high and low are preleases
+ return 'prerelease'
+}
+
+module.exports = diff
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/eq.js b/client/node_modules/global-agent/node_modules/semver/functions/eq.js
new file mode 100644
index 0000000..271fed9
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/eq.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const eq = (a, b, loose) => compare(a, b, loose) === 0
+module.exports = eq
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/gt.js b/client/node_modules/global-agent/node_modules/semver/functions/gt.js
new file mode 100644
index 0000000..d9b2156
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/gt.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const gt = (a, b, loose) => compare(a, b, loose) > 0
+module.exports = gt
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/gte.js b/client/node_modules/global-agent/node_modules/semver/functions/gte.js
new file mode 100644
index 0000000..5aeaa63
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/gte.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const gte = (a, b, loose) => compare(a, b, loose) >= 0
+module.exports = gte
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/inc.js b/client/node_modules/global-agent/node_modules/semver/functions/inc.js
new file mode 100644
index 0000000..7670b1b
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/inc.js
@@ -0,0 +1,19 @@
+const SemVer = require('../classes/semver')
+
+const inc = (version, release, options, identifier, identifierBase) => {
+ if (typeof (options) === 'string') {
+ identifierBase = identifier
+ identifier = options
+ options = undefined
+ }
+
+ try {
+ return new SemVer(
+ version instanceof SemVer ? version.version : version,
+ options
+ ).inc(release, identifier, identifierBase).version
+ } catch (er) {
+ return null
+ }
+}
+module.exports = inc
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/lt.js b/client/node_modules/global-agent/node_modules/semver/functions/lt.js
new file mode 100644
index 0000000..b440ab7
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/lt.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const lt = (a, b, loose) => compare(a, b, loose) < 0
+module.exports = lt
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/lte.js b/client/node_modules/global-agent/node_modules/semver/functions/lte.js
new file mode 100644
index 0000000..6dcc956
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/lte.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const lte = (a, b, loose) => compare(a, b, loose) <= 0
+module.exports = lte
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/major.js b/client/node_modules/global-agent/node_modules/semver/functions/major.js
new file mode 100644
index 0000000..4283165
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/major.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const major = (a, loose) => new SemVer(a, loose).major
+module.exports = major
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/minor.js b/client/node_modules/global-agent/node_modules/semver/functions/minor.js
new file mode 100644
index 0000000..57b3455
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/minor.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const minor = (a, loose) => new SemVer(a, loose).minor
+module.exports = minor
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/neq.js b/client/node_modules/global-agent/node_modules/semver/functions/neq.js
new file mode 100644
index 0000000..f944c01
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/neq.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const neq = (a, b, loose) => compare(a, b, loose) !== 0
+module.exports = neq
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/parse.js b/client/node_modules/global-agent/node_modules/semver/functions/parse.js
new file mode 100644
index 0000000..459b3b1
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/parse.js
@@ -0,0 +1,16 @@
+const SemVer = require('../classes/semver')
+const parse = (version, options, throwErrors = false) => {
+ if (version instanceof SemVer) {
+ return version
+ }
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ if (!throwErrors) {
+ return null
+ }
+ throw er
+ }
+}
+
+module.exports = parse
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/patch.js b/client/node_modules/global-agent/node_modules/semver/functions/patch.js
new file mode 100644
index 0000000..63afca2
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/patch.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const patch = (a, loose) => new SemVer(a, loose).patch
+module.exports = patch
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/prerelease.js b/client/node_modules/global-agent/node_modules/semver/functions/prerelease.js
new file mode 100644
index 0000000..06aa132
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/prerelease.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const prerelease = (version, options) => {
+ const parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+module.exports = prerelease
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/rcompare.js b/client/node_modules/global-agent/node_modules/semver/functions/rcompare.js
new file mode 100644
index 0000000..0ac509e
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/rcompare.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const rcompare = (a, b, loose) => compare(b, a, loose)
+module.exports = rcompare
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/rsort.js b/client/node_modules/global-agent/node_modules/semver/functions/rsort.js
new file mode 100644
index 0000000..82404c5
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/rsort.js
@@ -0,0 +1,3 @@
+const compareBuild = require('./compare-build')
+const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
+module.exports = rsort
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/satisfies.js b/client/node_modules/global-agent/node_modules/semver/functions/satisfies.js
new file mode 100644
index 0000000..50af1c1
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/satisfies.js
@@ -0,0 +1,10 @@
+const Range = require('../classes/range')
+const satisfies = (version, range, options) => {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+module.exports = satisfies
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/sort.js b/client/node_modules/global-agent/node_modules/semver/functions/sort.js
new file mode 100644
index 0000000..4d10917
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/sort.js
@@ -0,0 +1,3 @@
+const compareBuild = require('./compare-build')
+const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
+module.exports = sort
diff --git a/client/node_modules/global-agent/node_modules/semver/functions/valid.js b/client/node_modules/global-agent/node_modules/semver/functions/valid.js
new file mode 100644
index 0000000..f27bae1
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/functions/valid.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const valid = (version, options) => {
+ const v = parse(version, options)
+ return v ? v.version : null
+}
+module.exports = valid
diff --git a/client/node_modules/global-agent/node_modules/semver/index.js b/client/node_modules/global-agent/node_modules/semver/index.js
new file mode 100644
index 0000000..86d42ac
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/index.js
@@ -0,0 +1,89 @@
+// just pre-load all the stuff that index.js lazily exports
+const internalRe = require('./internal/re')
+const constants = require('./internal/constants')
+const SemVer = require('./classes/semver')
+const identifiers = require('./internal/identifiers')
+const parse = require('./functions/parse')
+const valid = require('./functions/valid')
+const clean = require('./functions/clean')
+const inc = require('./functions/inc')
+const diff = require('./functions/diff')
+const major = require('./functions/major')
+const minor = require('./functions/minor')
+const patch = require('./functions/patch')
+const prerelease = require('./functions/prerelease')
+const compare = require('./functions/compare')
+const rcompare = require('./functions/rcompare')
+const compareLoose = require('./functions/compare-loose')
+const compareBuild = require('./functions/compare-build')
+const sort = require('./functions/sort')
+const rsort = require('./functions/rsort')
+const gt = require('./functions/gt')
+const lt = require('./functions/lt')
+const eq = require('./functions/eq')
+const neq = require('./functions/neq')
+const gte = require('./functions/gte')
+const lte = require('./functions/lte')
+const cmp = require('./functions/cmp')
+const coerce = require('./functions/coerce')
+const Comparator = require('./classes/comparator')
+const Range = require('./classes/range')
+const satisfies = require('./functions/satisfies')
+const toComparators = require('./ranges/to-comparators')
+const maxSatisfying = require('./ranges/max-satisfying')
+const minSatisfying = require('./ranges/min-satisfying')
+const minVersion = require('./ranges/min-version')
+const validRange = require('./ranges/valid')
+const outside = require('./ranges/outside')
+const gtr = require('./ranges/gtr')
+const ltr = require('./ranges/ltr')
+const intersects = require('./ranges/intersects')
+const simplifyRange = require('./ranges/simplify')
+const subset = require('./ranges/subset')
+module.exports = {
+ parse,
+ valid,
+ clean,
+ inc,
+ diff,
+ major,
+ minor,
+ patch,
+ prerelease,
+ compare,
+ rcompare,
+ compareLoose,
+ compareBuild,
+ sort,
+ rsort,
+ gt,
+ lt,
+ eq,
+ neq,
+ gte,
+ lte,
+ cmp,
+ coerce,
+ Comparator,
+ Range,
+ satisfies,
+ toComparators,
+ maxSatisfying,
+ minSatisfying,
+ minVersion,
+ validRange,
+ outside,
+ gtr,
+ ltr,
+ intersects,
+ simplifyRange,
+ subset,
+ SemVer,
+ re: internalRe.re,
+ src: internalRe.src,
+ tokens: internalRe.t,
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
+ RELEASE_TYPES: constants.RELEASE_TYPES,
+ compareIdentifiers: identifiers.compareIdentifiers,
+ rcompareIdentifiers: identifiers.rcompareIdentifiers,
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/internal/constants.js b/client/node_modules/global-agent/node_modules/semver/internal/constants.js
new file mode 100644
index 0000000..94be1c5
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/internal/constants.js
@@ -0,0 +1,35 @@
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+const SEMVER_SPEC_VERSION = '2.0.0'
+
+const MAX_LENGTH = 256
+const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+/* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+const MAX_SAFE_COMPONENT_LENGTH = 16
+
+// Max safe length for a build identifier. The max length minus 6 characters for
+// the shortest version with a build 0.0.0+BUILD.
+const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+
+const RELEASE_TYPES = [
+ 'major',
+ 'premajor',
+ 'minor',
+ 'preminor',
+ 'patch',
+ 'prepatch',
+ 'prerelease',
+]
+
+module.exports = {
+ MAX_LENGTH,
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_SAFE_INTEGER,
+ RELEASE_TYPES,
+ SEMVER_SPEC_VERSION,
+ FLAG_INCLUDE_PRERELEASE: 0b001,
+ FLAG_LOOSE: 0b010,
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/internal/debug.js b/client/node_modules/global-agent/node_modules/semver/internal/debug.js
new file mode 100644
index 0000000..1c00e13
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/internal/debug.js
@@ -0,0 +1,9 @@
+const debug = (
+ typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)
+) ? (...args) => console.error('SEMVER', ...args)
+ : () => {}
+
+module.exports = debug
diff --git a/client/node_modules/global-agent/node_modules/semver/internal/identifiers.js b/client/node_modules/global-agent/node_modules/semver/internal/identifiers.js
new file mode 100644
index 0000000..e612d0a
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/internal/identifiers.js
@@ -0,0 +1,23 @@
+const numeric = /^[0-9]+$/
+const compareIdentifiers = (a, b) => {
+ const anum = numeric.test(a)
+ const bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
+
+module.exports = {
+ compareIdentifiers,
+ rcompareIdentifiers,
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/internal/parse-options.js b/client/node_modules/global-agent/node_modules/semver/internal/parse-options.js
new file mode 100644
index 0000000..10d64ce
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/internal/parse-options.js
@@ -0,0 +1,15 @@
+// parse out just the options we care about
+const looseOption = Object.freeze({ loose: true })
+const emptyOpts = Object.freeze({ })
+const parseOptions = options => {
+ if (!options) {
+ return emptyOpts
+ }
+
+ if (typeof options !== 'object') {
+ return looseOption
+ }
+
+ return options
+}
+module.exports = parseOptions
diff --git a/client/node_modules/global-agent/node_modules/semver/internal/re.js b/client/node_modules/global-agent/node_modules/semver/internal/re.js
new file mode 100644
index 0000000..21150b3
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/internal/re.js
@@ -0,0 +1,212 @@
+const {
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_LENGTH,
+} = require('./constants')
+const debug = require('./debug')
+exports = module.exports = {}
+
+// The actual regexps go on exports.re
+const re = exports.re = []
+const safeRe = exports.safeRe = []
+const src = exports.src = []
+const t = exports.t = {}
+let R = 0
+
+const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+const safeRegexReplacements = [
+ ['\\s', 1],
+ ['\\d', MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
+
+const makeSafeRegex = (value) => {
+ for (const [token, max] of safeRegexReplacements) {
+ value = value
+ .split(`${token}*`).join(`${token}{0,${max}}`)
+ .split(`${token}+`).join(`${token}{1,${max}}`)
+ }
+ return value
+}
+
+const createToken = (name, value, isGlobal) => {
+ const safe = makeSafeRegex(value)
+ const index = R++
+ debug(name, index, value)
+ t[name] = index
+ src[index] = value
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
+ safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
+createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})`)
+
+createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
+}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
+
+createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
+}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
+}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
+}${src[t.PRERELEASE]}?${
+ src[t.BUILD]}?`)
+
+createToken('FULL', `^${src[t.FULLPLAIN]}$`)
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
+}${src[t.PRERELEASELOOSE]}?${
+ src[t.BUILD]}?`)
+
+createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
+
+createToken('GTLT', '((?:<|>)?=?)')
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
+createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
+
+createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:${src[t.PRERELEASE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:${src[t.PRERELEASELOOSE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
+createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+createToken('COERCE', `${'(^|[^\\d])' +
+ '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:$|[^\\d])`)
+createToken('COERCERTL', src[t.COERCE], true)
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+createToken('LONETILDE', '(?:~>?)')
+
+createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
+exports.tildeTrimReplace = '$1~'
+
+createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
+createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+createToken('LONECARET', '(?:\\^)')
+
+createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
+exports.caretTrimReplace = '$1^'
+
+createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
+createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
+createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
+}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
+exports.comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAIN]})` +
+ `\\s*$`)
+
+createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s*$`)
+
+// Star ranges basically just allow anything at all.
+createToken('STAR', '(<|>)?=?\\s*\\*')
+// >=0.0.0 is like a star
+createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
+createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
diff --git a/client/node_modules/global-agent/node_modules/semver/package.json b/client/node_modules/global-agent/node_modules/semver/package.json
new file mode 100644
index 0000000..c145eca
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "semver",
+ "version": "7.5.4",
+ "description": "The semantic version parser used by npm.",
+ "main": "index.js",
+ "scripts": {
+ "test": "tap",
+ "snap": "tap",
+ "lint": "eslint \"**/*.js\"",
+ "postlint": "template-oss-check",
+ "lintfix": "npm run lint -- --fix",
+ "posttest": "npm run lint",
+ "template-oss-apply": "template-oss-apply --force"
+ },
+ "devDependencies": {
+ "@npmcli/eslint-config": "^4.0.0",
+ "@npmcli/template-oss": "4.17.0",
+ "tap": "^16.0.0"
+ },
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/node-semver.git"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "classes/",
+ "functions/",
+ "internal/",
+ "ranges/",
+ "index.js",
+ "preload.js",
+ "range.bnf"
+ ],
+ "tap": {
+ "timeout": 30,
+ "coverage-map": "map.js",
+ "nyc-arg": [
+ "--exclude",
+ "tap-snapshots/**"
+ ]
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "author": "GitHub Inc.",
+ "templateOSS": {
+ "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
+ "version": "4.17.0",
+ "engines": ">=10",
+ "ciVersions": [
+ "10.0.0",
+ "10.x",
+ "12.x",
+ "14.x",
+ "16.x",
+ "18.x"
+ ],
+ "npmSpec": "8",
+ "distPaths": [
+ "classes/",
+ "functions/",
+ "internal/",
+ "ranges/",
+ "index.js",
+ "preload.js",
+ "range.bnf"
+ ],
+ "allowPaths": [
+ "/classes/",
+ "/functions/",
+ "/internal/",
+ "/ranges/",
+ "/index.js",
+ "/preload.js",
+ "/range.bnf"
+ ],
+ "publish": "true"
+ }
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/preload.js b/client/node_modules/global-agent/node_modules/semver/preload.js
new file mode 100644
index 0000000..947cd4f
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/preload.js
@@ -0,0 +1,2 @@
+// XXX remove in v8 or beyond
+module.exports = require('./index.js')
diff --git a/client/node_modules/global-agent/node_modules/semver/range.bnf b/client/node_modules/global-agent/node_modules/semver/range.bnf
new file mode 100644
index 0000000..d4c6ae0
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/gtr.js b/client/node_modules/global-agent/node_modules/semver/ranges/gtr.js
new file mode 100644
index 0000000..db7e355
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/gtr.js
@@ -0,0 +1,4 @@
+// Determine if version is greater than all the versions possible in the range.
+const outside = require('./outside')
+const gtr = (version, range, options) => outside(version, range, '>', options)
+module.exports = gtr
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/intersects.js b/client/node_modules/global-agent/node_modules/semver/ranges/intersects.js
new file mode 100644
index 0000000..e0e9b7c
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/intersects.js
@@ -0,0 +1,7 @@
+const Range = require('../classes/range')
+const intersects = (r1, r2, options) => {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2, options)
+}
+module.exports = intersects
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/ltr.js b/client/node_modules/global-agent/node_modules/semver/ranges/ltr.js
new file mode 100644
index 0000000..528a885
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/ltr.js
@@ -0,0 +1,4 @@
+const outside = require('./outside')
+// Determine if version is less than all the versions possible in the range
+const ltr = (version, range, options) => outside(version, range, '<', options)
+module.exports = ltr
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/max-satisfying.js b/client/node_modules/global-agent/node_modules/semver/ranges/max-satisfying.js
new file mode 100644
index 0000000..6e3d993
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/max-satisfying.js
@@ -0,0 +1,25 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+
+const maxSatisfying = (versions, range, options) => {
+ let max = null
+ let maxSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+module.exports = maxSatisfying
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/min-satisfying.js b/client/node_modules/global-agent/node_modules/semver/ranges/min-satisfying.js
new file mode 100644
index 0000000..9b60974
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/min-satisfying.js
@@ -0,0 +1,24 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+const minSatisfying = (versions, range, options) => {
+ let min = null
+ let minSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+module.exports = minSatisfying
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/min-version.js b/client/node_modules/global-agent/node_modules/semver/ranges/min-version.js
new file mode 100644
index 0000000..350e1f7
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/min-version.js
@@ -0,0 +1,61 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+const gt = require('../functions/gt')
+
+const minVersion = (range, loose) => {
+ range = new Range(range, loose)
+
+ let minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
+
+ let setMin = null
+ comparators.forEach((comparator) => {
+ // Clone to avoid manipulating the comparator's semver object.
+ const compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!setMin || gt(compver, setMin)) {
+ setMin = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error(`Unexpected operation: ${comparator.operator}`)
+ }
+ })
+ if (setMin && (!minver || gt(minver, setMin))) {
+ minver = setMin
+ }
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+module.exports = minVersion
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/outside.js b/client/node_modules/global-agent/node_modules/semver/ranges/outside.js
new file mode 100644
index 0000000..ae99b10
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/outside.js
@@ -0,0 +1,80 @@
+const SemVer = require('../classes/semver')
+const Comparator = require('../classes/comparator')
+const { ANY } = Comparator
+const Range = require('../classes/range')
+const satisfies = require('../functions/satisfies')
+const gt = require('../functions/gt')
+const lt = require('../functions/lt')
+const lte = require('../functions/lte')
+const gte = require('../functions/gte')
+
+const outside = (version, range, hilo, options) => {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ let gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisfies the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
+
+ let high = null
+ let low = null
+
+ comparators.forEach((comparator) => {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+module.exports = outside
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/simplify.js b/client/node_modules/global-agent/node_modules/semver/ranges/simplify.js
new file mode 100644
index 0000000..618d5b6
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/simplify.js
@@ -0,0 +1,47 @@
+// given a set of versions and a range, create a "simplified" range
+// that includes the same versions that the original range does
+// If the original range is shorter than the simplified one, return that.
+const satisfies = require('../functions/satisfies.js')
+const compare = require('../functions/compare.js')
+module.exports = (versions, range, options) => {
+ const set = []
+ let first = null
+ let prev = null
+ const v = versions.sort((a, b) => compare(a, b, options))
+ for (const version of v) {
+ const included = satisfies(version, range, options)
+ if (included) {
+ prev = version
+ if (!first) {
+ first = version
+ }
+ } else {
+ if (prev) {
+ set.push([first, prev])
+ }
+ prev = null
+ first = null
+ }
+ }
+ if (first) {
+ set.push([first, null])
+ }
+
+ const ranges = []
+ for (const [min, max] of set) {
+ if (min === max) {
+ ranges.push(min)
+ } else if (!max && min === v[0]) {
+ ranges.push('*')
+ } else if (!max) {
+ ranges.push(`>=${min}`)
+ } else if (min === v[0]) {
+ ranges.push(`<=${max}`)
+ } else {
+ ranges.push(`${min} - ${max}`)
+ }
+ }
+ const simplified = ranges.join(' || ')
+ const original = typeof range.raw === 'string' ? range.raw : String(range)
+ return simplified.length < original.length ? simplified : range
+}
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/subset.js b/client/node_modules/global-agent/node_modules/semver/ranges/subset.js
new file mode 100644
index 0000000..1e5c268
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/subset.js
@@ -0,0 +1,247 @@
+const Range = require('../classes/range.js')
+const Comparator = require('../classes/comparator.js')
+const { ANY } = Comparator
+const satisfies = require('../functions/satisfies.js')
+const compare = require('../functions/compare.js')
+
+// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
+// - Every simple range `r1, r2, ...` is a null set, OR
+// - Every simple range `r1, r2, ...` which is not a null set is a subset of
+// some `R1, R2, ...`
+//
+// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
+// - If c is only the ANY comparator
+// - If C is only the ANY comparator, return true
+// - Else if in prerelease mode, return false
+// - else replace c with `[>=0.0.0]`
+// - If C is only the ANY comparator
+// - if in prerelease mode, return true
+// - else replace C with `[>=0.0.0]`
+// - Let EQ be the set of = comparators in c
+// - If EQ is more than one, return true (null set)
+// - Let GT be the highest > or >= comparator in c
+// - Let LT be the lowest < or <= comparator in c
+// - If GT and LT, and GT.semver > LT.semver, return true (null set)
+// - If any C is a = range, and GT or LT are set, return false
+// - If EQ
+// - If GT, and EQ does not satisfy GT, return true (null set)
+// - If LT, and EQ does not satisfy LT, return true (null set)
+// - If EQ satisfies every C, return true
+// - Else return false
+// - If GT
+// - If GT.semver is lower than any > or >= comp in C, return false
+// - If GT is >=, and GT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the GT.semver tuple, return false
+// - If LT
+// - If LT.semver is greater than any < or <= comp in C, return false
+// - If LT is <=, and LT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the LT.semver tuple, return false
+// - Else return true
+
+const subset = (sub, dom, options = {}) => {
+ if (sub === dom) {
+ return true
+ }
+
+ sub = new Range(sub, options)
+ dom = new Range(dom, options)
+ let sawNonNull = false
+
+ OUTER: for (const simpleSub of sub.set) {
+ for (const simpleDom of dom.set) {
+ const isSub = simpleSubset(simpleSub, simpleDom, options)
+ sawNonNull = sawNonNull || isSub !== null
+ if (isSub) {
+ continue OUTER
+ }
+ }
+ // the null set is a subset of everything, but null simple ranges in
+ // a complex range should be ignored. so if we saw a non-null range,
+ // then we know this isn't a subset, but if EVERY simple range was null,
+ // then it is a subset.
+ if (sawNonNull) {
+ return false
+ }
+ }
+ return true
+}
+
+const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]
+const minimumVersion = [new Comparator('>=0.0.0')]
+
+const simpleSubset = (sub, dom, options) => {
+ if (sub === dom) {
+ return true
+ }
+
+ if (sub.length === 1 && sub[0].semver === ANY) {
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ return true
+ } else if (options.includePrerelease) {
+ sub = minimumVersionWithPreRelease
+ } else {
+ sub = minimumVersion
+ }
+ }
+
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ if (options.includePrerelease) {
+ return true
+ } else {
+ dom = minimumVersion
+ }
+ }
+
+ const eqSet = new Set()
+ let gt, lt
+ for (const c of sub) {
+ if (c.operator === '>' || c.operator === '>=') {
+ gt = higherGT(gt, c, options)
+ } else if (c.operator === '<' || c.operator === '<=') {
+ lt = lowerLT(lt, c, options)
+ } else {
+ eqSet.add(c.semver)
+ }
+ }
+
+ if (eqSet.size > 1) {
+ return null
+ }
+
+ let gtltComp
+ if (gt && lt) {
+ gtltComp = compare(gt.semver, lt.semver, options)
+ if (gtltComp > 0) {
+ return null
+ } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
+ return null
+ }
+ }
+
+ // will iterate one or zero times
+ for (const eq of eqSet) {
+ if (gt && !satisfies(eq, String(gt), options)) {
+ return null
+ }
+
+ if (lt && !satisfies(eq, String(lt), options)) {
+ return null
+ }
+
+ for (const c of dom) {
+ if (!satisfies(eq, String(c), options)) {
+ return false
+ }
+ }
+
+ return true
+ }
+
+ let higher, lower
+ let hasDomLT, hasDomGT
+ // if the subset has a prerelease, we need a comparator in the superset
+ // with the same tuple and a prerelease, or it's not a subset
+ let needDomLTPre = lt &&
+ !options.includePrerelease &&
+ lt.semver.prerelease.length ? lt.semver : false
+ let needDomGTPre = gt &&
+ !options.includePrerelease &&
+ gt.semver.prerelease.length ? gt.semver : false
+ // exception: <1.2.3-0 is the same as <1.2.3
+ if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&
+ lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
+ needDomLTPre = false
+ }
+
+ for (const c of dom) {
+ hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
+ hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
+ if (gt) {
+ if (needDomGTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomGTPre.major &&
+ c.semver.minor === needDomGTPre.minor &&
+ c.semver.patch === needDomGTPre.patch) {
+ needDomGTPre = false
+ }
+ }
+ if (c.operator === '>' || c.operator === '>=') {
+ higher = higherGT(gt, c, options)
+ if (higher === c && higher !== gt) {
+ return false
+ }
+ } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (lt) {
+ if (needDomLTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomLTPre.major &&
+ c.semver.minor === needDomLTPre.minor &&
+ c.semver.patch === needDomLTPre.patch) {
+ needDomLTPre = false
+ }
+ }
+ if (c.operator === '<' || c.operator === '<=') {
+ lower = lowerLT(lt, c, options)
+ if (lower === c && lower !== lt) {
+ return false
+ }
+ } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (!c.operator && (lt || gt) && gtltComp !== 0) {
+ return false
+ }
+ }
+
+ // if there was a < or >, and nothing in the dom, then must be false
+ // UNLESS it was limited by another range in the other direction.
+ // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
+ if (gt && hasDomLT && !lt && gtltComp !== 0) {
+ return false
+ }
+
+ if (lt && hasDomGT && !gt && gtltComp !== 0) {
+ return false
+ }
+
+ // we needed a prerelease range in a specific tuple, but didn't get one
+ // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
+ // because it includes prereleases in the 1.2.3 tuple
+ if (needDomGTPre || needDomLTPre) {
+ return false
+ }
+
+ return true
+}
+
+// >=1.2.3 is lower than >1.2.3
+const higherGT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp > 0 ? a
+ : comp < 0 ? b
+ : b.operator === '>' && a.operator === '>=' ? b
+ : a
+}
+
+// <=1.2.3 is higher than <1.2.3
+const lowerLT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp < 0 ? a
+ : comp > 0 ? b
+ : b.operator === '<' && a.operator === '<=' ? b
+ : a
+}
+
+module.exports = subset
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/to-comparators.js b/client/node_modules/global-agent/node_modules/semver/ranges/to-comparators.js
new file mode 100644
index 0000000..6c8bc7e
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/to-comparators.js
@@ -0,0 +1,8 @@
+const Range = require('../classes/range')
+
+// Mostly just for testing and legacy API reasons
+const toComparators = (range, options) =>
+ new Range(range, options).set
+ .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
+
+module.exports = toComparators
diff --git a/client/node_modules/global-agent/node_modules/semver/ranges/valid.js b/client/node_modules/global-agent/node_modules/semver/ranges/valid.js
new file mode 100644
index 0000000..365f356
--- /dev/null
+++ b/client/node_modules/global-agent/node_modules/semver/ranges/valid.js
@@ -0,0 +1,11 @@
+const Range = require('../classes/range')
+const validRange = (range, options) => {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+module.exports = validRange
diff --git a/client/node_modules/global-agent/package.json b/client/node_modules/global-agent/package.json
new file mode 100644
index 0000000..85f31af
--- /dev/null
+++ b/client/node_modules/global-agent/package.json
@@ -0,0 +1,105 @@
+{
+ "author": {
+ "email": "gajus@gajus.com",
+ "name": "Gajus Kuizinas",
+ "url": "http://gajus.com"
+ },
+ "ava": {
+ "babel": {
+ "compileAsTests": [
+ "test/helpers/**/*"
+ ]
+ },
+ "files": [
+ "test/global-agent/**/*"
+ ],
+ "require": [
+ "@babel/register"
+ ]
+ },
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "description": "Global HTTP/HTTPS proxy configurable using environment variables.",
+ "devDependencies": {
+ "@ava/babel": "^1.0.1",
+ "@babel/cli": "^7.10.1",
+ "@babel/core": "^7.10.2",
+ "@babel/node": "^7.10.1",
+ "@babel/plugin-transform-flow-strip-types": "^7.10.1",
+ "@babel/preset-env": "^7.10.2",
+ "@babel/register": "^7.10.1",
+ "anyproxy": "^4.1.2",
+ "ava": "^3.8.2",
+ "axios": "^0.19.2",
+ "babel-plugin-istanbul": "^6.0.0",
+ "babel-plugin-transform-export-default-name": "^2.0.4",
+ "coveralls": "^3.1.0",
+ "eslint": "^7.1.0",
+ "eslint-config-canonical": "^20.0.5",
+ "flow-bin": "^0.125.1",
+ "flow-copy-source": "^2.0.9",
+ "get-port": "^5.1.1",
+ "got": "^11.1.4",
+ "husky": "^4.2.5",
+ "nyc": "^15.1.0",
+ "pem": "^1.14.4",
+ "request": "^2.88.2",
+ "semantic-release": "^17.0.8",
+ "sinon": "^9.0.2"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "npm run lint && npm run test && npm run build"
+ }
+ },
+ "keywords": [
+ "http",
+ "global",
+ "proxy",
+ "agent"
+ ],
+ "license": "BSD-3-Clause",
+ "main": "./dist/index.js",
+ "name": "global-agent",
+ "nyc": {
+ "all": true,
+ "exclude": [
+ "src/bin",
+ "src/queries/*.js"
+ ],
+ "include": [
+ "src/**/*.js"
+ ],
+ "instrument": false,
+ "reporter": [
+ "html",
+ "text-summary"
+ ],
+ "require": [
+ "@babel/register"
+ ],
+ "silent": true,
+ "sourceMap": false
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/gajus/global-agent"
+ },
+ "scripts": {
+ "build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && flow-copy-source src dist",
+ "create-readme": "gitdown ./.README/README.md --output-file ./README.md",
+ "dev": "NODE_ENV=development babel ./src --out-dir ./dist --copy-files --source-maps --watch",
+ "lint": "eslint ./src ./test && flow",
+ "test": "NODE_TLS_REJECT_UNAUTHORIZED=false NODE_ENV=test nyc ava --verbose --serial"
+ },
+ "version": "3.0.0"
+}
diff --git a/client/node_modules/global-agent/src/Logger.js b/client/node_modules/global-agent/src/Logger.js
new file mode 100644
index 0000000..166f1e4
--- /dev/null
+++ b/client/node_modules/global-agent/src/Logger.js
@@ -0,0 +1,10 @@
+// @flow
+
+import Roarr from 'roarr';
+
+const Logger = Roarr
+ .child({
+ package: 'global-agent',
+ });
+
+export default Logger;
diff --git a/client/node_modules/global-agent/src/classes/Agent.js b/client/node_modules/global-agent/src/classes/Agent.js
new file mode 100644
index 0000000..801dd1f
--- /dev/null
+++ b/client/node_modules/global-agent/src/classes/Agent.js
@@ -0,0 +1,212 @@
+// @flow
+
+import {
+ serializeError,
+} from 'serialize-error';
+import {
+ boolean,
+} from 'boolean';
+import Logger from '../Logger';
+import type {
+ AgentType,
+ GetUrlProxyMethodType,
+ IsProxyConfiguredMethodType,
+ MustUrlUseProxyMethodType,
+ ProtocolType,
+} from '../types';
+
+const log = Logger.child({
+ namespace: 'Agent',
+});
+
+let requestId = 0;
+
+class Agent {
+ defaultPort: number;
+
+ protocol: ProtocolType;
+
+ fallbackAgent: AgentType;
+
+ isProxyConfigured: IsProxyConfiguredMethodType;
+
+ mustUrlUseProxy: MustUrlUseProxyMethodType;
+
+ getUrlProxy: GetUrlProxyMethodType;
+
+ socketConnectionTimeout: number;
+
+ constructor (
+ isProxyConfigured: IsProxyConfiguredMethodType,
+ mustUrlUseProxy: MustUrlUseProxyMethodType,
+ getUrlProxy: GetUrlProxyMethodType,
+ fallbackAgent: AgentType,
+ socketConnectionTimeout: number,
+ ) {
+ this.fallbackAgent = fallbackAgent;
+ this.isProxyConfigured = isProxyConfigured;
+ this.mustUrlUseProxy = mustUrlUseProxy;
+ this.getUrlProxy = getUrlProxy;
+ this.socketConnectionTimeout = socketConnectionTimeout;
+ }
+
+ addRequest (request: *, configuration: *) {
+ let requestUrl;
+
+ // It is possible that addRequest was constructed for a proxied request already, e.g.
+ // "request" package does this when it detects that a proxy should be used
+ // https://github.com/request/request/blob/212570b6971a732b8dd9f3c73354bcdda158a737/request.js#L402
+ // https://gist.github.com/gajus/e2074cd3b747864ffeaabbd530d30218
+ if (request.path.startsWith('http://') || request.path.startsWith('https://')) {
+ requestUrl = request.path;
+ } else {
+ requestUrl = this.protocol + '//' + (configuration.hostname || configuration.host) + (configuration.port === 80 || configuration.port === 443 ? '' : ':' + configuration.port) + request.path;
+ }
+
+ if (!this.isProxyConfigured()) {
+ log.trace({
+ destination: requestUrl,
+ }, 'not proxying request; GLOBAL_AGENT.HTTP_PROXY is not configured');
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.fallbackAgent.addRequest(request, configuration);
+
+ return;
+ }
+
+ if (!this.mustUrlUseProxy(requestUrl)) {
+ log.trace({
+ destination: requestUrl,
+ }, 'not proxying request; url matches GLOBAL_AGENT.NO_PROXY');
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.fallbackAgent.addRequest(request, configuration);
+
+ return;
+ }
+
+ const currentRequestId = requestId++;
+
+ const proxy = this.getUrlProxy(requestUrl);
+
+ if (this.protocol === 'http:') {
+ request.path = requestUrl;
+
+ if (proxy.authorization) {
+ request.setHeader('proxy-authorization', 'Basic ' + Buffer.from(proxy.authorization).toString('base64'));
+ }
+ }
+
+ log.trace({
+ destination: requestUrl,
+ proxy: 'http://' + proxy.hostname + ':' + proxy.port,
+ requestId: currentRequestId,
+ }, 'proxying request');
+
+ request.on('error', (error) => {
+ log.error({
+ error: serializeError(error),
+ }, 'request error');
+ });
+
+ request.once('response', (response) => {
+ log.trace({
+ headers: response.headers,
+ requestId: currentRequestId,
+ statusCode: response.statusCode,
+ }, 'proxying response');
+ });
+
+ request.shouldKeepAlive = false;
+
+ const connectionConfiguration = {
+ host: configuration.hostname || configuration.host,
+ port: configuration.port || 80,
+ proxy,
+ tls: {},
+ };
+
+ // add optional tls options for https requests.
+ // @see https://nodejs.org/docs/latest-v12.x/api/https.html#https_https_request_url_options_callback :
+ // > The following additional options from tls.connect()
+ // > - https://nodejs.org/docs/latest-v12.x/api/tls.html#tls_tls_connect_options_callback -
+ // > are also accepted:
+ // > ca, cert, ciphers, clientCertEngine, crl, dhparam, ecdhCurve, honorCipherOrder,
+ // > key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext.
+ if (this.protocol === 'https:') {
+ connectionConfiguration.tls = {
+ ca: configuration.ca,
+ cert: configuration.cert,
+ ciphers: configuration.ciphers,
+ clientCertEngine: configuration.clientCertEngine,
+ crl: configuration.crl,
+ dhparam: configuration.dhparam,
+ ecdhCurve: configuration.ecdhCurve,
+ honorCipherOrder: configuration.honorCipherOrder,
+ key: configuration.key,
+ passphrase: configuration.passphrase,
+ pfx: configuration.pfx,
+ rejectUnauthorized: configuration.rejectUnauthorized,
+ secureOptions: configuration.secureOptions,
+ secureProtocol: configuration.secureProtocol,
+ servername: configuration.servername || connectionConfiguration.host,
+ sessionIdContext: configuration.sessionIdContext,
+ };
+
+ // This is not ideal because there is no way to override this setting using `tls` configuration if `NODE_TLS_REJECT_UNAUTHORIZED=0`.
+ // However, popular HTTP clients (such as https://github.com/sindresorhus/got) come with pre-configured value for `rejectUnauthorized`,
+ // which makes it impossible to override that value globally and respect `rejectUnauthorized` for specific requests only.
+ //
+ // eslint-disable-next-line no-process-env
+ if (typeof process.env.NODE_TLS_REJECT_UNAUTHORIZED === 'string' && boolean(process.env.NODE_TLS_REJECT_UNAUTHORIZED) === false) {
+ connectionConfiguration.tls.rejectUnauthorized = false;
+ }
+ }
+
+ // $FlowFixMe It appears that Flow is missing the method description.
+ this.createConnection(connectionConfiguration, (error, socket) => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connecting');
+
+ // @see https://github.com/nodejs/node/issues/5757#issuecomment-305969057
+ if (socket) {
+ socket.setTimeout(this.socketConnectionTimeout, () => {
+ socket.destroy();
+ });
+
+ socket.once('connect', () => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connected');
+
+ socket.setTimeout(0);
+ });
+
+ socket.once('secureConnect', () => {
+ log.trace({
+ target: connectionConfiguration,
+ }, 'connected (secure)');
+
+ socket.setTimeout(0);
+ });
+ }
+
+ if (error) {
+ request.emit('error', error);
+ } else {
+ log.debug('created socket');
+
+ socket.on('error', (socketError) => {
+ log.error({
+ error: serializeError(socketError),
+ }, 'socket error');
+ });
+
+ request.onSocket(socket);
+ }
+ });
+ }
+}
+
+export default Agent;
diff --git a/client/node_modules/global-agent/src/classes/HttpProxyAgent.js b/client/node_modules/global-agent/src/classes/HttpProxyAgent.js
new file mode 100644
index 0000000..8b9b471
--- /dev/null
+++ b/client/node_modules/global-agent/src/classes/HttpProxyAgent.js
@@ -0,0 +1,30 @@
+// @flow
+
+import net from 'net';
+import type {
+ ConnectionCallbackType,
+ ConnectionConfigurationType,
+} from '../types';
+import Agent from './Agent';
+
+class HttpProxyAgent extends Agent {
+ // @see https://github.com/sindresorhus/eslint-plugin-unicorn/issues/169#issuecomment-486980290
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor (...args: *) {
+ super(...args);
+
+ this.protocol = 'http:';
+ this.defaultPort = 80;
+ }
+
+ createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {
+ const socket = net.connect(
+ configuration.proxy.port,
+ configuration.proxy.hostname,
+ );
+
+ callback(null, socket);
+ }
+}
+
+export default HttpProxyAgent;
diff --git a/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js b/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js
new file mode 100644
index 0000000..24d724f
--- /dev/null
+++ b/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js
@@ -0,0 +1,54 @@
+// @flow
+
+import net from 'net';
+import tls from 'tls';
+import type {
+ ConnectionCallbackType,
+ ConnectionConfigurationType,
+} from '../types';
+import Agent from './Agent';
+
+class HttpsProxyAgent extends Agent {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor (...args: *) {
+ super(...args);
+
+ this.protocol = 'https:';
+ this.defaultPort = 443;
+ }
+
+ createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {
+ const socket = net.connect(
+ configuration.proxy.port,
+ configuration.proxy.hostname,
+ );
+
+ socket.on('error', (error) => {
+ callback(error);
+ });
+
+ socket.once('data', () => {
+ const secureSocket = tls.connect({
+ ...configuration.tls,
+ socket,
+ });
+
+ callback(null, secureSocket);
+ });
+
+ let connectMessage = '';
+
+ connectMessage += 'CONNECT ' + configuration.host + ':' + configuration.port + ' HTTP/1.1\r\n';
+ connectMessage += 'Host: ' + configuration.host + ':' + configuration.port + '\r\n';
+
+ if (configuration.proxy.authorization) {
+ connectMessage += 'Proxy-Authorization: Basic ' + Buffer.from(configuration.proxy.authorization).toString('base64') + '\r\n';
+ }
+
+ connectMessage += '\r\n';
+
+ socket.write(connectMessage);
+ }
+}
+
+export default HttpsProxyAgent;
diff --git a/client/node_modules/global-agent/src/classes/index.js b/client/node_modules/global-agent/src/classes/index.js
new file mode 100644
index 0000000..9e8418a
--- /dev/null
+++ b/client/node_modules/global-agent/src/classes/index.js
@@ -0,0 +1,5 @@
+// @flow
+
+export {default as Agent} from './Agent';
+export {default as HttpProxyAgent} from './HttpProxyAgent';
+export {default as HttpsProxyAgent} from './HttpsProxyAgent';
diff --git a/client/node_modules/global-agent/src/errors.js b/client/node_modules/global-agent/src/errors.js
new file mode 100644
index 0000000..d93ba6f
--- /dev/null
+++ b/client/node_modules/global-agent/src/errors.js
@@ -0,0 +1,15 @@
+// @flow
+
+/* eslint-disable fp/no-class, fp/no-this */
+
+import ExtendableError from 'es6-error';
+
+export class UnexpectedStateError extends ExtendableError {
+ code: string;
+
+ constructor (message: string, code: string = 'UNEXPECTED_STATE_ERROR') {
+ super(message);
+
+ this.code = code;
+ }
+}
diff --git a/client/node_modules/global-agent/src/factories/createGlobalProxyAgent.js b/client/node_modules/global-agent/src/factories/createGlobalProxyAgent.js
new file mode 100644
index 0000000..d515a9d
--- /dev/null
+++ b/client/node_modules/global-agent/src/factories/createGlobalProxyAgent.js
@@ -0,0 +1,197 @@
+// @flow
+
+import http from 'http';
+import https from 'https';
+import {
+ boolean as parseBoolean,
+} from 'boolean';
+import semver from 'semver';
+import Logger from '../Logger';
+import {
+ HttpProxyAgent,
+ HttpsProxyAgent,
+} from '../classes';
+import {
+ UnexpectedStateError,
+} from '../errors';
+import {
+ bindHttpMethod,
+ isUrlMatchingNoProxy,
+ parseProxyUrl,
+} from '../utilities';
+import type {
+ ProxyAgentConfigurationInputType,
+ ProxyAgentConfigurationType,
+} from '../types';
+import createProxyController from './createProxyController';
+
+const httpGet = http.get;
+const httpRequest = http.request;
+const httpsGet = https.get;
+const httpsRequest = https.request;
+
+const log = Logger.child({
+ namespace: 'createGlobalProxyAgent',
+});
+
+const defaultConfigurationInput = {
+ environmentVariableNamespace: undefined,
+ forceGlobalAgent: undefined,
+ socketConnectionTimeout: 60000,
+};
+
+const omitUndefined = (subject) => {
+ const keys = Object.keys(subject);
+
+ const result = {};
+
+ for (const key of keys) {
+ const value = subject[key];
+
+ if (value !== undefined) {
+ result[key] = value;
+ }
+ }
+
+ return result;
+};
+
+const createConfiguration = (configurationInput: ProxyAgentConfigurationInputType): ProxyAgentConfigurationType => {
+ // eslint-disable-next-line no-process-env
+ const environment = process.env;
+
+ const defaultConfiguration = {
+ environmentVariableNamespace: typeof environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE === 'string' ? environment.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE : 'GLOBAL_AGENT_',
+ forceGlobalAgent: typeof environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT === 'string' ? parseBoolean(environment.GLOBAL_AGENT_FORCE_GLOBAL_AGENT) : true,
+ socketConnectionTimeout: typeof environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT === 'string' ? Number.parseInt(environment.GLOBAL_AGENT_SOCKET_CONNECTION_TIMEOUT, 10) : defaultConfigurationInput.socketConnectionTimeout,
+ };
+
+ // $FlowFixMe
+ return {
+ ...defaultConfiguration,
+ ...omitUndefined(configurationInput),
+ };
+};
+
+export default (configurationInput: ProxyAgentConfigurationInputType = defaultConfigurationInput) => {
+ const configuration = createConfiguration(configurationInput);
+
+ const proxyController = createProxyController();
+
+ // eslint-disable-next-line no-process-env
+ proxyController.HTTP_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTP_PROXY'] || null;
+
+ // eslint-disable-next-line no-process-env
+ proxyController.HTTPS_PROXY = process.env[configuration.environmentVariableNamespace + 'HTTPS_PROXY'] || null;
+
+ // eslint-disable-next-line no-process-env
+ proxyController.NO_PROXY = process.env[configuration.environmentVariableNamespace + 'NO_PROXY'] || null;
+
+ log.info({
+ configuration,
+ state: proxyController,
+ }, 'global agent has been initialized');
+
+ const mustUrlUseProxy = (getProxy) => {
+ return (url) => {
+ if (!getProxy()) {
+ return false;
+ }
+
+ if (!proxyController.NO_PROXY) {
+ return true;
+ }
+
+ return !isUrlMatchingNoProxy(url, proxyController.NO_PROXY);
+ };
+ };
+
+ const getUrlProxy = (getProxy) => {
+ return () => {
+ const proxy = getProxy();
+
+ if (!proxy) {
+ throw new UnexpectedStateError('HTTP(S) proxy must be configured.');
+ }
+
+ return parseProxyUrl(proxy);
+ };
+ };
+
+ const getHttpProxy = () => {
+ return proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpProxyAgent = class extends HttpProxyAgent {
+ constructor () {
+ super(
+ () => {
+ return getHttpProxy();
+ },
+ mustUrlUseProxy(getHttpProxy),
+ getUrlProxy(getHttpProxy),
+ http.globalAgent,
+ configuration.socketConnectionTimeout,
+ );
+ }
+ };
+
+ const httpAgent = new BoundHttpProxyAgent();
+
+ const getHttpsProxy = () => {
+ return proxyController.HTTPS_PROXY || proxyController.HTTP_PROXY;
+ };
+
+ const BoundHttpsProxyAgent = class extends HttpsProxyAgent {
+ constructor () {
+ super(
+ () => {
+ return getHttpsProxy();
+ },
+ mustUrlUseProxy(getHttpsProxy),
+ getUrlProxy(getHttpsProxy),
+ https.globalAgent,
+ configuration.socketConnectionTimeout,
+ );
+ }
+ };
+
+ const httpsAgent = new BoundHttpsProxyAgent();
+
+ // Overriding globalAgent was added in v11.7.
+ // @see https://nodejs.org/uk/blog/release/v11.7.0/
+ if (semver.gte(process.version, 'v11.7.0')) {
+ // @see https://github.com/facebook/flow/issues/7670
+ // $FlowFixMe
+ http.globalAgent = httpAgent;
+
+ // $FlowFixMe
+ https.globalAgent = httpsAgent;
+ }
+
+ // The reason this logic is used in addition to overriding http(s).globalAgent
+ // is because there is no guarantee that we set http(s).globalAgent variable
+ // before an instance of http(s).Agent has been already constructed by someone,
+ // e.g. Stripe SDK creates instances of http(s).Agent at the top-level.
+ // @see https://github.com/gajus/global-agent/pull/13
+ //
+ // We still want to override http(s).globalAgent when possible to enable logic
+ // in `bindHttpMethod`.
+ if (semver.gte(process.version, 'v10.0.0')) {
+ // $FlowFixMe
+ http.get = bindHttpMethod(httpGet, httpAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ http.request = bindHttpMethod(httpRequest, httpAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ https.get = bindHttpMethod(httpsGet, httpsAgent, configuration.forceGlobalAgent);
+
+ // $FlowFixMe
+ https.request = bindHttpMethod(httpsRequest, httpsAgent, configuration.forceGlobalAgent);
+ } else {
+ log.warn('attempt to initialize global-agent in unsupported Node.js version was ignored');
+ }
+
+ return proxyController;
+};
diff --git a/client/node_modules/global-agent/src/factories/createProxyController.js b/client/node_modules/global-agent/src/factories/createProxyController.js
new file mode 100644
index 0000000..5805ec8
--- /dev/null
+++ b/client/node_modules/global-agent/src/factories/createProxyController.js
@@ -0,0 +1,46 @@
+// @flow
+
+import Logger from '../Logger';
+
+type ProxyControllerType = {|
+ HTTP_PROXY: string | null,
+ HTTPS_PROXY: string | null,
+ NO_PROXY: string | null,
+|};
+
+const log = Logger.child({
+ namespace: 'createProxyController',
+});
+
+const KNOWN_PROPERTY_NAMES = [
+ 'HTTP_PROXY',
+ 'HTTPS_PROXY',
+ 'NO_PROXY',
+];
+
+export default (): ProxyControllerType => {
+ // eslint-disable-next-line fp/no-proxy
+ return new Proxy({
+ HTTP_PROXY: null,
+ HTTPS_PROXY: null,
+ NO_PROXY: null,
+ }, {
+ set: (subject, name, value) => {
+ if (!KNOWN_PROPERTY_NAMES.includes(name)) {
+ throw new Error('Cannot set an unmapped property "' + name + '".');
+ }
+
+ subject[name] = value;
+
+ log.info({
+ change: {
+ name,
+ value,
+ },
+ newConfiguration: subject,
+ }, 'configuration changed');
+
+ return true;
+ },
+ });
+};
diff --git a/client/node_modules/global-agent/src/factories/index.js b/client/node_modules/global-agent/src/factories/index.js
new file mode 100644
index 0000000..c16eca6
--- /dev/null
+++ b/client/node_modules/global-agent/src/factories/index.js
@@ -0,0 +1,4 @@
+// @flow
+
+export {default as createGlobalProxyAgent} from './createGlobalProxyAgent';
+export {default as createProxyController} from './createProxyController';
diff --git a/client/node_modules/global-agent/src/index.js b/client/node_modules/global-agent/src/index.js
new file mode 100644
index 0000000..14da1ba
--- /dev/null
+++ b/client/node_modules/global-agent/src/index.js
@@ -0,0 +1,4 @@
+// @flow
+
+export {bootstrap} from './routines';
+export {createGlobalProxyAgent} from './factories';
diff --git a/client/node_modules/global-agent/src/routines/bootstrap.js b/client/node_modules/global-agent/src/routines/bootstrap.js
new file mode 100644
index 0000000..038feb3
--- /dev/null
+++ b/client/node_modules/global-agent/src/routines/bootstrap.js
@@ -0,0 +1,25 @@
+// @flow
+
+import Logger from '../Logger';
+import {
+ createGlobalProxyAgent,
+} from '../factories';
+import type {
+ ProxyAgentConfigurationInputType,
+} from '../types';
+
+const log = Logger.child({
+ namespace: 'bootstrap',
+});
+
+export default (configurationInput?: ProxyAgentConfigurationInputType): boolean => {
+ if (global.GLOBAL_AGENT) {
+ log.warn('found global.GLOBAL_AGENT; second attempt to bootstrap global-agent was ignored');
+
+ return false;
+ }
+
+ global.GLOBAL_AGENT = createGlobalProxyAgent(configurationInput);
+
+ return true;
+};
diff --git a/client/node_modules/global-agent/src/routines/index.js b/client/node_modules/global-agent/src/routines/index.js
new file mode 100644
index 0000000..e47a8a0
--- /dev/null
+++ b/client/node_modules/global-agent/src/routines/index.js
@@ -0,0 +1,3 @@
+// @flow
+
+export {default as bootstrap} from './bootstrap';
diff --git a/client/node_modules/global-agent/src/types.js b/client/node_modules/global-agent/src/types.js
new file mode 100644
index 0000000..e2f1a99
--- /dev/null
+++ b/client/node_modules/global-agent/src/types.js
@@ -0,0 +1,66 @@
+// @flow
+
+import {
+ Socket,
+} from 'net';
+import {
+ TLSSocket,
+} from 'tls';
+import {
+ Agent as HttpAgent,
+} from 'http';
+import {
+ Agent as HttpsAgent,
+} from 'https';
+
+export type ProxyConfigurationType = {|
+ +authorization: string,
+ +hostname: string,
+ +port: number,
+|};
+
+export type TlsConfigurationType = {|
+ +ca?: string,
+ +cert?: string,
+ +ciphers?: string,
+ +clientCertEngine?: string,
+ +crl?: string,
+ +dhparam?: string,
+ +ecdhCurve?: string,
+ +honorCipherOrder?: boolean,
+ +key?: string,
+ +passphrase?: string,
+ +pfx?: string,
+ +rejectUnauthorized?: boolean,
+ +secureOptions?: number,
+ +secureProtocol?: string,
+ +servername?: string,
+ +sessionIdContext?: string,
+|};
+
+export type ConnectionConfigurationType = {|
+ +host: string,
+ +port: number,
+ +tls?: TlsConfigurationType,
+ +proxy: ProxyConfigurationType,
+|};
+
+export type ConnectionCallbackType = (error: Error | null, socket?: Socket | TLSSocket) => void;
+
+export type AgentType = HttpAgent | HttpsAgent;
+export type IsProxyConfiguredMethodType = () => boolean;
+export type MustUrlUseProxyMethodType = (url: string) => boolean;
+export type GetUrlProxyMethodType = (url: string) => ProxyConfigurationType;
+export type ProtocolType = 'http:' | 'https:';
+
+export type ProxyAgentConfigurationInputType = {|
+ +environmentVariableNamespace?: string,
+ +forceGlobalAgent?: boolean,
+ +socketConnectionTimeout?: number,
+|};
+
+export type ProxyAgentConfigurationType = {|
+ +environmentVariableNamespace: string,
+ +forceGlobalAgent: boolean,
+ +socketConnectionTimeout: number,
+|};
diff --git a/client/node_modules/global-agent/src/utilities/bindHttpMethod.js b/client/node_modules/global-agent/src/utilities/bindHttpMethod.js
new file mode 100644
index 0000000..f8859b5
--- /dev/null
+++ b/client/node_modules/global-agent/src/utilities/bindHttpMethod.js
@@ -0,0 +1,54 @@
+// @flow
+
+import http from 'http';
+import https from 'https';
+
+type AgentType = http.Agent | https.Agent;
+
+// eslint-disable-next-line flowtype/no-weak-types
+export default (originalMethod: Function, agent: AgentType, forceGlobalAgent: boolean) => {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ return (...args: *) => {
+ let url;
+ let options;
+ let callback;
+
+ if (typeof args[0] === 'string' || args[0] instanceof URL) {
+ url = args[0];
+
+ if (typeof args[1] === 'function') {
+ options = {};
+ callback = args[1];
+ } else {
+ options = {
+ ...args[1],
+ };
+ callback = args[2];
+ }
+ } else {
+ options = {
+ ...args[0],
+ };
+ callback = args[1];
+ }
+
+ if (forceGlobalAgent) {
+ options.agent = agent;
+ } else {
+ if (!options.agent) {
+ options.agent = agent;
+ }
+
+ if (options.agent === http.globalAgent || options.agent === https.globalAgent) {
+ options.agent = agent;
+ }
+ }
+
+ if (url) {
+ // $FlowFixMe
+ return originalMethod(url, options, callback);
+ } else {
+ return originalMethod(options, callback);
+ }
+ };
+};
diff --git a/client/node_modules/global-agent/src/utilities/index.js b/client/node_modules/global-agent/src/utilities/index.js
new file mode 100644
index 0000000..3412387
--- /dev/null
+++ b/client/node_modules/global-agent/src/utilities/index.js
@@ -0,0 +1,5 @@
+// @flow
+
+export {default as bindHttpMethod} from './bindHttpMethod';
+export {default as isUrlMatchingNoProxy} from './isUrlMatchingNoProxy';
+export {default as parseProxyUrl} from './parseProxyUrl';
diff --git a/client/node_modules/global-agent/src/utilities/isUrlMatchingNoProxy.js b/client/node_modules/global-agent/src/utilities/isUrlMatchingNoProxy.js
new file mode 100644
index 0000000..f2de584
--- /dev/null
+++ b/client/node_modules/global-agent/src/utilities/isUrlMatchingNoProxy.js
@@ -0,0 +1,37 @@
+// @flow
+
+import {
+ parse as parseUrl,
+} from 'url';
+import matcher from 'matcher';
+import {
+ UnexpectedStateError,
+} from '../errors';
+
+export default (subjectUrl: string, noProxy: string) => {
+ const subjectUrlTokens = parseUrl(subjectUrl);
+
+ const rules = noProxy.split(/[\s,]+/);
+
+ for (const rule of rules) {
+ const ruleMatch = rule
+ .replace(/^(?<leadingDot>\.)/, '*')
+ .match(/^(?<hostname>.+?)(?::(?<port>\d+))?$/);
+
+ if (!ruleMatch || !ruleMatch.groups) {
+ throw new UnexpectedStateError('Invalid NO_PROXY pattern.');
+ }
+
+ if (!ruleMatch.groups.hostname) {
+ throw new UnexpectedStateError('NO_PROXY entry pattern must include hostname. Use * to match any hostname.');
+ }
+
+ const hostnameIsMatch = matcher.isMatch(subjectUrlTokens.hostname, ruleMatch.groups.hostname);
+
+ if (hostnameIsMatch && (!ruleMatch.groups || !ruleMatch.groups.port || subjectUrlTokens.port && subjectUrlTokens.port === ruleMatch.groups.port)) {
+ return true;
+ }
+ }
+
+ return false;
+};
diff --git a/client/node_modules/global-agent/src/utilities/parseProxyUrl.js b/client/node_modules/global-agent/src/utilities/parseProxyUrl.js
new file mode 100644
index 0000000..e2e9a6b
--- /dev/null
+++ b/client/node_modules/global-agent/src/utilities/parseProxyUrl.js
@@ -0,0 +1,36 @@
+// @flow
+
+import {
+ parse as parseUrl,
+} from 'url';
+import {
+ UnexpectedStateError,
+} from '../errors';
+
+export default (url: string) => {
+ const urlTokens = parseUrl(url);
+
+ if (urlTokens.query !== null) {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have query.');
+ }
+
+ if (urlTokens.hash !== null) {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have hash.');
+ }
+
+ if (urlTokens.protocol !== 'http:') {
+ throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be "http:".');
+ }
+
+ let port = 80;
+
+ if (urlTokens.port) {
+ port = Number.parseInt(urlTokens.port, 10);
+ }
+
+ return {
+ authorization: urlTokens.auth || null,
+ hostname: urlTokens.hostname,
+ port,
+ };
+};
diff --git a/client/node_modules/globalthis/.eslintrc b/client/node_modules/globalthis/.eslintrc
new file mode 100644
index 0000000..afbd40a
--- /dev/null
+++ b/client/node_modules/globalthis/.eslintrc
@@ -0,0 +1,18 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "env": {
+ "browser": true,
+ "node": true,
+ },
+
+ "ignorePatterns": [
+ "dist",
+ ],
+
+ "rules": {
+ "max-statements-per-line": [2, { "max": 2 }]
+ }
+}
diff --git a/client/node_modules/globalthis/.nycrc b/client/node_modules/globalthis/.nycrc
new file mode 100644
index 0000000..726d82b
--- /dev/null
+++ b/client/node_modules/globalthis/.nycrc
@@ -0,0 +1,10 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "dist",
+ "test"
+ ]
+}
diff --git a/client/node_modules/globalthis/CHANGELOG.md b/client/node_modules/globalthis/CHANGELOG.md
new file mode 100644
index 0000000..b2962da
--- /dev/null
+++ b/client/node_modules/globalthis/CHANGELOG.md
@@ -0,0 +1,96 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.3](https://github.com/es-shims/globalThis/compare/v1.0.2...v1.0.3) - 2022-05-07
+
+### Commits
+
+- [actions] reuse common workflows [`65891e4`](https://github.com/es-shims/globalThis/commit/65891e4d285ae04e216ff01160cff861e0e41a4f)
+- [actions] use `node/install` instead of `node/run`; use `codecov` action [`82f8481`](https://github.com/es-shims/globalThis/commit/82f84815027f666f625e1ccb41f723800a05d016)
+- [meta] use `npmignore` to autogenerate an npmignore file [`53afc39`](https://github.com/es-shims/globalThis/commit/53afc39bfd3eb262c5e6e9dfd25e4f81f3578c1c)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`03169d4`](https://github.com/es-shims/globalThis/commit/03169d4254c9ef177d6537becca5b0b56df50d91)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`4986e3e`](https://github.com/es-shims/globalThis/commit/4986e3e20c5f664601871a0fac68c1efd0a68472)
+- [actions] update codecov uploader [`15c4b06`](https://github.com/es-shims/globalThis/commit/15c4b062b1a9434dbec93604ed31b6893d11d458)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `auto-changelog`, `tape` [`8b04a74`](https://github.com/es-shims/globalThis/commit/8b04a749d3cb2f825920beb700899f0c13ad2fb8)
+- [Fix] `globalThis` should be writable [`8759985`](https://github.com/es-shims/globalThis/commit/87599852d5f91e2e1f06e424cdefcd443ec98476)
+- [readme] add github actions/codecov badges [`0263f0d`](https://github.com/es-shims/globalThis/commit/0263f0debfa982b928fcd301b11fe3e3193bf33d)
+- [Dev Deps] update `aud`, `eslint`, `tape` [`e88d296`](https://github.com/es-shims/globalThis/commit/e88d296bb026633bdd1be2e1542903a5d0107cd8)
+- [meta] use `prepublishOnly` script for npm 7+ [`c81fde6`](https://github.com/es-shims/globalThis/commit/c81fde6a9e44345e56dada588e16db736809ddd9)
+- [Tests] nycignore `dist` [`bde0c0d`](https://github.com/es-shims/globalThis/commit/bde0c0df46f684316ab414da1487a0cd2efe3eeb)
+- [meta] gitignore coverage output [`79f73f8`](https://github.com/es-shims/globalThis/commit/79f73f8b0c1180567fba473f92c07d71efd4dd0b)
+
+## [v1.0.2](https://github.com/es-shims/globalThis/compare/v1.0.1...v1.0.2) - 2021-02-22
+
+### Commits
+
+- [Tests] migrate tests to Github Actions [`a3f50f7`](https://github.com/es-shims/globalThis/commit/a3f50f77a392c0ffdaca18fb5881743b874d0a6f)
+- [meta] do not publish github action workflow files [`eb5c787`](https://github.com/es-shims/globalThis/commit/eb5c7879317cd7f1fde52228660be8e779c9d4e3)
+- [Tests] add `implementation` est; run `es-shim-api` in postlint; use `tape` runner [`c9dd792`](https://github.com/es-shims/globalThis/commit/c9dd792d492ec9744a5e5d5033e919b94d441bac)
+- [Tests] fix native tests [`6b76dff`](https://github.com/es-shims/globalThis/commit/6b76dff3af3fe9bcd7b24d48c6ba55116169e840)
+- [Tests] run `nyc` on all tests [`0407f79`](https://github.com/es-shims/globalThis/commit/0407f79f64bf9fc30111f3bf4dff7e4205331fb6)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape`, `browserify` [`b8cc020`](https://github.com/es-shims/globalThis/commit/b8cc020e5ecc2d5a5a5b4160aabc60cc42d50c03)
+- [actions] add "Allow Edits" workflow [`e2854df`](https://github.com/es-shims/globalThis/commit/e2854df653667b16ff34a7a0a7b677231dfe2b02)
+- [readme] remove travis badge [`262eb76`](https://github.com/es-shims/globalThis/commit/262eb76e4e0d3f2df354cc6aff1b18f50c7b147f)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`; add `safe-publish-latest` [`3c76883`](https://github.com/es-shims/globalThis/commit/3c7688325f6aa050afe3ed978e423e70974e4d3b)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`7276123`](https://github.com/es-shims/globalThis/commit/727612396262fc22275f44159ec5b39115dc359f)
+- [actions] update workflows [`bcb0f42`](https://github.com/es-shims/globalThis/commit/bcb0f42c319cf19746e03a6667cf25d3e835f46e)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`5485851`](https://github.com/es-shims/globalThis/commit/548585148e874d6eb0b0463526a88e8b64e7c5eb)
+- [Dev Deps] update `auto-changelog`, `tape` [`6a01da3`](https://github.com/es-shims/globalThis/commit/6a01da3f321983d1970d793711d31cf8508ef94d)
+- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`7a07f4e`](https://github.com/es-shims/globalThis/commit/7a07f4ebc5580933b40bbe67f357632e0f7d5586)
+- [meta] only run the build script in publish [`797e492`](https://github.com/es-shims/globalThis/commit/797e492519ed0bf6270537290e69ca0456790575)
+- [meta] combine duplicate `prepublish` scripts [`92bbef0`](https://github.com/es-shims/globalThis/commit/92bbef0f91f6e91163186f68b5f5f1ffd26c479d)
+- [Dev Deps] update `auto-changelog`; add `aud` [`be6dbec`](https://github.com/es-shims/globalThis/commit/be6dbecefddb40493c5568a2cbe83f74e2e0385f)
+- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`bfd54f8`](https://github.com/es-shims/globalThis/commit/bfd54f8388758e7dec618dc34956e7075a7c15f0)
+- [Tests] only audit prod deps [`0f64b47`](https://github.com/es-shims/globalThis/commit/0f64b47acfa812affbacbe487fcb0f6c02eccc25)
+
+## [v1.0.1](https://github.com/es-shims/globalThis/compare/v1.0.0...v1.0.1) - 2019-12-15
+
+### Fixed
+
+- [Refactor] only use `global` in node; only check browser globals in browsers [`#2`](https://github.com/es-shims/globalThis/issues/2)
+
+### Commits
+
+- [Tests] use shared travis-ci configs [`edb1cc9`](https://github.com/es-shims/globalThis/commit/edb1cc9d900a40e8c1732264b6e85d4f9760920c)
+- [Tests] remove `jscs` [`1847ac2`](https://github.com/es-shims/globalThis/commit/1847ac2487e2c13cf8bf717211c6a93fe60831f9)
+- [meta] add `auto-changelog` [`933c381`](https://github.com/es-shims/globalThis/commit/933c381083890965ac848d3da21ed9e910cc09cf)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `tape` [`93310bc`](https://github.com/es-shims/globalThis/commit/93310bc01ddacbe23a93b3022daebc9b6f6ae8c3)
+- [actions] add automatic rebasing / merge commit blocking [`231dec5`](https://github.com/es-shims/globalThis/commit/231dec511c42e1509035d176e2451c55de20bfe7)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `covert`, `is`, `tape` [`e50c1f6`](https://github.com/es-shims/globalThis/commit/e50c1f6d2d45c66f53ffda471bbf62c08ed15c9b)
+- [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops [`4abd340`](https://github.com/es-shims/globalThis/commit/4abd3400fc8942963e77515d0cf2fbcac3cb7bc8)
+- [meta] add `funding` field [`2d1f9eb`](https://github.com/es-shims/globalThis/commit/2d1f9eb00b2dea46f6de7d563b31db17f44f1899)
+- [meta] remove unused deps [`5bd6bef`](https://github.com/es-shims/globalThis/commit/5bd6befefbaf0c7e6f70eb3c1919b5c5a271d29d)
+- readme: Fix casing + phrasing [`66379cc`](https://github.com/es-shims/globalThis/commit/66379ccf5008f7676aac5f3dec1ea2fe55e3516c)
+- [Deps] update `define-properties`, `object-keys` [`4585e5a`](https://github.com/es-shims/globalThis/commit/4585e5ab461093ab6c62ce0b22b959925e8f818c)
+- fix issue with Webpack's CaseSensitivePathsPlugin [`842e84e`](https://github.com/es-shims/globalThis/commit/842e84e0096c9eea660c78fd19c9c07799b81537)
+
+## v1.0.0 - 2018-08-10
+
+### Commits
+
+- Dotfiles. [`f01b02d`](https://github.com/es-shims/globalThis/commit/f01b02d315865c812e5b9158f71bb18f3b153def)
+- [Tests] up to `node` `v10.7`, `v9.11`, `v8.11`, `v7.10`, `v6.14`, `v4.9`; use `nvm install-latest-npm`; improve matrix [`ed1fa5d`](https://github.com/es-shims/globalThis/commit/ed1fa5d473d933b3270410b658183dc1c556a663)
+- Tests [`ab99527`](https://github.com/es-shims/globalThis/commit/ab99527e3c434e89dd40f8cba3b0e2e976156611)
+- [breaking] update property name, rename repo [`be42e3d`](https://github.com/es-shims/globalThis/commit/be42e3dce08b62a78260d487f62fa69b410d7918)
+- package.json [`ca43a36`](https://github.com/es-shims/globalThis/commit/ca43a363e3ce0dbc2d4623169f8cb3d792f8bc84)
+- implementation [`80b5a40`](https://github.com/es-shims/globalThis/commit/80b5a403ef532254b2af46ec3ba5f442a308a57d)
+- read me [`f6df9b3`](https://github.com/es-shims/globalThis/commit/f6df9b3b69977f04e080d1720ba1203c13447884)
+- Rename `System.global` to `global` [`fa8503c`](https://github.com/es-shims/globalThis/commit/fa8503cf94afe84b3729dd5b0e9f73f481fb1fee)
+- Initial commit [`99f1dc3`](https://github.com/es-shims/globalThis/commit/99f1dc328d0b4c52a550037de0139d5452ac01de)
+- [Tests] up to `node` `v6.7`, `v5.12`, `v4.6`; improve test matrix [`712ec0e`](https://github.com/es-shims/globalThis/commit/712ec0e545d1603c4e23f4ff1acb066cc4a3c9ee)
+- [Dev Deps] update `browserify`, `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config` [`73278bd`](https://github.com/es-shims/globalThis/commit/73278bd638d1e762eb7415350a738f5d345896f5)
+- [Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `browserify`, `eslint`, `for-each`, `is`, `nsp`, `tape` [`75fa992`](https://github.com/es-shims/globalThis/commit/75fa9929be81afec43895c02e33d0b8a78f11d1f)
+- [Dev Deps] update `browserify`, `is`, `tape`, `nsp`, `eslint` [`b223e86`](https://github.com/es-shims/globalThis/commit/b223e86d0868efb1f0c966370ff2f822516d6956)
+- [Tests] fix linting; remove parallelshell [`271b329`](https://github.com/es-shims/globalThis/commit/271b329d174b94c08913060752a2e9f9116fe5b8)
+- [Deps] update `function-bind`, `object-keys` [`002d0c5`](https://github.com/es-shims/globalThis/commit/002d0c5685a83f97e014a8a07134eb621794c649)
+- Only apps should have lockfiles [`960f1d0`](https://github.com/es-shims/globalThis/commit/960f1d00598cbba5427849c863eb10b8de82fb1b)
+- [Tests] on `node` `v10.8` [`37fad9d`](https://github.com/es-shims/globalThis/commit/37fad9db9860c654efe0a32ec187f21730d5fed8)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`df28dfe`](https://github.com/es-shims/globalThis/commit/df28dfe7f0daf3db95a536a6ce64062bd706185d)
+- [New] add `auto` entry point [`86eb2ab`](https://github.com/es-shims/globalThis/commit/86eb2ab4c4dc2babff20ac436cf7fb7f8da7d2f2)
+- [Dev Deps] update `eslint` [`1bdc1aa`](https://github.com/es-shims/globalThis/commit/1bdc1aacfb94dcdc7bb61688c7634c435012e35d)
+- [Deps] update `object-keys` [`72cdbf5`](https://github.com/es-shims/globalThis/commit/72cdbf596b16103ee711d52b2b645b42efc08c51)
+- Update most common usage to invoke the function upon being required [`5026296`](https://github.com/es-shims/globalThis/commit/502629660da2c21cfb0f8ca233e2b9d427c052fe)
diff --git a/client/node_modules/globalthis/LICENSE b/client/node_modules/globalthis/LICENSE
new file mode 100644
index 0000000..44f679a
--- /dev/null
+++ b/client/node_modules/globalthis/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/globalthis/README.md b/client/node_modules/globalthis/README.md
new file mode 100644
index 0000000..6abffa0
--- /dev/null
+++ b/client/node_modules/globalthis/README.md
@@ -0,0 +1,70 @@
+# globalThis <sup>[![Version Badge][npm-version-svg]][npm-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][npm-url]
+
+An ECMAScript spec-compliant polyfill/shim for `globalThis`. Invoke its "shim" method to shim `globalThis` if it is unavailable.
+
+This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [spec proposal](https://github.com/tc39/proposal-global).
+
+Most common usage:
+```js
+var globalThis = require('globalthis')(); // returns native globalThis if compliant
+ /* or */
+var globalThis = require('globalthis/polyfill')(); // returns native globalThis if compliant
+```
+
+## Example
+
+```js
+var assert = require('assert');
+
+// the below function is not CSP-compliant, but reliably gets the
+// global object in sloppy mode in every engine.
+var getGlobal = Function('return this');
+
+assert.equal(globalThis, getGlobal());
+```
+
+```js
+/* when `globalThis` is not present */
+var shimmedGlobal = require('globalthis').shim();
+ /* or */
+var shimmedGlobal = require('globalthis/shim')();
+
+assert.equal(shimmedGlobal, globalThis);
+assert.equal(shimmedGlobal, getGlobal());
+```
+
+```js
+/* when `globalThis` is present */
+var shimmedGlobal = require('globalthis').shim();
+
+assert.equal(shimmedGlobal, globalThis);
+assert.equal(shimmedGlobal, getGlobal());
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[npm-url]: https://npmjs.org/package/globalthis
+[npm-version-svg]: https://versionbadg.es/ljharb/globalThis.svg
+[deps-svg]: https://david-dm.org/ljharb/globalThis.svg?theme=shields.io
+[deps-url]: https://david-dm.org/ljharb/globalThis
+[dev-deps-svg]: https://david-dm.org/ljharb/globalThis/dev-status.svg?theme=shields.io
+[dev-deps-url]: https://david-dm.org/ljharb/globalThis#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/globalthis.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/globalthis.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/globalthis.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=globalthis
+[codecov-image]: https://codecov.io/gh/es-shims/globalThis/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/globalThis/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/globalThis
+[actions-url]: https://github.com/es-shims/globalThis/actions
diff --git a/client/node_modules/globalthis/auto.js b/client/node_modules/globalthis/auto.js
new file mode 100644
index 0000000..8ebf606
--- /dev/null
+++ b/client/node_modules/globalthis/auto.js
@@ -0,0 +1,3 @@
+'use strict';
+
+require('./shim')();
diff --git a/client/node_modules/globalthis/implementation.browser.js b/client/node_modules/globalthis/implementation.browser.js
new file mode 100644
index 0000000..746a274
--- /dev/null
+++ b/client/node_modules/globalthis/implementation.browser.js
@@ -0,0 +1,11 @@
+/* eslint no-negated-condition: 0, no-new-func: 0 */
+
+'use strict';
+
+if (typeof self !== 'undefined') {
+ module.exports = self;
+} else if (typeof window !== 'undefined') {
+ module.exports = window;
+} else {
+ module.exports = Function('return this')();
+}
diff --git a/client/node_modules/globalthis/implementation.js b/client/node_modules/globalthis/implementation.js
new file mode 100644
index 0000000..46b8ceb
--- /dev/null
+++ b/client/node_modules/globalthis/implementation.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = global;
diff --git a/client/node_modules/globalthis/index.js b/client/node_modules/globalthis/index.js
new file mode 100644
index 0000000..7c73cef
--- /dev/null
+++ b/client/node_modules/globalthis/index.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var defineProperties = require('define-properties');
+
+var implementation = require('./implementation');
+var getPolyfill = require('./polyfill');
+var shim = require('./shim');
+
+var polyfill = getPolyfill();
+
+var getGlobal = function () { return polyfill; };
+
+defineProperties(getGlobal, {
+ getPolyfill: getPolyfill,
+ implementation: implementation,
+ shim: shim
+});
+
+module.exports = getGlobal;
diff --git a/client/node_modules/globalthis/package.json b/client/node_modules/globalthis/package.json
new file mode 100644
index 0000000..3750c43
--- /dev/null
+++ b/client/node_modules/globalthis/package.json
@@ -0,0 +1,97 @@
+{
+ "name": "globalthis",
+ "version": "1.0.3",
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "description": "ECMAScript spec-compliant polyfill/shim for `globalThis`",
+ "license": "MIT",
+ "main": "index.js",
+ "browser": {
+ "./implementation": "./implementation.browser.js"
+ },
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest && npm run build",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "pretest": "npm run lint",
+ "test": "npm run --silent tests-only",
+ "posttest": "aud --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "es-shim-api --bound --property",
+ "build": "mkdir -p dist && browserify browserShim.js > dist/browser.js",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/ljharb/System.global.git"
+ },
+ "keywords": [
+ "window",
+ "self",
+ "global",
+ "globalThis",
+ "System.global",
+ "global object",
+ "global this value",
+ "ECMAScript",
+ "es-shim API",
+ "polyfill",
+ "shim"
+ ],
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "devDependencies": {
+ "@es-shims/api": "^2.2.3",
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.0",
+ "auto-changelog": "^2.4.0",
+ "browserify": "^16.5.2",
+ "eslint": "=8.8.0",
+ "for-each": "^0.3.3",
+ "in-publish": "^2.0.1",
+ "is": "^3.3.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.5.3"
+ },
+ "testling": {
+ "files": "test/index.js",
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ "browserShim.js",
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/globalthis/polyfill.js b/client/node_modules/globalthis/polyfill.js
new file mode 100644
index 0000000..e2e706b
--- /dev/null
+++ b/client/node_modules/globalthis/polyfill.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var implementation = require('./implementation');
+
+module.exports = function getPolyfill() {
+ if (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {
+ return implementation;
+ }
+ return global;
+};
diff --git a/client/node_modules/globalthis/shim.js b/client/node_modules/globalthis/shim.js
new file mode 100644
index 0000000..7ccf455
--- /dev/null
+++ b/client/node_modules/globalthis/shim.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var define = require('define-properties');
+var getPolyfill = require('./polyfill');
+
+module.exports = function shimGlobal() {
+ var polyfill = getPolyfill();
+ if (define.supportsDescriptors) {
+ var descriptor = Object.getOwnPropertyDescriptor(polyfill, 'globalThis');
+ if (!descriptor || (descriptor.configurable && (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill))) { // eslint-disable-line max-len
+ Object.defineProperty(polyfill, 'globalThis', {
+ configurable: true,
+ enumerable: false,
+ value: polyfill,
+ writable: true
+ });
+ }
+ } else if (typeof globalThis !== 'object' || globalThis !== polyfill) {
+ polyfill.globalThis = polyfill;
+ }
+ return polyfill;
+};
diff --git a/client/node_modules/globalthis/test/implementation.js b/client/node_modules/globalthis/test/implementation.js
new file mode 100644
index 0000000..36f1275
--- /dev/null
+++ b/client/node_modules/globalthis/test/implementation.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var implementation = require('../implementation');
+var test = require('tape');
+var runTests = require('./tests');
+
+test('implementation', function (t) {
+ runTests(implementation, t);
+
+ t.end();
+});
diff --git a/client/node_modules/globalthis/test/index.js b/client/node_modules/globalthis/test/index.js
new file mode 100644
index 0000000..dac0a10
--- /dev/null
+++ b/client/node_modules/globalthis/test/index.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var systemGlobal = require('../');
+var test = require('tape');
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+ runTests(systemGlobal(), t);
+
+ t.end();
+});
diff --git a/client/node_modules/globalthis/test/native.js b/client/node_modules/globalthis/test/native.js
new file mode 100644
index 0000000..7a085ab
--- /dev/null
+++ b/client/node_modules/globalthis/test/native.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var test = require('tape');
+var defineProperties = require('define-properties');
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+
+var missing = {};
+var theGlobal = typeof globalThis === 'object' ? globalThis : missing;
+
+var runTests = require('./tests');
+
+test('native', { todo: theGlobal === missing }, function (t) {
+ if (theGlobal !== missing) {
+ t.equal(typeof theGlobal, 'object', 'globalThis is an object');
+ t.equal('globalThis' in theGlobal, true, 'globalThis is in globalThis');
+
+ t.test('enumerability', { skip: !defineProperties.supportsDescriptors }, function (et) {
+ et.equal(false, isEnumerable.call(theGlobal, 'globalThis'), 'globalThis is not enumerable');
+ et.end();
+ });
+
+ runTests(theGlobal, t);
+ }
+
+ t.end();
+});
diff --git a/client/node_modules/globalthis/test/shimmed.js b/client/node_modules/globalthis/test/shimmed.js
new file mode 100644
index 0000000..24b3f34
--- /dev/null
+++ b/client/node_modules/globalthis/test/shimmed.js
@@ -0,0 +1,29 @@
+'use strict';
+
+require('../auto');
+
+var test = require('tape');
+var defineProperties = require('define-properties');
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+
+var runTests = require('./tests');
+
+test('shimmed', function (t) {
+ t.equal(typeof globalThis, 'object', 'globalThis is an object');
+ t.equal('globalThis' in globalThis, true, 'globalThis is in globalThis');
+
+ t.test('enumerability', { skip: !defineProperties.supportsDescriptors }, function (et) {
+ et.equal(false, isEnumerable.call(globalThis, 'globalThis'), 'globalThis.globalThis is not enumerable');
+ et.end();
+ });
+
+ t.test('writability', { skip: !defineProperties.supportsDescriptors }, function (wt) {
+ var desc = Object.getOwnPropertyDescriptor(globalThis, 'globalThis');
+ wt.equal(desc.writable, true, 'globalThis.globalThis is writable');
+ wt.end();
+ });
+
+ runTests(globalThis.globalThis, t);
+
+ t.end();
+});
diff --git a/client/node_modules/globalthis/test/tests.js b/client/node_modules/globalthis/test/tests.js
new file mode 100644
index 0000000..2189640
--- /dev/null
+++ b/client/node_modules/globalthis/test/tests.js
@@ -0,0 +1,36 @@
+/* jscs:disable requireUseStrict */
+/* eslint strict: 0, max-statements: 0 */
+
+module.exports = function (theGlobal, t) {
+ t.equal(typeof theGlobal, 'object', 'is an object');
+
+ t.test('built-in globals', function (st) {
+ st.equal(theGlobal.Math, Math, 'Math is on the global');
+ st.equal(theGlobal.JSON, JSON, 'JSON is on the global');
+ st.equal(theGlobal.String, String, 'String is on the global');
+ st.equal(theGlobal.Array, Array, 'Array is on the global');
+ st.equal(theGlobal.Number, Number, 'Number is on the global');
+ st.equal(theGlobal.Boolean, Boolean, 'Boolean is on the global');
+ st.equal(theGlobal.Object, Object, 'Object is on the global');
+ st.equal(theGlobal.Function, Function, 'Function is on the global');
+ st.equal(theGlobal.Date, Date, 'Date is on the global');
+ st.equal(theGlobal.RegExp, RegExp, 'RegExp is on the global');
+
+ if (typeof Symbol === 'undefined') {
+ st.comment('# SKIP Symbol is not supported');
+ } else {
+ st.equal(theGlobal.Symbol, Symbol, 'Symbol is on the global');
+ }
+ st.end();
+ });
+
+ t.test('custom property', function (st) {
+ var key = 'random_custom_key_' + new Date().getTime();
+ var semaphore = {};
+ /* eslint no-eval: 1 */
+ eval(key + ' = semaphore;');
+ st.equal(theGlobal[key], semaphore, 'global variable ends up on the global object');
+ delete theGlobal[key]; // eslint-disable-line no-param-reassign
+ st.end();
+ });
+};
diff --git a/client/node_modules/gopd/.eslintrc b/client/node_modules/gopd/.eslintrc
new file mode 100644
index 0000000..e2550c0
--- /dev/null
+++ b/client/node_modules/gopd/.eslintrc
@@ -0,0 +1,16 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "func-style": [2, "declaration"],
+ "id-length": 0,
+ "multiline-comment-style": 0,
+ "new-cap": [2, {
+ "capIsNewExceptions": [
+ "GetIntrinsic",
+ ],
+ }],
+ },
+}
diff --git a/client/node_modules/gopd/.github/FUNDING.yml b/client/node_modules/gopd/.github/FUNDING.yml
new file mode 100644
index 0000000..94a44a8
--- /dev/null
+++ b/client/node_modules/gopd/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/gopd
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/gopd/CHANGELOG.md b/client/node_modules/gopd/CHANGELOG.md
new file mode 100644
index 0000000..f111eb1
--- /dev/null
+++ b/client/node_modules/gopd/CHANGELOG.md
@@ -0,0 +1,25 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.1](https://github.com/ljharb/gopd/compare/v1.0.0...v1.0.1) - 2022-11-01
+
+### Commits
+
+- [Fix] actually export gOPD instead of dP [`4b624bf`](https://github.com/ljharb/gopd/commit/4b624bfbeff788c5e3ff16d9443a83627847234f)
+
+## v1.0.0 - 2022-11-01
+
+### Commits
+
+- Initial implementation, tests, readme [`0911e01`](https://github.com/ljharb/gopd/commit/0911e012cd642092bd88b732c161c58bf4f20bea)
+- Initial commit [`b84e33f`](https://github.com/ljharb/gopd/commit/b84e33f5808a805ac57ff88d4247ad935569acbe)
+- [actions] add reusable workflows [`12ae28a`](https://github.com/ljharb/gopd/commit/12ae28ae5f50f86e750215b6e2188901646d0119)
+- npm init [`280118b`](https://github.com/ljharb/gopd/commit/280118badb45c80b4483836b5cb5315bddf6e582)
+- [meta] add `auto-changelog` [`bb78de5`](https://github.com/ljharb/gopd/commit/bb78de5639a180747fb290c28912beaaf1615709)
+- [meta] create FUNDING.yml; add `funding` in package.json [`11c22e6`](https://github.com/ljharb/gopd/commit/11c22e6355bb01f24e7fac4c9bb3055eb5b25002)
+- [meta] use `npmignore` to autogenerate an npmignore file [`4f4537a`](https://github.com/ljharb/gopd/commit/4f4537a843b39f698c52f072845092e6fca345bb)
+- Only apps should have lockfiles [`c567022`](https://github.com/ljharb/gopd/commit/c567022a18573aa7951cf5399445d9840e23e98b)
diff --git a/client/node_modules/gopd/LICENSE b/client/node_modules/gopd/LICENSE
new file mode 100644
index 0000000..6abfe14
--- /dev/null
+++ b/client/node_modules/gopd/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/gopd/README.md b/client/node_modules/gopd/README.md
new file mode 100644
index 0000000..784e56a
--- /dev/null
+++ b/client/node_modules/gopd/README.md
@@ -0,0 +1,40 @@
+# gopd <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.
+
+## Usage
+
+```javascript
+var gOPD = require('gopd');
+var assert = require('assert');
+
+if (gOPD) {
+ assert.equal(typeof gOPD, 'function', 'descriptors supported');
+ // use gOPD like Object.getOwnPropertyDescriptor here
+} else {
+ assert.ok(!gOPD, 'descriptors not supported');
+}
+```
+
+[package-url]: https://npmjs.org/package/gopd
+[npm-version-svg]: https://versionbadg.es/ljharb/gopd.svg
+[deps-svg]: https://david-dm.org/ljharb/gopd.svg
+[deps-url]: https://david-dm.org/ljharb/gopd
+[dev-deps-svg]: https://david-dm.org/ljharb/gopd/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/gopd#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/gopd.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/gopd.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/gopd.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=gopd
+[codecov-image]: https://codecov.io/gh/ljharb/gopd/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/gopd/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/gopd
+[actions-url]: https://github.com/ljharb/gopd/actions
diff --git a/client/node_modules/gopd/index.js b/client/node_modules/gopd/index.js
new file mode 100644
index 0000000..fb6d3bb
--- /dev/null
+++ b/client/node_modules/gopd/index.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
+
+if ($gOPD) {
+ try {
+ $gOPD([], 'length');
+ } catch (e) {
+ // IE 8 has a broken gOPD
+ $gOPD = null;
+ }
+}
+
+module.exports = $gOPD;
diff --git a/client/node_modules/gopd/package.json b/client/node_modules/gopd/package.json
new file mode 100644
index 0000000..d5e1fa4
--- /dev/null
+++ b/client/node_modules/gopd/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "gopd",
+ "version": "1.0.1",
+ "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "evalmd README.md",
+ "pretest": "npm run lint",
+ "tests-only": "tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/gopd.git"
+ },
+ "keywords": [
+ "ecmascript",
+ "javascript",
+ "getownpropertydescriptor",
+ "property",
+ "descriptor"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/gopd/issues"
+ },
+ "homepage": "https://github.com/ljharb/gopd#readme",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.1",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/gopd/test/index.js b/client/node_modules/gopd/test/index.js
new file mode 100644
index 0000000..0376bfb
--- /dev/null
+++ b/client/node_modules/gopd/test/index.js
@@ -0,0 +1,35 @@
+'use strict';
+
+var test = require('tape');
+var gOPD = require('../');
+
+test('gOPD', function (t) {
+ t.test('supported', { skip: !gOPD }, function (st) {
+ st.equal(typeof gOPD, 'function', 'is a function');
+
+ var obj = { x: 1 };
+ st.ok('x' in obj, 'property exists');
+
+ var desc = gOPD(obj, 'x');
+ st.deepEqual(
+ desc,
+ {
+ configurable: true,
+ enumerable: true,
+ value: 1,
+ writable: true
+ },
+ 'descriptor is as expected'
+ );
+
+ st.end();
+ });
+
+ t.test('not supported', { skip: gOPD }, function (st) {
+ st.notOk(gOPD, 'is falsy');
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/client/node_modules/got/dist/source/as-promise/create-rejection.d.ts b/client/node_modules/got/dist/source/as-promise/create-rejection.d.ts
new file mode 100644
index 0000000..f125a77
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/create-rejection.d.ts
@@ -0,0 +1,2 @@
+import { CancelableRequest, BeforeErrorHook } from './types';
+export default function createRejection(error: Error, ...beforeErrorGroups: Array<BeforeErrorHook[] | undefined>): CancelableRequest<never>;
diff --git a/client/node_modules/got/dist/source/as-promise/create-rejection.js b/client/node_modules/got/dist/source/as-promise/create-rejection.js
new file mode 100644
index 0000000..ce62604
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/create-rejection.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const types_1 = require("./types");
+function createRejection(error, ...beforeErrorGroups) {
+ const promise = (async () => {
+ if (error instanceof types_1.RequestError) {
+ try {
+ for (const hooks of beforeErrorGroups) {
+ if (hooks) {
+ for (const hook of hooks) {
+ // eslint-disable-next-line no-await-in-loop
+ error = await hook(error);
+ }
+ }
+ }
+ }
+ catch (error_) {
+ error = error_;
+ }
+ }
+ throw error;
+ })();
+ const returnPromise = () => promise;
+ promise.json = returnPromise;
+ promise.text = returnPromise;
+ promise.buffer = returnPromise;
+ promise.on = returnPromise;
+ return promise;
+}
+exports.default = createRejection;
diff --git a/client/node_modules/got/dist/source/as-promise/index.d.ts b/client/node_modules/got/dist/source/as-promise/index.d.ts
new file mode 100644
index 0000000..f06720e
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/index.d.ts
@@ -0,0 +1,3 @@
+import { NormalizedOptions, CancelableRequest } from './types';
+export default function asPromise<T>(normalizedOptions: NormalizedOptions): CancelableRequest<T>;
+export * from './types';
diff --git a/client/node_modules/got/dist/source/as-promise/index.js b/client/node_modules/got/dist/source/as-promise/index.js
new file mode 100644
index 0000000..2a98ce6
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/index.js
@@ -0,0 +1,176 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const events_1 = require("events");
+const is_1 = require("@sindresorhus/is");
+const PCancelable = require("p-cancelable");
+const types_1 = require("./types");
+const parse_body_1 = require("./parse-body");
+const core_1 = require("../core");
+const proxy_events_1 = require("../core/utils/proxy-events");
+const get_buffer_1 = require("../core/utils/get-buffer");
+const is_response_ok_1 = require("../core/utils/is-response-ok");
+const proxiedRequestEvents = [
+ 'request',
+ 'response',
+ 'redirect',
+ 'uploadProgress',
+ 'downloadProgress'
+];
+function asPromise(normalizedOptions) {
+ let globalRequest;
+ let globalResponse;
+ const emitter = new events_1.EventEmitter();
+ const promise = new PCancelable((resolve, reject, onCancel) => {
+ const makeRequest = (retryCount) => {
+ const request = new core_1.default(undefined, normalizedOptions);
+ request.retryCount = retryCount;
+ request._noPipe = true;
+ onCancel(() => request.destroy());
+ onCancel.shouldReject = false;
+ onCancel(() => reject(new types_1.CancelError(request)));
+ globalRequest = request;
+ request.once('response', async (response) => {
+ var _a;
+ response.retryCount = retryCount;
+ if (response.request.aborted) {
+ // Canceled while downloading - will throw a `CancelError` or `TimeoutError` error
+ return;
+ }
+ // Download body
+ let rawBody;
+ try {
+ rawBody = await get_buffer_1.default(request);
+ response.rawBody = rawBody;
+ }
+ catch (_b) {
+ // The same error is caught below.
+ // See request.once('error')
+ return;
+ }
+ if (request._isAboutToError) {
+ return;
+ }
+ // Parse body
+ const contentEncoding = ((_a = response.headers['content-encoding']) !== null && _a !== void 0 ? _a : '').toLowerCase();
+ const isCompressed = ['gzip', 'deflate', 'br'].includes(contentEncoding);
+ const { options } = request;
+ if (isCompressed && !options.decompress) {
+ response.body = rawBody;
+ }
+ else {
+ try {
+ response.body = parse_body_1.default(response, options.responseType, options.parseJson, options.encoding);
+ }
+ catch (error) {
+ // Fallback to `utf8`
+ response.body = rawBody.toString();
+ if (is_response_ok_1.isResponseOk(response)) {
+ request._beforeError(error);
+ return;
+ }
+ }
+ }
+ try {
+ for (const [index, hook] of options.hooks.afterResponse.entries()) {
+ // @ts-expect-error TS doesn't notice that CancelableRequest is a Promise
+ // eslint-disable-next-line no-await-in-loop
+ response = await hook(response, async (updatedOptions) => {
+ const typedOptions = core_1.default.normalizeArguments(undefined, {
+ ...updatedOptions,
+ retry: {
+ calculateDelay: () => 0
+ },
+ throwHttpErrors: false,
+ resolveBodyOnly: false
+ }, options);
+ // Remove any further hooks for that request, because we'll call them anyway.
+ // The loop continues. We don't want duplicates (asPromise recursion).
+ typedOptions.hooks.afterResponse = typedOptions.hooks.afterResponse.slice(0, index);
+ for (const hook of typedOptions.hooks.beforeRetry) {
+ // eslint-disable-next-line no-await-in-loop
+ await hook(typedOptions);
+ }
+ const promise = asPromise(typedOptions);
+ onCancel(() => {
+ promise.catch(() => { });
+ promise.cancel();
+ });
+ return promise;
+ });
+ }
+ }
+ catch (error) {
+ request._beforeError(new types_1.RequestError(error.message, error, request));
+ return;
+ }
+ globalResponse = response;
+ if (!is_response_ok_1.isResponseOk(response)) {
+ request._beforeError(new types_1.HTTPError(response));
+ return;
+ }
+ request.destroy();
+ resolve(request.options.resolveBodyOnly ? response.body : response);
+ });
+ const onError = (error) => {
+ if (promise.isCanceled) {
+ return;
+ }
+ const { options } = request;
+ if (error instanceof types_1.HTTPError && !options.throwHttpErrors) {
+ const { response } = error;
+ resolve(request.options.resolveBodyOnly ? response.body : response);
+ return;
+ }
+ reject(error);
+ };
+ request.once('error', onError);
+ const previousBody = request.options.body;
+ request.once('retry', (newRetryCount, error) => {
+ var _a, _b;
+ if (previousBody === ((_a = error.request) === null || _a === void 0 ? void 0 : _a.options.body) && is_1.default.nodeStream((_b = error.request) === null || _b === void 0 ? void 0 : _b.options.body)) {
+ onError(error);
+ return;
+ }
+ makeRequest(newRetryCount);
+ });
+ proxy_events_1.default(request, emitter, proxiedRequestEvents);
+ };
+ makeRequest(0);
+ });
+ promise.on = (event, fn) => {
+ emitter.on(event, fn);
+ return promise;
+ };
+ const shortcut = (responseType) => {
+ const newPromise = (async () => {
+ // Wait until downloading has ended
+ await promise;
+ const { options } = globalResponse.request;
+ return parse_body_1.default(globalResponse, responseType, options.parseJson, options.encoding);
+ })();
+ Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));
+ return newPromise;
+ };
+ promise.json = () => {
+ const { headers } = globalRequest.options;
+ if (!globalRequest.writableFinished && headers.accept === undefined) {
+ headers.accept = 'application/json';
+ }
+ return shortcut('json');
+ };
+ promise.buffer = () => shortcut('buffer');
+ promise.text = () => shortcut('text');
+ return promise;
+}
+exports.default = asPromise;
+__exportStar(require("./types"), exports);
diff --git a/client/node_modules/got/dist/source/as-promise/normalize-arguments.d.ts b/client/node_modules/got/dist/source/as-promise/normalize-arguments.d.ts
new file mode 100644
index 0000000..0b1e95f
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/normalize-arguments.d.ts
@@ -0,0 +1,3 @@
+import { NormalizedOptions, Defaults } from './types';
+declare const normalizeArguments: (options: NormalizedOptions, defaults?: Defaults | undefined) => NormalizedOptions;
+export default normalizeArguments;
diff --git a/client/node_modules/got/dist/source/as-promise/normalize-arguments.js b/client/node_modules/got/dist/source/as-promise/normalize-arguments.js
new file mode 100644
index 0000000..859feb9
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/normalize-arguments.js
@@ -0,0 +1,78 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const is_1 = require("@sindresorhus/is");
+const normalizeArguments = (options, defaults) => {
+ if (is_1.default.null_(options.encoding)) {
+ throw new TypeError('To get a Buffer, set `options.responseType` to `buffer` instead');
+ }
+ is_1.assert.any([is_1.default.string, is_1.default.undefined], options.encoding);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.resolveBodyOnly);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.methodRewriting);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.isStream);
+ is_1.assert.any([is_1.default.string, is_1.default.undefined], options.responseType);
+ // `options.responseType`
+ if (options.responseType === undefined) {
+ options.responseType = 'text';
+ }
+ // `options.retry`
+ const { retry } = options;
+ if (defaults) {
+ options.retry = { ...defaults.retry };
+ }
+ else {
+ options.retry = {
+ calculateDelay: retryObject => retryObject.computedValue,
+ limit: 0,
+ methods: [],
+ statusCodes: [],
+ errorCodes: [],
+ maxRetryAfter: undefined
+ };
+ }
+ if (is_1.default.object(retry)) {
+ options.retry = {
+ ...options.retry,
+ ...retry
+ };
+ options.retry.methods = [...new Set(options.retry.methods.map(method => method.toUpperCase()))];
+ options.retry.statusCodes = [...new Set(options.retry.statusCodes)];
+ options.retry.errorCodes = [...new Set(options.retry.errorCodes)];
+ }
+ else if (is_1.default.number(retry)) {
+ options.retry.limit = retry;
+ }
+ if (is_1.default.undefined(options.retry.maxRetryAfter)) {
+ options.retry.maxRetryAfter = Math.min(
+ // TypeScript is not smart enough to handle `.filter(x => is.number(x))`.
+ // eslint-disable-next-line unicorn/no-fn-reference-in-iterator
+ ...[options.timeout.request, options.timeout.connect].filter(is_1.default.number));
+ }
+ // `options.pagination`
+ if (is_1.default.object(options.pagination)) {
+ if (defaults) {
+ options.pagination = {
+ ...defaults.pagination,
+ ...options.pagination
+ };
+ }
+ const { pagination } = options;
+ if (!is_1.default.function_(pagination.transform)) {
+ throw new Error('`options.pagination.transform` must be implemented');
+ }
+ if (!is_1.default.function_(pagination.shouldContinue)) {
+ throw new Error('`options.pagination.shouldContinue` must be implemented');
+ }
+ if (!is_1.default.function_(pagination.filter)) {
+ throw new TypeError('`options.pagination.filter` must be implemented');
+ }
+ if (!is_1.default.function_(pagination.paginate)) {
+ throw new Error('`options.pagination.paginate` must be implemented');
+ }
+ }
+ // JSON mode
+ if (options.responseType === 'json' && options.headers.accept === undefined) {
+ options.headers.accept = 'application/json';
+ }
+ return options;
+};
+exports.default = normalizeArguments;
diff --git a/client/node_modules/got/dist/source/as-promise/parse-body.d.ts b/client/node_modules/got/dist/source/as-promise/parse-body.d.ts
new file mode 100644
index 0000000..39d0b41
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/parse-body.d.ts
@@ -0,0 +1,3 @@
+import { ResponseType, Response, ParseJsonFunction } from './types';
+declare const parseBody: (response: Response, responseType: ResponseType, parseJson: ParseJsonFunction, encoding?: "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "base64url" | "latin1" | "binary" | "hex" | undefined) => unknown;
+export default parseBody;
diff --git a/client/node_modules/got/dist/source/as-promise/parse-body.js b/client/node_modules/got/dist/source/as-promise/parse-body.js
new file mode 100644
index 0000000..cc2b806
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/parse-body.js
@@ -0,0 +1,25 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const types_1 = require("./types");
+const parseBody = (response, responseType, parseJson, encoding) => {
+ const { rawBody } = response;
+ try {
+ if (responseType === 'text') {
+ return rawBody.toString(encoding);
+ }
+ if (responseType === 'json') {
+ return rawBody.length === 0 ? '' : parseJson(rawBody.toString());
+ }
+ if (responseType === 'buffer') {
+ return rawBody;
+ }
+ throw new types_1.ParseError({
+ message: `Unknown body type '${responseType}'`,
+ name: 'Error'
+ }, response);
+ }
+ catch (error) {
+ throw new types_1.ParseError(error, response);
+ }
+};
+exports.default = parseBody;
diff --git a/client/node_modules/got/dist/source/as-promise/types.d.ts b/client/node_modules/got/dist/source/as-promise/types.d.ts
new file mode 100644
index 0000000..16bb4cb
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/types.d.ts
@@ -0,0 +1,256 @@
+/// <reference types="node" />
+import PCancelable = require('p-cancelable');
+import Request, { Options, Response, RequestError, RequestEvents } from '../core';
+/**
+All parsing methods supported by Got.
+*/
+export declare type ResponseType = 'json' | 'buffer' | 'text';
+export interface PaginationOptions<T, R> {
+ /**
+ All options accepted by `got.paginate()`.
+ */
+ pagination?: {
+ /**
+ A function that transform [`Response`](#response) into an array of items.
+ This is where you should do the parsing.
+
+ @default response => JSON.parse(response.body)
+ */
+ transform?: (response: Response<R>) => Promise<T[]> | T[];
+ /**
+ Checks whether the item should be emitted or not.
+
+ @default (item, allItems, currentItems) => true
+ */
+ filter?: (item: T, allItems: T[], currentItems: T[]) => boolean;
+ /**
+ The function takes three arguments:
+ - `response` - The current response object.
+ - `allItems` - An array of the emitted items.
+ - `currentItems` - Items from the current response.
+
+ It should return an object representing Got options pointing to the next page.
+ The options are merged automatically with the previous request, therefore the options returned `pagination.paginate(...)` must reflect changes only.
+ If there are no more pages, `false` should be returned.
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ const limit = 10;
+
+ const items = got.paginate('https://example.com/items', {
+ searchParams: {
+ limit,
+ offset: 0
+ },
+ pagination: {
+ paginate: (response, allItems, currentItems) => {
+ const previousSearchParams = response.request.options.searchParams;
+ const previousOffset = previousSearchParams.get('offset');
+
+ if (currentItems.length < limit) {
+ return false;
+ }
+
+ return {
+ searchParams: {
+ ...previousSearchParams,
+ offset: Number(previousOffset) + limit,
+ }
+ };
+ }
+ }
+ });
+
+ console.log('Items from all pages:', items);
+ })();
+ ```
+ */
+ paginate?: (response: Response<R>, allItems: T[], currentItems: T[]) => Options | false;
+ /**
+ Checks whether the pagination should continue.
+
+ For example, if you need to stop **before** emitting an entry with some flag, you should use `(item, allItems, currentItems) => !item.flag`.
+ If you want to stop **after** emitting the entry, you should use `(item, allItems, currentItems) => allItems.some(entry => entry.flag)` instead.
+
+ @default (item, allItems, currentItems) => true
+ */
+ shouldContinue?: (item: T, allItems: T[], currentItems: T[]) => boolean;
+ /**
+ The maximum amount of items that should be emitted.
+
+ @default Infinity
+ */
+ countLimit?: number;
+ /**
+ Milliseconds to wait before the next request is triggered.
+
+ @default 0
+ */
+ backoff?: number;
+ /**
+ The maximum amount of request that should be triggered.
+ Retries on failure are not counted towards this limit.
+
+ For example, it can be helpful during development to avoid an infinite number of requests.
+
+ @default 10000
+ */
+ requestLimit?: number;
+ /**
+ Defines how the parameter `allItems` in pagination.paginate, pagination.filter and pagination.shouldContinue is managed.
+ When set to `false`, the parameter `allItems` is always an empty array.
+
+ This option can be helpful to save on memory usage when working with a large dataset.
+ */
+ stackAllItems?: boolean;
+ };
+}
+export declare type AfterResponseHook = (response: Response, retryWithMergedOptions: (options: Options) => CancelableRequest<Response>) => Response | CancelableRequest<Response> | Promise<Response | CancelableRequest<Response>>;
+export declare namespace PromiseOnly {
+ interface Hooks {
+ /**
+ Called with [response object](#response) and a retry function.
+ Calling the retry function will trigger `beforeRetry` hooks.
+
+ Each function should return the response.
+ This is especially useful when you want to refresh an access token.
+
+ __Note__: When using streams, this hook is ignored.
+
+ @example
+ ```
+ const got = require('got');
+
+ const instance = got.extend({
+ hooks: {
+ afterResponse: [
+ (response, retryWithMergedOptions) => {
+ if (response.statusCode === 401) { // Unauthorized
+ const updatedOptions = {
+ headers: {
+ token: getNewToken() // Refresh the access token
+ }
+ };
+
+ // Save for further requests
+ instance.defaults.options = got.mergeOptions(instance.defaults.options, updatedOptions);
+
+ // Make a new retry
+ return retryWithMergedOptions(updatedOptions);
+ }
+
+ // No changes otherwise
+ return response;
+ }
+ ],
+ beforeRetry: [
+ (options, error, retryCount) => {
+ // This will be called on `retryWithMergedOptions(...)`
+ }
+ ]
+ },
+ mutableDefaults: true
+ });
+ ```
+ */
+ afterResponse?: AfterResponseHook[];
+ }
+ interface Options extends PaginationOptions<unknown, unknown> {
+ /**
+ The parsing method.
+
+ The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.
+
+ It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
+
+ __Note__: When using streams, this option is ignored.
+
+ @example
+ ```
+ (async () => {
+ const responsePromise = got(url);
+ const bufferPromise = responsePromise.buffer();
+ const jsonPromise = responsePromise.json();
+
+ const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);
+ // `response` is an instance of Got Response
+ // `buffer` is an instance of Buffer
+ // `json` is an object
+ })();
+ ```
+
+ @example
+ ```
+ // This
+ const body = await got(url).json();
+
+ // is semantically the same as this
+ const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
+ ```
+ */
+ responseType?: ResponseType;
+ /**
+ When set to `true` the promise will return the Response body instead of the Response object.
+
+ @default false
+ */
+ resolveBodyOnly?: boolean;
+ /**
+ Returns a `Stream` instead of a `Promise`.
+ This is equivalent to calling `got.stream(url, options?)`.
+
+ @default false
+ */
+ isStream?: boolean;
+ /**
+ [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
+
+ To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.
+ Don't set this option to `null`.
+
+ __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
+
+ @default 'utf-8'
+ */
+ encoding?: BufferEncoding;
+ }
+ interface NormalizedOptions {
+ responseType: ResponseType;
+ resolveBodyOnly: boolean;
+ isStream: boolean;
+ encoding?: BufferEncoding;
+ pagination?: Required<PaginationOptions<unknown, unknown>['pagination']>;
+ }
+ interface Defaults {
+ responseType: ResponseType;
+ resolveBodyOnly: boolean;
+ isStream: boolean;
+ pagination?: Required<PaginationOptions<unknown, unknown>['pagination']>;
+ }
+ type HookEvent = 'afterResponse';
+}
+/**
+An error to be thrown when server response code is 2xx, and parsing body fails.
+Includes a `response` property.
+*/
+export declare class ParseError extends RequestError {
+ readonly response: Response;
+ constructor(error: Error, response: Response);
+}
+/**
+An error to be thrown when the request is aborted with `.cancel()`.
+*/
+export declare class CancelError extends RequestError {
+ readonly response: Response;
+ constructor(request: Request);
+ get isCanceled(): boolean;
+}
+export interface CancelableRequest<T extends Response | Response['body'] = Response['body']> extends PCancelable<T>, RequestEvents<CancelableRequest<T>> {
+ json: <ReturnType>() => CancelableRequest<ReturnType>;
+ buffer: () => CancelableRequest<Buffer>;
+ text: () => CancelableRequest<string>;
+}
+export * from '../core';
diff --git a/client/node_modules/got/dist/source/as-promise/types.js b/client/node_modules/got/dist/source/as-promise/types.js
new file mode 100644
index 0000000..b73110a
--- /dev/null
+++ b/client/node_modules/got/dist/source/as-promise/types.js
@@ -0,0 +1,42 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CancelError = exports.ParseError = void 0;
+const core_1 = require("../core");
+/**
+An error to be thrown when server response code is 2xx, and parsing body fails.
+Includes a `response` property.
+*/
+class ParseError extends core_1.RequestError {
+ constructor(error, response) {
+ const { options } = response.request;
+ super(`${error.message} in "${options.url.toString()}"`, error, response.request);
+ this.name = 'ParseError';
+ this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_BODY_PARSE_FAILURE' : this.code;
+ }
+}
+exports.ParseError = ParseError;
+/**
+An error to be thrown when the request is aborted with `.cancel()`.
+*/
+class CancelError extends core_1.RequestError {
+ constructor(request) {
+ super('Promise was canceled', {}, request);
+ this.name = 'CancelError';
+ this.code = 'ERR_CANCELED';
+ }
+ get isCanceled() {
+ return true;
+ }
+}
+exports.CancelError = CancelError;
+__exportStar(require("../core"), exports);
diff --git a/client/node_modules/got/dist/source/core/calculate-retry-delay.d.ts b/client/node_modules/got/dist/source/core/calculate-retry-delay.d.ts
new file mode 100644
index 0000000..86eca8f
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/calculate-retry-delay.d.ts
@@ -0,0 +1,5 @@
+import { RetryFunction } from '.';
+declare type Returns<T extends (...args: any) => unknown, V> = (...args: Parameters<T>) => V;
+export declare const retryAfterStatusCodes: ReadonlySet<number>;
+declare const calculateRetryDelay: Returns<RetryFunction, number>;
+export default calculateRetryDelay;
diff --git a/client/node_modules/got/dist/source/core/calculate-retry-delay.js b/client/node_modules/got/dist/source/core/calculate-retry-delay.js
new file mode 100644
index 0000000..99f604a
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/calculate-retry-delay.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.retryAfterStatusCodes = void 0;
+exports.retryAfterStatusCodes = new Set([413, 429, 503]);
+const calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter }) => {
+ if (attemptCount > retryOptions.limit) {
+ return 0;
+ }
+ const hasMethod = retryOptions.methods.includes(error.options.method);
+ const hasErrorCode = retryOptions.errorCodes.includes(error.code);
+ const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);
+ if (!hasMethod || (!hasErrorCode && !hasStatusCode)) {
+ return 0;
+ }
+ if (error.response) {
+ if (retryAfter) {
+ if (retryOptions.maxRetryAfter === undefined || retryAfter > retryOptions.maxRetryAfter) {
+ return 0;
+ }
+ return retryAfter;
+ }
+ if (error.response.statusCode === 413) {
+ return 0;
+ }
+ }
+ const noise = Math.random() * 100;
+ return ((2 ** (attemptCount - 1)) * 1000) + noise;
+};
+exports.default = calculateRetryDelay;
diff --git a/client/node_modules/got/dist/source/core/index.d.ts b/client/node_modules/got/dist/source/core/index.d.ts
new file mode 100644
index 0000000..803806e
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/index.d.ts
@@ -0,0 +1,1124 @@
+/// <reference types="node" />
+import { Duplex, Readable } from 'stream';
+import { URL, URLSearchParams } from 'url';
+import { Socket } from 'net';
+import { SecureContextOptions, DetailedPeerCertificate } from 'tls';
+import http = require('http');
+import { ClientRequest, RequestOptions, ServerResponse, request as httpRequest } from 'http';
+import https = require('https');
+import { Timings, IncomingMessageWithTimings } from '@szmarczak/http-timer';
+import CacheableLookup from 'cacheable-lookup';
+import CacheableRequest = require('cacheable-request');
+import ResponseLike = require('responselike');
+import { Delays, TimeoutError as TimedOutTimeoutError } from './utils/timed-out';
+import { URLOptions } from './utils/options-to-url';
+import { DnsLookupIpVersion } from './utils/dns-ip-version';
+import { PromiseOnly } from '../as-promise/types';
+declare type HttpRequestFunction = typeof httpRequest;
+declare type Error = NodeJS.ErrnoException;
+declare const kRequest: unique symbol;
+declare const kResponse: unique symbol;
+declare const kResponseSize: unique symbol;
+declare const kDownloadedSize: unique symbol;
+declare const kBodySize: unique symbol;
+declare const kUploadedSize: unique symbol;
+declare const kServerResponsesPiped: unique symbol;
+declare const kUnproxyEvents: unique symbol;
+declare const kIsFromCache: unique symbol;
+declare const kCancelTimeouts: unique symbol;
+declare const kStartedReading: unique symbol;
+declare const kStopReading: unique symbol;
+declare const kTriggerRead: unique symbol;
+declare const kBody: unique symbol;
+declare const kJobs: unique symbol;
+declare const kOriginalResponse: unique symbol;
+declare const kRetryTimeout: unique symbol;
+export declare const kIsNormalizedAlready: unique symbol;
+export interface Agents {
+ http?: http.Agent;
+ https?: https.Agent;
+ http2?: unknown;
+}
+export declare const withoutBody: ReadonlySet<string>;
+export interface ToughCookieJar {
+ getCookieString: ((currentUrl: string, options: Record<string, unknown>, cb: (err: Error | null, cookies: string) => void) => void) & ((url: string, callback: (error: Error | null, cookieHeader: string) => void) => void);
+ setCookie: ((cookieOrString: unknown, currentUrl: string, options: Record<string, unknown>, cb: (err: Error | null, cookie: unknown) => void) => void) & ((rawCookie: string, url: string, callback: (error: Error | null, result: unknown) => void) => void);
+}
+export interface PromiseCookieJar {
+ getCookieString: (url: string) => Promise<string>;
+ setCookie: (rawCookie: string, url: string) => Promise<unknown>;
+}
+/**
+All available HTTP request methods provided by Got.
+*/
+export declare type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'HEAD' | 'DELETE' | 'OPTIONS' | 'TRACE' | 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'options' | 'trace';
+declare type Promisable<T> = T | Promise<T>;
+export declare type InitHook = (options: Options) => void;
+export declare type BeforeRequestHook = (options: NormalizedOptions) => Promisable<void | Response | ResponseLike>;
+export declare type BeforeRedirectHook = (options: NormalizedOptions, response: Response) => Promisable<void>;
+export declare type BeforeErrorHook = (error: RequestError) => Promisable<RequestError>;
+export declare type BeforeRetryHook = (options: NormalizedOptions, error?: RequestError, retryCount?: number) => void | Promise<void>;
+interface PlainHooks {
+ /**
+ Called with plain request options, right before their normalization.
+ This is especially useful in conjunction with `got.extend()` when the input needs custom handling.
+
+ __Note #1__: This hook must be synchronous!
+
+ __Note #2__: Errors in this hook will be converted into an instances of `RequestError`.
+
+ __Note #3__: The options object may not have a `url` property.
+ To modify it, use a `beforeRequest` hook instead.
+
+ @default []
+ */
+ init?: InitHook[];
+ /**
+ Called with normalized request options.
+ Got will make no further changes to the request before it is sent.
+ This is especially useful in conjunction with `got.extend()` when you want to create an API client that, for example, uses HMAC-signing.
+
+ @default []
+ */
+ beforeRequest?: BeforeRequestHook[];
+ /**
+ Called with normalized request options and the redirect response.
+ Got will make no further changes to the request.
+ This is especially useful when you want to avoid dead sites.
+
+ @default []
+
+ @example
+ ```
+ const got = require('got');
+
+ got('https://example.com', {
+ hooks: {
+ beforeRedirect: [
+ (options, response) => {
+ if (options.hostname === 'deadSite') {
+ options.hostname = 'fallbackSite';
+ }
+ }
+ ]
+ }
+ });
+ ```
+ */
+ beforeRedirect?: BeforeRedirectHook[];
+ /**
+ Called with an `Error` instance.
+ The error is passed to the hook right before it's thrown.
+ This is especially useful when you want to have more detailed errors.
+
+ __Note__: Errors thrown while normalizing input options are thrown directly and not part of this hook.
+
+ @default []
+
+ @example
+ ```
+ const got = require('got');
+
+ got('https://api.github.com/some-endpoint', {
+ hooks: {
+ beforeError: [
+ error => {
+ const {response} = error;
+ if (response && response.body) {
+ error.name = 'GitHubError';
+ error.message = `${response.body.message} (${response.statusCode})`;
+ }
+
+ return error;
+ }
+ ]
+ }
+ });
+ ```
+ */
+ beforeError?: BeforeErrorHook[];
+ /**
+ Called with normalized request options, the error and the retry count.
+ Got will make no further changes to the request.
+ This is especially useful when some extra work is required before the next try.
+
+ __Note__: When using streams, this hook is ignored.
+ __Note__: When retrying in a `afterResponse` hook, all remaining `beforeRetry` hooks will be called without the `error` and `retryCount` arguments.
+
+ @default []
+
+ @example
+ ```
+ const got = require('got');
+
+ got.post('https://example.com', {
+ hooks: {
+ beforeRetry: [
+ (options, error, retryCount) => {
+ if (error.response.statusCode === 413) { // Payload too large
+ options.body = getNewBody();
+ }
+ }
+ ]
+ }
+ });
+ ```
+ */
+ beforeRetry?: BeforeRetryHook[];
+}
+/**
+All available hook of Got.
+*/
+export interface Hooks extends PromiseOnly.Hooks, PlainHooks {
+}
+declare type PlainHookEvent = 'init' | 'beforeRequest' | 'beforeRedirect' | 'beforeError' | 'beforeRetry';
+/**
+All hook events acceptable by Got.
+*/
+export declare type HookEvent = PromiseOnly.HookEvent | PlainHookEvent;
+export declare const knownHookEvents: HookEvent[];
+declare type AcceptableResponse = IncomingMessageWithTimings | ResponseLike;
+declare type AcceptableRequestResult = AcceptableResponse | ClientRequest | Promise<AcceptableResponse | ClientRequest> | undefined;
+export declare type RequestFunction = (url: URL, options: RequestOptions, callback?: (response: AcceptableResponse) => void) => AcceptableRequestResult;
+export declare type Headers = Record<string, string | string[] | undefined>;
+declare type CheckServerIdentityFunction = (hostname: string, certificate: DetailedPeerCertificate) => Error | void;
+export declare type ParseJsonFunction = (text: string) => unknown;
+export declare type StringifyJsonFunction = (object: unknown) => string;
+export interface RetryObject {
+ attemptCount: number;
+ retryOptions: RequiredRetryOptions;
+ error: TimeoutError | RequestError;
+ computedValue: number;
+ retryAfter?: number;
+}
+export declare type RetryFunction = (retryObject: RetryObject) => number | Promise<number>;
+/**
+An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
+
+Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
+
+The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
+The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
+
+By default, it retries *only* on the specified methods, status codes, and on these network errors:
+- `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
+- `ECONNRESET`: Connection was forcibly closed by a peer.
+- `EADDRINUSE`: Could not bind to any free port.
+- `ECONNREFUSED`: Connection was refused by the server.
+- `EPIPE`: The remote side of the stream being written has been closed.
+- `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
+- `ENETUNREACH`: No internet connection.
+- `EAI_AGAIN`: DNS lookup timed out.
+
+__Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
+__Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
+*/
+export interface RequiredRetryOptions {
+ limit: number;
+ methods: Method[];
+ statusCodes: number[];
+ errorCodes: string[];
+ calculateDelay: RetryFunction;
+ maxRetryAfter?: number;
+}
+export interface CacheOptions {
+ shared?: boolean;
+ cacheHeuristic?: number;
+ immutableMinTimeToLive?: number;
+ ignoreCargoCult?: boolean;
+}
+interface PlainOptions extends URLOptions {
+ /**
+ Custom request function.
+ The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
+
+ @default http.request | https.request
+ */
+ request?: RequestFunction;
+ /**
+ An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.
+ This is necessary because a request to one protocol might redirect to another.
+ In such a scenario, Got will switch over to the right protocol agent for you.
+
+ If a key is not present, it will default to a global agent.
+
+ @example
+ ```
+ const got = require('got');
+ const HttpAgent = require('agentkeepalive');
+ const {HttpsAgent} = HttpAgent;
+
+ got('https://sindresorhus.com', {
+ agent: {
+ http: new HttpAgent(),
+ https: new HttpsAgent()
+ }
+ });
+ ```
+ */
+ agent?: Agents | false;
+ /**
+ Decompress the response automatically.
+ This will set the `accept-encoding` header to `gzip, deflate, br` on Node.js 11.7.0+ or `gzip, deflate` for older Node.js versions, unless you set it yourself.
+
+ Brotli (`br`) support requires Node.js 11.7.0 or later.
+
+ If this is disabled, a compressed response is returned as a `Buffer`.
+ This may be useful if you want to handle decompression yourself or stream the raw compressed data.
+
+ @default true
+ */
+ decompress?: boolean;
+ /**
+ Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).
+ By default, there's no timeout.
+
+ This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
+
+ - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.
+ Does not apply when using a Unix domain socket.
+ - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
+ - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
+ - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
+ - `response` starts when the request has been written to the socket and ends when the response headers are received.
+ - `send` starts when the socket is connected and ends with the request has been written to the socket.
+ - `request` starts when the request is initiated and ends when the response's end event fires.
+ */
+ timeout?: Delays | number;
+ /**
+ When specified, `prefixUrl` will be prepended to `url`.
+ The prefix can be any valid URL, either relative or absolute.
+ A trailing slash `/` is optional - one will be added automatically.
+
+ __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.
+
+ __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.
+ For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.
+ The latter is used by browsers.
+
+ __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.
+
+ __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.
+ If the URL doesn't include it anymore, it will throw.
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ await got('unicorn', {prefixUrl: 'https://cats.com'});
+ //=> 'https://cats.com/unicorn'
+
+ const instance = got.extend({
+ prefixUrl: 'https://google.com'
+ });
+
+ await instance('unicorn', {
+ hooks: {
+ beforeRequest: [
+ options => {
+ options.prefixUrl = 'https://cats.com';
+ }
+ ]
+ }
+ });
+ //=> 'https://cats.com/unicorn'
+ })();
+ ```
+ */
+ prefixUrl?: string | URL;
+ /**
+ __Note #1__: The `body` option cannot be used with the `json` or `form` option.
+
+ __Note #2__: If you provide this option, `got.stream()` will be read-only.
+
+ __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
+
+ __Note #4__: This option is not enumerable and will not be merged with the instance defaults.
+
+ The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / `fs.createReadStream` instance / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
+ */
+ body?: string | Buffer | Readable;
+ /**
+ The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
+
+ If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
+
+ __Note #1__: If you provide this option, `got.stream()` will be read-only.
+
+ __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
+ */
+ form?: Record<string, any>;
+ /**
+ JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
+
+ __Note #1__: If you provide this option, `got.stream()` will be read-only.
+
+ __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
+ */
+ json?: Record<string, any>;
+ /**
+ The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
+
+ Properties from `options` will override properties in the parsed `url`.
+
+ If no protocol is specified, it will throw a `TypeError`.
+
+ __Note__: The query string is **not** parsed as search params.
+
+ @example
+ ```
+ got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
+ got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
+
+ // The query string is overridden by `searchParams`
+ got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
+ ```
+ */
+ url?: string | URL;
+ /**
+ Cookie support. You don't have to care about parsing or how to store them.
+
+ __Note__: If you provide this option, `options.headers.cookie` will be overridden.
+ */
+ cookieJar?: PromiseCookieJar | ToughCookieJar;
+ /**
+ Ignore invalid cookies instead of throwing an error.
+ Only useful when the `cookieJar` option has been set. Not recommended.
+
+ @default false
+ */
+ ignoreInvalidCookies?: boolean;
+ /**
+ Query string that will be added to the request URL.
+ This will override the query string in `url`.
+
+ If you need to pass in an array, you can do it using a `URLSearchParams` instance.
+
+ @example
+ ```
+ const got = require('got');
+
+ const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
+
+ got('https://example.com', {searchParams});
+
+ console.log(searchParams.toString());
+ //=> 'key=a&key=b'
+ ```
+ */
+ searchParams?: string | Record<string, string | number | boolean | null | undefined> | URLSearchParams;
+ /**
+ An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.
+ Useful when making lots of requests to different *public* hostnames.
+
+ `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
+
+ __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.
+
+ @default false
+ */
+ dnsCache?: CacheableLookup | boolean;
+ /**
+ User data. In contrast to other options, `context` is not enumerable.
+
+ __Note__: The object is never merged, it's just passed through.
+ Got will not modify the object in any way.
+
+ @example
+ ```
+ const got = require('got');
+
+ const instance = got.extend({
+ hooks: {
+ beforeRequest: [
+ options => {
+ if (!options.context || !options.context.token) {
+ throw new Error('Token required');
+ }
+
+ options.headers.token = options.context.token;
+ }
+ ]
+ }
+ });
+
+ (async () => {
+ const context = {
+ token: 'secret'
+ };
+
+ const response = await instance('https://httpbin.org/headers', {context});
+
+ // Let's see the headers
+ console.log(response.body);
+ })();
+ ```
+ */
+ context?: Record<string, unknown>;
+ /**
+ Hooks allow modifications during the request lifecycle.
+ Hook functions may be async and are run serially.
+ */
+ hooks?: Hooks;
+ /**
+ Defines if redirect responses should be followed automatically.
+
+ Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.
+ This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4).
+
+ @default true
+ */
+ followRedirect?: boolean;
+ /**
+ If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
+
+ @default 10
+ */
+ maxRedirects?: number;
+ /**
+ A cache adapter instance for storing cached response data.
+
+ @default false
+ */
+ cache?: string | CacheableRequest.StorageAdapter | false;
+ /**
+ Determines if a `got.HTTPError` is thrown for unsuccessful responses.
+
+ If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.
+ This may be useful if you are checking for resource availability and are expecting error responses.
+
+ @default true
+ */
+ throwHttpErrors?: boolean;
+ username?: string;
+ password?: string;
+ /**
+ If set to `true`, Got will additionally accept HTTP2 requests.
+
+ It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
+
+ __Note__: Overriding `options.request` will disable HTTP2 support.
+
+ __Note__: This option will default to `true` in the next upcoming major release.
+
+ @default false
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
+ console.log(headers.via);
+ //=> '2 nghttpx'
+ })();
+ ```
+ */
+ http2?: boolean;
+ /**
+ Set this to `true` to allow sending body for the `GET` method.
+ However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.
+ This option is only meant to interact with non-compliant servers when you have no other choice.
+
+ __Note__: The [RFC 7321](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.
+
+ @default false
+ */
+ allowGetBody?: boolean;
+ lookup?: CacheableLookup['lookup'];
+ /**
+ Request headers.
+
+ Existing headers will be overwritten. Headers set to `undefined` will be omitted.
+
+ @default {}
+ */
+ headers?: Headers;
+ /**
+ By default, redirects will use [method rewriting](https://tools.ietf.org/html/rfc7231#section-6.4).
+ For example, when sending a POST request and receiving a `302`, it will resend the body to the new location using the same HTTP method (`POST` in this case).
+
+ @default true
+ */
+ methodRewriting?: boolean;
+ /**
+ Indicates which DNS record family to use.
+
+ Values:
+ - `auto`: IPv4 (if present) or IPv6
+ - `ipv4`: Only IPv4
+ - `ipv6`: Only IPv6
+
+ __Note__: If you are using the undocumented option `family`, `dnsLookupIpVersion` will override it.
+
+ @default 'auto'
+ */
+ dnsLookupIpVersion?: DnsLookupIpVersion;
+ /**
+ A function used to parse JSON responses.
+
+ @example
+ ```
+ const got = require('got');
+ const Bourne = require('@hapi/bourne');
+
+ (async () => {
+ const parsed = await got('https://example.com', {
+ parseJson: text => Bourne.parse(text)
+ }).json();
+
+ console.log(parsed);
+ })();
+ ```
+ */
+ parseJson?: ParseJsonFunction;
+ /**
+ A function used to stringify the body of JSON requests.
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ await got.post('https://example.com', {
+ stringifyJson: object => JSON.stringify(object, (key, value) => {
+ if (key.startsWith('_')) {
+ return;
+ }
+
+ return value;
+ }),
+ json: {
+ some: 'payload',
+ _ignoreMe: 1234
+ }
+ });
+ })();
+ ```
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ await got.post('https://example.com', {
+ stringifyJson: object => JSON.stringify(object, (key, value) => {
+ if (typeof value === 'number') {
+ return value.toString();
+ }
+
+ return value;
+ }),
+ json: {
+ some: 'payload',
+ number: 1
+ }
+ });
+ })();
+ ```
+ */
+ stringifyJson?: StringifyJsonFunction;
+ /**
+ An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
+
+ Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
+
+ The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
+ The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
+
+ By default, it retries *only* on the specified methods, status codes, and on these network errors:
+
+ - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
+ - `ECONNRESET`: Connection was forcibly closed by a peer.
+ - `EADDRINUSE`: Could not bind to any free port.
+ - `ECONNREFUSED`: Connection was refused by the server.
+ - `EPIPE`: The remote side of the stream being written has been closed.
+ - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
+ - `ENETUNREACH`: No internet connection.
+ - `EAI_AGAIN`: DNS lookup timed out.
+
+ __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
+ __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
+ */
+ retry?: Partial<RequiredRetryOptions> | number;
+ /**
+ The IP address used to send the request from.
+ */
+ localAddress?: string;
+ socketPath?: string;
+ /**
+ The HTTP method used to make the request.
+
+ @default 'GET'
+ */
+ method?: Method;
+ createConnection?: (options: http.RequestOptions, oncreate: (error: Error, socket: Socket) => void) => Socket;
+ cacheOptions?: CacheOptions;
+ /**
+ If set to `false`, all invalid SSL certificates will be ignored and no error will be thrown.
+
+ If set to `true`, it will throw an error whenever an invalid SSL certificate is detected.
+
+ We strongly recommend to have this set to `true` for security reasons.
+
+ @default true
+
+ @example
+ ```
+ const got = require('got');
+
+ (async () => {
+ // Correct:
+ await got('https://example.com', {rejectUnauthorized: true});
+
+ // You can disable it when developing an HTTPS app:
+ await got('https://localhost', {rejectUnauthorized: false});
+
+ // Never do this:
+ await got('https://example.com', {rejectUnauthorized: false});
+ })();
+ ```
+ */
+ rejectUnauthorized?: boolean;
+ /**
+ Options for the advanced HTTPS API.
+ */
+ https?: HTTPSOptions;
+}
+export interface Options extends PromiseOnly.Options, PlainOptions {
+}
+export interface HTTPSOptions {
+ rejectUnauthorized?: https.RequestOptions['rejectUnauthorized'];
+ checkServerIdentity?: CheckServerIdentityFunction;
+ /**
+ Override the default Certificate Authorities ([from Mozilla](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport)).
+
+ @example
+ ```
+ // Single Certificate Authority
+ got('https://example.com', {
+ https: {
+ certificateAuthority: fs.readFileSync('./my_ca.pem')
+ }
+ });
+ ```
+ */
+ certificateAuthority?: SecureContextOptions['ca'];
+ /**
+ Private keys in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.
+
+ [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) allows the option of private keys being encrypted.
+ Encrypted keys will be decrypted with `options.https.passphrase`.
+
+ Multiple keys with different passphrases can be provided as an array of `{pem: <string | Buffer>, passphrase: <string>}`
+ */
+ key?: SecureContextOptions['key'];
+ /**
+ [Certificate chains](https://en.wikipedia.org/wiki/X.509#Certificate_chains_and_cross-certification) in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.
+
+ One cert chain should be provided per private key (`options.https.key`).
+
+ When providing multiple cert chains, they do not have to be in the same order as their private keys in `options.https.key`.
+
+ If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.
+ */
+ certificate?: SecureContextOptions['cert'];
+ /**
+ The passphrase to decrypt the `options.https.key` (if different keys have different passphrases refer to `options.https.key` documentation).
+ */
+ passphrase?: SecureContextOptions['passphrase'];
+ pfx?: SecureContextOptions['pfx'];
+}
+interface NormalizedPlainOptions extends PlainOptions {
+ method: Method;
+ url: URL;
+ timeout: Delays;
+ prefixUrl: string;
+ ignoreInvalidCookies: boolean;
+ decompress: boolean;
+ searchParams?: URLSearchParams;
+ cookieJar?: PromiseCookieJar;
+ headers: Headers;
+ context: Record<string, unknown>;
+ hooks: Required<Hooks>;
+ followRedirect: boolean;
+ maxRedirects: number;
+ cache?: string | CacheableRequest.StorageAdapter;
+ throwHttpErrors: boolean;
+ dnsCache?: CacheableLookup;
+ http2: boolean;
+ allowGetBody: boolean;
+ rejectUnauthorized: boolean;
+ lookup?: CacheableLookup['lookup'];
+ methodRewriting: boolean;
+ username: string;
+ password: string;
+ parseJson: ParseJsonFunction;
+ stringifyJson: StringifyJsonFunction;
+ retry: RequiredRetryOptions;
+ cacheOptions: CacheOptions;
+ [kRequest]: HttpRequestFunction;
+ [kIsNormalizedAlready]?: boolean;
+}
+export interface NormalizedOptions extends PromiseOnly.NormalizedOptions, NormalizedPlainOptions {
+}
+interface PlainDefaults {
+ timeout: Delays;
+ prefixUrl: string;
+ method: Method;
+ ignoreInvalidCookies: boolean;
+ decompress: boolean;
+ context: Record<string, unknown>;
+ cookieJar?: PromiseCookieJar | ToughCookieJar;
+ dnsCache?: CacheableLookup;
+ headers: Headers;
+ hooks: Required<Hooks>;
+ followRedirect: boolean;
+ maxRedirects: number;
+ cache?: string | CacheableRequest.StorageAdapter;
+ throwHttpErrors: boolean;
+ http2: boolean;
+ allowGetBody: boolean;
+ https?: HTTPSOptions;
+ methodRewriting: boolean;
+ parseJson: ParseJsonFunction;
+ stringifyJson: StringifyJsonFunction;
+ retry: RequiredRetryOptions;
+ agent?: Agents | false;
+ request?: RequestFunction;
+ searchParams?: URLSearchParams;
+ lookup?: CacheableLookup['lookup'];
+ localAddress?: string;
+ createConnection?: Options['createConnection'];
+ cacheOptions: CacheOptions;
+}
+export interface Defaults extends PromiseOnly.Defaults, PlainDefaults {
+}
+export interface Progress {
+ percent: number;
+ transferred: number;
+ total?: number;
+}
+export interface PlainResponse extends IncomingMessageWithTimings {
+ /**
+ The original request URL.
+ */
+ requestUrl: string;
+ /**
+ The redirect URLs.
+ */
+ redirectUrls: string[];
+ /**
+ - `options` - The Got options that were set on this request.
+
+ __Note__: This is not a [http.ClientRequest](https://nodejs.org/api/http.html#http_class_http_clientrequest).
+ */
+ request: Request;
+ /**
+ The remote IP address.
+
+ This is hopefully a temporary limitation, see [lukechilds/cacheable-request#86](https://github.com/lukechilds/cacheable-request/issues/86).
+
+ __Note__: Not available when the response is cached.
+ */
+ ip?: string;
+ /**
+ Whether the response was retrieved from the cache.
+ */
+ isFromCache: boolean;
+ /**
+ The status code of the response.
+ */
+ statusCode: number;
+ /**
+ The request URL or the final URL after redirects.
+ */
+ url: string;
+ /**
+ The object contains the following properties:
+
+ - `start` - Time when the request started.
+ - `socket` - Time when a socket was assigned to the request.
+ - `lookup` - Time when the DNS lookup finished.
+ - `connect` - Time when the socket successfully connected.
+ - `secureConnect` - Time when the socket securely connected.
+ - `upload` - Time when the request finished uploading.
+ - `response` - Time when the request fired `response` event.
+ - `end` - Time when the response fired `end` event.
+ - `error` - Time when the request fired `error` event.
+ - `abort` - Time when the request fired `abort` event.
+ - `phases`
+ - `wait` - `timings.socket - timings.start`
+ - `dns` - `timings.lookup - timings.socket`
+ - `tcp` - `timings.connect - timings.lookup`
+ - `tls` - `timings.secureConnect - timings.connect`
+ - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
+ - `firstByte` - `timings.response - timings.upload`
+ - `download` - `timings.end - timings.response`
+ - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
+
+ If something has not been measured yet, it will be `undefined`.
+
+ __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
+ */
+ timings: Timings;
+ /**
+ The number of times the request was retried.
+ */
+ retryCount: number;
+ /**
+ The raw result of the request.
+ */
+ rawBody?: Buffer;
+ /**
+ The result of the request.
+ */
+ body?: unknown;
+}
+export interface Response<T = unknown> extends PlainResponse {
+ /**
+ The result of the request.
+ */
+ body: T;
+ /**
+ The raw result of the request.
+ */
+ rawBody: Buffer;
+}
+export interface RequestEvents<T> {
+ /**
+ `request` event to get the request object of the request.
+
+ __Tip__: You can use `request` event to abort requests.
+
+ @example
+ ```
+ got.stream('https://github.com')
+ .on('request', request => setTimeout(() => request.destroy(), 50));
+ ```
+ */
+ on: ((name: 'request', listener: (request: http.ClientRequest) => void) => T)
+ /**
+ The `response` event to get the response object of the final request.
+ */
+ & (<R extends Response>(name: 'response', listener: (response: R) => void) => T)
+ /**
+ The `redirect` event to get the response object of a redirect. The second argument is options for the next request to the redirect location.
+ */
+ & (<R extends Response, N extends NormalizedOptions>(name: 'redirect', listener: (response: R, nextOptions: N) => void) => T)
+ /**
+ Progress events for uploading (sending a request) and downloading (receiving a response).
+ The `progress` argument is an object like:
+
+ ```js
+ {
+ percent: 0.1,
+ transferred: 1024,
+ total: 10240
+ }
+ ```
+
+ If the `content-length` header is missing, `total` will be `undefined`.
+
+ @example
+ ```js
+ (async () => {
+ const response = await got('https://sindresorhus.com')
+ .on('downloadProgress', progress => {
+ // Report download progress
+ })
+ .on('uploadProgress', progress => {
+ // Report upload progress
+ });
+
+ console.log(response);
+ })();
+ ```
+ */
+ & ((name: 'uploadProgress' | 'downloadProgress', listener: (progress: Progress) => void) => T)
+ /**
+ To enable retrying on a Got stream, it is required to have a `retry` handler attached.
+
+ When this event is emitted, you should reset the stream you were writing to and prepare the body again.
+
+ See `got.options.retry` for more information.
+ */
+ & ((name: 'retry', listener: (retryCount: number, error: RequestError) => void) => T);
+}
+export declare const setNonEnumerableProperties: (sources: Array<Options | Defaults | undefined>, to: Options) => void;
+/**
+An error to be thrown when a request fails.
+Contains a `code` property with error class code, like `ECONNREFUSED`.
+*/
+export declare class RequestError extends Error {
+ code: string;
+ stack: string;
+ readonly options: NormalizedOptions;
+ readonly response?: Response;
+ readonly request?: Request;
+ readonly timings?: Timings;
+ constructor(message: string, error: Partial<Error & {
+ code?: string;
+ }>, self: Request | NormalizedOptions);
+}
+/**
+An error to be thrown when the server redirects you more than ten times.
+Includes a `response` property.
+*/
+export declare class MaxRedirectsError extends RequestError {
+ readonly response: Response;
+ readonly request: Request;
+ readonly timings: Timings;
+ constructor(request: Request);
+}
+/**
+An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
+Includes a `response` property.
+*/
+export declare class HTTPError extends RequestError {
+ readonly response: Response;
+ readonly request: Request;
+ readonly timings: Timings;
+ constructor(response: Response);
+}
+/**
+An error to be thrown when a cache method fails.
+For example, if the database goes down or there's a filesystem error.
+*/
+export declare class CacheError extends RequestError {
+ readonly request: Request;
+ constructor(error: Error, request: Request);
+}
+/**
+An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
+*/
+export declare class UploadError extends RequestError {
+ readonly request: Request;
+ constructor(error: Error, request: Request);
+}
+/**
+An error to be thrown when the request is aborted due to a timeout.
+Includes an `event` and `timings` property.
+*/
+export declare class TimeoutError extends RequestError {
+ readonly request: Request;
+ readonly timings: Timings;
+ readonly event: string;
+ constructor(error: TimedOutTimeoutError, timings: Timings, request: Request);
+}
+/**
+An error to be thrown when reading from response stream fails.
+*/
+export declare class ReadError extends RequestError {
+ readonly request: Request;
+ readonly response: Response;
+ readonly timings: Timings;
+ constructor(error: Error, request: Request);
+}
+/**
+An error to be thrown when given an unsupported protocol.
+*/
+export declare class UnsupportedProtocolError extends RequestError {
+ constructor(options: NormalizedOptions);
+}
+export default class Request extends Duplex implements RequestEvents<Request> {
+ ['constructor']: typeof Request;
+ [kUnproxyEvents]: () => void;
+ _cannotHaveBody: boolean;
+ [kDownloadedSize]: number;
+ [kUploadedSize]: number;
+ [kStopReading]: boolean;
+ [kTriggerRead]: boolean;
+ [kBody]: Options['body'];
+ [kJobs]: Array<() => void>;
+ [kRetryTimeout]?: NodeJS.Timeout;
+ [kBodySize]?: number;
+ [kServerResponsesPiped]: Set<ServerResponse>;
+ [kIsFromCache]?: boolean;
+ [kStartedReading]?: boolean;
+ [kCancelTimeouts]?: () => void;
+ [kResponseSize]?: number;
+ [kResponse]?: IncomingMessageWithTimings;
+ [kOriginalResponse]?: IncomingMessageWithTimings;
+ [kRequest]?: ClientRequest;
+ _noPipe?: boolean;
+ _progressCallbacks: Array<() => void>;
+ options: NormalizedOptions;
+ requestUrl: string;
+ requestInitialized: boolean;
+ redirects: string[];
+ retryCount: number;
+ constructor(url: string | URL | undefined, options?: Options, defaults?: Defaults);
+ static normalizeArguments(url?: string | URL, options?: Options, defaults?: Defaults): NormalizedOptions;
+ _lockWrite(): void;
+ _unlockWrite(): void;
+ _finalizeBody(): Promise<void>;
+ _onResponseBase(response: IncomingMessageWithTimings): Promise<void>;
+ _onResponse(response: IncomingMessageWithTimings): Promise<void>;
+ _onRequest(request: ClientRequest): void;
+ _createCacheableRequest(url: URL, options: RequestOptions): Promise<ClientRequest | ResponseLike>;
+ _makeRequest(): Promise<void>;
+ _error(error: RequestError): Promise<void>;
+ _beforeError(error: Error): void;
+ _read(): void;
+ _write(chunk: any, encoding: string | undefined, callback: (error?: Error | null) => void): void;
+ _writeRequest(chunk: any, encoding: BufferEncoding | undefined, callback: (error?: Error | null) => void): void;
+ _final(callback: (error?: Error | null) => void): void;
+ _destroy(error: Error | null, callback: (error: Error | null) => void): void;
+ get _isAboutToError(): boolean;
+ /**
+ The remote IP address.
+ */
+ get ip(): string | undefined;
+ /**
+ Indicates whether the request has been aborted or not.
+ */
+ get aborted(): boolean;
+ get socket(): Socket | undefined;
+ /**
+ Progress event for downloading (receiving a response).
+ */
+ get downloadProgress(): Progress;
+ /**
+ Progress event for uploading (sending a request).
+ */
+ get uploadProgress(): Progress;
+ /**
+ The object contains the following properties:
+
+ - `start` - Time when the request started.
+ - `socket` - Time when a socket was assigned to the request.
+ - `lookup` - Time when the DNS lookup finished.
+ - `connect` - Time when the socket successfully connected.
+ - `secureConnect` - Time when the socket securely connected.
+ - `upload` - Time when the request finished uploading.
+ - `response` - Time when the request fired `response` event.
+ - `end` - Time when the response fired `end` event.
+ - `error` - Time when the request fired `error` event.
+ - `abort` - Time when the request fired `abort` event.
+ - `phases`
+ - `wait` - `timings.socket - timings.start`
+ - `dns` - `timings.lookup - timings.socket`
+ - `tcp` - `timings.connect - timings.lookup`
+ - `tls` - `timings.secureConnect - timings.connect`
+ - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
+ - `firstByte` - `timings.response - timings.upload`
+ - `download` - `timings.end - timings.response`
+ - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
+
+ If something has not been measured yet, it will be `undefined`.
+
+ __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
+ */
+ get timings(): Timings | undefined;
+ /**
+ Whether the response was retrieved from the cache.
+ */
+ get isFromCache(): boolean | undefined;
+ pipe<T extends NodeJS.WritableStream>(destination: T, options?: {
+ end?: boolean;
+ }): T;
+ unpipe<T extends NodeJS.WritableStream>(destination: T): this;
+}
+export {};
diff --git a/client/node_modules/got/dist/source/core/index.js b/client/node_modules/got/dist/source/core/index.js
new file mode 100644
index 0000000..c6cebd5
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/index.js
@@ -0,0 +1,1505 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.UnsupportedProtocolError = exports.ReadError = exports.TimeoutError = exports.UploadError = exports.CacheError = exports.HTTPError = exports.MaxRedirectsError = exports.RequestError = exports.setNonEnumerableProperties = exports.knownHookEvents = exports.withoutBody = exports.kIsNormalizedAlready = void 0;
+const util_1 = require("util");
+const stream_1 = require("stream");
+const fs_1 = require("fs");
+const url_1 = require("url");
+const http = require("http");
+const http_1 = require("http");
+const https = require("https");
+const http_timer_1 = require("@szmarczak/http-timer");
+const cacheable_lookup_1 = require("cacheable-lookup");
+const CacheableRequest = require("cacheable-request");
+const decompressResponse = require("decompress-response");
+// @ts-expect-error Missing types
+const http2wrapper = require("http2-wrapper");
+const lowercaseKeys = require("lowercase-keys");
+const is_1 = require("@sindresorhus/is");
+const get_body_size_1 = require("./utils/get-body-size");
+const is_form_data_1 = require("./utils/is-form-data");
+const proxy_events_1 = require("./utils/proxy-events");
+const timed_out_1 = require("./utils/timed-out");
+const url_to_options_1 = require("./utils/url-to-options");
+const options_to_url_1 = require("./utils/options-to-url");
+const weakable_map_1 = require("./utils/weakable-map");
+const get_buffer_1 = require("./utils/get-buffer");
+const dns_ip_version_1 = require("./utils/dns-ip-version");
+const is_response_ok_1 = require("./utils/is-response-ok");
+const deprecation_warning_1 = require("../utils/deprecation-warning");
+const normalize_arguments_1 = require("../as-promise/normalize-arguments");
+const calculate_retry_delay_1 = require("./calculate-retry-delay");
+let globalDnsCache;
+const kRequest = Symbol('request');
+const kResponse = Symbol('response');
+const kResponseSize = Symbol('responseSize');
+const kDownloadedSize = Symbol('downloadedSize');
+const kBodySize = Symbol('bodySize');
+const kUploadedSize = Symbol('uploadedSize');
+const kServerResponsesPiped = Symbol('serverResponsesPiped');
+const kUnproxyEvents = Symbol('unproxyEvents');
+const kIsFromCache = Symbol('isFromCache');
+const kCancelTimeouts = Symbol('cancelTimeouts');
+const kStartedReading = Symbol('startedReading');
+const kStopReading = Symbol('stopReading');
+const kTriggerRead = Symbol('triggerRead');
+const kBody = Symbol('body');
+const kJobs = Symbol('jobs');
+const kOriginalResponse = Symbol('originalResponse');
+const kRetryTimeout = Symbol('retryTimeout');
+exports.kIsNormalizedAlready = Symbol('isNormalizedAlready');
+const supportsBrotli = is_1.default.string(process.versions.brotli);
+exports.withoutBody = new Set(['GET', 'HEAD']);
+exports.knownHookEvents = [
+ 'init',
+ 'beforeRequest',
+ 'beforeRedirect',
+ 'beforeError',
+ 'beforeRetry',
+ // Promise-Only
+ 'afterResponse'
+];
+function validateSearchParameters(searchParameters) {
+ // eslint-disable-next-line guard-for-in
+ for (const key in searchParameters) {
+ const value = searchParameters[key];
+ if (!is_1.default.string(value) && !is_1.default.number(value) && !is_1.default.boolean(value) && !is_1.default.null_(value) && !is_1.default.undefined(value)) {
+ throw new TypeError(`The \`searchParams\` value '${String(value)}' must be a string, number, boolean or null`);
+ }
+ }
+}
+function isClientRequest(clientRequest) {
+ return is_1.default.object(clientRequest) && !('statusCode' in clientRequest);
+}
+const cacheableStore = new weakable_map_1.default();
+const waitForOpenFile = async (file) => new Promise((resolve, reject) => {
+ const onError = (error) => {
+ reject(error);
+ };
+ // Node.js 12 has incomplete types
+ if (!file.pending) {
+ resolve();
+ }
+ file.once('error', onError);
+ file.once('ready', () => {
+ file.off('error', onError);
+ resolve();
+ });
+});
+const redirectCodes = new Set([300, 301, 302, 303, 304, 307, 308]);
+const nonEnumerableProperties = [
+ 'context',
+ 'body',
+ 'json',
+ 'form'
+];
+exports.setNonEnumerableProperties = (sources, to) => {
+ // Non enumerable properties shall not be merged
+ const properties = {};
+ for (const source of sources) {
+ if (!source) {
+ continue;
+ }
+ for (const name of nonEnumerableProperties) {
+ if (!(name in source)) {
+ continue;
+ }
+ properties[name] = {
+ writable: true,
+ configurable: true,
+ enumerable: false,
+ // @ts-expect-error TS doesn't see the check above
+ value: source[name]
+ };
+ }
+ }
+ Object.defineProperties(to, properties);
+};
+/**
+An error to be thrown when a request fails.
+Contains a `code` property with error class code, like `ECONNREFUSED`.
+*/
+class RequestError extends Error {
+ constructor(message, error, self) {
+ var _a, _b;
+ super(message);
+ Error.captureStackTrace(this, this.constructor);
+ this.name = 'RequestError';
+ this.code = (_a = error.code) !== null && _a !== void 0 ? _a : 'ERR_GOT_REQUEST_ERROR';
+ if (self instanceof Request) {
+ Object.defineProperty(this, 'request', {
+ enumerable: false,
+ value: self
+ });
+ Object.defineProperty(this, 'response', {
+ enumerable: false,
+ value: self[kResponse]
+ });
+ Object.defineProperty(this, 'options', {
+ // This fails because of TS 3.7.2 useDefineForClassFields
+ // Ref: https://github.com/microsoft/TypeScript/issues/34972
+ enumerable: false,
+ value: self.options
+ });
+ }
+ else {
+ Object.defineProperty(this, 'options', {
+ // This fails because of TS 3.7.2 useDefineForClassFields
+ // Ref: https://github.com/microsoft/TypeScript/issues/34972
+ enumerable: false,
+ value: self
+ });
+ }
+ this.timings = (_b = this.request) === null || _b === void 0 ? void 0 : _b.timings;
+ // Recover the original stacktrace
+ if (is_1.default.string(error.stack) && is_1.default.string(this.stack)) {
+ const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;
+ const thisStackTrace = this.stack.slice(indexOfMessage).split('\n').reverse();
+ const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split('\n').reverse();
+ // Remove duplicated traces
+ while (errorStackTrace.length !== 0 && errorStackTrace[0] === thisStackTrace[0]) {
+ thisStackTrace.shift();
+ }
+ this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join('\n')}${errorStackTrace.reverse().join('\n')}`;
+ }
+ }
+}
+exports.RequestError = RequestError;
+/**
+An error to be thrown when the server redirects you more than ten times.
+Includes a `response` property.
+*/
+class MaxRedirectsError extends RequestError {
+ constructor(request) {
+ super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);
+ this.name = 'MaxRedirectsError';
+ this.code = 'ERR_TOO_MANY_REDIRECTS';
+ }
+}
+exports.MaxRedirectsError = MaxRedirectsError;
+/**
+An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
+Includes a `response` property.
+*/
+class HTTPError extends RequestError {
+ constructor(response) {
+ super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);
+ this.name = 'HTTPError';
+ this.code = 'ERR_NON_2XX_3XX_RESPONSE';
+ }
+}
+exports.HTTPError = HTTPError;
+/**
+An error to be thrown when a cache method fails.
+For example, if the database goes down or there's a filesystem error.
+*/
+class CacheError extends RequestError {
+ constructor(error, request) {
+ super(error.message, error, request);
+ this.name = 'CacheError';
+ this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_CACHE_ACCESS' : this.code;
+ }
+}
+exports.CacheError = CacheError;
+/**
+An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
+*/
+class UploadError extends RequestError {
+ constructor(error, request) {
+ super(error.message, error, request);
+ this.name = 'UploadError';
+ this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_UPLOAD' : this.code;
+ }
+}
+exports.UploadError = UploadError;
+/**
+An error to be thrown when the request is aborted due to a timeout.
+Includes an `event` and `timings` property.
+*/
+class TimeoutError extends RequestError {
+ constructor(error, timings, request) {
+ super(error.message, error, request);
+ this.name = 'TimeoutError';
+ this.event = error.event;
+ this.timings = timings;
+ }
+}
+exports.TimeoutError = TimeoutError;
+/**
+An error to be thrown when reading from response stream fails.
+*/
+class ReadError extends RequestError {
+ constructor(error, request) {
+ super(error.message, error, request);
+ this.name = 'ReadError';
+ this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_READING_RESPONSE_STREAM' : this.code;
+ }
+}
+exports.ReadError = ReadError;
+/**
+An error to be thrown when given an unsupported protocol.
+*/
+class UnsupportedProtocolError extends RequestError {
+ constructor(options) {
+ super(`Unsupported protocol "${options.url.protocol}"`, {}, options);
+ this.name = 'UnsupportedProtocolError';
+ this.code = 'ERR_UNSUPPORTED_PROTOCOL';
+ }
+}
+exports.UnsupportedProtocolError = UnsupportedProtocolError;
+const proxiedRequestEvents = [
+ 'socket',
+ 'connect',
+ 'continue',
+ 'information',
+ 'upgrade',
+ 'timeout'
+];
+class Request extends stream_1.Duplex {
+ constructor(url, options = {}, defaults) {
+ super({
+ // This must be false, to enable throwing after destroy
+ // It is used for retry logic in Promise API
+ autoDestroy: false,
+ // It needs to be zero because we're just proxying the data to another stream
+ highWaterMark: 0
+ });
+ this[kDownloadedSize] = 0;
+ this[kUploadedSize] = 0;
+ this.requestInitialized = false;
+ this[kServerResponsesPiped] = new Set();
+ this.redirects = [];
+ this[kStopReading] = false;
+ this[kTriggerRead] = false;
+ this[kJobs] = [];
+ this.retryCount = 0;
+ // TODO: Remove this when targeting Node.js >= 12
+ this._progressCallbacks = [];
+ const unlockWrite = () => this._unlockWrite();
+ const lockWrite = () => this._lockWrite();
+ this.on('pipe', (source) => {
+ source.prependListener('data', unlockWrite);
+ source.on('data', lockWrite);
+ source.prependListener('end', unlockWrite);
+ source.on('end', lockWrite);
+ });
+ this.on('unpipe', (source) => {
+ source.off('data', unlockWrite);
+ source.off('data', lockWrite);
+ source.off('end', unlockWrite);
+ source.off('end', lockWrite);
+ });
+ this.on('pipe', source => {
+ if (source instanceof http_1.IncomingMessage) {
+ this.options.headers = {
+ ...source.headers,
+ ...this.options.headers
+ };
+ }
+ });
+ const { json, body, form } = options;
+ if (json || body || form) {
+ this._lockWrite();
+ }
+ if (exports.kIsNormalizedAlready in options) {
+ this.options = options;
+ }
+ else {
+ try {
+ // @ts-expect-error Common TypeScript bug saying that `this.constructor` is not accessible
+ this.options = this.constructor.normalizeArguments(url, options, defaults);
+ }
+ catch (error) {
+ // TODO: Move this to `_destroy()`
+ if (is_1.default.nodeStream(options.body)) {
+ options.body.destroy();
+ }
+ this.destroy(error);
+ return;
+ }
+ }
+ (async () => {
+ var _a;
+ try {
+ if (this.options.body instanceof fs_1.ReadStream) {
+ await waitForOpenFile(this.options.body);
+ }
+ const { url: normalizedURL } = this.options;
+ if (!normalizedURL) {
+ throw new TypeError('Missing `url` property');
+ }
+ this.requestUrl = normalizedURL.toString();
+ decodeURI(this.requestUrl);
+ await this._finalizeBody();
+ await this._makeRequest();
+ if (this.destroyed) {
+ (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.destroy();
+ return;
+ }
+ // Queued writes etc.
+ for (const job of this[kJobs]) {
+ job();
+ }
+ // Prevent memory leak
+ this[kJobs].length = 0;
+ this.requestInitialized = true;
+ }
+ catch (error) {
+ if (error instanceof RequestError) {
+ this._beforeError(error);
+ return;
+ }
+ // This is a workaround for https://github.com/nodejs/node/issues/33335
+ if (!this.destroyed) {
+ this.destroy(error);
+ }
+ }
+ })();
+ }
+ static normalizeArguments(url, options, defaults) {
+ var _a, _b, _c, _d, _e;
+ const rawOptions = options;
+ if (is_1.default.object(url) && !is_1.default.urlInstance(url)) {
+ options = { ...defaults, ...url, ...options };
+ }
+ else {
+ if (url && options && options.url !== undefined) {
+ throw new TypeError('The `url` option is mutually exclusive with the `input` argument');
+ }
+ options = { ...defaults, ...options };
+ if (url !== undefined) {
+ options.url = url;
+ }
+ if (is_1.default.urlInstance(options.url)) {
+ options.url = new url_1.URL(options.url.toString());
+ }
+ }
+ // TODO: Deprecate URL options in Got 12.
+ // Support extend-specific options
+ if (options.cache === false) {
+ options.cache = undefined;
+ }
+ if (options.dnsCache === false) {
+ options.dnsCache = undefined;
+ }
+ // Nice type assertions
+ is_1.assert.any([is_1.default.string, is_1.default.undefined], options.method);
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.headers);
+ is_1.assert.any([is_1.default.string, is_1.default.urlInstance, is_1.default.undefined], options.prefixUrl);
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.cookieJar);
+ is_1.assert.any([is_1.default.object, is_1.default.string, is_1.default.undefined], options.searchParams);
+ is_1.assert.any([is_1.default.object, is_1.default.string, is_1.default.undefined], options.cache);
+ is_1.assert.any([is_1.default.object, is_1.default.number, is_1.default.undefined], options.timeout);
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.context);
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.hooks);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.decompress);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.ignoreInvalidCookies);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.followRedirect);
+ is_1.assert.any([is_1.default.number, is_1.default.undefined], options.maxRedirects);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.throwHttpErrors);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.http2);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.allowGetBody);
+ is_1.assert.any([is_1.default.string, is_1.default.undefined], options.localAddress);
+ is_1.assert.any([dns_ip_version_1.isDnsLookupIpVersion, is_1.default.undefined], options.dnsLookupIpVersion);
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.https);
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.rejectUnauthorized);
+ if (options.https) {
+ is_1.assert.any([is_1.default.boolean, is_1.default.undefined], options.https.rejectUnauthorized);
+ is_1.assert.any([is_1.default.function_, is_1.default.undefined], options.https.checkServerIdentity);
+ is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.certificateAuthority);
+ is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.key);
+ is_1.assert.any([is_1.default.string, is_1.default.object, is_1.default.array, is_1.default.undefined], options.https.certificate);
+ is_1.assert.any([is_1.default.string, is_1.default.undefined], options.https.passphrase);
+ is_1.assert.any([is_1.default.string, is_1.default.buffer, is_1.default.array, is_1.default.undefined], options.https.pfx);
+ }
+ is_1.assert.any([is_1.default.object, is_1.default.undefined], options.cacheOptions);
+ // `options.method`
+ if (is_1.default.string(options.method)) {
+ options.method = options.method.toUpperCase();
+ }
+ else {
+ options.method = 'GET';
+ }
+ // `options.headers`
+ if (options.headers === (defaults === null || defaults === void 0 ? void 0 : defaults.headers)) {
+ options.headers = { ...options.headers };
+ }
+ else {
+ options.headers = lowercaseKeys({ ...(defaults === null || defaults === void 0 ? void 0 : defaults.headers), ...options.headers });
+ }
+ // Disallow legacy `url.Url`
+ if ('slashes' in options) {
+ throw new TypeError('The legacy `url.Url` has been deprecated. Use `URL` instead.');
+ }
+ // `options.auth`
+ if ('auth' in options) {
+ throw new TypeError('Parameter `auth` is deprecated. Use `username` / `password` instead.');
+ }
+ // `options.searchParams`
+ if ('searchParams' in options) {
+ if (options.searchParams && options.searchParams !== (defaults === null || defaults === void 0 ? void 0 : defaults.searchParams)) {
+ let searchParameters;
+ if (is_1.default.string(options.searchParams) || (options.searchParams instanceof url_1.URLSearchParams)) {
+ searchParameters = new url_1.URLSearchParams(options.searchParams);
+ }
+ else {
+ validateSearchParameters(options.searchParams);
+ searchParameters = new url_1.URLSearchParams();
+ // eslint-disable-next-line guard-for-in
+ for (const key in options.searchParams) {
+ const value = options.searchParams[key];
+ if (value === null) {
+ searchParameters.append(key, '');
+ }
+ else if (value !== undefined) {
+ searchParameters.append(key, value);
+ }
+ }
+ }
+ // `normalizeArguments()` is also used to merge options
+ (_a = defaults === null || defaults === void 0 ? void 0 : defaults.searchParams) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => {
+ // Only use default if one isn't already defined
+ if (!searchParameters.has(key)) {
+ searchParameters.append(key, value);
+ }
+ });
+ options.searchParams = searchParameters;
+ }
+ }
+ // `options.username` & `options.password`
+ options.username = (_b = options.username) !== null && _b !== void 0 ? _b : '';
+ options.password = (_c = options.password) !== null && _c !== void 0 ? _c : '';
+ // `options.prefixUrl` & `options.url`
+ if (is_1.default.undefined(options.prefixUrl)) {
+ options.prefixUrl = (_d = defaults === null || defaults === void 0 ? void 0 : defaults.prefixUrl) !== null && _d !== void 0 ? _d : '';
+ }
+ else {
+ options.prefixUrl = options.prefixUrl.toString();
+ if (options.prefixUrl !== '' && !options.prefixUrl.endsWith('/')) {
+ options.prefixUrl += '/';
+ }
+ }
+ if (is_1.default.string(options.url)) {
+ if (options.url.startsWith('/')) {
+ throw new Error('`input` must not start with a slash when using `prefixUrl`');
+ }
+ options.url = options_to_url_1.default(options.prefixUrl + options.url, options);
+ }
+ else if ((is_1.default.undefined(options.url) && options.prefixUrl !== '') || options.protocol) {
+ options.url = options_to_url_1.default(options.prefixUrl, options);
+ }
+ if (options.url) {
+ if ('port' in options) {
+ delete options.port;
+ }
+ // Make it possible to change `options.prefixUrl`
+ let { prefixUrl } = options;
+ Object.defineProperty(options, 'prefixUrl', {
+ set: (value) => {
+ const url = options.url;
+ if (!url.href.startsWith(value)) {
+ throw new Error(`Cannot change \`prefixUrl\` from ${prefixUrl} to ${value}: ${url.href}`);
+ }
+ options.url = new url_1.URL(value + url.href.slice(prefixUrl.length));
+ prefixUrl = value;
+ },
+ get: () => prefixUrl
+ });
+ // Support UNIX sockets
+ let { protocol } = options.url;
+ if (protocol === 'unix:') {
+ protocol = 'http:';
+ options.url = new url_1.URL(`http://unix${options.url.pathname}${options.url.search}`);
+ }
+ // Set search params
+ if (options.searchParams) {
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ options.url.search = options.searchParams.toString();
+ }
+ // Protocol check
+ if (protocol !== 'http:' && protocol !== 'https:') {
+ throw new UnsupportedProtocolError(options);
+ }
+ // Update `username`
+ if (options.username === '') {
+ options.username = options.url.username;
+ }
+ else {
+ options.url.username = options.username;
+ }
+ // Update `password`
+ if (options.password === '') {
+ options.password = options.url.password;
+ }
+ else {
+ options.url.password = options.password;
+ }
+ }
+ // `options.cookieJar`
+ const { cookieJar } = options;
+ if (cookieJar) {
+ let { setCookie, getCookieString } = cookieJar;
+ is_1.assert.function_(setCookie);
+ is_1.assert.function_(getCookieString);
+ /* istanbul ignore next: Horrible `tough-cookie` v3 check */
+ if (setCookie.length === 4 && getCookieString.length === 0) {
+ setCookie = util_1.promisify(setCookie.bind(options.cookieJar));
+ getCookieString = util_1.promisify(getCookieString.bind(options.cookieJar));
+ options.cookieJar = {
+ setCookie,
+ getCookieString: getCookieString
+ };
+ }
+ }
+ // `options.cache`
+ const { cache } = options;
+ if (cache) {
+ if (!cacheableStore.has(cache)) {
+ cacheableStore.set(cache, new CacheableRequest(((requestOptions, handler) => {
+ const result = requestOptions[kRequest](requestOptions, handler);
+ // TODO: remove this when `cacheable-request` supports async request functions.
+ if (is_1.default.promise(result)) {
+ // @ts-expect-error
+ // We only need to implement the error handler in order to support HTTP2 caching.
+ // The result will be a promise anyway.
+ result.once = (event, handler) => {
+ if (event === 'error') {
+ result.catch(handler);
+ }
+ else if (event === 'abort') {
+ // The empty catch is needed here in case when
+ // it rejects before it's `await`ed in `_makeRequest`.
+ (async () => {
+ try {
+ const request = (await result);
+ request.once('abort', handler);
+ }
+ catch (_a) { }
+ })();
+ }
+ else {
+ /* istanbul ignore next: safety check */
+ throw new Error(`Unknown HTTP2 promise event: ${event}`);
+ }
+ return result;
+ };
+ }
+ return result;
+ }), cache));
+ }
+ }
+ // `options.cacheOptions`
+ options.cacheOptions = { ...options.cacheOptions };
+ // `options.dnsCache`
+ if (options.dnsCache === true) {
+ if (!globalDnsCache) {
+ globalDnsCache = new cacheable_lookup_1.default();
+ }
+ options.dnsCache = globalDnsCache;
+ }
+ else if (!is_1.default.undefined(options.dnsCache) && !options.dnsCache.lookup) {
+ throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${is_1.default(options.dnsCache)}`);
+ }
+ // `options.timeout`
+ if (is_1.default.number(options.timeout)) {
+ options.timeout = { request: options.timeout };
+ }
+ else if (defaults && options.timeout !== defaults.timeout) {
+ options.timeout = {
+ ...defaults.timeout,
+ ...options.timeout
+ };
+ }
+ else {
+ options.timeout = { ...options.timeout };
+ }
+ // `options.context`
+ if (!options.context) {
+ options.context = {};
+ }
+ // `options.hooks`
+ const areHooksDefault = options.hooks === (defaults === null || defaults === void 0 ? void 0 : defaults.hooks);
+ options.hooks = { ...options.hooks };
+ for (const event of exports.knownHookEvents) {
+ if (event in options.hooks) {
+ if (is_1.default.array(options.hooks[event])) {
+ // See https://github.com/microsoft/TypeScript/issues/31445#issuecomment-576929044
+ options.hooks[event] = [...options.hooks[event]];
+ }
+ else {
+ throw new TypeError(`Parameter \`${event}\` must be an Array, got ${is_1.default(options.hooks[event])}`);
+ }
+ }
+ else {
+ options.hooks[event] = [];
+ }
+ }
+ if (defaults && !areHooksDefault) {
+ for (const event of exports.knownHookEvents) {
+ const defaultHooks = defaults.hooks[event];
+ if (defaultHooks.length > 0) {
+ // See https://github.com/microsoft/TypeScript/issues/31445#issuecomment-576929044
+ options.hooks[event] = [
+ ...defaults.hooks[event],
+ ...options.hooks[event]
+ ];
+ }
+ }
+ }
+ // DNS options
+ if ('family' in options) {
+ deprecation_warning_1.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"');
+ }
+ // HTTPS options
+ if (defaults === null || defaults === void 0 ? void 0 : defaults.https) {
+ options.https = { ...defaults.https, ...options.https };
+ }
+ if ('rejectUnauthorized' in options) {
+ deprecation_warning_1.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"');
+ }
+ if ('checkServerIdentity' in options) {
+ deprecation_warning_1.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"');
+ }
+ if ('ca' in options) {
+ deprecation_warning_1.default('"options.ca" was never documented, please use "options.https.certificateAuthority"');
+ }
+ if ('key' in options) {
+ deprecation_warning_1.default('"options.key" was never documented, please use "options.https.key"');
+ }
+ if ('cert' in options) {
+ deprecation_warning_1.default('"options.cert" was never documented, please use "options.https.certificate"');
+ }
+ if ('passphrase' in options) {
+ deprecation_warning_1.default('"options.passphrase" was never documented, please use "options.https.passphrase"');
+ }
+ if ('pfx' in options) {
+ deprecation_warning_1.default('"options.pfx" was never documented, please use "options.https.pfx"');
+ }
+ // Other options
+ if ('followRedirects' in options) {
+ throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');
+ }
+ if (options.agent) {
+ for (const key in options.agent) {
+ if (key !== 'http' && key !== 'https' && key !== 'http2') {
+ throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${key}\``);
+ }
+ }
+ }
+ options.maxRedirects = (_e = options.maxRedirects) !== null && _e !== void 0 ? _e : 0;
+ // Set non-enumerable properties
+ exports.setNonEnumerableProperties([defaults, rawOptions], options);
+ return normalize_arguments_1.default(options, defaults);
+ }
+ _lockWrite() {
+ const onLockedWrite = () => {
+ throw new TypeError('The payload has been already provided');
+ };
+ this.write = onLockedWrite;
+ this.end = onLockedWrite;
+ }
+ _unlockWrite() {
+ this.write = super.write;
+ this.end = super.end;
+ }
+ async _finalizeBody() {
+ const { options } = this;
+ const { headers } = options;
+ const isForm = !is_1.default.undefined(options.form);
+ const isJSON = !is_1.default.undefined(options.json);
+ const isBody = !is_1.default.undefined(options.body);
+ const hasPayload = isForm || isJSON || isBody;
+ const cannotHaveBody = exports.withoutBody.has(options.method) && !(options.method === 'GET' && options.allowGetBody);
+ this._cannotHaveBody = cannotHaveBody;
+ if (hasPayload) {
+ if (cannotHaveBody) {
+ throw new TypeError(`The \`${options.method}\` method cannot be used with a body`);
+ }
+ if ([isBody, isForm, isJSON].filter(isTrue => isTrue).length > 1) {
+ throw new TypeError('The `body`, `json` and `form` options are mutually exclusive');
+ }
+ if (isBody &&
+ !(options.body instanceof stream_1.Readable) &&
+ !is_1.default.string(options.body) &&
+ !is_1.default.buffer(options.body) &&
+ !is_form_data_1.default(options.body)) {
+ throw new TypeError('The `body` option must be a stream.Readable, string or Buffer');
+ }
+ if (isForm && !is_1.default.object(options.form)) {
+ throw new TypeError('The `form` option must be an Object');
+ }
+ {
+ // Serialize body
+ const noContentType = !is_1.default.string(headers['content-type']);
+ if (isBody) {
+ // Special case for https://github.com/form-data/form-data
+ if (is_form_data_1.default(options.body) && noContentType) {
+ headers['content-type'] = `multipart/form-data; boundary=${options.body.getBoundary()}`;
+ }
+ this[kBody] = options.body;
+ }
+ else if (isForm) {
+ if (noContentType) {
+ headers['content-type'] = 'application/x-www-form-urlencoded';
+ }
+ this[kBody] = (new url_1.URLSearchParams(options.form)).toString();
+ }
+ else {
+ if (noContentType) {
+ headers['content-type'] = 'application/json';
+ }
+ this[kBody] = options.stringifyJson(options.json);
+ }
+ const uploadBodySize = await get_body_size_1.default(this[kBody], options.headers);
+ // See https://tools.ietf.org/html/rfc7230#section-3.3.2
+ // A user agent SHOULD send a Content-Length in a request message when
+ // no Transfer-Encoding is sent and the request method defines a meaning
+ // for an enclosed payload body. For example, a Content-Length header
+ // field is normally sent in a POST request even when the value is 0
+ // (indicating an empty payload body). A user agent SHOULD NOT send a
+ // Content-Length header field when the request message does not contain
+ // a payload body and the method semantics do not anticipate such a
+ // body.
+ if (is_1.default.undefined(headers['content-length']) && is_1.default.undefined(headers['transfer-encoding'])) {
+ if (!cannotHaveBody && !is_1.default.undefined(uploadBodySize)) {
+ headers['content-length'] = String(uploadBodySize);
+ }
+ }
+ }
+ }
+ else if (cannotHaveBody) {
+ this._lockWrite();
+ }
+ else {
+ this._unlockWrite();
+ }
+ this[kBodySize] = Number(headers['content-length']) || undefined;
+ }
+ async _onResponseBase(response) {
+ const { options } = this;
+ const { url } = options;
+ this[kOriginalResponse] = response;
+ if (options.decompress) {
+ response = decompressResponse(response);
+ }
+ const statusCode = response.statusCode;
+ const typedResponse = response;
+ typedResponse.statusMessage = typedResponse.statusMessage ? typedResponse.statusMessage : http.STATUS_CODES[statusCode];
+ typedResponse.url = options.url.toString();
+ typedResponse.requestUrl = this.requestUrl;
+ typedResponse.redirectUrls = this.redirects;
+ typedResponse.request = this;
+ typedResponse.isFromCache = response.fromCache || false;
+ typedResponse.ip = this.ip;
+ typedResponse.retryCount = this.retryCount;
+ this[kIsFromCache] = typedResponse.isFromCache;
+ this[kResponseSize] = Number(response.headers['content-length']) || undefined;
+ this[kResponse] = response;
+ response.once('end', () => {
+ this[kResponseSize] = this[kDownloadedSize];
+ this.emit('downloadProgress', this.downloadProgress);
+ });
+ response.once('error', (error) => {
+ // Force clean-up, because some packages don't do this.
+ // TODO: Fix decompress-response
+ response.destroy();
+ this._beforeError(new ReadError(error, this));
+ });
+ response.once('aborted', () => {
+ this._beforeError(new ReadError({
+ name: 'Error',
+ message: 'The server aborted pending request',
+ code: 'ECONNRESET'
+ }, this));
+ });
+ this.emit('downloadProgress', this.downloadProgress);
+ const rawCookies = response.headers['set-cookie'];
+ if (is_1.default.object(options.cookieJar) && rawCookies) {
+ let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));
+ if (options.ignoreInvalidCookies) {
+ promises = promises.map(async (p) => p.catch(() => { }));
+ }
+ try {
+ await Promise.all(promises);
+ }
+ catch (error) {
+ this._beforeError(error);
+ return;
+ }
+ }
+ if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {
+ // We're being redirected, we don't care about the response.
+ // It'd be best to abort the request, but we can't because
+ // we would have to sacrifice the TCP connection. We don't want that.
+ response.resume();
+ if (this[kRequest]) {
+ this[kCancelTimeouts]();
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete this[kRequest];
+ this[kUnproxyEvents]();
+ }
+ const shouldBeGet = statusCode === 303 && options.method !== 'GET' && options.method !== 'HEAD';
+ if (shouldBeGet || !options.methodRewriting) {
+ // Server responded with "see other", indicating that the resource exists at another location,
+ // and the client should request it from that location via GET or HEAD.
+ options.method = 'GET';
+ if ('body' in options) {
+ delete options.body;
+ }
+ if ('json' in options) {
+ delete options.json;
+ }
+ if ('form' in options) {
+ delete options.form;
+ }
+ this[kBody] = undefined;
+ delete options.headers['content-length'];
+ }
+ if (this.redirects.length >= options.maxRedirects) {
+ this._beforeError(new MaxRedirectsError(this));
+ return;
+ }
+ try {
+ // Do not remove. See https://github.com/sindresorhus/got/pull/214
+ const redirectBuffer = Buffer.from(response.headers.location, 'binary').toString();
+ // Handles invalid URLs. See https://github.com/sindresorhus/got/issues/604
+ const redirectUrl = new url_1.URL(redirectBuffer, url);
+ const redirectString = redirectUrl.toString();
+ decodeURI(redirectString);
+ // eslint-disable-next-line no-inner-declarations
+ function isUnixSocketURL(url) {
+ return url.protocol === 'unix:' || url.hostname === 'unix';
+ }
+ if (!isUnixSocketURL(url) && isUnixSocketURL(redirectUrl)) {
+ this._beforeError(new RequestError('Cannot redirect to UNIX socket', {}, this));
+ return;
+ }
+ // Redirecting to a different site, clear sensitive data.
+ if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {
+ if ('host' in options.headers) {
+ delete options.headers.host;
+ }
+ if ('cookie' in options.headers) {
+ delete options.headers.cookie;
+ }
+ if ('authorization' in options.headers) {
+ delete options.headers.authorization;
+ }
+ if (options.username || options.password) {
+ options.username = '';
+ options.password = '';
+ }
+ }
+ else {
+ redirectUrl.username = options.username;
+ redirectUrl.password = options.password;
+ }
+ this.redirects.push(redirectString);
+ options.url = redirectUrl;
+ for (const hook of options.hooks.beforeRedirect) {
+ // eslint-disable-next-line no-await-in-loop
+ await hook(options, typedResponse);
+ }
+ this.emit('redirect', typedResponse, options);
+ await this._makeRequest();
+ }
+ catch (error) {
+ this._beforeError(error);
+ return;
+ }
+ return;
+ }
+ if (options.isStream && options.throwHttpErrors && !is_response_ok_1.isResponseOk(typedResponse)) {
+ this._beforeError(new HTTPError(typedResponse));
+ return;
+ }
+ response.on('readable', () => {
+ if (this[kTriggerRead]) {
+ this._read();
+ }
+ });
+ this.on('resume', () => {
+ response.resume();
+ });
+ this.on('pause', () => {
+ response.pause();
+ });
+ response.once('end', () => {
+ this.push(null);
+ });
+ this.emit('response', response);
+ for (const destination of this[kServerResponsesPiped]) {
+ if (destination.headersSent) {
+ continue;
+ }
+ // eslint-disable-next-line guard-for-in
+ for (const key in response.headers) {
+ const isAllowed = options.decompress ? key !== 'content-encoding' : true;
+ const value = response.headers[key];
+ if (isAllowed) {
+ destination.setHeader(key, value);
+ }
+ }
+ destination.statusCode = statusCode;
+ }
+ }
+ async _onResponse(response) {
+ try {
+ await this._onResponseBase(response);
+ }
+ catch (error) {
+ /* istanbul ignore next: better safe than sorry */
+ this._beforeError(error);
+ }
+ }
+ _onRequest(request) {
+ const { options } = this;
+ const { timeout, url } = options;
+ http_timer_1.default(request);
+ this[kCancelTimeouts] = timed_out_1.default(request, timeout, url);
+ const responseEventName = options.cache ? 'cacheableResponse' : 'response';
+ request.once(responseEventName, (response) => {
+ void this._onResponse(response);
+ });
+ request.once('error', (error) => {
+ var _a;
+ // Force clean-up, because some packages (e.g. nock) don't do this.
+ request.destroy();
+ // Node.js <= 12.18.2 mistakenly emits the response `end` first.
+ (_a = request.res) === null || _a === void 0 ? void 0 : _a.removeAllListeners('end');
+ error = error instanceof timed_out_1.TimeoutError ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);
+ this._beforeError(error);
+ });
+ this[kUnproxyEvents] = proxy_events_1.default(request, this, proxiedRequestEvents);
+ this[kRequest] = request;
+ this.emit('uploadProgress', this.uploadProgress);
+ // Send body
+ const body = this[kBody];
+ const currentRequest = this.redirects.length === 0 ? this : request;
+ if (is_1.default.nodeStream(body)) {
+ body.pipe(currentRequest);
+ body.once('error', (error) => {
+ this._beforeError(new UploadError(error, this));
+ });
+ }
+ else {
+ this._unlockWrite();
+ if (!is_1.default.undefined(body)) {
+ this._writeRequest(body, undefined, () => { });
+ currentRequest.end();
+ this._lockWrite();
+ }
+ else if (this._cannotHaveBody || this._noPipe) {
+ currentRequest.end();
+ this._lockWrite();
+ }
+ }
+ this.emit('request', request);
+ }
+ async _createCacheableRequest(url, options) {
+ return new Promise((resolve, reject) => {
+ // TODO: Remove `utils/url-to-options.ts` when `cacheable-request` is fixed
+ Object.assign(options, url_to_options_1.default(url));
+ // `http-cache-semantics` checks this
+ // TODO: Fix this ignore.
+ // @ts-expect-error
+ delete options.url;
+ let request;
+ // This is ugly
+ const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {
+ // TODO: Fix `cacheable-response`
+ response._readableState.autoDestroy = false;
+ if (request) {
+ (await request).emit('cacheableResponse', response);
+ }
+ resolve(response);
+ });
+ // Restore options
+ options.url = url;
+ cacheRequest.once('error', reject);
+ cacheRequest.once('request', async (requestOrPromise) => {
+ request = requestOrPromise;
+ resolve(request);
+ });
+ });
+ }
+ async _makeRequest() {
+ var _a, _b, _c, _d, _e;
+ const { options } = this;
+ const { headers } = options;
+ for (const key in headers) {
+ if (is_1.default.undefined(headers[key])) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete headers[key];
+ }
+ else if (is_1.default.null_(headers[key])) {
+ throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${key}\` header`);
+ }
+ }
+ if (options.decompress && is_1.default.undefined(headers['accept-encoding'])) {
+ headers['accept-encoding'] = supportsBrotli ? 'gzip, deflate, br' : 'gzip, deflate';
+ }
+ // Set cookies
+ if (options.cookieJar) {
+ const cookieString = await options.cookieJar.getCookieString(options.url.toString());
+ if (is_1.default.nonEmptyString(cookieString)) {
+ options.headers.cookie = cookieString;
+ }
+ }
+ for (const hook of options.hooks.beforeRequest) {
+ // eslint-disable-next-line no-await-in-loop
+ const result = await hook(options);
+ if (!is_1.default.undefined(result)) {
+ // @ts-expect-error Skip the type mismatch to support abstract responses
+ options.request = () => result;
+ break;
+ }
+ }
+ if (options.body && this[kBody] !== options.body) {
+ this[kBody] = options.body;
+ }
+ const { agent, request, timeout, url } = options;
+ if (options.dnsCache && !('lookup' in options)) {
+ options.lookup = options.dnsCache.lookup;
+ }
+ // UNIX sockets
+ if (url.hostname === 'unix') {
+ const matches = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);
+ if (matches === null || matches === void 0 ? void 0 : matches.groups) {
+ const { socketPath, path } = matches.groups;
+ Object.assign(options, {
+ socketPath,
+ path,
+ host: ''
+ });
+ }
+ }
+ const isHttps = url.protocol === 'https:';
+ // Fallback function
+ let fallbackFn;
+ if (options.http2) {
+ fallbackFn = http2wrapper.auto;
+ }
+ else {
+ fallbackFn = isHttps ? https.request : http.request;
+ }
+ const realFn = (_a = options.request) !== null && _a !== void 0 ? _a : fallbackFn;
+ // Cache support
+ const fn = options.cache ? this._createCacheableRequest : realFn;
+ // Pass an agent directly when HTTP2 is disabled
+ if (agent && !options.http2) {
+ options.agent = agent[isHttps ? 'https' : 'http'];
+ }
+ // Prepare plain HTTP request options
+ options[kRequest] = realFn;
+ delete options.request;
+ // TODO: Fix this ignore.
+ // @ts-expect-error
+ delete options.timeout;
+ const requestOptions = options;
+ requestOptions.shared = (_b = options.cacheOptions) === null || _b === void 0 ? void 0 : _b.shared;
+ requestOptions.cacheHeuristic = (_c = options.cacheOptions) === null || _c === void 0 ? void 0 : _c.cacheHeuristic;
+ requestOptions.immutableMinTimeToLive = (_d = options.cacheOptions) === null || _d === void 0 ? void 0 : _d.immutableMinTimeToLive;
+ requestOptions.ignoreCargoCult = (_e = options.cacheOptions) === null || _e === void 0 ? void 0 : _e.ignoreCargoCult;
+ // If `dnsLookupIpVersion` is not present do not override `family`
+ if (options.dnsLookupIpVersion !== undefined) {
+ try {
+ requestOptions.family = dns_ip_version_1.dnsLookupIpVersionToFamily(options.dnsLookupIpVersion);
+ }
+ catch (_f) {
+ throw new Error('Invalid `dnsLookupIpVersion` option value');
+ }
+ }
+ // HTTPS options remapping
+ if (options.https) {
+ if ('rejectUnauthorized' in options.https) {
+ requestOptions.rejectUnauthorized = options.https.rejectUnauthorized;
+ }
+ if (options.https.checkServerIdentity) {
+ requestOptions.checkServerIdentity = options.https.checkServerIdentity;
+ }
+ if (options.https.certificateAuthority) {
+ requestOptions.ca = options.https.certificateAuthority;
+ }
+ if (options.https.certificate) {
+ requestOptions.cert = options.https.certificate;
+ }
+ if (options.https.key) {
+ requestOptions.key = options.https.key;
+ }
+ if (options.https.passphrase) {
+ requestOptions.passphrase = options.https.passphrase;
+ }
+ if (options.https.pfx) {
+ requestOptions.pfx = options.https.pfx;
+ }
+ }
+ try {
+ let requestOrResponse = await fn(url, requestOptions);
+ if (is_1.default.undefined(requestOrResponse)) {
+ requestOrResponse = fallbackFn(url, requestOptions);
+ }
+ // Restore options
+ options.request = request;
+ options.timeout = timeout;
+ options.agent = agent;
+ // HTTPS options restore
+ if (options.https) {
+ if ('rejectUnauthorized' in options.https) {
+ delete requestOptions.rejectUnauthorized;
+ }
+ if (options.https.checkServerIdentity) {
+ // @ts-expect-error - This one will be removed when we remove the alias.
+ delete requestOptions.checkServerIdentity;
+ }
+ if (options.https.certificateAuthority) {
+ delete requestOptions.ca;
+ }
+ if (options.https.certificate) {
+ delete requestOptions.cert;
+ }
+ if (options.https.key) {
+ delete requestOptions.key;
+ }
+ if (options.https.passphrase) {
+ delete requestOptions.passphrase;
+ }
+ if (options.https.pfx) {
+ delete requestOptions.pfx;
+ }
+ }
+ if (isClientRequest(requestOrResponse)) {
+ this._onRequest(requestOrResponse);
+ // Emit the response after the stream has been ended
+ }
+ else if (this.writable) {
+ this.once('finish', () => {
+ void this._onResponse(requestOrResponse);
+ });
+ this._unlockWrite();
+ this.end();
+ this._lockWrite();
+ }
+ else {
+ void this._onResponse(requestOrResponse);
+ }
+ }
+ catch (error) {
+ if (error instanceof CacheableRequest.CacheError) {
+ throw new CacheError(error, this);
+ }
+ throw new RequestError(error.message, error, this);
+ }
+ }
+ async _error(error) {
+ try {
+ for (const hook of this.options.hooks.beforeError) {
+ // eslint-disable-next-line no-await-in-loop
+ error = await hook(error);
+ }
+ }
+ catch (error_) {
+ error = new RequestError(error_.message, error_, this);
+ }
+ this.destroy(error);
+ }
+ _beforeError(error) {
+ if (this[kStopReading]) {
+ return;
+ }
+ const { options } = this;
+ const retryCount = this.retryCount + 1;
+ this[kStopReading] = true;
+ if (!(error instanceof RequestError)) {
+ error = new RequestError(error.message, error, this);
+ }
+ const typedError = error;
+ const { response } = typedError;
+ void (async () => {
+ if (response && !response.body) {
+ response.setEncoding(this._readableState.encoding);
+ try {
+ response.rawBody = await get_buffer_1.default(response);
+ response.body = response.rawBody.toString();
+ }
+ catch (_a) { }
+ }
+ if (this.listenerCount('retry') !== 0) {
+ let backoff;
+ try {
+ let retryAfter;
+ if (response && 'retry-after' in response.headers) {
+ retryAfter = Number(response.headers['retry-after']);
+ if (Number.isNaN(retryAfter)) {
+ retryAfter = Date.parse(response.headers['retry-after']) - Date.now();
+ if (retryAfter <= 0) {
+ retryAfter = 1;
+ }
+ }
+ else {
+ retryAfter *= 1000;
+ }
+ }
+ backoff = await options.retry.calculateDelay({
+ attemptCount: retryCount,
+ retryOptions: options.retry,
+ error: typedError,
+ retryAfter,
+ computedValue: calculate_retry_delay_1.default({
+ attemptCount: retryCount,
+ retryOptions: options.retry,
+ error: typedError,
+ retryAfter,
+ computedValue: 0
+ })
+ });
+ }
+ catch (error_) {
+ void this._error(new RequestError(error_.message, error_, this));
+ return;
+ }
+ if (backoff) {
+ const retry = async () => {
+ try {
+ for (const hook of this.options.hooks.beforeRetry) {
+ // eslint-disable-next-line no-await-in-loop
+ await hook(this.options, typedError, retryCount);
+ }
+ }
+ catch (error_) {
+ void this._error(new RequestError(error_.message, error, this));
+ return;
+ }
+ // Something forced us to abort the retry
+ if (this.destroyed) {
+ return;
+ }
+ this.destroy();
+ this.emit('retry', retryCount, error);
+ };
+ this[kRetryTimeout] = setTimeout(retry, backoff);
+ return;
+ }
+ }
+ void this._error(typedError);
+ })();
+ }
+ _read() {
+ this[kTriggerRead] = true;
+ const response = this[kResponse];
+ if (response && !this[kStopReading]) {
+ // We cannot put this in the `if` above
+ // because `.read()` also triggers the `end` event
+ if (response.readableLength) {
+ this[kTriggerRead] = false;
+ }
+ let data;
+ while ((data = response.read()) !== null) {
+ this[kDownloadedSize] += data.length;
+ this[kStartedReading] = true;
+ const progress = this.downloadProgress;
+ if (progress.percent < 1) {
+ this.emit('downloadProgress', progress);
+ }
+ this.push(data);
+ }
+ }
+ }
+ // Node.js 12 has incorrect types, so the encoding must be a string
+ _write(chunk, encoding, callback) {
+ const write = () => {
+ this._writeRequest(chunk, encoding, callback);
+ };
+ if (this.requestInitialized) {
+ write();
+ }
+ else {
+ this[kJobs].push(write);
+ }
+ }
+ _writeRequest(chunk, encoding, callback) {
+ if (this[kRequest].destroyed) {
+ // Probably the `ClientRequest` instance will throw
+ return;
+ }
+ this._progressCallbacks.push(() => {
+ this[kUploadedSize] += Buffer.byteLength(chunk, encoding);
+ const progress = this.uploadProgress;
+ if (progress.percent < 1) {
+ this.emit('uploadProgress', progress);
+ }
+ });
+ // TODO: What happens if it's from cache? Then this[kRequest] won't be defined.
+ this[kRequest].write(chunk, encoding, (error) => {
+ if (!error && this._progressCallbacks.length > 0) {
+ this._progressCallbacks.shift()();
+ }
+ callback(error);
+ });
+ }
+ _final(callback) {
+ const endRequest = () => {
+ // FIX: Node.js 10 calls the write callback AFTER the end callback!
+ while (this._progressCallbacks.length !== 0) {
+ this._progressCallbacks.shift()();
+ }
+ // We need to check if `this[kRequest]` is present,
+ // because it isn't when we use cache.
+ if (!(kRequest in this)) {
+ callback();
+ return;
+ }
+ if (this[kRequest].destroyed) {
+ callback();
+ return;
+ }
+ this[kRequest].end((error) => {
+ if (!error) {
+ this[kBodySize] = this[kUploadedSize];
+ this.emit('uploadProgress', this.uploadProgress);
+ this[kRequest].emit('upload-complete');
+ }
+ callback(error);
+ });
+ };
+ if (this.requestInitialized) {
+ endRequest();
+ }
+ else {
+ this[kJobs].push(endRequest);
+ }
+ }
+ _destroy(error, callback) {
+ var _a;
+ this[kStopReading] = true;
+ // Prevent further retries
+ clearTimeout(this[kRetryTimeout]);
+ if (kRequest in this) {
+ this[kCancelTimeouts]();
+ // TODO: Remove the next `if` when these get fixed:
+ // - https://github.com/nodejs/node/issues/32851
+ if (!((_a = this[kResponse]) === null || _a === void 0 ? void 0 : _a.complete)) {
+ this[kRequest].destroy();
+ }
+ }
+ if (error !== null && !is_1.default.undefined(error) && !(error instanceof RequestError)) {
+ error = new RequestError(error.message, error, this);
+ }
+ callback(error);
+ }
+ get _isAboutToError() {
+ return this[kStopReading];
+ }
+ /**
+ The remote IP address.
+ */
+ get ip() {
+ var _a;
+ return (_a = this.socket) === null || _a === void 0 ? void 0 : _a.remoteAddress;
+ }
+ /**
+ Indicates whether the request has been aborted or not.
+ */
+ get aborted() {
+ var _a, _b, _c;
+ return ((_b = (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.destroyed) !== null && _b !== void 0 ? _b : this.destroyed) && !((_c = this[kOriginalResponse]) === null || _c === void 0 ? void 0 : _c.complete);
+ }
+ get socket() {
+ var _a, _b;
+ return (_b = (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.socket) !== null && _b !== void 0 ? _b : undefined;
+ }
+ /**
+ Progress event for downloading (receiving a response).
+ */
+ get downloadProgress() {
+ let percent;
+ if (this[kResponseSize]) {
+ percent = this[kDownloadedSize] / this[kResponseSize];
+ }
+ else if (this[kResponseSize] === this[kDownloadedSize]) {
+ percent = 1;
+ }
+ else {
+ percent = 0;
+ }
+ return {
+ percent,
+ transferred: this[kDownloadedSize],
+ total: this[kResponseSize]
+ };
+ }
+ /**
+ Progress event for uploading (sending a request).
+ */
+ get uploadProgress() {
+ let percent;
+ if (this[kBodySize]) {
+ percent = this[kUploadedSize] / this[kBodySize];
+ }
+ else if (this[kBodySize] === this[kUploadedSize]) {
+ percent = 1;
+ }
+ else {
+ percent = 0;
+ }
+ return {
+ percent,
+ transferred: this[kUploadedSize],
+ total: this[kBodySize]
+ };
+ }
+ /**
+ The object contains the following properties:
+
+ - `start` - Time when the request started.
+ - `socket` - Time when a socket was assigned to the request.
+ - `lookup` - Time when the DNS lookup finished.
+ - `connect` - Time when the socket successfully connected.
+ - `secureConnect` - Time when the socket securely connected.
+ - `upload` - Time when the request finished uploading.
+ - `response` - Time when the request fired `response` event.
+ - `end` - Time when the response fired `end` event.
+ - `error` - Time when the request fired `error` event.
+ - `abort` - Time when the request fired `abort` event.
+ - `phases`
+ - `wait` - `timings.socket - timings.start`
+ - `dns` - `timings.lookup - timings.socket`
+ - `tcp` - `timings.connect - timings.lookup`
+ - `tls` - `timings.secureConnect - timings.connect`
+ - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
+ - `firstByte` - `timings.response - timings.upload`
+ - `download` - `timings.end - timings.response`
+ - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
+
+ If something has not been measured yet, it will be `undefined`.
+
+ __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
+ */
+ get timings() {
+ var _a;
+ return (_a = this[kRequest]) === null || _a === void 0 ? void 0 : _a.timings;
+ }
+ /**
+ Whether the response was retrieved from the cache.
+ */
+ get isFromCache() {
+ return this[kIsFromCache];
+ }
+ pipe(destination, options) {
+ if (this[kStartedReading]) {
+ throw new Error('Failed to pipe. The response has been emitted already.');
+ }
+ if (destination instanceof http_1.ServerResponse) {
+ this[kServerResponsesPiped].add(destination);
+ }
+ return super.pipe(destination, options);
+ }
+ unpipe(destination) {
+ if (destination instanceof http_1.ServerResponse) {
+ this[kServerResponsesPiped].delete(destination);
+ }
+ super.unpipe(destination);
+ return this;
+ }
+}
+exports.default = Request;
diff --git a/client/node_modules/got/dist/source/core/utils/dns-ip-version.d.ts b/client/node_modules/got/dist/source/core/utils/dns-ip-version.d.ts
new file mode 100644
index 0000000..ea547cd
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/dns-ip-version.d.ts
@@ -0,0 +1,5 @@
+export declare type DnsLookupIpVersion = 'auto' | 'ipv4' | 'ipv6';
+declare type DnsIpFamily = 0 | 4 | 6;
+export declare const isDnsLookupIpVersion: (value: any) => boolean;
+export declare const dnsLookupIpVersionToFamily: (dnsLookupIpVersion: DnsLookupIpVersion) => DnsIpFamily;
+export {};
diff --git a/client/node_modules/got/dist/source/core/utils/dns-ip-version.js b/client/node_modules/got/dist/source/core/utils/dns-ip-version.js
new file mode 100644
index 0000000..6f599c2
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/dns-ip-version.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.dnsLookupIpVersionToFamily = exports.isDnsLookupIpVersion = void 0;
+const conversionTable = {
+ auto: 0,
+ ipv4: 4,
+ ipv6: 6
+};
+exports.isDnsLookupIpVersion = (value) => {
+ return value in conversionTable;
+};
+exports.dnsLookupIpVersionToFamily = (dnsLookupIpVersion) => {
+ if (exports.isDnsLookupIpVersion(dnsLookupIpVersion)) {
+ return conversionTable[dnsLookupIpVersion];
+ }
+ throw new Error('Invalid DNS lookup IP version');
+};
diff --git a/client/node_modules/got/dist/source/core/utils/get-body-size.d.ts b/client/node_modules/got/dist/source/core/utils/get-body-size.d.ts
new file mode 100644
index 0000000..9745f69
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/get-body-size.d.ts
@@ -0,0 +1,3 @@
+import { ClientRequestArgs } from 'http';
+declare const _default: (body: unknown, headers: ClientRequestArgs['headers']) => Promise<number | undefined>;
+export default _default;
diff --git a/client/node_modules/got/dist/source/core/utils/get-body-size.js b/client/node_modules/got/dist/source/core/utils/get-body-size.js
new file mode 100644
index 0000000..0202342
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/get-body-size.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const util_1 = require("util");
+const is_1 = require("@sindresorhus/is");
+const is_form_data_1 = require("./is-form-data");
+const statAsync = util_1.promisify(fs_1.stat);
+exports.default = async (body, headers) => {
+ if (headers && 'content-length' in headers) {
+ return Number(headers['content-length']);
+ }
+ if (!body) {
+ return 0;
+ }
+ if (is_1.default.string(body)) {
+ return Buffer.byteLength(body);
+ }
+ if (is_1.default.buffer(body)) {
+ return body.length;
+ }
+ if (is_form_data_1.default(body)) {
+ return util_1.promisify(body.getLength.bind(body))();
+ }
+ if (body instanceof fs_1.ReadStream) {
+ const { size } = await statAsync(body.path);
+ if (size === 0) {
+ return undefined;
+ }
+ return size;
+ }
+ return undefined;
+};
diff --git a/client/node_modules/got/dist/source/core/utils/get-buffer.d.ts b/client/node_modules/got/dist/source/core/utils/get-buffer.d.ts
new file mode 100644
index 0000000..66eaada
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/get-buffer.d.ts
@@ -0,0 +1,4 @@
+/// <reference types="node" />
+import { Readable } from 'stream';
+declare const getBuffer: (stream: Readable) => Promise<Buffer>;
+export default getBuffer;
diff --git a/client/node_modules/got/dist/source/core/utils/get-buffer.js b/client/node_modules/got/dist/source/core/utils/get-buffer.js
new file mode 100644
index 0000000..0155f08
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/get-buffer.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+// TODO: Update https://github.com/sindresorhus/get-stream
+const getBuffer = async (stream) => {
+ const chunks = [];
+ let length = 0;
+ for await (const chunk of stream) {
+ chunks.push(chunk);
+ length += Buffer.byteLength(chunk);
+ }
+ if (Buffer.isBuffer(chunks[0])) {
+ return Buffer.concat(chunks, length);
+ }
+ return Buffer.from(chunks.join(''));
+};
+exports.default = getBuffer;
diff --git a/client/node_modules/got/dist/source/core/utils/is-form-data.d.ts b/client/node_modules/got/dist/source/core/utils/is-form-data.d.ts
new file mode 100644
index 0000000..02087b5
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/is-form-data.d.ts
@@ -0,0 +1,8 @@
+/// <reference types="node" />
+import { Readable } from 'stream';
+interface FormData extends Readable {
+ getBoundary: () => string;
+ getLength: (callback: (error: Error | null, length: number) => void) => void;
+}
+declare const _default: (body: unknown) => body is FormData;
+export default _default;
diff --git a/client/node_modules/got/dist/source/core/utils/is-form-data.js b/client/node_modules/got/dist/source/core/utils/is-form-data.js
new file mode 100644
index 0000000..32c16cc
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/is-form-data.js
@@ -0,0 +1,4 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const is_1 = require("@sindresorhus/is");
+exports.default = (body) => is_1.default.nodeStream(body) && is_1.default.function_(body.getBoundary);
diff --git a/client/node_modules/got/dist/source/core/utils/is-response-ok.d.ts b/client/node_modules/got/dist/source/core/utils/is-response-ok.d.ts
new file mode 100644
index 0000000..7e1d49a
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/is-response-ok.d.ts
@@ -0,0 +1,2 @@
+import { Response } from '..';
+export declare const isResponseOk: (response: Response) => boolean;
diff --git a/client/node_modules/got/dist/source/core/utils/is-response-ok.js b/client/node_modules/got/dist/source/core/utils/is-response-ok.js
new file mode 100644
index 0000000..84c9331
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/is-response-ok.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isResponseOk = void 0;
+exports.isResponseOk = (response) => {
+ const { statusCode } = response;
+ const limitStatusCode = response.request.options.followRedirect ? 299 : 399;
+ return (statusCode >= 200 && statusCode <= limitStatusCode) || statusCode === 304;
+};
diff --git a/client/node_modules/got/dist/source/core/utils/options-to-url.d.ts b/client/node_modules/got/dist/source/core/utils/options-to-url.d.ts
new file mode 100644
index 0000000..c696a83
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/options-to-url.d.ts
@@ -0,0 +1,14 @@
+import { URL } from 'url';
+export interface URLOptions {
+ href?: string;
+ protocol?: string;
+ host?: string;
+ hostname?: string;
+ port?: string | number;
+ pathname?: string;
+ search?: string;
+ searchParams?: unknown;
+ path?: string;
+}
+declare const _default: (origin: string, options: URLOptions) => URL;
+export default _default;
diff --git a/client/node_modules/got/dist/source/core/utils/options-to-url.js b/client/node_modules/got/dist/source/core/utils/options-to-url.js
new file mode 100644
index 0000000..65be02f
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/options-to-url.js
@@ -0,0 +1,53 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/* istanbul ignore file: deprecated */
+const url_1 = require("url");
+const keys = [
+ 'protocol',
+ 'host',
+ 'hostname',
+ 'port',
+ 'pathname',
+ 'search'
+];
+exports.default = (origin, options) => {
+ var _a, _b;
+ if (options.path) {
+ if (options.pathname) {
+ throw new TypeError('Parameters `path` and `pathname` are mutually exclusive.');
+ }
+ if (options.search) {
+ throw new TypeError('Parameters `path` and `search` are mutually exclusive.');
+ }
+ if (options.searchParams) {
+ throw new TypeError('Parameters `path` and `searchParams` are mutually exclusive.');
+ }
+ }
+ if (options.search && options.searchParams) {
+ throw new TypeError('Parameters `search` and `searchParams` are mutually exclusive.');
+ }
+ if (!origin) {
+ if (!options.protocol) {
+ throw new TypeError('No URL protocol specified');
+ }
+ origin = `${options.protocol}//${(_b = (_a = options.hostname) !== null && _a !== void 0 ? _a : options.host) !== null && _b !== void 0 ? _b : ''}`;
+ }
+ const url = new url_1.URL(origin);
+ if (options.path) {
+ const searchIndex = options.path.indexOf('?');
+ if (searchIndex === -1) {
+ options.pathname = options.path;
+ }
+ else {
+ options.pathname = options.path.slice(0, searchIndex);
+ options.search = options.path.slice(searchIndex + 1);
+ }
+ delete options.path;
+ }
+ for (const key of keys) {
+ if (options[key]) {
+ url[key] = options[key].toString();
+ }
+ }
+ return url;
+};
diff --git a/client/node_modules/got/dist/source/core/utils/proxy-events.d.ts b/client/node_modules/got/dist/source/core/utils/proxy-events.d.ts
new file mode 100644
index 0000000..b244d82
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/proxy-events.d.ts
@@ -0,0 +1,3 @@
+/// <reference types="node" />
+import { EventEmitter } from 'events';
+export default function (from: EventEmitter, to: EventEmitter, events: string[]): () => void;
diff --git a/client/node_modules/got/dist/source/core/utils/proxy-events.js b/client/node_modules/got/dist/source/core/utils/proxy-events.js
new file mode 100644
index 0000000..4d47c53
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/proxy-events.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function default_1(from, to, events) {
+ const fns = {};
+ for (const event of events) {
+ fns[event] = (...args) => {
+ to.emit(event, ...args);
+ };
+ from.on(event, fns[event]);
+ }
+ return () => {
+ for (const event of events) {
+ from.off(event, fns[event]);
+ }
+ };
+}
+exports.default = default_1;
diff --git a/client/node_modules/got/dist/source/core/utils/timed-out.d.ts b/client/node_modules/got/dist/source/core/utils/timed-out.d.ts
new file mode 100644
index 0000000..5b495d4
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/timed-out.d.ts
@@ -0,0 +1,29 @@
+import { ClientRequest } from 'http';
+declare const reentry: unique symbol;
+interface TimedOutOptions {
+ host?: string;
+ hostname?: string;
+ protocol?: string;
+}
+export interface Delays {
+ lookup?: number;
+ connect?: number;
+ secureConnect?: number;
+ socket?: number;
+ response?: number;
+ send?: number;
+ request?: number;
+}
+export declare type ErrorCode = 'ETIMEDOUT' | 'ECONNRESET' | 'EADDRINUSE' | 'ECONNREFUSED' | 'EPIPE' | 'ENOTFOUND' | 'ENETUNREACH' | 'EAI_AGAIN';
+export declare class TimeoutError extends Error {
+ event: string;
+ code: ErrorCode;
+ constructor(threshold: number, event: string);
+}
+declare const _default: (request: ClientRequest, delays: Delays, options: TimedOutOptions) => () => void;
+export default _default;
+declare module 'http' {
+ interface ClientRequest {
+ [reentry]: boolean;
+ }
+}
diff --git a/client/node_modules/got/dist/source/core/utils/timed-out.js b/client/node_modules/got/dist/source/core/utils/timed-out.js
new file mode 100644
index 0000000..8877016
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/timed-out.js
@@ -0,0 +1,121 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TimeoutError = void 0;
+const net = require("net");
+const unhandle_1 = require("./unhandle");
+const reentry = Symbol('reentry');
+const noop = () => { };
+class TimeoutError extends Error {
+ constructor(threshold, event) {
+ super(`Timeout awaiting '${event}' for ${threshold}ms`);
+ this.event = event;
+ this.name = 'TimeoutError';
+ this.code = 'ETIMEDOUT';
+ }
+}
+exports.TimeoutError = TimeoutError;
+exports.default = (request, delays, options) => {
+ if (reentry in request) {
+ return noop;
+ }
+ request[reentry] = true;
+ const cancelers = [];
+ const { once, unhandleAll } = unhandle_1.default();
+ const addTimeout = (delay, callback, event) => {
+ var _a;
+ const timeout = setTimeout(callback, delay, delay, event);
+ (_a = timeout.unref) === null || _a === void 0 ? void 0 : _a.call(timeout);
+ const cancel = () => {
+ clearTimeout(timeout);
+ };
+ cancelers.push(cancel);
+ return cancel;
+ };
+ const { host, hostname } = options;
+ const timeoutHandler = (delay, event) => {
+ request.destroy(new TimeoutError(delay, event));
+ };
+ const cancelTimeouts = () => {
+ for (const cancel of cancelers) {
+ cancel();
+ }
+ unhandleAll();
+ };
+ request.once('error', error => {
+ cancelTimeouts();
+ // Save original behavior
+ /* istanbul ignore next */
+ if (request.listenerCount('error') === 0) {
+ throw error;
+ }
+ });
+ request.once('close', cancelTimeouts);
+ once(request, 'response', (response) => {
+ once(response, 'end', cancelTimeouts);
+ });
+ if (typeof delays.request !== 'undefined') {
+ addTimeout(delays.request, timeoutHandler, 'request');
+ }
+ if (typeof delays.socket !== 'undefined') {
+ const socketTimeoutHandler = () => {
+ timeoutHandler(delays.socket, 'socket');
+ };
+ request.setTimeout(delays.socket, socketTimeoutHandler);
+ // `request.setTimeout(0)` causes a memory leak.
+ // We can just remove the listener and forget about the timer - it's unreffed.
+ // See https://github.com/sindresorhus/got/issues/690
+ cancelers.push(() => {
+ request.removeListener('timeout', socketTimeoutHandler);
+ });
+ }
+ once(request, 'socket', (socket) => {
+ var _a;
+ const { socketPath } = request;
+ /* istanbul ignore next: hard to test */
+ if (socket.connecting) {
+ const hasPath = Boolean(socketPath !== null && socketPath !== void 0 ? socketPath : net.isIP((_a = hostname !== null && hostname !== void 0 ? hostname : host) !== null && _a !== void 0 ? _a : '') !== 0);
+ if (typeof delays.lookup !== 'undefined' && !hasPath && typeof socket.address().address === 'undefined') {
+ const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, 'lookup');
+ once(socket, 'lookup', cancelTimeout);
+ }
+ if (typeof delays.connect !== 'undefined') {
+ const timeConnect = () => addTimeout(delays.connect, timeoutHandler, 'connect');
+ if (hasPath) {
+ once(socket, 'connect', timeConnect());
+ }
+ else {
+ once(socket, 'lookup', (error) => {
+ if (error === null) {
+ once(socket, 'connect', timeConnect());
+ }
+ });
+ }
+ }
+ if (typeof delays.secureConnect !== 'undefined' && options.protocol === 'https:') {
+ once(socket, 'connect', () => {
+ const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, 'secureConnect');
+ once(socket, 'secureConnect', cancelTimeout);
+ });
+ }
+ }
+ if (typeof delays.send !== 'undefined') {
+ const timeRequest = () => addTimeout(delays.send, timeoutHandler, 'send');
+ /* istanbul ignore next: hard to test */
+ if (socket.connecting) {
+ once(socket, 'connect', () => {
+ once(request, 'upload-complete', timeRequest());
+ });
+ }
+ else {
+ once(request, 'upload-complete', timeRequest());
+ }
+ }
+ });
+ if (typeof delays.response !== 'undefined') {
+ once(request, 'upload-complete', () => {
+ const cancelTimeout = addTimeout(delays.response, timeoutHandler, 'response');
+ once(request, 'response', cancelTimeout);
+ });
+ }
+ return cancelTimeouts;
+};
diff --git a/client/node_modules/got/dist/source/core/utils/unhandle.d.ts b/client/node_modules/got/dist/source/core/utils/unhandle.d.ts
new file mode 100644
index 0000000..f49b792
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/unhandle.d.ts
@@ -0,0 +1,11 @@
+/// <reference types="node" />
+import { EventEmitter } from 'events';
+declare type Origin = EventEmitter;
+declare type Event = string | symbol;
+declare type Fn = (...args: any[]) => void;
+interface Unhandler {
+ once: (origin: Origin, event: Event, fn: Fn) => void;
+ unhandleAll: () => void;
+}
+declare const _default: () => Unhandler;
+export default _default;
diff --git a/client/node_modules/got/dist/source/core/utils/unhandle.js b/client/node_modules/got/dist/source/core/utils/unhandle.js
new file mode 100644
index 0000000..e749697
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/unhandle.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+// When attaching listeners, it's very easy to forget about them.
+// Especially if you do error handling and set timeouts.
+// So instead of checking if it's proper to throw an error on every timeout ever,
+// use this simple tool which will remove all listeners you have attached.
+exports.default = () => {
+ const handlers = [];
+ return {
+ once(origin, event, fn) {
+ origin.once(event, fn);
+ handlers.push({ origin, event, fn });
+ },
+ unhandleAll() {
+ for (const handler of handlers) {
+ const { origin, event, fn } = handler;
+ origin.removeListener(event, fn);
+ }
+ handlers.length = 0;
+ }
+ };
+};
diff --git a/client/node_modules/got/dist/source/core/utils/url-to-options.d.ts b/client/node_modules/got/dist/source/core/utils/url-to-options.d.ts
new file mode 100644
index 0000000..c977a0f
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/url-to-options.d.ts
@@ -0,0 +1,15 @@
+import { URL, UrlWithStringQuery } from 'url';
+export interface LegacyUrlOptions {
+ protocol: string;
+ hostname: string;
+ host: string;
+ hash: string | null;
+ search: string | null;
+ pathname: string;
+ href: string;
+ path: string;
+ port?: number;
+ auth?: string;
+}
+declare const _default: (url: URL | UrlWithStringQuery) => LegacyUrlOptions;
+export default _default;
diff --git a/client/node_modules/got/dist/source/core/utils/url-to-options.js b/client/node_modules/got/dist/source/core/utils/url-to-options.js
new file mode 100644
index 0000000..19cc487
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/url-to-options.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const is_1 = require("@sindresorhus/is");
+exports.default = (url) => {
+ // Cast to URL
+ url = url;
+ const options = {
+ protocol: url.protocol,
+ hostname: is_1.default.string(url.hostname) && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,
+ host: url.host,
+ hash: url.hash,
+ search: url.search,
+ pathname: url.pathname,
+ href: url.href,
+ path: `${url.pathname || ''}${url.search || ''}`
+ };
+ if (is_1.default.string(url.port) && url.port.length > 0) {
+ options.port = Number(url.port);
+ }
+ if (url.username || url.password) {
+ options.auth = `${url.username || ''}:${url.password || ''}`;
+ }
+ return options;
+};
diff --git a/client/node_modules/got/dist/source/core/utils/weakable-map.d.ts b/client/node_modules/got/dist/source/core/utils/weakable-map.d.ts
new file mode 100644
index 0000000..9e3466c
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/weakable-map.d.ts
@@ -0,0 +1,8 @@
+export default class WeakableMap<K, V> {
+ weakMap: WeakMap<Record<string, unknown>, V>;
+ map: Map<K, V>;
+ constructor();
+ set(key: K, value: V): void;
+ get(key: K): V | undefined;
+ has(key: K): boolean;
+}
diff --git a/client/node_modules/got/dist/source/core/utils/weakable-map.js b/client/node_modules/got/dist/source/core/utils/weakable-map.js
new file mode 100644
index 0000000..5c5da7f
--- /dev/null
+++ b/client/node_modules/got/dist/source/core/utils/weakable-map.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class WeakableMap {
+ constructor() {
+ this.weakMap = new WeakMap();
+ this.map = new Map();
+ }
+ set(key, value) {
+ if (typeof key === 'object') {
+ this.weakMap.set(key, value);
+ }
+ else {
+ this.map.set(key, value);
+ }
+ }
+ get(key) {
+ if (typeof key === 'object') {
+ return this.weakMap.get(key);
+ }
+ return this.map.get(key);
+ }
+ has(key) {
+ if (typeof key === 'object') {
+ return this.weakMap.has(key);
+ }
+ return this.map.has(key);
+ }
+}
+exports.default = WeakableMap;
diff --git a/client/node_modules/got/dist/source/create.d.ts b/client/node_modules/got/dist/source/create.d.ts
new file mode 100644
index 0000000..c8fd7ae
--- /dev/null
+++ b/client/node_modules/got/dist/source/create.d.ts
@@ -0,0 +1,5 @@
+import { Got, HandlerFunction, InstanceDefaults } from './types';
+export declare const defaultHandler: HandlerFunction;
+declare const create: (defaults: InstanceDefaults) => Got;
+export default create;
+export * from './types';
diff --git a/client/node_modules/got/dist/source/create.js b/client/node_modules/got/dist/source/create.js
new file mode 100644
index 0000000..bf56db4
--- /dev/null
+++ b/client/node_modules/got/dist/source/create.js
@@ -0,0 +1,240 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.defaultHandler = void 0;
+const is_1 = require("@sindresorhus/is");
+const as_promise_1 = require("./as-promise");
+const create_rejection_1 = require("./as-promise/create-rejection");
+const core_1 = require("./core");
+const deep_freeze_1 = require("./utils/deep-freeze");
+const errors = {
+ RequestError: as_promise_1.RequestError,
+ CacheError: as_promise_1.CacheError,
+ ReadError: as_promise_1.ReadError,
+ HTTPError: as_promise_1.HTTPError,
+ MaxRedirectsError: as_promise_1.MaxRedirectsError,
+ TimeoutError: as_promise_1.TimeoutError,
+ ParseError: as_promise_1.ParseError,
+ CancelError: as_promise_1.CancelError,
+ UnsupportedProtocolError: as_promise_1.UnsupportedProtocolError,
+ UploadError: as_promise_1.UploadError
+};
+// The `delay` package weighs 10KB (!)
+const delay = async (ms) => new Promise(resolve => {
+ setTimeout(resolve, ms);
+});
+const { normalizeArguments } = core_1.default;
+const mergeOptions = (...sources) => {
+ let mergedOptions;
+ for (const source of sources) {
+ mergedOptions = normalizeArguments(undefined, source, mergedOptions);
+ }
+ return mergedOptions;
+};
+const getPromiseOrStream = (options) => options.isStream ? new core_1.default(undefined, options) : as_promise_1.default(options);
+const isGotInstance = (value) => ('defaults' in value && 'options' in value.defaults);
+const aliases = [
+ 'get',
+ 'post',
+ 'put',
+ 'patch',
+ 'head',
+ 'delete'
+];
+exports.defaultHandler = (options, next) => next(options);
+const callInitHooks = (hooks, options) => {
+ if (hooks) {
+ for (const hook of hooks) {
+ hook(options);
+ }
+ }
+};
+const create = (defaults) => {
+ // Proxy properties from next handlers
+ defaults._rawHandlers = defaults.handlers;
+ defaults.handlers = defaults.handlers.map(fn => ((options, next) => {
+ // This will be assigned by assigning result
+ let root;
+ const result = fn(options, newOptions => {
+ root = next(newOptions);
+ return root;
+ });
+ if (result !== root && !options.isStream && root) {
+ const typedResult = result;
+ const { then: promiseThen, catch: promiseCatch, finally: promiseFianlly } = typedResult;
+ Object.setPrototypeOf(typedResult, Object.getPrototypeOf(root));
+ Object.defineProperties(typedResult, Object.getOwnPropertyDescriptors(root));
+ // These should point to the new promise
+ // eslint-disable-next-line promise/prefer-await-to-then
+ typedResult.then = promiseThen;
+ typedResult.catch = promiseCatch;
+ typedResult.finally = promiseFianlly;
+ }
+ return result;
+ }));
+ // Got interface
+ const got = ((url, options = {}, _defaults) => {
+ var _a, _b;
+ let iteration = 0;
+ const iterateHandlers = (newOptions) => {
+ return defaults.handlers[iteration++](newOptions, iteration === defaults.handlers.length ? getPromiseOrStream : iterateHandlers);
+ };
+ // TODO: Remove this in Got 12.
+ if (is_1.default.plainObject(url)) {
+ const mergedOptions = {
+ ...url,
+ ...options
+ };
+ core_1.setNonEnumerableProperties([url, options], mergedOptions);
+ options = mergedOptions;
+ url = undefined;
+ }
+ try {
+ // Call `init` hooks
+ let initHookError;
+ try {
+ callInitHooks(defaults.options.hooks.init, options);
+ callInitHooks((_a = options.hooks) === null || _a === void 0 ? void 0 : _a.init, options);
+ }
+ catch (error) {
+ initHookError = error;
+ }
+ // Normalize options & call handlers
+ const normalizedOptions = normalizeArguments(url, options, _defaults !== null && _defaults !== void 0 ? _defaults : defaults.options);
+ normalizedOptions[core_1.kIsNormalizedAlready] = true;
+ if (initHookError) {
+ throw new as_promise_1.RequestError(initHookError.message, initHookError, normalizedOptions);
+ }
+ return iterateHandlers(normalizedOptions);
+ }
+ catch (error) {
+ if (options.isStream) {
+ throw error;
+ }
+ else {
+ return create_rejection_1.default(error, defaults.options.hooks.beforeError, (_b = options.hooks) === null || _b === void 0 ? void 0 : _b.beforeError);
+ }
+ }
+ });
+ got.extend = (...instancesOrOptions) => {
+ const optionsArray = [defaults.options];
+ let handlers = [...defaults._rawHandlers];
+ let isMutableDefaults;
+ for (const value of instancesOrOptions) {
+ if (isGotInstance(value)) {
+ optionsArray.push(value.defaults.options);
+ handlers.push(...value.defaults._rawHandlers);
+ isMutableDefaults = value.defaults.mutableDefaults;
+ }
+ else {
+ optionsArray.push(value);
+ if ('handlers' in value) {
+ handlers.push(...value.handlers);
+ }
+ isMutableDefaults = value.mutableDefaults;
+ }
+ }
+ handlers = handlers.filter(handler => handler !== exports.defaultHandler);
+ if (handlers.length === 0) {
+ handlers.push(exports.defaultHandler);
+ }
+ return create({
+ options: mergeOptions(...optionsArray),
+ handlers,
+ mutableDefaults: Boolean(isMutableDefaults)
+ });
+ };
+ // Pagination
+ const paginateEach = (async function* (url, options) {
+ // TODO: Remove this `@ts-expect-error` when upgrading to TypeScript 4.
+ // Error: Argument of type 'Merge<Options, PaginationOptions<T, R>> | undefined' is not assignable to parameter of type 'Options | undefined'.
+ // @ts-expect-error
+ let normalizedOptions = normalizeArguments(url, options, defaults.options);
+ normalizedOptions.resolveBodyOnly = false;
+ const pagination = normalizedOptions.pagination;
+ if (!is_1.default.object(pagination)) {
+ throw new TypeError('`options.pagination` must be implemented');
+ }
+ const all = [];
+ let { countLimit } = pagination;
+ let numberOfRequests = 0;
+ while (numberOfRequests < pagination.requestLimit) {
+ if (numberOfRequests !== 0) {
+ // eslint-disable-next-line no-await-in-loop
+ await delay(pagination.backoff);
+ }
+ // @ts-expect-error FIXME!
+ // TODO: Throw when result is not an instance of Response
+ // eslint-disable-next-line no-await-in-loop
+ const result = (await got(undefined, undefined, normalizedOptions));
+ // eslint-disable-next-line no-await-in-loop
+ const parsed = await pagination.transform(result);
+ const current = [];
+ for (const item of parsed) {
+ if (pagination.filter(item, all, current)) {
+ if (!pagination.shouldContinue(item, all, current)) {
+ return;
+ }
+ yield item;
+ if (pagination.stackAllItems) {
+ all.push(item);
+ }
+ current.push(item);
+ if (--countLimit <= 0) {
+ return;
+ }
+ }
+ }
+ const optionsToMerge = pagination.paginate(result, all, current);
+ if (optionsToMerge === false) {
+ return;
+ }
+ if (optionsToMerge === result.request.options) {
+ normalizedOptions = result.request.options;
+ }
+ else if (optionsToMerge !== undefined) {
+ normalizedOptions = normalizeArguments(undefined, optionsToMerge, normalizedOptions);
+ }
+ numberOfRequests++;
+ }
+ });
+ got.paginate = paginateEach;
+ got.paginate.all = (async (url, options) => {
+ const results = [];
+ for await (const item of paginateEach(url, options)) {
+ results.push(item);
+ }
+ return results;
+ });
+ // For those who like very descriptive names
+ got.paginate.each = paginateEach;
+ // Stream API
+ got.stream = ((url, options) => got(url, { ...options, isStream: true }));
+ // Shortcuts
+ for (const method of aliases) {
+ got[method] = ((url, options) => got(url, { ...options, method }));
+ got.stream[method] = ((url, options) => {
+ return got(url, { ...options, method, isStream: true });
+ });
+ }
+ Object.assign(got, errors);
+ Object.defineProperty(got, 'defaults', {
+ value: defaults.mutableDefaults ? defaults : deep_freeze_1.default(defaults),
+ writable: defaults.mutableDefaults,
+ configurable: defaults.mutableDefaults,
+ enumerable: true
+ });
+ got.mergeOptions = mergeOptions;
+ return got;
+};
+exports.default = create;
+__exportStar(require("./types"), exports);
diff --git a/client/node_modules/got/dist/source/index.d.ts b/client/node_modules/got/dist/source/index.d.ts
new file mode 100644
index 0000000..e653895
--- /dev/null
+++ b/client/node_modules/got/dist/source/index.d.ts
@@ -0,0 +1,4 @@
+declare const got: import("./types").Got;
+export default got;
+export * from './create';
+export * from './as-promise';
diff --git a/client/node_modules/got/dist/source/index.js b/client/node_modules/got/dist/source/index.js
new file mode 100644
index 0000000..106b1f2
--- /dev/null
+++ b/client/node_modules/got/dist/source/index.js
@@ -0,0 +1,132 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const url_1 = require("url");
+const create_1 = require("./create");
+const defaults = {
+ options: {
+ method: 'GET',
+ retry: {
+ limit: 2,
+ methods: [
+ 'GET',
+ 'PUT',
+ 'HEAD',
+ 'DELETE',
+ 'OPTIONS',
+ 'TRACE'
+ ],
+ statusCodes: [
+ 408,
+ 413,
+ 429,
+ 500,
+ 502,
+ 503,
+ 504,
+ 521,
+ 522,
+ 524
+ ],
+ errorCodes: [
+ 'ETIMEDOUT',
+ 'ECONNRESET',
+ 'EADDRINUSE',
+ 'ECONNREFUSED',
+ 'EPIPE',
+ 'ENOTFOUND',
+ 'ENETUNREACH',
+ 'EAI_AGAIN'
+ ],
+ maxRetryAfter: undefined,
+ calculateDelay: ({ computedValue }) => computedValue
+ },
+ timeout: {},
+ headers: {
+ 'user-agent': 'got (https://github.com/sindresorhus/got)'
+ },
+ hooks: {
+ init: [],
+ beforeRequest: [],
+ beforeRedirect: [],
+ beforeRetry: [],
+ beforeError: [],
+ afterResponse: []
+ },
+ cache: undefined,
+ dnsCache: undefined,
+ decompress: true,
+ throwHttpErrors: true,
+ followRedirect: true,
+ isStream: false,
+ responseType: 'text',
+ resolveBodyOnly: false,
+ maxRedirects: 10,
+ prefixUrl: '',
+ methodRewriting: true,
+ ignoreInvalidCookies: false,
+ context: {},
+ // TODO: Set this to `true` when Got 12 gets released
+ http2: false,
+ allowGetBody: false,
+ https: undefined,
+ pagination: {
+ transform: (response) => {
+ if (response.request.options.responseType === 'json') {
+ return response.body;
+ }
+ return JSON.parse(response.body);
+ },
+ paginate: response => {
+ if (!Reflect.has(response.headers, 'link')) {
+ return false;
+ }
+ const items = response.headers.link.split(',');
+ let next;
+ for (const item of items) {
+ const parsed = item.split(';');
+ if (parsed[1].includes('next')) {
+ next = parsed[0].trimStart().trim();
+ next = next.slice(1, -1);
+ break;
+ }
+ }
+ if (next) {
+ const options = {
+ url: new url_1.URL(next)
+ };
+ return options;
+ }
+ return false;
+ },
+ filter: () => true,
+ shouldContinue: () => true,
+ countLimit: Infinity,
+ backoff: 0,
+ requestLimit: 10000,
+ stackAllItems: true
+ },
+ parseJson: (text) => JSON.parse(text),
+ stringifyJson: (object) => JSON.stringify(object),
+ cacheOptions: {}
+ },
+ handlers: [create_1.defaultHandler],
+ mutableDefaults: false
+};
+const got = create_1.default(defaults);
+exports.default = got;
+// For CommonJS default export support
+module.exports = got;
+module.exports.default = got;
+module.exports.__esModule = true; // Workaround for TS issue: https://github.com/sindresorhus/got/pull/1267
+__exportStar(require("./create"), exports);
+__exportStar(require("./as-promise"), exports);
diff --git a/client/node_modules/got/dist/source/types.d.ts b/client/node_modules/got/dist/source/types.d.ts
new file mode 100644
index 0000000..6c6b428
--- /dev/null
+++ b/client/node_modules/got/dist/source/types.d.ts
@@ -0,0 +1,344 @@
+/// <reference types="node" />
+import { URL } from 'url';
+import { CancelError } from 'p-cancelable';
+import { CancelableRequest, Response, Options, NormalizedOptions, Defaults as DefaultOptions, PaginationOptions, ParseError, RequestError, CacheError, ReadError, HTTPError, MaxRedirectsError, TimeoutError, UnsupportedProtocolError, UploadError } from './as-promise';
+import Request from './core';
+declare type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
+declare type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
+/**
+Defaults for each Got instance.
+*/
+export interface InstanceDefaults {
+ /**
+ An object containing the default options of Got.
+ */
+ options: DefaultOptions;
+ /**
+ An array of functions. You execute them directly by calling `got()`.
+ They are some sort of "global hooks" - these functions are called first.
+ The last handler (*it's hidden*) is either `asPromise` or `asStream`, depending on the `options.isStream` property.
+
+ @default []
+ */
+ handlers: HandlerFunction[];
+ /**
+ A read-only boolean describing whether the defaults are mutable or not.
+ If set to `true`, you can update headers over time, for example, update an access token when it expires.
+
+ @default false
+ */
+ mutableDefaults: boolean;
+ _rawHandlers?: HandlerFunction[];
+}
+/**
+A Request object returned by calling Got, or any of the Got HTTP alias request functions.
+*/
+export declare type GotReturn = Request | CancelableRequest;
+/**
+A function to handle options and returns a Request object.
+It acts sort of like a "global hook", and will be called before any actual request is made.
+*/
+export declare type HandlerFunction = <T extends GotReturn>(options: NormalizedOptions, next: (options: NormalizedOptions) => T) => T | Promise<T>;
+/**
+The options available for `got.extend()`.
+*/
+export interface ExtendOptions extends Options {
+ /**
+ An array of functions. You execute them directly by calling `got()`.
+ They are some sort of "global hooks" - these functions are called first.
+ The last handler (*it's hidden*) is either `asPromise` or `asStream`, depending on the `options.isStream` property.
+
+ @default []
+ */
+ handlers?: HandlerFunction[];
+ /**
+ A read-only boolean describing whether the defaults are mutable or not.
+ If set to `true`, you can update headers over time, for example, update an access token when it expires.
+
+ @default false
+ */
+ mutableDefaults?: boolean;
+}
+export declare type OptionsOfTextResponseBody = Merge<Options, {
+ isStream?: false;
+ resolveBodyOnly?: false;
+ responseType?: 'text';
+}>;
+export declare type OptionsOfJSONResponseBody = Merge<Options, {
+ isStream?: false;
+ resolveBodyOnly?: false;
+ responseType?: 'json';
+}>;
+export declare type OptionsOfBufferResponseBody = Merge<Options, {
+ isStream?: false;
+ resolveBodyOnly?: false;
+ responseType: 'buffer';
+}>;
+export declare type OptionsOfUnknownResponseBody = Merge<Options, {
+ isStream?: false;
+ resolveBodyOnly?: false;
+}>;
+export declare type StrictOptions = Except<Options, 'isStream' | 'responseType' | 'resolveBodyOnly'>;
+export declare type StreamOptions = Merge<Options, {
+ isStream?: true;
+}>;
+declare type ResponseBodyOnly = {
+ resolveBodyOnly: true;
+};
+export declare type OptionsWithPagination<T = unknown, R = unknown> = Merge<Options, PaginationOptions<T, R>>;
+/**
+An instance of `got.paginate`.
+*/
+export interface GotPaginate {
+ /**
+ Same as `GotPaginate.each`.
+ */
+ <T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
+ /**
+ Same as `GotPaginate.each`.
+ */
+ <T, R = unknown>(options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
+ /**
+ Returns an async iterator.
+
+ See pagination.options for more pagination options.
+
+ @example
+ ```
+ (async () => {
+ const countLimit = 10;
+
+ const pagination = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', {
+ pagination: {countLimit}
+ });
+
+ console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
+
+ for await (const commitData of pagination) {
+ console.log(commitData.commit.message);
+ }
+ })();
+ ```
+ */
+ each: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>);
+ /**
+ Returns a Promise for an array of all results.
+
+ See pagination.options for more pagination options.
+
+ @example
+ ```
+ (async () => {
+ const countLimit = 10;
+
+ const results = await got.paginate.all('https://api.github.com/repos/sindresorhus/got/commits', {
+ pagination: {countLimit}
+ });
+
+ console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
+ console.log(results);
+ })();
+ ```
+ */
+ all: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => Promise<T[]>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => Promise<T[]>);
+}
+export interface GotRequestFunction {
+ (url: string | URL, options?: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
+ <T>(url: string | URL, options?: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
+ (url: string | URL, options?: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
+ (url: string | URL, options?: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
+ (options: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
+ <T>(options: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
+ (options: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
+ (options: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
+ (url: string | URL, options?: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
+ <T>(url: string | URL, options?: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
+ (url: string | URL, options?: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
+ (options: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
+ <T>(options: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
+ (options: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
+ (url: string | URL, options?: Merge<Options, {
+ isStream: true;
+ }>): Request;
+ (options: Merge<Options, {
+ isStream: true;
+ }>): Request;
+ (url: string | URL, options?: Options): CancelableRequest | Request;
+ (options: Options): CancelableRequest | Request;
+}
+/**
+All available HTTP request methods provided by Got.
+*/
+export declare type HTTPAlias = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete';
+interface GotStreamFunction {
+ (url: string | URL, options?: Merge<Options, {
+ isStream?: true;
+ }>): Request;
+ (options?: Merge<Options, {
+ isStream?: true;
+ }>): Request;
+}
+/**
+An instance of `got.stream()`.
+*/
+export declare type GotStream = GotStreamFunction & Record<HTTPAlias, GotStreamFunction>;
+/**
+An instance of `got`.
+*/
+export interface Got extends Record<HTTPAlias, GotRequestFunction>, GotRequestFunction {
+ /**
+ Sets `options.isStream` to `true`.
+
+ Returns a [duplex stream](https://nodejs.org/api/stream.html#stream_class_stream_duplex) with additional events:
+ - request
+ - response
+ - redirect
+ - uploadProgress
+ - downloadProgress
+ - error
+ */
+ stream: GotStream;
+ /**
+ Returns an async iterator.
+
+ See pagination.options for more pagination options.
+
+ @example
+ ```
+ (async () => {
+ const countLimit = 10;
+
+ const pagination = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', {
+ pagination: {countLimit}
+ });
+
+ console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
+
+ for await (const commitData of pagination) {
+ console.log(commitData.commit.message);
+ }
+ })();
+ ```
+ */
+ paginate: GotPaginate;
+ /**
+ The Got defaults used in that instance.
+ */
+ defaults: InstanceDefaults;
+ /**
+ An error to be thrown when a cache method fails. For example, if the database goes down or there's a filesystem error.
+ Contains a `code` property with `ERR_CACHE_ACCESS` or a more specific failure code.
+ */
+ CacheError: typeof CacheError;
+ /**
+ An error to be thrown when a request fails. Contains a `code` property with error class code, like `ECONNREFUSED`.
+ If there is no specific code supplied, `code` defaults to `ERR_GOT_REQUEST_ERROR`.
+ */
+ RequestError: typeof RequestError;
+ /**
+ An error to be thrown when reading from response stream fails. Contains a `code` property with
+ `ERR_READING_RESPONSE_STREAM` or a more specific failure code.
+ */
+ ReadError: typeof ReadError;
+ /**
+ An error to be thrown when server response code is 2xx, and parsing body fails. Includes a
+ `response` property. Contains a `code` property with `ERR_BODY_PARSE_FAILURE` or a more specific failure code.
+ */
+ ParseError: typeof ParseError;
+ /**
+ An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
+ Includes a `response` property. Contains a `code` property with `ERR_NON_2XX_3XX_RESPONSE` or a more specific failure code.
+ */
+ HTTPError: typeof HTTPError;
+ /**
+ An error to be thrown when the server redirects you more than ten times.
+ Includes a `response` property. Contains a `code` property with `ERR_TOO_MANY_REDIRECTS`.
+ */
+ MaxRedirectsError: typeof MaxRedirectsError;
+ /**
+ An error to be thrown when given an unsupported protocol. Contains a `code` property with `ERR_UNSUPPORTED_PROTOCOL`.
+ */
+ UnsupportedProtocolError: typeof UnsupportedProtocolError;
+ /**
+ An error to be thrown when the request is aborted due to a timeout.
+ Includes an `event` and `timings` property. Contains a `code` property with `ETIMEDOUT`.
+ */
+ TimeoutError: typeof TimeoutError;
+ /**
+ An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
+ Contains a `code` property with `ERR_UPLOAD` or a more specific failure code.
+ */
+ UploadError: typeof UploadError;
+ /**
+ An error to be thrown when the request is aborted with `.cancel()`. Contains a `code` property with `ERR_CANCELED`.
+ */
+ CancelError: typeof CancelError;
+ /**
+ Configure a new `got` instance with default `options`.
+ The `options` are merged with the parent instance's `defaults.options` using `got.mergeOptions`.
+ You can access the resolved options with the `.defaults` property on the instance.
+
+ Additionally, `got.extend()` accepts two properties from the `defaults` object: `mutableDefaults` and `handlers`.
+
+ It is also possible to merges many instances into a single one:
+ - options are merged using `got.mergeOptions()` (including hooks),
+ - handlers are stored in an array (you can access them through `instance.defaults.handlers`).
+
+ @example
+ ```js
+ const client = got.extend({
+ prefixUrl: 'https://example.com',
+ headers: {
+ 'x-unicorn': 'rainbow'
+ }
+ });
+
+ client.get('demo');
+
+ // HTTP Request =>
+ // GET /demo HTTP/1.1
+ // Host: example.com
+ // x-unicorn: rainbow
+ ```
+ */
+ extend: (...instancesOrOptions: Array<Got | ExtendOptions>) => Got;
+ /**
+ Merges multiple `got` instances into the parent.
+ */
+ mergeInstances: (parent: Got, ...instances: Got[]) => Got;
+ /**
+ Extends parent options.
+ Avoid using [object spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals) as it doesn't work recursively.
+
+ Options are deeply merged to a new object. The value of each key is determined as follows:
+
+ - If the new property is not defined, the old value is used.
+ - If the new property is explicitly set to `undefined`:
+ - If the parent property is a plain `object`, the parent value is deeply cloned.
+ - Otherwise, `undefined` is used.
+ - If the parent value is an instance of `URLSearchParams`:
+ - If the new value is a `string`, an `object` or an instance of `URLSearchParams`, a new `URLSearchParams` instance is created.
+ The values are merged using [`urlSearchParams.append(key, value)`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/append).
+ The keys defined in the new value override the keys defined in the parent value.
+ - Otherwise, the only available value is `undefined`.
+ - If the new property is a plain `object`:
+ - If the parent property is a plain `object` too, both values are merged recursively into a new `object`.
+ - Otherwise, only the new value is deeply cloned.
+ - If the new property is an `Array`, it overwrites the old one with a deep clone of the new property.
+ - Properties that are not enumerable, such as `context`, `body`, `json`, and `form`, will not be merged.
+ - Otherwise, the new value is assigned to the key.
+
+ **Note:** Only Got options are merged! Custom user options should be defined via [`options.context`](#context).
+
+ @example
+ ```
+ const a = {headers: {cat: 'meow', wolf: ['bark', 'wrrr']}};
+ const b = {headers: {cow: 'moo', wolf: ['auuu']}};
+
+ {...a, ...b} // => {headers: {cow: 'moo', wolf: ['auuu']}}
+ got.mergeOptions(a, b) // => {headers: {cat: 'meow', cow: 'moo', wolf: ['auuu']}}
+ ```
+ */
+ mergeOptions: (...sources: Options[]) => NormalizedOptions;
+}
+export {};
diff --git a/client/node_modules/got/dist/source/types.js b/client/node_modules/got/dist/source/types.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/client/node_modules/got/dist/source/types.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/client/node_modules/got/dist/source/utils/deep-freeze.d.ts b/client/node_modules/got/dist/source/utils/deep-freeze.d.ts
new file mode 100644
index 0000000..7c33e5c
--- /dev/null
+++ b/client/node_modules/got/dist/source/utils/deep-freeze.d.ts
@@ -0,0 +1 @@
+export default function deepFreeze<T extends Record<string, any>>(object: T): Readonly<T>;
diff --git a/client/node_modules/got/dist/source/utils/deep-freeze.js b/client/node_modules/got/dist/source/utils/deep-freeze.js
new file mode 100644
index 0000000..a696d4e
--- /dev/null
+++ b/client/node_modules/got/dist/source/utils/deep-freeze.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const is_1 = require("@sindresorhus/is");
+function deepFreeze(object) {
+ for (const value of Object.values(object)) {
+ if (is_1.default.plainObject(value) || is_1.default.array(value)) {
+ deepFreeze(value);
+ }
+ }
+ return Object.freeze(object);
+}
+exports.default = deepFreeze;
diff --git a/client/node_modules/got/dist/source/utils/deprecation-warning.d.ts b/client/node_modules/got/dist/source/utils/deprecation-warning.d.ts
new file mode 100644
index 0000000..1a08f96
--- /dev/null
+++ b/client/node_modules/got/dist/source/utils/deprecation-warning.d.ts
@@ -0,0 +1,2 @@
+declare const _default: (message: string) => void;
+export default _default;
diff --git a/client/node_modules/got/dist/source/utils/deprecation-warning.js b/client/node_modules/got/dist/source/utils/deprecation-warning.js
new file mode 100644
index 0000000..3cfb7b2
--- /dev/null
+++ b/client/node_modules/got/dist/source/utils/deprecation-warning.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const alreadyWarned = new Set();
+exports.default = (message) => {
+ if (alreadyWarned.has(message)) {
+ return;
+ }
+ alreadyWarned.add(message);
+ // @ts-expect-error Missing types.
+ process.emitWarning(`Got: ${message}`, {
+ type: 'DeprecationWarning'
+ });
+};
diff --git a/client/node_modules/got/license b/client/node_modules/got/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/got/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/got/package.json b/client/node_modules/got/package.json
new file mode 100644
index 0000000..c1b8f4c
--- /dev/null
+++ b/client/node_modules/got/package.json
@@ -0,0 +1,131 @@
+{
+ "name": "got",
+ "version": "11.8.6",
+ "description": "Human-friendly and powerful HTTP request library for Node.js",
+ "license": "MIT",
+ "repository": "sindresorhus/got",
+ "funding": "https://github.com/sindresorhus/got?sponsor=1",
+ "main": "dist/source",
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "scripts": {
+ "test": "xo && npm run build && nyc --reporter=html --reporter=text ava",
+ "release": "np",
+ "build": "del-cli dist && tsc",
+ "prepare": "npm run build"
+ },
+ "files": [
+ "dist/source"
+ ],
+ "keywords": [
+ "http",
+ "https",
+ "http2",
+ "get",
+ "got",
+ "url",
+ "uri",
+ "request",
+ "simple",
+ "curl",
+ "wget",
+ "fetch",
+ "net",
+ "network",
+ "gzip",
+ "brotli",
+ "requests",
+ "human-friendly",
+ "axios",
+ "superagent",
+ "node-fetch",
+ "ky"
+ ],
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "devDependencies": {
+ "@ava/typescript": "^1.1.1",
+ "@sindresorhus/tsconfig": "^0.7.0",
+ "@sinonjs/fake-timers": "^6.0.1",
+ "@types/benchmark": "^1.0.33",
+ "@types/express": "^4.17.7",
+ "@types/express-serve-static-core": "4.17.18 - 4.17.30",
+ "@types/node": "^14.14.0",
+ "@types/node-fetch": "^2.5.7",
+ "@types/pem": "^1.9.5",
+ "@types/pify": "^3.0.2",
+ "@types/request": "^2.48.5",
+ "@types/sinon": "^9.0.5",
+ "@types/tough-cookie": "^4.0.0",
+ "ava": "^3.11.1",
+ "axios": "^0.20.0",
+ "benchmark": "^2.1.4",
+ "coveralls": "^3.1.0",
+ "create-test-server": "^3.0.1",
+ "del-cli": "^3.0.1",
+ "delay": "^4.4.0",
+ "express": "^4.17.1",
+ "form-data": "^3.0.0",
+ "get-stream": "^6.0.0",
+ "nock": "^13.0.4",
+ "node-fetch": "^2.6.0",
+ "np": "^6.4.0",
+ "nyc": "^15.1.0",
+ "p-event": "^4.2.0",
+ "pem": "^1.14.4",
+ "pify": "^5.0.0",
+ "sinon": "^9.0.3",
+ "slow-stream": "0.0.4",
+ "tempy": "^1.0.0",
+ "to-readable-stream": "^2.1.0",
+ "tough-cookie": "^4.0.0",
+ "typescript": "4.0.3",
+ "xo": "^0.34.1"
+ },
+ "types": "dist/source",
+ "sideEffects": false,
+ "ava": {
+ "files": [
+ "test/*"
+ ],
+ "timeout": "1m",
+ "typescript": {
+ "rewritePaths": {
+ "test/": "dist/test/"
+ }
+ }
+ },
+ "nyc": {
+ "extension": [
+ ".ts"
+ ],
+ "exclude": [
+ "**/test/**"
+ ]
+ },
+ "xo": {
+ "ignores": [
+ "documentation/examples/*"
+ ],
+ "rules": {
+ "@typescript-eslint/no-empty-function": "off",
+ "node/prefer-global/url": "off",
+ "node/prefer-global/url-search-params": "off",
+ "import/no-anonymous-default-export": "off",
+ "@typescript-eslint/no-implicit-any-catch": "off"
+ }
+ },
+ "runkitExampleFilename": "./documentation/examples/runkit-example.js"
+}
diff --git a/client/node_modules/got/readme.md b/client/node_modules/got/readme.md
new file mode 100644
index 0000000..858c536
--- /dev/null
+++ b/client/node_modules/got/readme.md
@@ -0,0 +1,2477 @@
+<div align="center">
+ <br>
+ <br>
+ <img width="360" src="media/logo.svg" alt="Got">
+ <br>
+ <br>
+ <br>
+ <p align="center">Huge thanks to <a href="https://moxy.studio"><img src="https://sindresorhus.com/assets/thanks/moxy-logo.svg" valign="middle" width="150"></a> for sponsoring Sindre Sorhus!
+ </p>
+ <p align="center"><sup>(they love Got too!)</sup></p>
+ <br>
+ <br>
+</div>
+
+> Human-friendly and powerful HTTP request library for Node.js
+
+[![Build Status: Linux](https://travis-ci.com/sindresorhus/got.svg?branch=master)](https://travis-ci.com/github/sindresorhus/got)
+[![Coverage Status](https://coveralls.io/repos/github/sindresorhus/got/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/got?branch=master)
+[![Downloads](https://img.shields.io/npm/dm/got.svg)](https://npmjs.com/got)
+[![Install size](https://packagephobia.now.sh/badge?p=got)](https://packagephobia.now.sh/result?p=got)
+
+[Moving from Request?](documentation/migration-guides.md) [*(Note that Request is unmaintained)*](https://github.com/request/request/issues/3142)
+
+[See how Got compares to other HTTP libraries](#comparison)
+
+For browser usage, we recommend [Ky](https://github.com/sindresorhus/ky) by the same people.
+
+## Highlights
+
+- [Promise API](#api)
+- [Stream API](#streams)
+- [Pagination API](#pagination)
+- [HTTP2 support](#http2)
+- [Request cancelation](#aborting-the-request)
+- [RFC compliant caching](#cache-adapters)
+- [Follows redirects](#followredirect)
+- [Retries on failure](#retry)
+- [Progress events](#onuploadprogress-progress)
+- [Handles gzip/deflate/brotli](#decompress)
+- [Timeout handling](#timeout)
+- [Errors with metadata](#errors)
+- [JSON mode](#json-mode)
+- [WHATWG URL support](#url)
+- [HTTPS API](#advanced-https-api)
+- [Hooks](#hooks)
+- [Instances with custom defaults](#instances)
+- [Types](#types)
+- [Composable](documentation/advanced-creation.md#merging-instances)
+- [Plugins](documentation/lets-make-a-plugin.md)
+- [Used by 4K+ packages and 1.8M+ repos](https://github.com/sindresorhus/got/network/dependents)
+- [Actively maintained](https://github.com/sindresorhus/got/graphs/contributors)
+- [Trusted by many companies](#widely-used)
+
+## Install
+
+```
+$ npm install got
+```
+
+## Usage
+
+###### Promise
+
+```js
+const got = require('got');
+
+(async () => {
+ try {
+ const response = await got('https://sindresorhus.com');
+ console.log(response.body);
+ //=> '<!doctype html> ...'
+ } catch (error) {
+ console.log(error.response.body);
+ //=> 'Internal server error ...'
+ }
+})();
+```
+
+###### JSON
+
+```js
+const got = require('got');
+
+(async () => {
+ const {body} = await got.post('https://httpbin.org/anything', {
+ json: {
+ hello: 'world'
+ },
+ responseType: 'json'
+ });
+
+ console.log(body.data);
+ //=> {hello: 'world'}
+})();
+```
+
+See [JSON mode](#json-mode) for more details.
+
+###### Streams
+
+```js
+const stream = require('stream');
+const {promisify} = require('util');
+const fs = require('fs');
+const got = require('got');
+
+const pipeline = promisify(stream.pipeline);
+
+(async () => {
+ await pipeline(
+ got.stream('https://sindresorhus.com'),
+ fs.createWriteStream('index.html')
+ );
+
+ // For POST, PUT, PATCH, and DELETE methods, `got.stream` returns a `stream.Writable`.
+ await pipeline(
+ fs.createReadStream('index.html'),
+ got.stream.post('https://sindresorhus.com')
+ );
+})();
+```
+
+**Tip:** `from.pipe(to)` doesn't forward errors. Instead, use [`stream.pipeline(from, ..., to, callback)`](https://nodejs.org/api/stream.html#stream_stream_pipeline_streams_callback).
+
+**Note:** While `got.post('https://example.com')` resolves, `got.stream.post('https://example.com')` will hang indefinitely until a body is provided. If there's no body on purpose, remember to `.end()` the stream or set the [`body`](#body) option to an empty string.
+
+### API
+
+It's a `GET` request by default, but can be changed by using different methods or via [`options.method`](#method).
+
+**By default, Got will retry on failure. To disable this option, set [`options.retry`](#retry) to `0`.**
+
+#### got(url?, options?)
+
+Returns a Promise giving a [Response object](#response) or a [Got Stream](#streams-1) if `options.isStream` is set to true.
+
+##### url
+
+Type: `string | object`
+
+The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
+
+Properties from `options` will override properties in the parsed `url`.
+
+If no protocol is specified, it will throw a `TypeError`.
+
+**Note:** The query string is **not** parsed as search params. Example:
+
+```js
+got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
+got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
+
+// The query string is overridden by `searchParams`
+got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
+```
+
+##### options
+
+Type: `object`
+
+Any of the [`https.request`](https://nodejs.org/api/https.html#https_https_request_options_callback) options.
+
+**Note:** Legacy URL support is disabled. `options.path` is supported only for backwards compatibility. Use `options.pathname` and `options.searchParams` instead. `options.auth` has been replaced with `options.username` & `options.password`.
+
+###### method
+
+Type: `string`\
+Default: `GET`
+
+The HTTP method used to make the request.
+
+###### prefixUrl
+
+Type: `string | URL`
+
+When specified, `prefixUrl` will be prepended to `url`. The prefix can be any valid URL, either relative or absolute.\
+A trailing slash `/` is optional - one will be added automatically.
+
+**Note:** `prefixUrl` will be ignored if the `url` argument is a URL instance.
+
+**Note:** Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion. For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`. The latter is used by browsers.
+
+**Tip:** Useful when used with [`got.extend()`](#custom-endpoints) to create niche-specific Got instances.
+
+**Tip:** You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`. If the URL doesn't include it anymore, it will throw.
+
+```js
+const got = require('got');
+
+(async () => {
+ await got('unicorn', {prefixUrl: 'https://cats.com'});
+ //=> 'https://cats.com/unicorn'
+
+ const instance = got.extend({
+ prefixUrl: 'https://google.com'
+ });
+
+ await instance('unicorn', {
+ hooks: {
+ beforeRequest: [
+ options => {
+ options.prefixUrl = 'https://cats.com';
+ }
+ ]
+ }
+ });
+ //=> 'https://cats.com/unicorn'
+})();
+```
+
+###### headers
+
+Type: `object`\
+Default: `{}`
+
+Request headers.
+
+Existing headers will be overwritten. Headers set to `undefined` will be omitted.
+
+###### isStream
+
+Type: `boolean`\
+Default: `false`
+
+Returns a `Stream` instead of a `Promise`. This is equivalent to calling `got.stream(url, options?)`.
+
+###### body
+
+Type: `string | Buffer | stream.Readable` or [`form-data` instance](https://github.com/form-data/form-data)
+
+**Note #1:** The `body` option cannot be used with the `json` or `form` option.
+
+**Note #2:** If you provide this option, `got.stream()` will be read-only.
+
+**Note #3:** If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
+
+**Note #4:** This option is not enumerable and will not be merged with the instance defaults.
+
+The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / `fs.createReadStream` instance / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
+
+###### json
+
+Type: `object | Array | number | string | boolean | null` *(JSON-serializable values)*
+
+**Note #1:** If you provide this option, `got.stream()` will be read-only.\
+**Note #2:** This option is not enumerable and will not be merged with the instance defaults.
+
+JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
+
+###### context
+
+Type: `object`
+
+User data. In contrast to other options, `context` is not enumerable.
+
+**Note:** The object is never merged, it's just passed through. Got will not modify the object in any way.
+
+It's very useful for storing auth tokens:
+
+```js
+const got = require('got');
+
+const instance = got.extend({
+ hooks: {
+ beforeRequest: [
+ options => {
+ if (!options.context || !options.context.token) {
+ throw new Error('Token required');
+ }
+
+ options.headers.token = options.context.token;
+ }
+ ]
+ }
+});
+
+(async () => {
+ const context = {
+ token: 'secret'
+ };
+
+ const response = await instance('https://httpbin.org/headers', {context});
+
+ // Let's see the headers
+ console.log(response.body);
+})();
+```
+
+###### responseType
+
+Type: `string`\
+Default: `'text'`
+
+**Note:** When using streams, this option is ignored.
+
+The parsing method. Can be `'text'`, `'json'` or `'buffer'`.
+
+The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.\
+It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
+
+Example:
+
+```js
+(async () => {
+ const responsePromise = got(url);
+ const bufferPromise = responsePromise.buffer();
+ const jsonPromise = responsePromise.json();
+
+ const [response, buffer, json] = await Promise.all([responsePromise, bufferPromise, jsonPromise]);
+ // `response` is an instance of Got Response
+ // `buffer` is an instance of Buffer
+ // `json` is an object
+})();
+```
+
+```js
+// This
+const body = await got(url).json();
+
+// is semantically the same as this
+const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
+```
+
+**Note:** `buffer` will return the raw body buffer. Modifying it will also alter the result of `promise.text()` and `promise.json()`. Before overwritting the buffer, please copy it first via `Buffer.from(buffer)`. See https://github.com/nodejs/node/issues/27080
+
+###### parseJson
+
+Type: `(text: string) => unknown`\
+Default: `(text: string) => JSON.parse(text)`
+
+A function used to parse JSON responses.
+
+<details>
+<summary>Example</summary>
+
+Using [`bourne`](https://github.com/hapijs/bourne) to prevent prototype pollution:
+
+```js
+const got = require('got');
+const Bourne = require('@hapi/bourne');
+
+(async () => {
+ const parsed = await got('https://example.com', {
+ parseJson: text => Bourne.parse(text)
+ }).json();
+
+ console.log(parsed);
+})();
+```
+</details>
+
+###### stringifyJson
+
+Type: `(object: unknown) => string`\
+Default: `(object: unknown) => JSON.stringify(object)`
+
+A function used to stringify the body of JSON requests.
+
+<details>
+<summary>Examples</summary>
+
+Ignore properties starting with `_`:
+
+```js
+const got = require('got');
+
+(async () => {
+ await got.post('https://example.com', {
+ stringifyJson: object => JSON.stringify(object, (key, value) => {
+ if (key.startsWith('_')) {
+ return;
+ }
+
+ return value;
+ }),
+ json: {
+ some: 'payload',
+ _ignoreMe: 1234
+ }
+ });
+})();
+```
+
+All numbers as strings:
+
+```js
+const got = require('got');
+
+(async () => {
+ await got.post('https://example.com', {
+ stringifyJson: object => JSON.stringify(object, (key, value) => {
+ if (typeof value === 'number') {
+ return value.toString();
+ }
+
+ return value;
+ }),
+ json: {
+ some: 'payload',
+ number: 1
+ }
+ });
+})();
+```
+</details>
+
+###### resolveBodyOnly
+
+Type: `boolean`\
+Default: `false`
+
+When set to `true` the promise will return the [Response body](#body-1) instead of the [Response](#response) object.
+
+###### cookieJar
+
+Type: `object` | [`tough.CookieJar` instance](https://github.com/salesforce/tough-cookie#cookiejar)
+
+**Note:** If you provide this option, `options.headers.cookie` will be overridden.
+
+Cookie support. You don't have to care about parsing or how to store them. [Example](#cookies).
+
+###### cookieJar.setCookie
+
+Type: `Function<Promise>`
+
+The function takes two arguments: `rawCookie` (`string`) and `url` (`string`).
+
+###### cookieJar.getCookieString
+
+Type: `Function<Promise>`
+
+The function takes one argument: `url` (`string`).
+
+###### ignoreInvalidCookies
+
+Type: `boolean`\
+Default: `false`
+
+Ignore invalid cookies instead of throwing an error. Only useful when the `cookieJar` option has been set. Not recommended.
+
+###### encoding
+
+Type: `string`\
+Default: `'utf8'`
+
+[Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
+
+To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set [`responseType`](#responseType) to `buffer` instead. Don't set this option to `null`.
+
+**Note:** This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
+
+###### form
+
+Type: `object`
+
+**Note #1:** If you provide this option, `got.stream()` will be read-only.\
+**Note #2:** This option is not enumerable and will not be merged with the instance defaults.
+
+The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
+
+If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
+
+###### searchParams
+
+Type: `string | object<string, string | number> | URLSearchParams`
+
+Query string that will be added to the request URL. This will override the query string in `url`.
+
+If you need to pass in an array, you can do it using a `URLSearchParams` instance:
+
+```js
+const got = require('got');
+
+const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
+
+got('https://example.com', {searchParams});
+
+console.log(searchParams.toString());
+//=> 'key=a&key=b'
+```
+
+There are some exceptions in regards to `URLSearchParams` behavior:
+
+**Note #1:** `null` values are not stringified, an empty string is used instead.
+
+**Note #2:** `undefined` values are not stringified, the entry is skipped instead.
+
+###### timeout
+
+Type: `number | object`
+
+Milliseconds to wait for the server to end the response before aborting the request with [`got.TimeoutError`](#gottimeouterror) error (a.k.a. `request` property). By default, there's no timeout.
+
+This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
+
+- `lookup` starts when a socket is assigned and ends when the hostname has been resolved. Does not apply when using a Unix domain socket.
+- `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
+- `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
+- `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
+- `response` starts when the request has been written to the socket and ends when the response headers are received.
+- `send` starts when the socket is connected and ends with the request has been written to the socket.
+- `request` starts when the request is initiated and ends when the response's end event fires.
+
+###### retry
+
+Type: `number | object`\
+Default:
+- limit: `2`
+- calculateDelay: `({attemptCount, retryOptions, error, computedValue}) => computedValue | Promise<computedValue>`
+- methods: `GET` `PUT` `HEAD` `DELETE` `OPTIONS` `TRACE`
+- statusCodes: [`408`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) [`413`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/413) [`429`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) [`500`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) [`502`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502) [`503`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503) [`504`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504) [`521`](https://support.cloudflare.com/hc/en-us/articles/115003011431#521error) [`522`](https://support.cloudflare.com/hc/en-us/articles/115003011431#522error) [`524`](https://support.cloudflare.com/hc/en-us/articles/115003011431#524error)
+- maxRetryAfter: `undefined`
+- errorCodes: `ETIMEDOUT` `ECONNRESET` `EADDRINUSE` `ECONNREFUSED` `EPIPE` `ENOTFOUND` `ENETUNREACH` `EAI_AGAIN`
+
+An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
+
+If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.\
+If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
+
+Delays between retries counts with function `1000 * Math.pow(2, retry - 1) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
+
+The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value. The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
+
+**Note:** The `calculateDelay` function is responsible for the entire cache mechanism, including the `limit` property. To support it, you need to check whether `computedValue` is different than `0`.
+
+By default, it retries *only* on the specified methods, status codes, and on these network errors:
+- `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
+- `ECONNRESET`: Connection was forcibly closed by a peer.
+- `EADDRINUSE`: Could not bind to any free port.
+- `ECONNREFUSED`: Connection was refused by the server.
+- `EPIPE`: The remote side of the stream being written has been closed.
+- `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
+- `ENETUNREACH`: No internet connection.
+- `EAI_AGAIN`: DNS lookup timed out.
+
+<a name="retry-stream"></a>
+
+You can retry Got streams too. The implementation looks like this:
+
+```js
+const got = require('got');
+const fs = require('fs');
+
+let writeStream;
+
+const fn = (retryCount = 0) => {
+ const stream = got.stream('https://example.com');
+ stream.retryCount = retryCount;
+
+ if (writeStream) {
+ writeStream.destroy();
+ }
+
+ writeStream = fs.createWriteStream('example.com');
+
+ stream.pipe(writeStream);
+
+ // If you don't attach the listener, it will NOT make a retry.
+ // It automatically checks the listener count so it knows whether to retry or not :)
+ stream.once('retry', fn);
+};
+
+fn();
+```
+
+###### followRedirect
+
+Type: `boolean`\
+Default: `true`
+
+Defines if redirect responses should be followed automatically.
+
+Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`. This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4).
+
+###### methodRewriting
+
+Type: `boolean`\
+Default: `true`
+
+By default, redirects will use [method rewriting](https://tools.ietf.org/html/rfc7231#section-6.4). For example, when sending a POST request and receiving a `302`, it will resend the body to the new location using the same HTTP method (`POST` in this case).
+
+###### allowGetBody
+
+Type: `boolean`\
+Default: `false`
+
+**Note:** The [RFC 7321](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore **it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)**.
+
+Set this to `true` to allow sending body for the `GET` method. However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect. This option is only meant to interact with non-compliant servers when you have no other choice.
+
+###### maxRedirects
+
+Type: `number`\
+Default: `10`
+
+If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
+
+###### decompress
+
+Type: `boolean`\
+Default: `true`
+
+Decompress the response automatically. This will set the `accept-encoding` header to `gzip, deflate, br` on Node.js 11.7.0+ or `gzip, deflate` for older Node.js versions, unless you set it yourself.
+
+Brotli (`br`) support requires Node.js 11.7.0 or later.
+
+If this is disabled, a compressed response is returned as a `Buffer`. This may be useful if you want to handle decompression yourself or stream the raw compressed data.
+
+###### cache
+
+Type: `object | false`\
+Default: `false`
+
+[Cache adapter instance](#cache-adapters) for storing cached response data.
+
+###### cacheOptions
+
+Type: `object | undefined`\
+Default: `{}`
+
+[Cache options](https://github.com/kornelski/http-cache-semantics#constructor-options) used for the specified request.
+
+###### dnsCache
+
+Type: `CacheableLookup | false`\
+Default: `false`
+
+An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups. Useful when making lots of requests to different *public* hostnames.
+
+**Note:** This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.\
+`CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
+
+###### dnsLookupIpVersion
+
+Type: `'auto' | 'ipv4' | 'ipv6'`\
+Default: `'auto'`
+
+Indicates which DNS record family to use.\
+Values:
+ - `auto`: IPv4 (if present) or IPv6
+ - `ipv4`: Only IPv4
+ - `ipv6`: Only IPv6
+
+Note: If you are using the undocumented option `family`, `dnsLookupIpVersion` will override it.
+
+```js
+// `api6.ipify.org` will be resolved as IPv4 and the request will be over IPv4 (the website will respond with your public IPv4)
+await got('https://api6.ipify.org', {
+ dnsLookupIpVersion: 'ipv4'
+});
+
+// `api6.ipify.org` will be resolved as IPv6 and the request will be over IPv6 (the website will respond with your public IPv6)
+await got('https://api6.ipify.org', {
+ dnsLookupIpVersion: 'ipv6'
+});
+```
+
+###### lookup
+
+Type: `Function`\
+Default: [`dns.lookup`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback)
+
+Custom DNS resolution logic.
+
+The function signature is the same as [`dns.lookup`](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback).
+
+###### request
+
+Type: `Function`\
+Default: `http.request | https.request` *(Depending on the protocol)*
+
+Custom request function. The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
+
+###### http2
+
+Type: `boolean`\
+Default: `false`
+
+If set to `true`, Got will additionally accept HTTP2 requests.\
+It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
+
+**Note:** Overriding `options.request` will disable HTTP2 support.
+
+**Note:** This option will default to `true` in the next upcoming major release.
+
+```js
+const got = require('got');
+
+(async () => {
+ const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
+ console.log(headers.via);
+ //=> '2 nghttpx'
+})();
+```
+
+###### throwHttpErrors
+
+Type: `boolean`\
+Default: `true`
+
+Determines if a [`got.HTTPError`](#gothttperror) is thrown for unsuccessful responses.
+
+If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing. This may be useful if you are checking for resource availability and are expecting error responses.
+
+###### agent
+
+Type: `object`
+
+An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance. This is necessary because a request to one protocol might redirect to another. In such a scenario, Got will switch over to the right protocol agent for you.
+
+If a key is not present, it will default to a global agent.
+
+```js
+const got = require('got');
+const HttpAgent = require('agentkeepalive');
+const {HttpsAgent} = HttpAgent;
+
+got('https://sindresorhus.com', {
+ agent: {
+ http: new HttpAgent(),
+ https: new HttpsAgent()
+ }
+});
+```
+
+###### hooks
+
+Type: `object<string, Function[]>`
+
+Hooks allow modifications during the request lifecycle. Hook functions may be async and are run serially.
+
+###### hooks.init
+
+Type: `Function[]`\
+Default: `[]`
+
+Called with plain [request options](#options), right before their normalization. This is especially useful in conjunction with [`got.extend()`](#instances) when the input needs custom handling.
+
+See the [Request migration guide](documentation/migration-guides.md#breaking-changes) for an example.
+
+**Note #1:** This hook must be synchronous!\
+**Note #2:** Errors in this hook will be converted into an instances of [`RequestError`](#gotrequesterror).\
+**Note #3:** The options object may not have a `url` property. To modify it, use a `beforeRequest` hook instead.
+
+###### hooks.beforeRequest
+
+Type: `Function[]`\
+Default: `[]`
+
+Called with [normalized](source/core/index.ts) [request options](#options). Got will make no further changes to the request before it is sent. This is especially useful in conjunction with [`got.extend()`](#instances) when you want to create an API client that, for example, uses HMAC-signing.
+
+**Note:** Changing `options.json` or `options.form` has no effect on the request, you should change `options.body` instead. If needed, update the `options.headers` accordingly. Example:
+
+```js
+const got = require('got');
+
+got.post({
+ json: {payload: 'old'},
+ hooks: {
+ beforeRequest: [
+ options => {
+ options.body = JSON.stringify({payload: 'new'});
+ options.headers['content-length'] = options.body.length.toString();
+ }
+ ]
+ }
+});
+```
+
+**Tip:** You can override the `request` function by returning a [`ClientRequest`-like](https://nodejs.org/api/http.html#http_class_http_clientrequest) instance or a [`IncomingMessage`-like](https://nodejs.org/api/http.html#http_class_http_incomingmessage) instance. This is very useful when creating a custom cache mechanism.
+
+###### hooks.beforeRedirect
+
+Type: `Function[]`\
+Default: `[]`
+
+Called with [normalized](source/core/index.ts) [request options](#options) and the redirect [response](#response). Got will make no further changes to the request. This is especially useful when you want to avoid dead sites. Example:
+
+```js
+const got = require('got');
+
+got('https://example.com', {
+ hooks: {
+ beforeRedirect: [
+ (options, response) => {
+ if (options.hostname === 'deadSite') {
+ options.hostname = 'fallbackSite';
+ }
+ }
+ ]
+ }
+});
+```
+
+###### hooks.beforeRetry
+
+Type: `Function[]`\
+Default: `[]`
+
+**Note:** When using streams, this hook is ignored.
+
+Called with [normalized](source/normalize-arguments.ts) [request options](#options), the error and the retry count. Got will make no further changes to the request. This is especially useful when some extra work is required before the next try. Example:
+
+```js
+const got = require('got');
+
+got.post('https://example.com', {
+ hooks: {
+ beforeRetry: [
+ (options, error, retryCount) => {
+ if (error.response.statusCode === 413) { // Payload too large
+ options.body = getNewBody();
+ }
+ }
+ ]
+ }
+});
+```
+
+**Note:** When retrying in a `afterResponse` hook, all remaining `beforeRetry` hooks will be called without the `error` and `retryCount` arguments.
+
+###### hooks.afterResponse
+
+Type: `Function[]`\
+Default: `[]`
+
+**Note:** When using streams, this hook is ignored.
+
+Called with [response object](#response) and a retry function. Calling the retry function will trigger `beforeRetry` hooks.
+
+Each function should return the response. This is especially useful when you want to refresh an access token. Example:
+
+```js
+const got = require('got');
+
+const instance = got.extend({
+ hooks: {
+ afterResponse: [
+ (response, retryWithMergedOptions) => {
+ if (response.statusCode === 401) { // Unauthorized
+ const updatedOptions = {
+ headers: {
+ token: getNewToken() // Refresh the access token
+ }
+ };
+
+ // Save for further requests
+ instance.defaults.options = got.mergeOptions(instance.defaults.options, updatedOptions);
+
+ // Make a new retry
+ return retryWithMergedOptions(updatedOptions);
+ }
+
+ // No changes otherwise
+ return response;
+ }
+ ],
+ beforeRetry: [
+ (options, error, retryCount) => {
+ // This will be called on `retryWithMergedOptions(...)`
+ }
+ ]
+ },
+ mutableDefaults: true
+});
+```
+
+###### hooks.beforeError
+
+Type: `Function[]`\
+Default: `[]`
+
+Called with an `Error` instance. The error is passed to the hook right before it's thrown. This is especially useful when you want to have more detailed errors.
+
+**Note:** Errors thrown while normalizing input options are thrown directly and not part of this hook.
+
+```js
+const got = require('got');
+
+got('https://api.github.com/some-endpoint', {
+ hooks: {
+ beforeError: [
+ error => {
+ const {response} = error;
+ if (response && response.body) {
+ error.name = 'GitHubError';
+ error.message = `${response.body.message} (${response.statusCode})`;
+ }
+
+ return error;
+ }
+ ]
+ }
+});
+```
+
+##### pagination
+
+Type: `object`
+
+**Note:** We're [looking for feedback](https://github.com/sindresorhus/got/issues/1052), any ideas on how to improve the API are welcome.
+
+###### pagination.transform
+
+Type: `Function`\
+Default: `response => JSON.parse(response.body)`
+
+A function that transform [`Response`](#response) into an array of items. This is where you should do the parsing.
+
+###### pagination.paginate
+
+Type: `Function`\
+Default: [`Link` header logic](source/index.ts)
+
+The function takes three arguments:
+- `response` - The current response object.
+- `allItems` - An array of the emitted items.
+- `currentItems` - Items from the current response.
+
+It should return an object representing Got options pointing to the next page. The options are merged automatically with the previous request, therefore the options returned `pagination.paginate(...)` must reflect changes only. If there are no more pages, `false` should be returned.
+
+For example, if you want to stop when the response contains less items than expected, you can use something like this:
+
+```js
+const got = require('got');
+
+(async () => {
+ const limit = 10;
+
+ const items = got.paginate('https://example.com/items', {
+ searchParams: {
+ limit,
+ offset: 0
+ },
+ pagination: {
+ paginate: (response, allItems, currentItems) => {
+ const previousSearchParams = response.request.options.searchParams;
+ const previousOffset = previousSearchParams.get('offset');
+
+ if (currentItems.length < limit) {
+ return false;
+ }
+
+ return {
+ searchParams: {
+ ...previousSearchParams,
+ offset: Number(previousOffset) + limit,
+ }
+ };
+ }
+ }
+ });
+
+ console.log('Items from all pages:', items);
+})();
+```
+
+###### pagination.filter
+
+Type: `Function`\
+Default: `(item, allItems, currentItems) => true`
+
+Checks whether the item should be emitted or not.
+
+###### pagination.shouldContinue
+
+Type: `Function`\
+Default: `(item, allItems, currentItems) => true`
+
+Checks whether the pagination should continue.
+
+For example, if you need to stop **before** emitting an entry with some flag, you should use `(item, allItems, currentItems) => !item.flag`. If you want to stop **after** emitting the entry, you should use `(item, allItems, currentItems) => allItems.some(entry => entry.flag)` instead.
+
+###### pagination.countLimit
+
+Type: `number`\
+Default: `Infinity`
+
+The maximum amount of items that should be emitted.
+
+###### pagination.backoff
+
+Type: `number`\
+Default: `0`
+
+Milliseconds to wait before the next request is triggered.
+
+###### pagination.requestLimit
+
+Type: `number`\
+Default: `10000`
+
+The maximum amount of request that should be triggered. [Retries on failure](#retry) are not counted towards this limit.
+
+For example, it can be helpful during development to avoid an infinite number of requests.
+
+###### pagination.stackAllItems
+
+Type: `boolean`\
+Default: `true`
+
+Defines how the parameter `allItems` in [pagination.paginate](#pagination.paginate), [pagination.filter](#pagination.filter) and [pagination.shouldContinue](#pagination.shouldContinue) is managed. When set to `false`, the parameter `allItems` is always an empty array.
+
+This option can be helpful to save on memory usage when working with a large dataset.
+
+##### localAddress
+
+Type: `string`
+
+The IP address used to send the request from.
+
+### Advanced HTTPS API
+
+Note: If the request is not HTTPS, these options will be ignored.
+
+##### https.certificateAuthority
+
+Type: `string | Buffer | Array<string | Buffer>`
+
+Override the default Certificate Authorities ([from Mozilla](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport))
+
+```js
+// Single Certificate Authority
+got('https://example.com', {
+ https: {
+ certificateAuthority: fs.readFileSync('./my_ca.pem')
+ }
+});
+```
+
+##### https.key
+
+Type: `string | Buffer | Array<string | Buffer> | object[]`
+
+Private keys in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.\
+[PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) allows the option of private keys being encrypted. Encrypted keys will be decrypted with `options.https.passphrase`.\
+Multiple keys with different passphrases can be provided as an array of `{pem: <string | Buffer>, passphrase: <string>}`
+
+##### https.certificate
+
+Type: `string | Buffer | (string | Buffer)[]`
+
+[Certificate chains](https://en.wikipedia.org/wiki/X.509#Certificate_chains_and_cross-certification) in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.\
+One cert chain should be provided per private key (`options.https.key`).\
+When providing multiple cert chains, they do not have to be in the same order as their private keys in `options.https.key`.\
+If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.
+
+##### https.passphrase
+
+Type: `string`
+
+The passphrase to decrypt the `options.https.key` (if different keys have different passphrases refer to `options.https.key` documentation).
+
+##### https.pfx
+
+Type: `string | Buffer | Array<string | Buffer | object>`
+
+[PFX or PKCS12](https://en.wikipedia.org/wiki/PKCS_12) encoded private key and certificate chain. Using `options.https.pfx` is an alternative to providing `options.https.key` and `options.https.certificate` individually. A PFX is usually encrypted, and if it is, `options.https.passphrase` will be used to decrypt it.
+
+Multiple PFX's can be be provided as an array of unencrypted buffers or an array of objects like:
+
+```ts
+{
+ buffer: string | Buffer,
+ passphrase?: string
+}
+```
+
+This object form can only occur in an array. If the provided buffers are encrypted, `object.passphrase` can be used to decrypt them. If `object.passphrase` is not provided, `options.https.passphrase` will be used for decryption.
+
+##### Examples for `https.key`, `https.certificate`, `https.passphrase`, and `https.pfx`
+
+```js
+// Single key with certificate
+got('https://example.com', {
+ https: {
+ key: fs.readFileSync('./client_key.pem'),
+ certificate: fs.readFileSync('./client_cert.pem')
+ }
+});
+
+// Multiple keys with certificates (out of order)
+got('https://example.com', {
+ https: {
+ key: [
+ fs.readFileSync('./client_key1.pem'),
+ fs.readFileSync('./client_key2.pem')
+ ],
+ certificate: [
+ fs.readFileSync('./client_cert2.pem'),
+ fs.readFileSync('./client_cert1.pem')
+ ]
+ }
+});
+
+// Single key with passphrase
+got('https://example.com', {
+ https: {
+ key: fs.readFileSync('./client_key.pem'),
+ certificate: fs.readFileSync('./client_cert.pem'),
+ passphrase: 'client_key_passphrase'
+ }
+});
+
+// Multiple keys with different passphrases
+got('https://example.com', {
+ https: {
+ key: [
+ {pem: fs.readFileSync('./client_key1.pem'), passphrase: 'passphrase1'},
+ {pem: fs.readFileSync('./client_key2.pem'), passphrase: 'passphrase2'},
+ ],
+ certificate: [
+ fs.readFileSync('./client_cert1.pem'),
+ fs.readFileSync('./client_cert2.pem')
+ ]
+ }
+});
+
+// Single encrypted PFX with passphrase
+got('https://example.com', {
+ https: {
+ pfx: fs.readFileSync('./fake.pfx'),
+ passphrase: 'passphrase'
+ }
+});
+
+// Multiple encrypted PFX's with different passphrases
+got('https://example.com', {
+ https: {
+ pfx: [
+ {
+ buffer: fs.readFileSync('./key1.pfx'),
+ passphrase: 'passphrase1'
+ },
+ {
+ buffer: fs.readFileSync('./key2.pfx'),
+ passphrase: 'passphrase2'
+ }
+ ]
+ }
+});
+
+// Multiple encrypted PFX's with single passphrase
+got('https://example.com', {
+ https: {
+ passphrase: 'passphrase',
+ pfx: [
+ {
+ buffer: fs.readFileSync('./key1.pfx')
+ },
+ {
+ buffer: fs.readFileSync('./key2.pfx')
+ }
+ ]
+ }
+});
+```
+
+##### https.rejectUnauthorized
+
+Type: `boolean`\
+Default: `true`
+
+If set to `false`, all invalid SSL certificates will be ignored and no error will be thrown.\
+If set to `true`, it will throw an error whenever an invalid SSL certificate is detected.
+
+We strongly recommend to have this set to `true` for security reasons.
+
+```js
+const got = require('got');
+
+(async () => {
+ // Correct:
+ await got('https://example.com', {
+ https: {
+ rejectUnauthorized: true
+ }
+ });
+
+ // You can disable it when developing an HTTPS app:
+ await got('https://localhost', {
+ https: {
+ rejectUnauthorized: false
+ }
+ });
+
+ // Never do this:
+ await got('https://example.com', {
+ https: {
+ rejectUnauthorized: false
+ }
+ });
+```
+
+##### https.checkServerIdentity
+
+Type: `Function`\
+Signature: `(hostname: string, certificate: DetailedPeerCertificate) => Error | undefined`\
+Default: `tls.checkServerIdentity` (from the `tls` module)
+
+This function enable a custom check of the certificate.\
+Note: In order to have the function called the certificate must not be `expired`, `self-signed` or with an `untrusted-root`.\
+The function parameters are:
+- `hostname`: The server hostname (used when connecting)
+- `certificate`: The server certificate
+
+The function must return `undefined` if the check succeeded or an `Error` if it failed.
+
+```js
+await got('https://example.com', {
+ https: {
+ checkServerIdentity: (hostname, certificate) => {
+ if (hostname === 'example.com') {
+ return; // Certificate OK
+ }
+
+ return new Error('Invalid Hostname'); // Certificate NOT OK
+ }
+ }
+});
+```
+
+#### Response
+
+The response object will typically be a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage), however, if returned from the cache it will be a [response-like object](https://github.com/lukechilds/responselike) which behaves in the same way.
+
+##### request
+
+Type: `object`
+
+**Note:** This is not a [http.ClientRequest](https://nodejs.org/api/http.html#http_class_http_clientrequest).
+
+- `options` - The Got options that were set on this request.
+
+##### body
+
+Type: `string | object | Buffer` *(Depending on `options.responseType`)*
+
+The result of the request.
+
+##### rawBody
+
+Type: `Buffer`
+
+The raw result of the request.
+
+##### url
+
+Type: `string`
+
+The request URL or the final URL after redirects.
+
+##### ip
+
+Type: `string`
+
+The remote IP address.
+
+**Note:** Not available when the response is cached. This is hopefully a temporary limitation, see [lukechilds/cacheable-request#86](https://github.com/lukechilds/cacheable-request/issues/86).
+
+##### requestUrl
+
+Type: `string`
+
+The original request URL.
+
+##### timings
+
+Type: `object`
+
+The object contains the following properties:
+
+- `start` - Time when the request started.
+- `socket` - Time when a socket was assigned to the request.
+- `lookup` - Time when the DNS lookup finished.
+- `connect` - Time when the socket successfully connected.
+- `secureConnect` - Time when the socket securely connected.
+- `upload` - Time when the request finished uploading.
+- `response` - Time when the request fired `response` event.
+- `end` - Time when the response fired `end` event.
+- `error` - Time when the request fired `error` event.
+- `abort` - Time when the request fired `abort` event.
+- `phases`
+ - `wait` - `timings.socket - timings.start`
+ - `dns` - `timings.lookup - timings.socket`
+ - `tcp` - `timings.connect - timings.lookup`
+ - `tls` - `timings.secureConnect - timings.connect`
+ - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
+ - `firstByte` - `timings.response - timings.upload`
+ - `download` - `timings.end - timings.response`
+ - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
+
+If something has not been measured yet, it will be `undefined`.
+
+**Note:** The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
+
+##### isFromCache
+
+Type: `boolean`
+
+Whether the response was retrieved from the cache.
+
+##### redirectUrls
+
+Type: `string[]`
+
+The redirect URLs.
+
+##### retryCount
+
+Type: `number`
+
+The number of times the request was retried.
+
+#### Streams
+
+**Note:** Progress events, redirect events and request/response events can also be used with promises.
+
+**Note:** To access `response.isFromCache` you need to use `got.stream(url, options).isFromCache`. The value will be undefined until the `response` event.
+
+#### got.stream(url, options?)
+
+Sets `options.isStream` to `true`.
+
+Returns a [duplex stream](https://nodejs.org/api/stream.html#stream_class_stream_duplex) with additional events:
+
+##### .on('request', request)
+
+`request` event to get the request object of the request.
+
+**Tip:** You can use `request` event to abort request:
+
+```js
+got.stream('https://github.com')
+ .on('request', request => setTimeout(() => request.destroy(), 50));
+```
+
+##### .on('response', response)
+
+The `response` event to get the response object of the final request.
+
+##### .on('redirect', response, nextOptions)
+
+The `redirect` event to get the response object of a redirect. The second argument is options for the next request to the redirect location.
+
+##### .on('uploadProgress', progress)
+##### .uploadProgress
+##### .on('downloadProgress', progress)
+##### .downloadProgress
+
+Progress events for uploading (sending a request) and downloading (receiving a response). The `progress` argument is an object like:
+
+```js
+{
+ percent: 0.1,
+ transferred: 1024,
+ total: 10240
+}
+```
+
+If the `content-length` header is missing, `total` will be `undefined`.
+
+```js
+(async () => {
+ const response = await got('https://sindresorhus.com')
+ .on('downloadProgress', progress => {
+ // Report download progress
+ })
+ .on('uploadProgress', progress => {
+ // Report upload progress
+ });
+
+ console.log(response);
+})();
+```
+
+##### .once('retry', retryCount, error)
+
+To enable retrying on a Got stream, it is required to have a `retry` handler attached.\
+When this event is emitted, you should reset the stream you were writing to and prepare the body again.
+
+See the [`retry`](#retry-stream) option for an example implementation.
+
+##### .ip
+
+Type: `string`
+
+The remote IP address.
+
+##### .aborted
+
+Type: `boolean`
+
+Indicates whether the request has been aborted or not.
+
+##### .timings
+
+The same as `response.timings`.
+
+##### .isFromCache
+
+The same as `response.isFromCache`.
+
+##### .socket
+
+The same as `response.socket`.
+
+##### .on('error', error)
+
+The emitted `error` is an instance of [`RequestError`](#gotrequesterror).
+
+#### Pagination
+
+#### got.paginate(url, options?)
+#### got.paginate.each(url, options?)
+
+Returns an async iterator:
+
+```js
+(async () => {
+ const countLimit = 10;
+
+ const pagination = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', {
+ pagination: {countLimit}
+ });
+
+ console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
+
+ for await (const commitData of pagination) {
+ console.log(commitData.commit.message);
+ }
+})();
+```
+
+See [`options.pagination`](#pagination) for more pagination options.
+
+#### got.paginate.all(url, options?)
+
+Returns a Promise for an array of all results:
+
+```js
+(async () => {
+ const countLimit = 10;
+
+ const results = await got.paginate.all('https://api.github.com/repos/sindresorhus/got/commits', {
+ pagination: {countLimit}
+ });
+
+ console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
+ console.log(results);
+})();
+```
+
+See [`options.pagination`](#pagination) for more pagination options.
+
+#### got.get(url, options?)
+#### got.post(url, options?)
+#### got.put(url, options?)
+#### got.patch(url, options?)
+#### got.head(url, options?)
+#### got.delete(url, options?)
+
+Sets [`options.method`](#method) to the method name and makes a request.
+
+### Instances
+
+#### got.extend(...options)
+
+Configure a new `got` instance with default `options`. The `options` are merged with the parent instance's `defaults.options` using [`got.mergeOptions`](#gotmergeoptionsparentoptions-newoptions). You can access the resolved options with the `.defaults` property on the instance.
+
+```js
+const client = got.extend({
+ prefixUrl: 'https://example.com',
+ headers: {
+ 'x-unicorn': 'rainbow'
+ }
+});
+
+client.get('demo');
+
+/* HTTP Request =>
+ * GET /demo HTTP/1.1
+ * Host: example.com
+ * x-unicorn: rainbow
+ */
+```
+
+```js
+(async () => {
+ const client = got.extend({
+ prefixUrl: 'httpbin.org',
+ headers: {
+ 'x-foo': 'bar'
+ }
+ });
+ const {headers} = await client.get('headers').json();
+ //=> headers['x-foo'] === 'bar'
+
+ const jsonClient = client.extend({
+ responseType: 'json',
+ resolveBodyOnly: true,
+ headers: {
+ 'x-baz': 'qux'
+ }
+ });
+ const {headers: headers2} = await jsonClient.get('headers');
+ //=> headers2['x-foo'] === 'bar'
+ //=> headers2['x-baz'] === 'qux'
+})();
+```
+
+Additionally, `got.extend()` accepts two properties from the `defaults` object: `mutableDefaults` and `handlers`. Example:
+
+```js
+// You can now modify `mutableGot.defaults.options`.
+const mutableGot = got.extend({mutableDefaults: true});
+
+const mergedHandlers = got.extend({
+ handlers: [
+ (options, next) => {
+ delete options.headers.referer;
+
+ return next(options);
+ }
+ ]
+});
+```
+
+**Note:** Handlers can be asynchronous. The recommended approach is:
+
+```js
+const handler = (options, next) => {
+ if (options.isStream) {
+ // It's a Stream
+ return next(options);
+ }
+
+ // It's a Promise
+ return (async () => {
+ try {
+ const response = await next(options);
+ response.yourOwnProperty = true;
+ return response;
+ } catch (error) {
+ // Every error will be replaced by this one.
+ // Before you receive any error here,
+ // it will be passed to the `beforeError` hooks first.
+ // Note: this one won't be passed to `beforeError` hook. It's final.
+ throw new Error('Your very own error.');
+ }
+ })();
+};
+
+const instance = got.extend({handlers: [handler]});
+```
+
+#### got.extend(...options, ...instances, ...)
+
+Merges many instances into a single one:
+- options are merged using [`got.mergeOptions()`](#gotmergeoptionsparentoptions-newoptions) (including hooks),
+- handlers are stored in an array (you can access them through `instance.defaults.handlers`).
+
+```js
+const a = {headers: {cat: 'meow'}};
+const b = got.extend({
+ options: {
+ headers: {
+ cow: 'moo'
+ }
+ }
+});
+
+// The same as `got.extend(a).extend(b)`.
+// Note `a` is options and `b` is an instance.
+got.extend(a, b);
+//=> {headers: {cat: 'meow', cow: 'moo'}}
+```
+
+#### got.mergeOptions(parent, ...sources)
+
+Extends parent options. Avoid using [object spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals) as it doesn't work recursively:
+
+```js
+const a = {headers: {cat: 'meow', wolf: ['bark', 'wrrr']}};
+const b = {headers: {cow: 'moo', wolf: ['auuu']}};
+
+{...a, ...b} // => {headers: {cow: 'moo', wolf: ['auuu']}}
+got.mergeOptions(a, b) // => {headers: {cat: 'meow', cow: 'moo', wolf: ['auuu']}}
+```
+
+**Note:** Only Got options are merged! Custom user options should be defined via [`options.context`](#context).
+
+Options are deeply merged to a new object. The value of each key is determined as follows:
+
+- If the new property is not defined, the old value is used.
+- If the new property is explicitly set to `undefined`:
+ - If the parent property is a plain `object`, the parent value is deeply cloned.
+ - Otherwise, `undefined` is used.
+- If the parent value is an instance of `URLSearchParams`:
+ - If the new value is a `string`, an `object` or an instance of `URLSearchParams`, a new `URLSearchParams` instance is created. The values are merged using [`urlSearchParams.append(key, value)`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/append). The keys defined in the new value override the keys defined in the parent value. Please note that `null` values point to an empty string and `undefined` values will exclude the entry.
+ - Otherwise, the only available value is `undefined`.
+- If the new property is a plain `object`:
+ - If the parent property is a plain `object` too, both values are merged recursively into a new `object`.
+ - Otherwise, only the new value is deeply cloned.
+- If the new property is an `Array`, it overwrites the old one with a deep clone of the new property.
+- Properties that are not enumerable, such as `context`, `body`, `json`, and `form`, will not be merged.
+- Otherwise, the new value is assigned to the key.
+
+```js
+const a = {json: {cat: 'meow'}};
+const b = {json: {cow: 'moo'}};
+
+got.mergeOptions(a, b);
+//=> {json: {cow: 'moo'}}
+```
+
+#### got.defaults
+
+Type: `object`
+
+The Got defaults used in that instance.
+
+##### [options](#options)
+
+##### handlers
+
+Type: `Function[]`\
+Default: `[]`
+
+An array of functions. You execute them directly by calling `got()`. They are some sort of "global hooks" - these functions are called first. The last handler (*it's hidden*) is either [`asPromise`](source/core/as-promise/index.ts) or [`asStream`](source/core/index.ts), depending on the `options.isStream` property.
+
+Each handler takes two arguments:
+
+###### [options](#options)
+
+###### next()
+
+Returns a `Promise` or a `Stream` depending on [`options.isStream`](#isstream).
+
+```js
+const settings = {
+ handlers: [
+ (options, next) => {
+ if (options.isStream) {
+ // It's a Stream, so we can perform stream-specific actions on it
+ return next(options)
+ .on('request', request => {
+ setTimeout(() => {
+ request.abort();
+ }, 50);
+ });
+ }
+
+ // It's a Promise
+ return next(options);
+ }
+ ],
+ options: got.mergeOptions(got.defaults.options, {
+ responseType: 'json'
+ })
+};
+
+const jsonGot = got.extend(settings);
+```
+
+##### mutableDefaults
+
+Type: `boolean`\
+Default: `false`
+
+A read-only boolean describing whether the defaults are mutable or not. If set to `true`, you can [update headers over time](#hooksafterresponse), for example, update an access token when it expires.
+
+## Types
+
+Got exports some handy TypeScript types and interfaces. See the type definition for all the exported types.
+
+### Got
+
+TypeScript will automatically infer types for Got instances, but in case you want to define something like dependencies, you can import the available types directly from Got.
+
+```ts
+import {GotRequestFunction} from 'got';
+
+interface Dependencies {
+ readonly post: GotRequestFunction
+}
+```
+
+### Hooks
+
+When writing hooks, you can refer to their types to keep your interfaces consistent.
+
+```ts
+import {BeforeRequestHook} from 'got';
+
+const addAccessToken = (accessToken: string): BeforeRequestHook => options => {
+ options.path = `${options.path}?access_token=${accessToken}`;
+}
+```
+
+## Errors
+
+Each error contains an `options` property which are the options Got used to create a request - just to make debugging easier.\
+Additionaly, the errors may have `request` (Got Stream) and `response` (Got Response) properties depending on which phase of the request failed.
+
+#### got.RequestError
+
+When a request fails. Contains a `code` property with error class code, like `ECONNREFUSED`. If there is no specific code supplied, `code` defaults to `ERR_GOT_REQUEST_ERROR`. All the errors below inherit this one.
+
+#### got.CacheError
+
+When a cache method fails, for example, if the database goes down or there's a filesystem error. Contains a `code` property with `ERR_CACHE_ACCESS` or a more specific failure code.
+
+#### got.ReadError
+
+When reading from response stream fails. Contains a `code` property with `ERR_READING_RESPONSE_STREAM` or a more specific failure code.
+
+#### got.ParseError
+
+When server response code is 2xx, and parsing body fails. Includes a `response` property. Contains a `code` property with `ERR_BODY_PARSE_FAILURE` or a more specific failure code.
+
+#### got.UploadError
+
+When the request body is a stream and an error occurs while reading from that stream. Contains a `code` property with `ERR_UPLOAD` or a more specific failure code.
+
+#### got.HTTPError
+
+When the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304. Includes a `response` property. Contains a `code` property with `ERR_NON_2XX_3XX_RESPONSE` or a more specific failure code.
+
+
+#### got.MaxRedirectsError
+
+When the server redirects you more than ten times. Includes a `response` property. Contains a `code` property with `ERR_TOO_MANY_REDIRECTS`.
+
+#### got.UnsupportedProtocolError
+
+When given an unsupported protocol. Contains a `code` property with `ERR_UNSUPPORTED_PROTOCOL`.
+
+#### got.TimeoutError
+
+When the request is aborted due to a [timeout](#timeout). Includes an `event` and `timings` property. Contains a `code` property with `ETIMEDOUT`.
+
+#### got.CancelError
+
+When the request is aborted with `.cancel()`. Contains a `code` property with `ERR_CANCELED`.
+
+## Aborting the request
+
+The promise returned by Got has a [`.cancel()`](https://github.com/sindresorhus/p-cancelable) method which when called, aborts the request.
+
+```js
+(async () => {
+ const request = got(url, options);
+
+ // …
+
+ // In another part of the code
+ if (something) {
+ request.cancel();
+ }
+
+ // …
+
+ try {
+ await request;
+ } catch (error) {
+ if (request.isCanceled) { // Or `error instanceof got.CancelError`
+ // Handle cancelation
+ }
+
+ // Handle other errors
+ }
+})();
+```
+
+When using hooks, simply throw an error to abort the request.
+
+```js
+const got = require('got');
+
+(async () => {
+ const request = got(url, {
+ hooks: {
+ beforeRequest: [
+ () => {
+ throw new Error('Oops. Request canceled.');
+ }
+ ]
+ }
+ });
+
+ try {
+ await request;
+ } catch (error) {
+ // …
+ }
+})();
+```
+
+To abort the Got Stream request, just call `stream.destroy()`.
+
+```js
+const got = require('got');
+
+const stream = got.stream(url);
+stream.destroy();
+```
+
+<a name="cache-adapters"></a>
+## Cache
+
+Got implements [RFC 7234](https://httpwg.org/specs/rfc7234.html) compliant HTTP caching which works out of the box in-memory and is easily pluggable with a wide range of storage adapters. Fresh cache entries are served directly from the cache, and stale cache entries are revalidated with `If-None-Match`/`If-Modified-Since` headers. You can read more about the underlying cache behavior in the [`cacheable-request` documentation](https://github.com/lukechilds/cacheable-request). For DNS cache, Got uses [`cacheable-lookup`](https://github.com/szmarczak/cacheable-lookup).
+
+You can use the JavaScript `Map` type as an in-memory cache:
+
+```js
+const got = require('got');
+
+const map = new Map();
+
+(async () => {
+ let response = await got('https://sindresorhus.com', {cache: map});
+ console.log(response.isFromCache);
+ //=> false
+
+ response = await got('https://sindresorhus.com', {cache: map});
+ console.log(response.isFromCache);
+ //=> true
+})();
+```
+
+Got uses [Keyv](https://github.com/lukechilds/keyv) internally to support a wide range of storage adapters. For something more scalable you could use an [official Keyv storage adapter](https://github.com/lukechilds/keyv#official-storage-adapters):
+
+```
+$ npm install @keyv/redis
+```
+
+```js
+const got = require('got');
+const KeyvRedis = require('@keyv/redis');
+
+const redis = new KeyvRedis('redis://user:pass@localhost:6379');
+
+got('https://sindresorhus.com', {cache: redis});
+```
+
+Got supports anything that follows the Map API, so it's easy to write your own storage adapter or use a third-party solution.
+
+For example, the following are all valid storage adapters:
+
+```js
+const storageAdapter = new Map();
+// Or
+const storageAdapter = require('./my-storage-adapter');
+// Or
+const QuickLRU = require('quick-lru');
+const storageAdapter = new QuickLRU({maxSize: 1000});
+
+got('https://sindresorhus.com', {cache: storageAdapter});
+```
+
+View the [Keyv docs](https://github.com/lukechilds/keyv) for more information on how to use storage adapters.
+
+## Proxies
+
+You can use the [`tunnel`](https://github.com/koichik/node-tunnel) package with the `agent` option to work with proxies:
+
+```js
+const got = require('got');
+const tunnel = require('tunnel');
+
+got('https://sindresorhus.com', {
+ agent: {
+ https: tunnel.httpsOverHttp({
+ proxy: {
+ host: 'localhost'
+ }
+ })
+ }
+});
+```
+
+Otherwise, you can use the [`hpagent`](https://github.com/delvedor/hpagent) package, which keeps the internal sockets alive to be reused.
+
+```js
+const got = require('got');
+const {HttpsProxyAgent} = require('hpagent');
+
+got('https://sindresorhus.com', {
+ agent: {
+ https: new HttpsProxyAgent({
+ keepAlive: true,
+ keepAliveMsecs: 1000,
+ maxSockets: 256,
+ maxFreeSockets: 256,
+ scheduling: 'lifo',
+ proxy: 'https://localhost:8080'
+ })
+ }
+});
+```
+
+Alternatively, use [`global-agent`](https://github.com/gajus/global-agent) to configure a global proxy for all HTTP/HTTPS traffic in your program.
+
+Read the [`http2-wrapper`](https://github.com/szmarczak/http2-wrapper/#proxy-support) docs to learn about proxying for HTTP/2.
+
+## Cookies
+
+You can use the [`tough-cookie`](https://github.com/salesforce/tough-cookie) package:
+
+```js
+const {promisify} = require('util');
+const got = require('got');
+const {CookieJar} = require('tough-cookie');
+
+(async () => {
+ const cookieJar = new CookieJar();
+ const setCookie = promisify(cookieJar.setCookie.bind(cookieJar));
+
+ await setCookie('foo=bar', 'https://example.com');
+ await got('https://example.com', {cookieJar});
+})();
+```
+
+## Form data
+
+You can use the [`form-data`](https://github.com/form-data/form-data) package to create POST request with form data:
+
+```js
+const fs = require('fs');
+const got = require('got');
+const FormData = require('form-data');
+
+const form = new FormData();
+
+form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
+
+got.post('https://example.com', {
+ body: form
+});
+```
+
+## OAuth
+
+You can use the [`oauth-1.0a`](https://github.com/ddo/oauth-1.0a) package to create a signed OAuth request:
+
+```js
+const got = require('got');
+const crypto = require('crypto');
+const OAuth = require('oauth-1.0a');
+
+const oauth = OAuth({
+ consumer: {
+ key: process.env.CONSUMER_KEY,
+ secret: process.env.CONSUMER_SECRET
+ },
+ signature_method: 'HMAC-SHA1',
+ hash_function: (baseString, key) => crypto.createHmac('sha1', key).update(baseString).digest('base64')
+});
+
+const token = {
+ key: process.env.ACCESS_TOKEN,
+ secret: process.env.ACCESS_TOKEN_SECRET
+};
+
+const url = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
+
+got(url, {
+ headers: oauth.toHeader(oauth.authorize({url, method: 'GET'}, token)),
+ responseType: 'json'
+});
+```
+
+## Unix Domain Sockets
+
+Requests can also be sent via [unix domain sockets](http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket). Use the following URL scheme: `PROTOCOL://unix:SOCKET:PATH`.
+
+- `PROTOCOL` - `http` or `https` *(optional)*
+- `SOCKET` - Absolute path to a unix domain socket, for example: `/var/run/docker.sock`
+- `PATH` - Request path, for example: `/v2/keys`
+
+```js
+const got = require('got');
+
+got('http://unix:/var/run/docker.sock:/containers/json');
+
+// Or without protocol (HTTP by default)
+got('unix:/var/run/docker.sock:/containers/json');
+```
+
+## AWS
+
+Requests to AWS services need to have their headers signed. This can be accomplished by using the [`got4aws`](https://www.npmjs.com/package/got4aws) package. This is an example for querying an ["API Gateway"](https://docs.aws.amazon.com/apigateway/api-reference/signing-requests/) with a signed request.
+
+```js
+const got4aws = require('got4aws');;
+
+const awsClient = got4aws();
+
+const response = await awsClient('https://<api-id>.execute-api.<api-region>.amazonaws.com/<stage>/endpoint/path', {
+ // Request-specific options
+});
+```
+
+## Testing
+
+You can test your requests by using the [`nock`](https://github.com/node-nock/nock) package to mock an endpoint:
+
+```js
+const got = require('got');
+const nock = require('nock');
+
+nock('https://sindresorhus.com')
+ .get('/')
+ .reply(200, 'Hello world!');
+
+(async () => {
+ const response = await got('https://sindresorhus.com');
+ console.log(response.body);
+ //=> 'Hello world!'
+})();
+```
+
+Bear in mind, that by default `nock` mocks only one request. Got will [retry](#retry) on failed requests by default, causing a `No match for request ...` error. The solution is to either disable retrying (set `options.retry` to `0`) or call `.persist()` on the mocked request.
+
+```js
+const got = require('got');
+const nock = require('nock');
+
+const scope = nock('https://sindresorhus.com')
+ .get('/')
+ .reply(500, 'Internal server error')
+ .persist();
+
+(async () => {
+ try {
+ await got('https://sindresorhus.com')
+ } catch (error) {
+ console.log(error.response.body);
+ //=> 'Internal server error'
+
+ console.log(error.response.retryCount);
+ //=> 2
+ }
+
+ scope.persist(false);
+})();
+```
+
+For real integration testing we recommend using [`ava`](https://github.com/avajs/ava) with [`create-test-server`](https://github.com/lukechilds/create-test-server). We're using a macro so we don't have to `server.listen()` and `server.close()` every test. Take a look at one of our tests:
+
+```js
+test('retry function gets iteration count', withServer, async (t, server, got) => {
+ let knocks = 0;
+ server.get('/', (request, response) => {
+ if (knocks++ === 1) {
+ response.end('who`s there?');
+ }
+ });
+
+ await got({
+ retry: {
+ calculateDelay: ({attemptCount}) => {
+ t.true(is.number(attemptCount));
+ return attemptCount < 2 ? 1 : 0;
+ }
+ }
+ });
+});
+```
+
+## Tips
+
+### JSON mode
+
+To pass an object as the body, you need to use the `json` option. It will be stringified using `JSON.stringify`. Example:
+
+```js
+const got = require('got');
+
+(async () => {
+ const {body} = await got.post('https://httpbin.org/anything', {
+ json: {
+ hello: 'world'
+ },
+ responseType: 'json'
+ });
+
+ console.log(body.data);
+ //=> '{"hello":"world"}'
+})();
+```
+
+To receive a JSON body you can either set `responseType` option to `json` or use `promise.json()`. Example:
+
+```js
+const got = require('got');
+
+(async () => {
+ const body = await got.post('https://httpbin.org/anything', {
+ json: {
+ hello: 'world'
+ }
+ }).json();
+
+ console.log(body);
+ //=> {…}
+})();
+```
+
+### User Agent
+
+It's a good idea to set the `'user-agent'` header so the provider can more easily see how their resource is used. By default, it's the URL to this repo. You can omit this header by setting it to `undefined`.
+
+```js
+const got = require('got');
+const pkg = require('./package.json');
+
+got('https://sindresorhus.com', {
+ headers: {
+ 'user-agent': `my-package/${pkg.version} (https://github.com/username/my-package)`
+ }
+});
+
+got('https://sindresorhus.com', {
+ headers: {
+ 'user-agent': undefined
+ }
+});
+```
+
+### 304 Responses
+
+Bear in mind; if you send an `if-modified-since` header and receive a `304 Not Modified` response, the body will be empty. It's your responsibility to cache and retrieve the body contents.
+
+### Custom endpoints
+
+Use `got.extend()` to make it nicer to work with REST APIs. Especially if you use the `prefixUrl` option.
+
+```js
+const got = require('got');
+const pkg = require('./package.json');
+
+const custom = got.extend({
+ prefixUrl: 'example.com',
+ responseType: 'json',
+ headers: {
+ 'user-agent': `my-package/${pkg.version} (https://github.com/username/my-package)`
+ }
+});
+
+// Use `custom` exactly how you use `got`
+(async () => {
+ const list = await custom('v1/users/list');
+})();
+```
+
+## FAQ
+
+### Why yet another HTTP client?
+
+Got was created because the popular [`request`](https://github.com/request/request) package is bloated: [![Install size](https://packagephobia.now.sh/badge?p=request)](https://packagephobia.now.sh/result?p=request)\
+Furthermore, Got is fully written in TypeScript and actively maintained.
+
+### Electron support has been removed
+
+The Electron `net` module is not consistent with the Node.js `http` module. See [#899](https://github.com/sindresorhus/got/issues/899) for more info.
+
+## Comparison
+
+| | `got` | [`request`][r0] | [`node-fetch`][n0] | [`ky`][k0] | [`axios`][a0] | [`superagent`][s0] |
+|-----------------------|:------------------:|:------------------:|:--------------------:|:------------------------:|:------------------:|:----------------------:|
+| HTTP/2 support | :sparkle: | :x: | :x: | :x: | :x: | :heavy_check_mark:\*\* |
+| Browser support | :x: | :x: | :heavy_check_mark:\* | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| Promise API | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| Stream API | :heavy_check_mark: | :heavy_check_mark: | Node.js only | :x: | :x: | :heavy_check_mark: |
+| Pagination API | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: |
+| Request cancelation | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| RFC compliant caching | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: |
+| Cookies (out-of-box) | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: |
+| Follows redirects | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| Retries on failure | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: |
+| Progress events | :heavy_check_mark: | :x: | :x: | :heavy_check_mark:\*\*\* | Browser only | :heavy_check_mark: |
+| Handles gzip/deflate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| Advanced timeouts | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: |
+| Timings | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: |
+| Errors with metadata | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: |
+| JSON mode | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
+| Custom defaults | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: |
+| Composable | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: |
+| Hooks | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: |
+| Issues open | [![][gio]][g1] | [![][rio]][r1] | [![][nio]][n1] | [![][kio]][k1] | [![][aio]][a1] | [![][sio]][s1] |
+| Issues closed | [![][gic]][g2] | [![][ric]][r2] | [![][nic]][n2] | [![][kic]][k2] | [![][aic]][a2] | [![][sic]][s2] |
+| Downloads | [![][gd]][g3] | [![][rd]][r3] | [![][nd]][n3] | [![][kd]][k3] | [![][ad]][a3] | [![][sd]][s3] |
+| Coverage | [![][gc]][g4] | [![][rc]][r4] | [![][nc]][n4] | [![][kc]][k4] | [![][ac]][a4] | [![][sc]][s4] |
+| Build | [![][gb]][g5] | [![][rb]][r5] | [![][nb]][n5] | [![][kb]][k5] | [![][ab]][a5] | [![][sb]][s5] |
+| Bugs | [![][gbg]][g6] | [![][rbg]][r6] | [![][nbg]][n6] | [![][kbg]][k6] | [![][abg]][a6] | [![][sbg]][s6] |
+| Dependents | [![][gdp]][g7] | [![][rdp]][r7] | [![][ndp]][n7] | [![][kdp]][k7] | [![][adp]][a7] | [![][sdp]][s7] |
+| Install size | [![][gis]][g8] | [![][ris]][r8] | [![][nis]][n8] | [![][kis]][k8] | [![][ais]][a8] | [![][sis]][s8] |
+| GitHub stars | [![][gs]][g9] | [![][rs]][r9] | [![][ns]][n9] | [![][ks]][k9] | [![][as]][a9] | [![][ss]][s9] |
+| TypeScript support | [![][gts]][g10] | [![][rts]][r10] | [![][nts]][n10] | [![][kts]][k10] | [![][ats]][a10] | [![][sts]][s11] |
+| Last commit | [![][glc]][g11] | [![][rlc]][r11] | [![][nlc]][n11] | [![][klc]][k11] | [![][alc]][a11] | [![][slc]][s11] |
+
+\* It's almost API compatible with the browser `fetch` API.\
+\*\* Need to switch the protocol manually. Doesn't accept PUSH streams and doesn't reuse HTTP/2 sessions.\
+\*\*\* Currently, only `DownloadProgress` event is supported, `UploadProgress` event is not supported.\
+:sparkle: Almost-stable feature, but the API may change. Don't hesitate to try it out!\
+:grey_question: Feature in early stage of development. Very experimental.
+
+<!-- GITHUB -->
+[k0]: https://github.com/sindresorhus/ky
+[r0]: https://github.com/request/request
+[n0]: https://github.com/node-fetch/node-fetch
+[a0]: https://github.com/axios/axios
+[s0]: https://github.com/visionmedia/superagent
+
+<!-- ISSUES OPEN -->
+[gio]: https://badgen.net/github/open-issues/sindresorhus/got?label
+[kio]: https://badgen.net/github/open-issues/sindresorhus/ky?label
+[rio]: https://badgen.net/github/open-issues/request/request?label
+[nio]: https://badgen.net/github/open-issues/bitinn/node-fetch?label
+[aio]: https://badgen.net/github/open-issues/axios/axios?label
+[sio]: https://badgen.net/github/open-issues/visionmedia/superagent?label
+
+[g1]: https://github.com/sindresorhus/got/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+[k1]: https://github.com/sindresorhus/ky/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+[r1]: https://github.com/request/request/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+[n1]: https://github.com/bitinn/node-fetch/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+[a1]: https://github.com/axios/axios/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+[s1]: https://github.com/visionmedia/superagent/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+
+<!-- ISSUES CLOSED -->
+[gic]: https://badgen.net/github/closed-issues/sindresorhus/got?label
+[kic]: https://badgen.net/github/closed-issues/sindresorhus/ky?label
+[ric]: https://badgen.net/github/closed-issues/request/request?label
+[nic]: https://badgen.net/github/closed-issues/bitinn/node-fetch?label
+[aic]: https://badgen.net/github/closed-issues/axios/axios?label
+[sic]: https://badgen.net/github/closed-issues/visionmedia/superagent?label
+
+[g2]: https://github.com/sindresorhus/got/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+[k2]: https://github.com/sindresorhus/ky/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+[r2]: https://github.com/request/request/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+[n2]: https://github.com/bitinn/node-fetch/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+[a2]: https://github.com/axios/axios/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+[s2]: https://github.com/visionmedia/superagent/issues?q=is%3Aissue+is%3Aclosed+sort%3Aupdated-desc
+
+<!-- DOWNLOADS -->
+[gd]: https://badgen.net/npm/dm/got?label
+[kd]: https://badgen.net/npm/dm/ky?label
+[rd]: https://badgen.net/npm/dm/request?label
+[nd]: https://badgen.net/npm/dm/node-fetch?label
+[ad]: https://badgen.net/npm/dm/axios?label
+[sd]: https://badgen.net/npm/dm/superagent?label
+
+[g3]: https://www.npmjs.com/package/got
+[k3]: https://www.npmjs.com/package/ky
+[r3]: https://www.npmjs.com/package/request
+[n3]: https://www.npmjs.com/package/node-fetch
+[a3]: https://www.npmjs.com/package/axios
+[s3]: https://www.npmjs.com/package/superagent
+
+<!-- COVERAGE -->
+[gc]: https://badgen.net/coveralls/c/github/sindresorhus/got?label
+[kc]: https://badgen.net/codecov/c/github/sindresorhus/ky?label
+[rc]: https://badgen.net/coveralls/c/github/request/request?label
+[nc]: https://badgen.net/coveralls/c/github/bitinn/node-fetch?label
+[ac]: https://badgen.net/coveralls/c/github/mzabriskie/axios?label
+[sc]: https://badgen.net/codecov/c/github/visionmedia/superagent?label
+
+[g4]: https://coveralls.io/github/sindresorhus/got
+[k4]: https://codecov.io/gh/sindresorhus/ky
+[r4]: https://coveralls.io/github/request/request
+[n4]: https://coveralls.io/github/bitinn/node-fetch
+[a4]: https://coveralls.io/github/mzabriskie/axios
+[s4]: https://codecov.io/gh/visionmedia/superagent
+
+<!-- BUILD -->
+[gb]: https://badgen.net/travis/sindresorhus/got?label
+[kb]: https://badgen.net/travis/sindresorhus/ky?label
+[rb]: https://badgen.net/travis/request/request?label
+[nb]: https://badgen.net/travis/bitinn/node-fetch?label
+[ab]: https://badgen.net/travis/axios/axios?label
+[sb]: https://badgen.net/travis/visionmedia/superagent?label
+
+[g5]: https://travis-ci.com/github/sindresorhus/got
+[k5]: https://travis-ci.com/github/sindresorhus/ky
+[r5]: https://travis-ci.org/github/request/request
+[n5]: https://travis-ci.org/github/bitinn/node-fetch
+[a5]: https://travis-ci.org/github/axios/axios
+[s5]: https://travis-ci.org/github/visionmedia/superagent
+
+<!-- BUGS -->
+[gbg]: https://badgen.net/github/label-issues/sindresorhus/got/bug/open?label
+[kbg]: https://badgen.net/github/label-issues/sindresorhus/ky/bug/open?label
+[rbg]: https://badgen.net/github/label-issues/request/request/Needs%20investigation/open?label
+[nbg]: https://badgen.net/github/label-issues/bitinn/node-fetch/bug/open?label
+[abg]: https://badgen.net/github/label-issues/axios/axios/type:confirmed%20bug/open?label
+[sbg]: https://badgen.net/github/label-issues/visionmedia/superagent/Bug/open?label
+
+[g6]: https://github.com/sindresorhus/got/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Abug
+[k6]: https://github.com/sindresorhus/ky/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Abug
+[r6]: https://github.com/request/request/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A"Needs+investigation"
+[n6]: https://github.com/bitinn/node-fetch/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Abug
+[a6]: https://github.com/axios/axios/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22type%3Aconfirmed+bug%22
+[s6]: https://github.com/visionmedia/superagent/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3ABug
+
+<!-- DEPENDENTS -->
+[gdp]: https://badgen.net/npm/dependents/got?label
+[kdp]: https://badgen.net/npm/dependents/ky?label
+[rdp]: https://badgen.net/npm/dependents/request?label
+[ndp]: https://badgen.net/npm/dependents/node-fetch?label
+[adp]: https://badgen.net/npm/dependents/axios?label
+[sdp]: https://badgen.net/npm/dependents/superagent?label
+
+[g7]: https://www.npmjs.com/package/got?activeTab=dependents
+[k7]: https://www.npmjs.com/package/ky?activeTab=dependents
+[r7]: https://www.npmjs.com/package/request?activeTab=dependents
+[n7]: https://www.npmjs.com/package/node-fetch?activeTab=dependents
+[a7]: https://www.npmjs.com/package/axios?activeTab=dependents
+[s7]: https://www.npmjs.com/package/visionmedia?activeTab=dependents
+
+<!-- INSTALL SIZE -->
+[gis]: https://badgen.net/packagephobia/install/got?label
+[kis]: https://badgen.net/packagephobia/install/ky?label
+[ris]: https://badgen.net/packagephobia/install/request?label
+[nis]: https://badgen.net/packagephobia/install/node-fetch?label
+[ais]: https://badgen.net/packagephobia/install/axios?label
+[sis]: https://badgen.net/packagephobia/install/superagent?label
+
+[g8]: https://packagephobia.now.sh/result?p=got
+[k8]: https://packagephobia.now.sh/result?p=ky
+[r8]: https://packagephobia.now.sh/result?p=request
+[n8]: https://packagephobia.now.sh/result?p=node-fetch
+[a8]: https://packagephobia.now.sh/result?p=axios
+[s8]: https://packagephobia.now.sh/result?p=superagent
+
+<!-- GITHUB STARS -->
+[gs]: https://badgen.net/github/stars/sindresorhus/got?label
+[ks]: https://badgen.net/github/stars/sindresorhus/ky?label
+[rs]: https://badgen.net/github/stars/request/request?label
+[ns]: https://badgen.net/github/stars/bitinn/node-fetch?label
+[as]: https://badgen.net/github/stars/axios/axios?label
+[ss]: https://badgen.net/github/stars/visionmedia/superagent?label
+
+[g9]: https://github.com/sindresorhus/got
+[k9]: https://github.com/sindresorhus/ky
+[r9]: https://github.com/request/request
+[n9]: https://github.com/node-fetch/node-fetch
+[a9]: https://github.com/axios/axios
+[s9]: https://github.com/visionmedia/superagent
+
+<!-- TYPESCRIPT SUPPORT -->
+[gts]: https://badgen.net/npm/types/got?label
+[kts]: https://badgen.net/npm/types/ky?label
+[rts]: https://badgen.net/npm/types/request?label
+[nts]: https://badgen.net/npm/types/node-fetch?label
+[ats]: https://badgen.net/npm/types/axios?label
+[sts]: https://badgen.net/npm/types/superagent?label
+
+[g10]: https://github.com/sindresorhus/got
+[k10]: https://github.com/sindresorhus/ky
+[r10]: https://github.com/request/request
+[n10]: https://github.com/node-fetch/node-fetch
+[a10]: https://github.com/axios/axios
+[s10]: https://github.com/visionmedia/superagent
+
+<!-- LAST COMMIT -->
+[glc]: https://badgen.net/github/last-commit/sindresorhus/got?label
+[klc]: https://badgen.net/github/last-commit/sindresorhus/ky?label
+[rlc]: https://badgen.net/github/last-commit/request/request?label
+[nlc]: https://badgen.net/github/last-commit/bitinn/node-fetch?label
+[alc]: https://badgen.net/github/last-commit/axios/axios?label
+[slc]: https://badgen.net/github/last-commit/visionmedia/superagent?label
+
+[g11]: https://github.com/sindresorhus/got/commits
+[k11]: https://github.com/sindresorhus/ky/commits
+[r11]: https://github.com/request/request/commits
+[n11]: https://github.com/node-fetch/node-fetch/commits
+[a11]: https://github.com/axios/axios/commits
+[s11]: https://github.com/visionmedia/superagent/commits
+
+[Click here][InstallSizeOfTheDependencies] to see the install size of the Got dependencies.
+
+[InstallSizeOfTheDependencies]: https://packagephobia.com/result?p=@sindresorhus/is@3.0.0,@szmarczak/http-timer@4.0.5,@types/cacheable-request@6.0.1,@types/responselike@1.0.0,cacheable-lookup@5.0.3,cacheable-request@7.0.1,decompress-response@6.0.0,http2-wrapper@1.0.0,lowercase-keys@2.0.0,p-cancelable@2.0.0,responselike@2.0.0
+
+## Related
+
+- [gh-got](https://github.com/sindresorhus/gh-got) - Got convenience wrapper to interact with the GitHub API
+- [gl-got](https://github.com/singapore/gl-got) - Got convenience wrapper to interact with the GitLab API
+- [travis-got](https://github.com/samverschueren/travis-got) - Got convenience wrapper to interact with the Travis API
+- [graphql-got](https://github.com/kevva/graphql-got) - Got convenience wrapper to interact with GraphQL
+- [GotQL](https://github.com/khaosdoctor/gotql) - Got convenience wrapper to interact with GraphQL using JSON-parsed queries instead of strings
+- [got-fetch](https://github.com/alexghr/got-fetch) - Got with a `fetch` interface
+
+## Maintainers
+
+[![Sindre Sorhus](https://github.com/sindresorhus.png?size=100)](https://sindresorhus.com) | [![Szymon Marczak](https://github.com/szmarczak.png?size=100)](https://github.com/szmarczak) | [![Giovanni Minotti](https://github.com/Giotino.png?size=100)](https://github.com/Giotino)
+---|---|---
+[Sindre Sorhus](https://sindresorhus.com) | [Szymon Marczak](https://github.com/szmarczak) | [Giovanni Minotti](https://github.com/Giotino)
+
+###### Former
+
+- [Vsevolod Strukchinsky](https://github.com/floatdrop)
+- [Alexander Tesfamichael](https://github.com/alextes)
+- [Brandon Smith](https://github.com/brandon93s)
+- [Luke Childs](https://github.com/lukechilds)
+
+<a name="widely-used"></a>
+## These amazing companies are using Got
+
+<a href="https://segment.com"><img width="90" valign="middle" src="https://user-images.githubusercontent.com/697676/47693700-ddb62500-dbb7-11e8-8332-716a91010c2d.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://antora.org"><img width="100" valign="middle" src="https://user-images.githubusercontent.com/79351/47706840-d874cc80-dbef-11e8-87c6-5f0c60cbf5dc.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://getvoip.com"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/10832620/47869404-429e9480-dddd-11e8-8a7a-ca43d7f06020.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://github.com/exoframejs/exoframe"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/365944/47791460-11a95b80-dd1a-11e8-9070-e8f2a215e03a.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="http://karaokes.moe"><img width="140" valign="middle" src="https://camo.githubusercontent.com/6860e5fa4684c14d8e1aa65df0aba4e6808ea1a9/687474703a2f2f6b6172616f6b65732e6d6f652f6173736574732f696d616765732f696e6465782e706e67"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://github.com/renovatebot/renovate"><img width="150" valign="middle" src="https://camo.githubusercontent.com/206d470ac709b9a702a97b0c08d6f389a086793d/68747470733a2f2f72656e6f76617465626f742e636f6d2f696d616765732f6c6f676f2e737667"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://resist.bot"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/3322287/51992724-28736180-2473-11e9-9764-599cfda4b012.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://www.naturalcycles.com"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/170270/92244143-d0a8a200-eec2-11ea-9fc0-1c07f90b2113.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://microlink.io"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/36894700/91992974-1cc5dc00-ed35-11ea-9d04-f58b42ce6a5e.png"></a>
+&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="https://radity.com"><img width="150" valign="middle" src="https://user-images.githubusercontent.com/29518613/91814036-97fb9500-ec44-11ea-8c6c-d198cc23ca29.png"></a>
+
+<br>
+
+> Segment is a happy user of Got! Got powers the main backend API that our app talks to. It's used by our in-house RPC client that we use to communicate with all microservices.
+>
+> — <a href="https://github.com/vadimdemedes">Vadim Demedes</a>
+
+> Antora, a static site generator for creating documentation sites, uses Got to download the UI bundle. In Antora, the UI bundle (aka theme) is maintained as a separate project. That project exports the UI as a zip file we call the UI bundle. The main site generator downloads that UI from a URL using Got and streams it to vinyl-zip to extract the files. Those files go on to be used to create the HTML pages and supporting assets.
+>
+> — <a href="https://github.com/mojavelinux">Dan Allen</a>
+
+> GetVoIP is happily using Got in production. One of the unique capabilities of Got is the ability to handle Unix sockets which enables us to build a full control interfaces for our docker stack.
+>
+> — <a href="https://github.com/danielkalen">Daniel Kalen</a>
+
+> We're using Got inside of Exoframe to handle all the communication between CLI and server. Exoframe is a self-hosted tool that allows simple one-command deployments using Docker.
+>
+> — <a href="https://github.com/yamalight">Tim Ermilov</a>
+
+> Karaoke Mugen uses Got to fetch content updates from its online server.
+>
+> — <a href="https://github.com/AxelTerizaki">Axel Terizaki</a>
+
+> Renovate uses Got, gh-got and gl-got to send millions of queries per day to GitHub, GitLab, npmjs, PyPi, Packagist, Docker Hub, Terraform, CircleCI, and more.
+>
+> — <a href="https://github.com/rarkins">Rhys Arkins</a>
+
+> Resistbot uses Got to communicate from the API frontend where all correspondence ingresses to the officials lookup database in back.
+>
+> — <a href="https://github.com/chris-erickson">Chris Erickson</a>
+
+> Natural Cycles is using Got to communicate with all kinds of 3rd-party REST APIs (over 9000!).
+>
+> — <a href="https://github.com/kirillgroshkov">Kirill Groshkov</a>
+
+> Microlink is a cloud browser as an API service that uses Got widely as the main HTTP client, serving ~22M requests a month, every time a network call needs to be performed.
+>
+> — <a href="https://github.com/Kikobeats">Kiko Beats</a>
+
+> We’re using Got at Radity. Thanks for such an amazing work!
+>
+> — <a href="https://github.com/MirzayevFarid">Mirzayev Farid</a>
+
+## For enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of `got` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-got?utm_source=npm-got&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/client/node_modules/graceful-fs/LICENSE b/client/node_modules/graceful-fs/LICENSE
new file mode 100644
index 0000000..e906a25
--- /dev/null
+++ b/client/node_modules/graceful-fs/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/graceful-fs/README.md b/client/node_modules/graceful-fs/README.md
new file mode 100644
index 0000000..82d6e4d
--- /dev/null
+++ b/client/node_modules/graceful-fs/README.md
@@ -0,0 +1,143 @@
+# graceful-fs
+
+graceful-fs functions as a drop-in replacement for the fs module,
+making various improvements.
+
+The improvements are meant to normalize behavior across different
+platforms and environments, and to make filesystem access more
+resilient to errors.
+
+## Improvements over [fs module](https://nodejs.org/api/fs.html)
+
+* Queues up `open` and `readdir` calls, and retries them once
+ something closes if there is an EMFILE error from too many file
+ descriptors.
+* fixes `lchmod` for Node versions prior to 0.6.2.
+* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
+* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
+ `lchown` if the user isn't root.
+* makes `lchmod` and `lchown` become noops, if not available.
+* retries reading a file if `read` results in EAGAIN error.
+
+On Windows, it retries renaming a file for up to one second if `EACCESS`
+or `EPERM` error occurs, likely because antivirus software has locked
+the directory.
+
+## USAGE
+
+```javascript
+// use just like fs
+var fs = require('graceful-fs')
+
+// now go and do stuff with it...
+fs.readFile('some-file-or-whatever', (err, data) => {
+ // Do stuff here.
+})
+```
+
+## Sync methods
+
+This module cannot intercept or handle `EMFILE` or `ENFILE` errors from sync
+methods. If you use sync methods which open file descriptors then you are
+responsible for dealing with any errors.
+
+This is a known limitation, not a bug.
+
+## Global Patching
+
+If you want to patch the global fs module (or any other fs-like
+module) you can do this:
+
+```javascript
+// Make sure to read the caveat below.
+var realFs = require('fs')
+var gracefulFs = require('graceful-fs')
+gracefulFs.gracefulify(realFs)
+```
+
+This should only ever be done at the top-level application layer, in
+order to delay on EMFILE errors from any fs-using dependencies. You
+should **not** do this in a library, because it can cause unexpected
+delays in other parts of the program.
+
+## Changes
+
+This module is fairly stable at this point, and used by a lot of
+things. That being said, because it implements a subtle behavior
+change in a core part of the node API, even modest changes can be
+extremely breaking, and the versioning is thus biased towards
+bumping the major when in doubt.
+
+The main change between major versions has been switching between
+providing a fully-patched `fs` module vs monkey-patching the node core
+builtin, and the approach by which a non-monkey-patched `fs` was
+created.
+
+The goal is to trade `EMFILE` errors for slower fs operations. So, if
+you try to open a zillion files, rather than crashing, `open`
+operations will be queued up and wait for something else to `close`.
+
+There are advantages to each approach. Monkey-patching the fs means
+that no `EMFILE` errors can possibly occur anywhere in your
+application, because everything is using the same core `fs` module,
+which is patched. However, it can also obviously cause undesirable
+side-effects, especially if the module is loaded multiple times.
+
+Implementing a separate-but-identical patched `fs` module is more
+surgical (and doesn't run the risk of patching multiple times), but
+also imposes the challenge of keeping in sync with the core module.
+
+The current approach loads the `fs` module, and then creates a
+lookalike object that has all the same methods, except a few that are
+patched. It is safe to use in all versions of Node from 0.8 through
+7.0.
+
+### v4
+
+* Do not monkey-patch the fs module. This module may now be used as a
+ drop-in dep, and users can opt into monkey-patching the fs builtin
+ if their app requires it.
+
+### v3
+
+* Monkey-patch fs, because the eval approach no longer works on recent
+ node.
+* fixed possible type-error throw if rename fails on windows
+* verify that we *never* get EMFILE errors
+* Ignore ENOSYS from chmod/chown
+* clarify that graceful-fs must be used as a drop-in
+
+### v2.1.0
+
+* Use eval rather than monkey-patching fs.
+* readdir: Always sort the results
+* win32: requeue a file if error has an OK status
+
+### v2.0
+
+* A return to monkey patching
+* wrap process.cwd
+
+### v1.1
+
+* wrap readFile
+* Wrap fs.writeFile.
+* readdir protection
+* Don't clobber the fs builtin
+* Handle fs.read EAGAIN errors by trying again
+* Expose the curOpen counter
+* No-op lchown/lchmod if not implemented
+* fs.rename patch only for win32
+* Patch fs.rename to handle AV software on Windows
+* Close #4 Chown should not fail on einval or eperm if non-root
+* Fix isaacs/fstream#1 Only wrap fs one time
+* Fix #3 Start at 1024 max files, then back off on EMFILE
+* lutimes that doens't blow up on Linux
+* A full on-rewrite using a queue instead of just swallowing the EMFILE error
+* Wrap Read/Write streams as well
+
+### 1.0
+
+* Update engines for node 0.6
+* Be lstat-graceful on Windows
+* first
diff --git a/client/node_modules/graceful-fs/clone.js b/client/node_modules/graceful-fs/clone.js
new file mode 100644
index 0000000..dff3cc8
--- /dev/null
+++ b/client/node_modules/graceful-fs/clone.js
@@ -0,0 +1,23 @@
+'use strict'
+
+module.exports = clone
+
+var getPrototypeOf = Object.getPrototypeOf || function (obj) {
+ return obj.__proto__
+}
+
+function clone (obj) {
+ if (obj === null || typeof obj !== 'object')
+ return obj
+
+ if (obj instanceof Object)
+ var copy = { __proto__: getPrototypeOf(obj) }
+ else
+ var copy = Object.create(null)
+
+ Object.getOwnPropertyNames(obj).forEach(function (key) {
+ Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
+ })
+
+ return copy
+}
diff --git a/client/node_modules/graceful-fs/graceful-fs.js b/client/node_modules/graceful-fs/graceful-fs.js
new file mode 100644
index 0000000..8d5b89e
--- /dev/null
+++ b/client/node_modules/graceful-fs/graceful-fs.js
@@ -0,0 +1,448 @@
+var fs = require('fs')
+var polyfills = require('./polyfills.js')
+var legacy = require('./legacy-streams.js')
+var clone = require('./clone.js')
+
+var util = require('util')
+
+/* istanbul ignore next - node 0.x polyfill */
+var gracefulQueue
+var previousSymbol
+
+/* istanbul ignore else - node 0.x polyfill */
+if (typeof Symbol === 'function' && typeof Symbol.for === 'function') {
+ gracefulQueue = Symbol.for('graceful-fs.queue')
+ // This is used in testing by future versions
+ previousSymbol = Symbol.for('graceful-fs.previous')
+} else {
+ gracefulQueue = '___graceful-fs.queue'
+ previousSymbol = '___graceful-fs.previous'
+}
+
+function noop () {}
+
+function publishQueue(context, queue) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue
+ }
+ })
+}
+
+var debug = noop
+if (util.debuglog)
+ debug = util.debuglog('gfs4')
+else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
+ debug = function() {
+ var m = util.format.apply(util, arguments)
+ m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ')
+ console.error(m)
+ }
+
+// Once time initialization
+if (!fs[gracefulQueue]) {
+ // This queue can be shared by multiple loaded instances
+ var queue = global[gracefulQueue] || []
+ publishQueue(fs, queue)
+
+ // Patch fs.close/closeSync to shared queue version, because we need
+ // to retry() whenever a close happens *anywhere* in the program.
+ // This is essential when multiple graceful-fs instances are
+ // in play at the same time.
+ fs.close = (function (fs$close) {
+ function close (fd, cb) {
+ return fs$close.call(fs, fd, function (err) {
+ // This function uses the graceful-fs shared queue
+ if (!err) {
+ resetQueue()
+ }
+
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ })
+ }
+
+ Object.defineProperty(close, previousSymbol, {
+ value: fs$close
+ })
+ return close
+ })(fs.close)
+
+ fs.closeSync = (function (fs$closeSync) {
+ function closeSync (fd) {
+ // This function uses the graceful-fs shared queue
+ fs$closeSync.apply(fs, arguments)
+ resetQueue()
+ }
+
+ Object.defineProperty(closeSync, previousSymbol, {
+ value: fs$closeSync
+ })
+ return closeSync
+ })(fs.closeSync)
+
+ if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
+ process.on('exit', function() {
+ debug(fs[gracefulQueue])
+ require('assert').equal(fs[gracefulQueue].length, 0)
+ })
+ }
+}
+
+if (!global[gracefulQueue]) {
+ publishQueue(global, fs[gracefulQueue]);
+}
+
+module.exports = patch(clone(fs))
+if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
+ module.exports = patch(fs)
+ fs.__patched = true;
+}
+
+function patch (fs) {
+ // Everything that references the open() function needs to be in here
+ polyfills(fs)
+ fs.gracefulify = patch
+
+ fs.createReadStream = createReadStream
+ fs.createWriteStream = createWriteStream
+ var fs$readFile = fs.readFile
+ fs.readFile = readFile
+ function readFile (path, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+
+ return go$readFile(path, options, cb)
+
+ function go$readFile (path, options, cb, startTime) {
+ return fs$readFile(path, options, function (err) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ var fs$writeFile = fs.writeFile
+ fs.writeFile = writeFile
+ function writeFile (path, data, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+
+ return go$writeFile(path, data, options, cb)
+
+ function go$writeFile (path, data, options, cb, startTime) {
+ return fs$writeFile(path, data, options, function (err) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ var fs$appendFile = fs.appendFile
+ if (fs$appendFile)
+ fs.appendFile = appendFile
+ function appendFile (path, data, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+
+ return go$appendFile(path, data, options, cb)
+
+ function go$appendFile (path, data, options, cb, startTime) {
+ return fs$appendFile(path, data, options, function (err) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ var fs$copyFile = fs.copyFile
+ if (fs$copyFile)
+ fs.copyFile = copyFile
+ function copyFile (src, dest, flags, cb) {
+ if (typeof flags === 'function') {
+ cb = flags
+ flags = 0
+ }
+ return go$copyFile(src, dest, flags, cb)
+
+ function go$copyFile (src, dest, flags, cb, startTime) {
+ return fs$copyFile(src, dest, flags, function (err) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ var fs$readdir = fs.readdir
+ fs.readdir = readdir
+ var noReaddirOptionVersions = /^v[0-5]\./
+ function readdir (path, options, cb) {
+ if (typeof options === 'function')
+ cb = options, options = null
+
+ var go$readdir = noReaddirOptionVersions.test(process.version)
+ ? function go$readdir (path, options, cb, startTime) {
+ return fs$readdir(path, fs$readdirCallback(
+ path, options, cb, startTime
+ ))
+ }
+ : function go$readdir (path, options, cb, startTime) {
+ return fs$readdir(path, options, fs$readdirCallback(
+ path, options, cb, startTime
+ ))
+ }
+
+ return go$readdir(path, options, cb)
+
+ function fs$readdirCallback (path, options, cb, startTime) {
+ return function (err, files) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([
+ go$readdir,
+ [path, options, cb],
+ err,
+ startTime || Date.now(),
+ Date.now()
+ ])
+ else {
+ if (files && files.sort)
+ files.sort()
+
+ if (typeof cb === 'function')
+ cb.call(this, err, files)
+ }
+ }
+ }
+ }
+
+ if (process.version.substr(0, 4) === 'v0.8') {
+ var legStreams = legacy(fs)
+ ReadStream = legStreams.ReadStream
+ WriteStream = legStreams.WriteStream
+ }
+
+ var fs$ReadStream = fs.ReadStream
+ if (fs$ReadStream) {
+ ReadStream.prototype = Object.create(fs$ReadStream.prototype)
+ ReadStream.prototype.open = ReadStream$open
+ }
+
+ var fs$WriteStream = fs.WriteStream
+ if (fs$WriteStream) {
+ WriteStream.prototype = Object.create(fs$WriteStream.prototype)
+ WriteStream.prototype.open = WriteStream$open
+ }
+
+ Object.defineProperty(fs, 'ReadStream', {
+ get: function () {
+ return ReadStream
+ },
+ set: function (val) {
+ ReadStream = val
+ },
+ enumerable: true,
+ configurable: true
+ })
+ Object.defineProperty(fs, 'WriteStream', {
+ get: function () {
+ return WriteStream
+ },
+ set: function (val) {
+ WriteStream = val
+ },
+ enumerable: true,
+ configurable: true
+ })
+
+ // legacy names
+ var FileReadStream = ReadStream
+ Object.defineProperty(fs, 'FileReadStream', {
+ get: function () {
+ return FileReadStream
+ },
+ set: function (val) {
+ FileReadStream = val
+ },
+ enumerable: true,
+ configurable: true
+ })
+ var FileWriteStream = WriteStream
+ Object.defineProperty(fs, 'FileWriteStream', {
+ get: function () {
+ return FileWriteStream
+ },
+ set: function (val) {
+ FileWriteStream = val
+ },
+ enumerable: true,
+ configurable: true
+ })
+
+ function ReadStream (path, options) {
+ if (this instanceof ReadStream)
+ return fs$ReadStream.apply(this, arguments), this
+ else
+ return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
+ }
+
+ function ReadStream$open () {
+ var that = this
+ open(that.path, that.flags, that.mode, function (err, fd) {
+ if (err) {
+ if (that.autoClose)
+ that.destroy()
+
+ that.emit('error', err)
+ } else {
+ that.fd = fd
+ that.emit('open', fd)
+ that.read()
+ }
+ })
+ }
+
+ function WriteStream (path, options) {
+ if (this instanceof WriteStream)
+ return fs$WriteStream.apply(this, arguments), this
+ else
+ return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
+ }
+
+ function WriteStream$open () {
+ var that = this
+ open(that.path, that.flags, that.mode, function (err, fd) {
+ if (err) {
+ that.destroy()
+ that.emit('error', err)
+ } else {
+ that.fd = fd
+ that.emit('open', fd)
+ }
+ })
+ }
+
+ function createReadStream (path, options) {
+ return new fs.ReadStream(path, options)
+ }
+
+ function createWriteStream (path, options) {
+ return new fs.WriteStream(path, options)
+ }
+
+ var fs$open = fs.open
+ fs.open = open
+ function open (path, flags, mode, cb) {
+ if (typeof mode === 'function')
+ cb = mode, mode = null
+
+ return go$open(path, flags, mode, cb)
+
+ function go$open (path, flags, mode, cb, startTime) {
+ return fs$open(path, flags, mode, function (err, fd) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ return fs
+}
+
+function enqueue (elem) {
+ debug('ENQUEUE', elem[0].name, elem[1])
+ fs[gracefulQueue].push(elem)
+ retry()
+}
+
+// keep track of the timeout between retry() calls
+var retryTimer
+
+// reset the startTime and lastTime to now
+// this resets the start of the 60 second overall timeout as well as the
+// delay between attempts so that we'll retry these jobs sooner
+function resetQueue () {
+ var now = Date.now()
+ for (var i = 0; i < fs[gracefulQueue].length; ++i) {
+ // entries that are only a length of 2 are from an older version, don't
+ // bother modifying those since they'll be retried anyway.
+ if (fs[gracefulQueue][i].length > 2) {
+ fs[gracefulQueue][i][3] = now // startTime
+ fs[gracefulQueue][i][4] = now // lastTime
+ }
+ }
+ // call retry to make sure we're actively processing the queue
+ retry()
+}
+
+function retry () {
+ // clear the timer and remove it to help prevent unintended concurrency
+ clearTimeout(retryTimer)
+ retryTimer = undefined
+
+ if (fs[gracefulQueue].length === 0)
+ return
+
+ var elem = fs[gracefulQueue].shift()
+ var fn = elem[0]
+ var args = elem[1]
+ // these items may be unset if they were added by an older graceful-fs
+ var err = elem[2]
+ var startTime = elem[3]
+ var lastTime = elem[4]
+
+ // if we don't have a startTime we have no way of knowing if we've waited
+ // long enough, so go ahead and retry this item now
+ if (startTime === undefined) {
+ debug('RETRY', fn.name, args)
+ fn.apply(null, args)
+ } else if (Date.now() - startTime >= 60000) {
+ // it's been more than 60 seconds total, bail now
+ debug('TIMEOUT', fn.name, args)
+ var cb = args.pop()
+ if (typeof cb === 'function')
+ cb.call(null, err)
+ } else {
+ // the amount of time between the last attempt and right now
+ var sinceAttempt = Date.now() - lastTime
+ // the amount of time between when we first tried, and when we last tried
+ // rounded up to at least 1
+ var sinceStart = Math.max(lastTime - startTime, 1)
+ // backoff. wait longer than the total time we've been retrying, but only
+ // up to a maximum of 100ms
+ var desiredDelay = Math.min(sinceStart * 1.2, 100)
+ // it's been long enough since the last retry, do it again
+ if (sinceAttempt >= desiredDelay) {
+ debug('RETRY', fn.name, args)
+ fn.apply(null, args.concat([startTime]))
+ } else {
+ // if we can't do this job yet, push it to the end of the queue
+ // and let the next iteration check again
+ fs[gracefulQueue].push(elem)
+ }
+ }
+
+ // schedule our next run if one isn't already scheduled
+ if (retryTimer === undefined) {
+ retryTimer = setTimeout(retry, 0)
+ }
+}
diff --git a/client/node_modules/graceful-fs/legacy-streams.js b/client/node_modules/graceful-fs/legacy-streams.js
new file mode 100644
index 0000000..d617b50
--- /dev/null
+++ b/client/node_modules/graceful-fs/legacy-streams.js
@@ -0,0 +1,118 @@
+var Stream = require('stream').Stream
+
+module.exports = legacy
+
+function legacy (fs) {
+ return {
+ ReadStream: ReadStream,
+ WriteStream: WriteStream
+ }
+
+ function ReadStream (path, options) {
+ if (!(this instanceof ReadStream)) return new ReadStream(path, options);
+
+ Stream.call(this);
+
+ var self = this;
+
+ this.path = path;
+ this.fd = null;
+ this.readable = true;
+ this.paused = false;
+
+ this.flags = 'r';
+ this.mode = 438; /*=0666*/
+ this.bufferSize = 64 * 1024;
+
+ options = options || {};
+
+ // Mixin options into this
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+
+ if (this.encoding) this.setEncoding(this.encoding);
+
+ if (this.start !== undefined) {
+ if ('number' !== typeof this.start) {
+ throw TypeError('start must be a Number');
+ }
+ if (this.end === undefined) {
+ this.end = Infinity;
+ } else if ('number' !== typeof this.end) {
+ throw TypeError('end must be a Number');
+ }
+
+ if (this.start > this.end) {
+ throw new Error('start must be <= end');
+ }
+
+ this.pos = this.start;
+ }
+
+ if (this.fd !== null) {
+ process.nextTick(function() {
+ self._read();
+ });
+ return;
+ }
+
+ fs.open(this.path, this.flags, this.mode, function (err, fd) {
+ if (err) {
+ self.emit('error', err);
+ self.readable = false;
+ return;
+ }
+
+ self.fd = fd;
+ self.emit('open', fd);
+ self._read();
+ })
+ }
+
+ function WriteStream (path, options) {
+ if (!(this instanceof WriteStream)) return new WriteStream(path, options);
+
+ Stream.call(this);
+
+ this.path = path;
+ this.fd = null;
+ this.writable = true;
+
+ this.flags = 'w';
+ this.encoding = 'binary';
+ this.mode = 438; /*=0666*/
+ this.bytesWritten = 0;
+
+ options = options || {};
+
+ // Mixin options into this
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+
+ if (this.start !== undefined) {
+ if ('number' !== typeof this.start) {
+ throw TypeError('start must be a Number');
+ }
+ if (this.start < 0) {
+ throw new Error('start must be >= zero');
+ }
+
+ this.pos = this.start;
+ }
+
+ this.busy = false;
+ this._queue = [];
+
+ if (this.fd === null) {
+ this._open = fs.open;
+ this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);
+ this.flush();
+ }
+ }
+}
diff --git a/client/node_modules/graceful-fs/package.json b/client/node_modules/graceful-fs/package.json
new file mode 100644
index 0000000..87babf0
--- /dev/null
+++ b/client/node_modules/graceful-fs/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "graceful-fs",
+ "description": "A drop-in replacement for fs, making various improvements.",
+ "version": "4.2.11",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/isaacs/node-graceful-fs"
+ },
+ "main": "graceful-fs.js",
+ "directories": {
+ "test": "test"
+ },
+ "scripts": {
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --follow-tags",
+ "test": "nyc --silent node test.js | tap -c -",
+ "posttest": "nyc report"
+ },
+ "keywords": [
+ "fs",
+ "module",
+ "reading",
+ "retry",
+ "retries",
+ "queue",
+ "error",
+ "errors",
+ "handling",
+ "EMFILE",
+ "EAGAIN",
+ "EINVAL",
+ "EPERM",
+ "EACCESS"
+ ],
+ "license": "ISC",
+ "devDependencies": {
+ "import-fresh": "^2.0.0",
+ "mkdirp": "^0.5.0",
+ "rimraf": "^2.2.8",
+ "tap": "^16.3.4"
+ },
+ "files": [
+ "fs.js",
+ "graceful-fs.js",
+ "legacy-streams.js",
+ "polyfills.js",
+ "clone.js"
+ ],
+ "tap": {
+ "reporter": "classic"
+ }
+}
diff --git a/client/node_modules/graceful-fs/polyfills.js b/client/node_modules/graceful-fs/polyfills.js
new file mode 100644
index 0000000..453f1a9
--- /dev/null
+++ b/client/node_modules/graceful-fs/polyfills.js
@@ -0,0 +1,355 @@
+var constants = require('constants')
+
+var origCwd = process.cwd
+var cwd = null
+
+var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
+
+process.cwd = function() {
+ if (!cwd)
+ cwd = origCwd.call(process)
+ return cwd
+}
+try {
+ process.cwd()
+} catch (er) {}
+
+// This check is needed until node.js 12 is required
+if (typeof process.chdir === 'function') {
+ var chdir = process.chdir
+ process.chdir = function (d) {
+ cwd = null
+ chdir.call(process, d)
+ }
+ if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)
+}
+
+module.exports = patch
+
+function patch (fs) {
+ // (re-)implement some things that are known busted or missing.
+
+ // lchmod, broken prior to 0.6.2
+ // back-port the fix here.
+ if (constants.hasOwnProperty('O_SYMLINK') &&
+ process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
+ patchLchmod(fs)
+ }
+
+ // lutimes implementation, or no-op
+ if (!fs.lutimes) {
+ patchLutimes(fs)
+ }
+
+ // https://github.com/isaacs/node-graceful-fs/issues/4
+ // Chown should not fail on einval or eperm if non-root.
+ // It should not fail on enosys ever, as this just indicates
+ // that a fs doesn't support the intended operation.
+
+ fs.chown = chownFix(fs.chown)
+ fs.fchown = chownFix(fs.fchown)
+ fs.lchown = chownFix(fs.lchown)
+
+ fs.chmod = chmodFix(fs.chmod)
+ fs.fchmod = chmodFix(fs.fchmod)
+ fs.lchmod = chmodFix(fs.lchmod)
+
+ fs.chownSync = chownFixSync(fs.chownSync)
+ fs.fchownSync = chownFixSync(fs.fchownSync)
+ fs.lchownSync = chownFixSync(fs.lchownSync)
+
+ fs.chmodSync = chmodFixSync(fs.chmodSync)
+ fs.fchmodSync = chmodFixSync(fs.fchmodSync)
+ fs.lchmodSync = chmodFixSync(fs.lchmodSync)
+
+ fs.stat = statFix(fs.stat)
+ fs.fstat = statFix(fs.fstat)
+ fs.lstat = statFix(fs.lstat)
+
+ fs.statSync = statFixSync(fs.statSync)
+ fs.fstatSync = statFixSync(fs.fstatSync)
+ fs.lstatSync = statFixSync(fs.lstatSync)
+
+ // if lchmod/lchown do not exist, then make them no-ops
+ if (fs.chmod && !fs.lchmod) {
+ fs.lchmod = function (path, mode, cb) {
+ if (cb) process.nextTick(cb)
+ }
+ fs.lchmodSync = function () {}
+ }
+ if (fs.chown && !fs.lchown) {
+ fs.lchown = function (path, uid, gid, cb) {
+ if (cb) process.nextTick(cb)
+ }
+ fs.lchownSync = function () {}
+ }
+
+ // on Windows, A/V software can lock the directory, causing this
+ // to fail with an EACCES or EPERM if the directory contains newly
+ // created files. Try again on failure, for up to 60 seconds.
+
+ // Set the timeout this long because some Windows Anti-Virus, such as Parity
+ // bit9, may lock files for up to a minute, causing npm package install
+ // failures. Also, take care to yield the scheduler. Windows scheduling gives
+ // CPU to a busy looping process, which can cause the program causing the lock
+ // contention to be starved of CPU by node, so the contention doesn't resolve.
+ if (platform === "win32") {
+ fs.rename = typeof fs.rename !== 'function' ? fs.rename
+ : (function (fs$rename) {
+ function rename (from, to, cb) {
+ var start = Date.now()
+ var backoff = 0;
+ fs$rename(from, to, function CB (er) {
+ if (er
+ && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY")
+ && Date.now() - start < 60000) {
+ setTimeout(function() {
+ fs.stat(to, function (stater, st) {
+ if (stater && stater.code === "ENOENT")
+ fs$rename(from, to, CB);
+ else
+ cb(er)
+ })
+ }, backoff)
+ if (backoff < 100)
+ backoff += 10;
+ return;
+ }
+ if (cb) cb(er)
+ })
+ }
+ if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)
+ return rename
+ })(fs.rename)
+ }
+
+ // if read() returns EAGAIN, then just try it again.
+ fs.read = typeof fs.read !== 'function' ? fs.read
+ : (function (fs$read) {
+ function read (fd, buffer, offset, length, position, callback_) {
+ var callback
+ if (callback_ && typeof callback_ === 'function') {
+ var eagCounter = 0
+ callback = function (er, _, __) {
+ if (er && er.code === 'EAGAIN' && eagCounter < 10) {
+ eagCounter ++
+ return fs$read.call(fs, fd, buffer, offset, length, position, callback)
+ }
+ callback_.apply(this, arguments)
+ }
+ }
+ return fs$read.call(fs, fd, buffer, offset, length, position, callback)
+ }
+
+ // This ensures `util.promisify` works as it does for native `fs.read`.
+ if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)
+ return read
+ })(fs.read)
+
+ fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync
+ : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
+ var eagCounter = 0
+ while (true) {
+ try {
+ return fs$readSync.call(fs, fd, buffer, offset, length, position)
+ } catch (er) {
+ if (er.code === 'EAGAIN' && eagCounter < 10) {
+ eagCounter ++
+ continue
+ }
+ throw er
+ }
+ }
+ }})(fs.readSync)
+
+ function patchLchmod (fs) {
+ fs.lchmod = function (path, mode, callback) {
+ fs.open( path
+ , constants.O_WRONLY | constants.O_SYMLINK
+ , mode
+ , function (err, fd) {
+ if (err) {
+ if (callback) callback(err)
+ return
+ }
+ // prefer to return the chmod error, if one occurs,
+ // but still try to close, and report closing errors if they occur.
+ fs.fchmod(fd, mode, function (err) {
+ fs.close(fd, function(err2) {
+ if (callback) callback(err || err2)
+ })
+ })
+ })
+ }
+
+ fs.lchmodSync = function (path, mode) {
+ var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
+
+ // prefer to return the chmod error, if one occurs,
+ // but still try to close, and report closing errors if they occur.
+ var threw = true
+ var ret
+ try {
+ ret = fs.fchmodSync(fd, mode)
+ threw = false
+ } finally {
+ if (threw) {
+ try {
+ fs.closeSync(fd)
+ } catch (er) {}
+ } else {
+ fs.closeSync(fd)
+ }
+ }
+ return ret
+ }
+ }
+
+ function patchLutimes (fs) {
+ if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) {
+ fs.lutimes = function (path, at, mt, cb) {
+ fs.open(path, constants.O_SYMLINK, function (er, fd) {
+ if (er) {
+ if (cb) cb(er)
+ return
+ }
+ fs.futimes(fd, at, mt, function (er) {
+ fs.close(fd, function (er2) {
+ if (cb) cb(er || er2)
+ })
+ })
+ })
+ }
+
+ fs.lutimesSync = function (path, at, mt) {
+ var fd = fs.openSync(path, constants.O_SYMLINK)
+ var ret
+ var threw = true
+ try {
+ ret = fs.futimesSync(fd, at, mt)
+ threw = false
+ } finally {
+ if (threw) {
+ try {
+ fs.closeSync(fd)
+ } catch (er) {}
+ } else {
+ fs.closeSync(fd)
+ }
+ }
+ return ret
+ }
+
+ } else if (fs.futimes) {
+ fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
+ fs.lutimesSync = function () {}
+ }
+ }
+
+ function chmodFix (orig) {
+ if (!orig) return orig
+ return function (target, mode, cb) {
+ return orig.call(fs, target, mode, function (er) {
+ if (chownErOk(er)) er = null
+ if (cb) cb.apply(this, arguments)
+ })
+ }
+ }
+
+ function chmodFixSync (orig) {
+ if (!orig) return orig
+ return function (target, mode) {
+ try {
+ return orig.call(fs, target, mode)
+ } catch (er) {
+ if (!chownErOk(er)) throw er
+ }
+ }
+ }
+
+
+ function chownFix (orig) {
+ if (!orig) return orig
+ return function (target, uid, gid, cb) {
+ return orig.call(fs, target, uid, gid, function (er) {
+ if (chownErOk(er)) er = null
+ if (cb) cb.apply(this, arguments)
+ })
+ }
+ }
+
+ function chownFixSync (orig) {
+ if (!orig) return orig
+ return function (target, uid, gid) {
+ try {
+ return orig.call(fs, target, uid, gid)
+ } catch (er) {
+ if (!chownErOk(er)) throw er
+ }
+ }
+ }
+
+ function statFix (orig) {
+ if (!orig) return orig
+ // Older versions of Node erroneously returned signed integers for
+ // uid + gid.
+ return function (target, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = null
+ }
+ function callback (er, stats) {
+ if (stats) {
+ if (stats.uid < 0) stats.uid += 0x100000000
+ if (stats.gid < 0) stats.gid += 0x100000000
+ }
+ if (cb) cb.apply(this, arguments)
+ }
+ return options ? orig.call(fs, target, options, callback)
+ : orig.call(fs, target, callback)
+ }
+ }
+
+ function statFixSync (orig) {
+ if (!orig) return orig
+ // Older versions of Node erroneously returned signed integers for
+ // uid + gid.
+ return function (target, options) {
+ var stats = options ? orig.call(fs, target, options)
+ : orig.call(fs, target)
+ if (stats) {
+ if (stats.uid < 0) stats.uid += 0x100000000
+ if (stats.gid < 0) stats.gid += 0x100000000
+ }
+ return stats;
+ }
+ }
+
+ // ENOSYS means that the fs doesn't support the op. Just ignore
+ // that, because it doesn't matter.
+ //
+ // if there's no getuid, or if getuid() is something other
+ // than 0, and the error is EINVAL or EPERM, then just ignore
+ // it.
+ //
+ // This specific case is a silent failure in cp, install, tar,
+ // and most other unix tools that manage permissions.
+ //
+ // When running as root, or if other types of errors are
+ // encountered, then it's strict.
+ function chownErOk (er) {
+ if (!er)
+ return true
+
+ if (er.code === "ENOSYS")
+ return true
+
+ var nonroot = !process.getuid || process.getuid() !== 0
+ if (nonroot) {
+ if (er.code === "EINVAL" || er.code === "EPERM")
+ return true
+ }
+
+ return false
+ }
+}
diff --git a/client/node_modules/has-property-descriptors/.eslintrc b/client/node_modules/has-property-descriptors/.eslintrc
new file mode 100644
index 0000000..2fcc002
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/.eslintrc
@@ -0,0 +1,13 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "func-name-matching": 0,
+ "id-length": 0,
+ "new-cap": [2, {
+ "capIsNewExceptions": ["GetIntrinsic"],
+ }],
+ },
+}
diff --git a/client/node_modules/has-property-descriptors/.github/FUNDING.yml b/client/node_modules/has-property-descriptors/.github/FUNDING.yml
new file mode 100644
index 0000000..817aacf
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/has-property-descriptors
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/has-property-descriptors/.nycrc b/client/node_modules/has-property-descriptors/.nycrc
new file mode 100644
index 0000000..bdd626c
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/has-property-descriptors/CHANGELOG.md b/client/node_modules/has-property-descriptors/CHANGELOG.md
new file mode 100644
index 0000000..2cec99c
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/CHANGELOG.md
@@ -0,0 +1,27 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.1](https://github.com/inspect-js/has-property-descriptors/compare/v1.0.0...v1.0.1) - 2023-10-20
+
+### Commits
+
+- [meta] use `npmignore` to autogenerate an npmignore file [`5bbf4da`](https://github.com/inspect-js/has-property-descriptors/commit/5bbf4dae1b58950d87bb3af508bee7513e640868)
+- [actions] update rebase action to use reusable workflow [`3a5585b`](https://github.com/inspect-js/has-property-descriptors/commit/3a5585bf74988f71a8f59e67a07d594e62c51fd8)
+- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`e5c1212`](https://github.com/inspect-js/has-property-descriptors/commit/e5c1212048a8fda549794c47863724ca60b89cae)
+- [Dev Deps] update `aud`, `tape` [`e942917`](https://github.com/inspect-js/has-property-descriptors/commit/e942917b6c2f7c090d5623048989cf20d0834ebf)
+- [Deps] update `get-intrinsic` [`f4a44ec`](https://github.com/inspect-js/has-property-descriptors/commit/f4a44ec6d94146fa6c550d3c15c31a2062c83ef4)
+- [Deps] update `get-intrinsic` [`eeb275b`](https://github.com/inspect-js/has-property-descriptors/commit/eeb275b473e5d72ca843b61ca25cfcb06a5d4300)
+
+## v1.0.0 - 2022-04-14
+
+### Commits
+
+- Initial implementation, tests [`303559f`](https://github.com/inspect-js/has-property-descriptors/commit/303559f2a72dfe7111573a1aec475ed4a184c35a)
+- Initial commit [`3a7ca2d`](https://github.com/inspect-js/has-property-descriptors/commit/3a7ca2dc49f1fff0279a28bb16265e7615e14749)
+- read me [`dd73dce`](https://github.com/inspect-js/has-property-descriptors/commit/dd73dce09d89d0f7a4a6e3b1e562a506f979a767)
+- npm init [`c1e6557`](https://github.com/inspect-js/has-property-descriptors/commit/c1e655779de632d68cb944c50da6b71bcb7b8c85)
+- Only apps should have lockfiles [`e72f7c6`](https://github.com/inspect-js/has-property-descriptors/commit/e72f7c68de534b2d273ee665f8b18d4ecc7f70b0)
diff --git a/client/node_modules/has-property-descriptors/LICENSE b/client/node_modules/has-property-descriptors/LICENSE
new file mode 100644
index 0000000..2e7b9a3
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Inspect JS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/has-property-descriptors/README.md b/client/node_modules/has-property-descriptors/README.md
new file mode 100644
index 0000000..d81fbd9
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/README.md
@@ -0,0 +1,43 @@
+# has-property-descriptors <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Does the environment have full property descriptor support? Handles IE 8's broken defineProperty/gOPD.
+
+## Example
+
+```js
+var hasPropertyDescriptors = require('has-property-descriptors');
+var assert = require('assert');
+
+assert.equal(hasPropertyDescriptors(), true); // will be `false` in IE 6-8, and ES5 engines
+
+// Arrays can not have their length `[[Defined]]` in some engines
+assert.equal(hasPropertyDescriptors.hasArrayLengthDefineBug(), false); // will be `true` in Firefox 4-22, and node v0.6
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/has-property-descriptors
+[npm-version-svg]: https://versionbadg.es/inspect-js/has-property-descriptors.svg
+[deps-svg]: https://david-dm.org/inspect-js/has-property-descriptors.svg
+[deps-url]: https://david-dm.org/inspect-js/has-property-descriptors
+[dev-deps-svg]: https://david-dm.org/inspect-js/has-property-descriptors/dev-status.svg
+[dev-deps-url]: https://david-dm.org/inspect-js/has-property-descriptors#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/has-property-descriptors.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/has-property-descriptors.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/has-property-descriptors.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=has-property-descriptors
+[codecov-image]: https://codecov.io/gh/inspect-js/has-property-descriptors/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/inspect-js/has-property-descriptors/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-property-descriptors
+[actions-url]: https://github.com/inspect-js/has-property-descriptors/actions
diff --git a/client/node_modules/has-property-descriptors/index.js b/client/node_modules/has-property-descriptors/index.js
new file mode 100644
index 0000000..8e30683
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/index.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
+
+var hasPropertyDescriptors = function hasPropertyDescriptors() {
+ if ($defineProperty) {
+ try {
+ $defineProperty({}, 'a', { value: 1 });
+ return true;
+ } catch (e) {
+ // IE 8 has a broken defineProperty
+ return false;
+ }
+ }
+ return false;
+};
+
+hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
+ // node v0.6 has a bug where array lengths can be Set but not Defined
+ if (!hasPropertyDescriptors()) {
+ return null;
+ }
+ try {
+ return $defineProperty([], 'length', { value: 1 }).length !== 1;
+ } catch (e) {
+ // In Firefox 4-22, defining length on an array throws an exception.
+ return true;
+ }
+};
+
+module.exports = hasPropertyDescriptors;
diff --git a/client/node_modules/has-property-descriptors/package.json b/client/node_modules/has-property-descriptors/package.json
new file mode 100644
index 0000000..831e018
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "has-property-descriptors",
+ "version": "1.0.1",
+ "description": "Does the environment have full property descriptor support? Handles IE 8's broken defineProperty/gOPD.",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "pretest": "npm run lint",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/inspect-js/has-property-descriptors.git"
+ },
+ "keywords": [
+ "property",
+ "descriptors",
+ "has",
+ "environment",
+ "env",
+ "defineProperty",
+ "getOwnPropertyDescriptor"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/inspect-js/has-property-descriptors/issues"
+ },
+ "homepage": "https://github.com/inspect-js/has-property-descriptors#readme",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.7.2"
+ },
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "testling": {
+ "files": "test/index.js"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/has-property-descriptors/test/index.js b/client/node_modules/has-property-descriptors/test/index.js
new file mode 100644
index 0000000..7f02bd3
--- /dev/null
+++ b/client/node_modules/has-property-descriptors/test/index.js
@@ -0,0 +1,57 @@
+'use strict';
+
+var test = require('tape');
+
+var hasPropertyDescriptors = require('../');
+
+var sentinel = {};
+
+test('hasPropertyDescriptors', function (t) {
+ t.equal(typeof hasPropertyDescriptors, 'function', 'is a function');
+ t.equal(typeof hasPropertyDescriptors.hasArrayLengthDefineBug, 'function', '`hasArrayLengthDefineBug` property is a function');
+
+ var yes = hasPropertyDescriptors();
+ t.test('property descriptors', { skip: !yes }, function (st) {
+ var o = { a: sentinel };
+
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(o, 'a'),
+ {
+ configurable: true,
+ enumerable: true,
+ value: sentinel,
+ writable: true
+ },
+ 'has expected property descriptor'
+ );
+
+ Object.defineProperty(o, 'a', { enumerable: false, writable: false });
+
+ st.deepEqual(
+ Object.getOwnPropertyDescriptor(o, 'a'),
+ {
+ configurable: true,
+ enumerable: false,
+ value: sentinel,
+ writable: false
+ },
+ 'has expected property descriptor after [[Define]]'
+ );
+
+ st.end();
+ });
+
+ var arrayBug = hasPropertyDescriptors.hasArrayLengthDefineBug();
+ t.test('defining array lengths', { skip: !yes || arrayBug }, function (st) {
+ var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays
+ st.equal(arr.length, 3, 'array starts with length 3');
+
+ Object.defineProperty(arr, 'length', { value: 5 });
+
+ st.equal(arr.length, 5, 'array ends with length 5');
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/client/node_modules/has-proto/.eslintrc b/client/node_modules/has-proto/.eslintrc
new file mode 100644
index 0000000..3b5d9e9
--- /dev/null
+++ b/client/node_modules/has-proto/.eslintrc
@@ -0,0 +1,5 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+}
diff --git a/client/node_modules/has-proto/.github/FUNDING.yml b/client/node_modules/has-proto/.github/FUNDING.yml
new file mode 100644
index 0000000..613705c
--- /dev/null
+++ b/client/node_modules/has-proto/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/has-proto
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/has-proto/CHANGELOG.md b/client/node_modules/has-proto/CHANGELOG.md
new file mode 100644
index 0000000..c350e80
--- /dev/null
+++ b/client/node_modules/has-proto/CHANGELOG.md
@@ -0,0 +1,23 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.1](https://github.com/inspect-js/has-proto/compare/v1.0.0...v1.0.1) - 2022-12-21
+
+### Commits
+
+- [meta] correct URLs and description [`ef34483`](https://github.com/inspect-js/has-proto/commit/ef34483ca0d35680f271b6b96e35526151b25dfc)
+- [patch] add an additional criteria [`e81959e`](https://github.com/inspect-js/has-proto/commit/e81959ed7c7a77fbf459f00cb4ef824f1099497f)
+- [Dev Deps] update `aud` [`2bec2c4`](https://github.com/inspect-js/has-proto/commit/2bec2c47b072b122ff5443fba0263f6dc649531f)
+
+## v1.0.0 - 2022-12-12
+
+### Commits
+
+- Initial implementation, tests, readme [`6886fea`](https://github.com/inspect-js/has-proto/commit/6886fea578f67daf69a7920b2eb7637ea6ebb0bc)
+- Initial commit [`99129c8`](https://github.com/inspect-js/has-proto/commit/99129c8f42471ac89cb681ba9cb9d52a583eb94f)
+- npm init [`2844ad8`](https://github.com/inspect-js/has-proto/commit/2844ad8e75b84d66a46765b3bab9d2e8ea692e10)
+- Only apps should have lockfiles [`c65bc5e`](https://github.com/inspect-js/has-proto/commit/c65bc5e40b9004463f7336d47c67245fb139a36a)
diff --git a/client/node_modules/has-proto/LICENSE b/client/node_modules/has-proto/LICENSE
new file mode 100644
index 0000000..2e7b9a3
--- /dev/null
+++ b/client/node_modules/has-proto/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Inspect JS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/has-proto/README.md b/client/node_modules/has-proto/README.md
new file mode 100644
index 0000000..1456765
--- /dev/null
+++ b/client/node_modules/has-proto/README.md
@@ -0,0 +1,38 @@
+# has-proto <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Does this environment have the ability to set the [[Prototype]] of an object on creation with `__proto__`?
+
+## Example
+
+```js
+var hasProto = require('has-proto');
+var assert = require('assert');
+
+assert.equal(typeof hasProto(), 'boolean');
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/has-proto
+[npm-version-svg]: https://versionbadg.es/inspect-js/has-proto.svg
+[deps-svg]: https://david-dm.org/inspect-js/has-proto.svg
+[deps-url]: https://david-dm.org/inspect-js/has-proto
+[dev-deps-svg]: https://david-dm.org/inspect-js/has-proto/dev-status.svg
+[dev-deps-url]: https://david-dm.org/inspect-js/has-proto#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/has-proto.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/has-proto.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/has-proto.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=has-proto
+[codecov-image]: https://codecov.io/gh/inspect-js/has-proto/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/inspect-js/has-proto/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-proto
+[actions-url]: https://github.com/inspect-js/has-proto/actions
diff --git a/client/node_modules/has-proto/index.js b/client/node_modules/has-proto/index.js
new file mode 100644
index 0000000..d3e4be4
--- /dev/null
+++ b/client/node_modules/has-proto/index.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var test = {
+ foo: {}
+};
+
+var $Object = Object;
+
+module.exports = function hasProto() {
+ return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);
+};
diff --git a/client/node_modules/has-proto/package.json b/client/node_modules/has-proto/package.json
new file mode 100644
index 0000000..706f951
--- /dev/null
+++ b/client/node_modules/has-proto/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "has-proto",
+ "version": "1.0.1",
+ "description": "Does this environment have the ability to get the [[Prototype]] of an object on creation with `__proto__`?",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "lint": "eslint --ext=js,mjs .",
+ "pretest": "npm run lint",
+ "tests-only": "tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/inspect-js/has-proto.git"
+ },
+ "keywords": [
+ "prototype",
+ "proto",
+ "set",
+ "get",
+ "__proto__",
+ "getPrototypeOf",
+ "setPrototypeOf",
+ "has"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/inspect-js/has-proto/issues"
+ },
+ "homepage": "https://github.com/inspect-js/has-proto#readme",
+ "testling": {
+ "files": "test/index.js"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.2",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/client/node_modules/has-proto/test/index.js b/client/node_modules/has-proto/test/index.js
new file mode 100644
index 0000000..5da1a3a
--- /dev/null
+++ b/client/node_modules/has-proto/test/index.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var test = require('tape');
+var hasProto = require('../');
+
+test('hasProto', function (t) {
+ var result = hasProto();
+ t.equal(typeof result, 'boolean', 'returns a boolean (' + result + ')');
+
+ var obj = { __proto__: null };
+ if (result) {
+ t.notOk('toString' in obj, 'null object lacks toString');
+ } else {
+ t.ok('toString' in obj, 'without proto, null object has toString');
+ t.equal(obj.__proto__, null); // eslint-disable-line no-proto
+ }
+
+ t.end();
+});
diff --git a/client/node_modules/has-symbols/.eslintrc b/client/node_modules/has-symbols/.eslintrc
new file mode 100644
index 0000000..2d9a66a
--- /dev/null
+++ b/client/node_modules/has-symbols/.eslintrc
@@ -0,0 +1,11 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "max-statements-per-line": [2, { "max": 2 }],
+ "no-magic-numbers": 0,
+ "multiline-comment-style": 0,
+ }
+}
diff --git a/client/node_modules/has-symbols/.github/FUNDING.yml b/client/node_modules/has-symbols/.github/FUNDING.yml
new file mode 100644
index 0000000..04cf87e
--- /dev/null
+++ b/client/node_modules/has-symbols/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/has-symbols
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/client/node_modules/has-symbols/.nycrc b/client/node_modules/has-symbols/.nycrc
new file mode 100644
index 0000000..bdd626c
--- /dev/null
+++ b/client/node_modules/has-symbols/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/has-symbols/CHANGELOG.md b/client/node_modules/has-symbols/CHANGELOG.md
new file mode 100644
index 0000000..cd532a2
--- /dev/null
+++ b/client/node_modules/has-symbols/CHANGELOG.md
@@ -0,0 +1,75 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.3](https://github.com/inspect-js/has-symbols/compare/v1.0.2...v1.0.3) - 2022-03-01
+
+### Commits
+
+- [actions] use `node/install` instead of `node/run`; use `codecov` action [`518b28f`](https://github.com/inspect-js/has-symbols/commit/518b28f6c5a516cbccae30794e40aa9f738b1693)
+- [meta] add `bugs` and `homepage` fields; reorder package.json [`c480b13`](https://github.com/inspect-js/has-symbols/commit/c480b13fd6802b557e1cef9749872cb5fdeef744)
+- [actions] reuse common workflows [`01d0ee0`](https://github.com/inspect-js/has-symbols/commit/01d0ee0a8d97c0947f5edb73eb722027a77b2b07)
+- [actions] update codecov uploader [`6424ebe`](https://github.com/inspect-js/has-symbols/commit/6424ebe86b2c9c7c3d2e9bd4413a4e4f168cb275)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`dfa7e7f`](https://github.com/inspect-js/has-symbols/commit/dfa7e7ff38b594645d8c8222aab895157fa7e282)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`0c8d436`](https://github.com/inspect-js/has-symbols/commit/0c8d43685c45189cea9018191d4fd7eca91c9d02)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`9026554`](https://github.com/inspect-js/has-symbols/commit/902655442a1bf88e72b42345494ef0c60f5d36ab)
+- [readme] add actions and codecov badges [`eaa9682`](https://github.com/inspect-js/has-symbols/commit/eaa9682f990f481d3acf7a1c7600bec36f7b3adc)
+- [Dev Deps] update `eslint`, `tape` [`bc7a3ba`](https://github.com/inspect-js/has-symbols/commit/bc7a3ba46f27b7743f8a2579732d59d1b9ac791e)
+- [Dev Deps] update `eslint`, `auto-changelog` [`0ace00a`](https://github.com/inspect-js/has-symbols/commit/0ace00af08a88cdd1e6ce0d60357d941c60c2d9f)
+- [meta] use `prepublishOnly` script for npm 7+ [`093f72b`](https://github.com/inspect-js/has-symbols/commit/093f72bc2b0ed00c781f444922a5034257bf561d)
+- [Tests] test on all 16 minors [`9b80d3d`](https://github.com/inspect-js/has-symbols/commit/9b80d3d9102529f04c20ec5b1fcc6e38426c6b03)
+
+## [v1.0.2](https://github.com/inspect-js/has-symbols/compare/v1.0.1...v1.0.2) - 2021-02-27
+
+### Fixed
+
+- [Fix] use a universal way to get the original Symbol [`#11`](https://github.com/inspect-js/has-symbols/issues/11)
+
+### Commits
+
+- [Tests] migrate tests to Github Actions [`90ae798`](https://github.com/inspect-js/has-symbols/commit/90ae79820bdfe7bc703d67f5f3c5e205f98556d3)
+- [meta] do not publish github action workflow files [`29e60a1`](https://github.com/inspect-js/has-symbols/commit/29e60a1b7c25c7f1acf7acff4a9320d0d10c49b4)
+- [Tests] run `nyc` on all tests [`8476b91`](https://github.com/inspect-js/has-symbols/commit/8476b915650d360915abe2522505abf4b0e8f0ae)
+- [readme] fix repo URLs, remove defunct badges [`126288e`](https://github.com/inspect-js/has-symbols/commit/126288ecc1797c0a40247a6b78bcb2e0bc5d7036)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `core-js`, `get-own-property-symbols` [`d84bdfa`](https://github.com/inspect-js/has-symbols/commit/d84bdfa48ac5188abbb4904b42614cd6c030940a)
+- [Tests] fix linting errors [`0df3070`](https://github.com/inspect-js/has-symbols/commit/0df3070b981b6c9f2ee530c09189a7f5c6def839)
+- [actions] add "Allow Edits" workflow [`1e6bc29`](https://github.com/inspect-js/has-symbols/commit/1e6bc29b188f32b9648657b07eda08504be5aa9c)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`36cea2a`](https://github.com/inspect-js/has-symbols/commit/36cea2addd4e6ec435f35a2656b4e9ef82498e9b)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1278338`](https://github.com/inspect-js/has-symbols/commit/127833801865fbc2cc8979beb9ca869c7bfe8222)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1493254`](https://github.com/inspect-js/has-symbols/commit/1493254eda13db5fb8fc5e4a3e8324b3d196029d)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js` [`b090bf2`](https://github.com/inspect-js/has-symbols/commit/b090bf214d3679a30edc1e2d729d466ab5183e1d)
+- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`4addb7a`](https://github.com/inspect-js/has-symbols/commit/4addb7ab4dc73f927ae99928d68817554fc21dc0)
+- [Dev Deps] update `auto-changelog`, `tape` [`81d0baf`](https://github.com/inspect-js/has-symbols/commit/81d0baf3816096a89a8558e8043895f7a7d10d8b)
+- [Dev Deps] update `auto-changelog`; add `aud` [`1a4e561`](https://github.com/inspect-js/has-symbols/commit/1a4e5612c25d91c3a03d509721d02630bc4fe3da)
+- [readme] remove unused testling URLs [`3000941`](https://github.com/inspect-js/has-symbols/commit/3000941f958046e923ed8152edb1ef4a599e6fcc)
+- [Tests] only audit prod deps [`692e974`](https://github.com/inspect-js/has-symbols/commit/692e9743c912410e9440207631a643a34b4741a1)
+- [Dev Deps] update `@ljharb/eslint-config` [`51c946c`](https://github.com/inspect-js/has-symbols/commit/51c946c7f6baa793ec5390bb5a45cdce16b4ba76)
+
+## [v1.0.1](https://github.com/inspect-js/has-symbols/compare/v1.0.0...v1.0.1) - 2019-11-16
+
+### Commits
+
+- [Tests] use shared travis-ci configs [`ce396c9`](https://github.com/inspect-js/has-symbols/commit/ce396c9419ff11c43d0da5d05cdbb79f7fb42229)
+- [Tests] up to `node` `v12.4`, `v11.15`, `v10.15`, `v9.11`, `v8.15`, `v7.10`, `v6.17`, `v4.9`; use `nvm install-latest-npm` [`0690732`](https://github.com/inspect-js/has-symbols/commit/0690732801f47ab429f39ba1962f522d5c462d6b)
+- [meta] add `auto-changelog` [`2163d0b`](https://github.com/inspect-js/has-symbols/commit/2163d0b7f36343076b8f947cd1667dd1750f26fc)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `safe-publish-latest`, `tape` [`8e0951f`](https://github.com/inspect-js/has-symbols/commit/8e0951f1a7a2e52068222b7bb73511761e6e4d9c)
+- [actions] add automatic rebasing / merge commit blocking [`b09cdb7`](https://github.com/inspect-js/has-symbols/commit/b09cdb7cd7ee39e7a769878f56e2d6066f5ccd1d)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `core-js`, `get-own-property-symbols`, `tape` [`1dd42cd`](https://github.com/inspect-js/has-symbols/commit/1dd42cd86183ed0c50f99b1062345c458babca91)
+- [meta] create FUNDING.yml [`aa57a17`](https://github.com/inspect-js/has-symbols/commit/aa57a17b19708906d1927f821ea8e73394d84ca4)
+- Only apps should have lockfiles [`a2d8bea`](https://github.com/inspect-js/has-symbols/commit/a2d8bea23a97d15c09eaf60f5b107fcf9a4d57aa)
+- [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops [`9e96cb7`](https://github.com/inspect-js/has-symbols/commit/9e96cb783746cbed0c10ef78e599a8eaa7ebe193)
+- [meta] add `funding` field [`a0b32cf`](https://github.com/inspect-js/has-symbols/commit/a0b32cf68e803f963c1639b6d47b0a9d6440bab0)
+- [Dev Deps] update `safe-publish-latest` [`cb9f0a5`](https://github.com/inspect-js/has-symbols/commit/cb9f0a521a3a1790f1064d437edd33bb6c3d6af0)
+
+## v1.0.0 - 2016-09-19
+
+### Commits
+
+- Tests. [`ecb6eb9`](https://github.com/inspect-js/has-symbols/commit/ecb6eb934e4883137f3f93b965ba5e0a98df430d)
+- package.json [`88a337c`](https://github.com/inspect-js/has-symbols/commit/88a337cee0864a0da35f5d19e69ff0ef0150e46a)
+- Initial commit [`42e1e55`](https://github.com/inspect-js/has-symbols/commit/42e1e5502536a2b8ac529c9443984acd14836b1c)
+- Initial implementation. [`33f5cc6`](https://github.com/inspect-js/has-symbols/commit/33f5cc6cdff86e2194b081ee842bfdc63caf43fb)
+- read me [`01f1170`](https://github.com/inspect-js/has-symbols/commit/01f1170188ff7cb1558aa297f6ba5b516c6d7b0c)
diff --git a/client/node_modules/has-symbols/LICENSE b/client/node_modules/has-symbols/LICENSE
new file mode 100644
index 0000000..df31cbf
--- /dev/null
+++ b/client/node_modules/has-symbols/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/has-symbols/README.md b/client/node_modules/has-symbols/README.md
new file mode 100644
index 0000000..33905f0
--- /dev/null
+++ b/client/node_modules/has-symbols/README.md
@@ -0,0 +1,46 @@
+# has-symbols <sup>[![Version Badge][2]][1]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][5]][6]
+[![dev dependency status][7]][8]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][11]][1]
+
+Determine if the JS environment has Symbol support. Supports spec, or shams.
+
+## Example
+
+```js
+var hasSymbols = require('has-symbols');
+
+hasSymbols() === true; // if the environment has native Symbol support. Not polyfillable, not forgeable.
+
+var hasSymbolsKinda = require('has-symbols/shams');
+hasSymbolsKinda() === true; // if the environment has a Symbol sham that mostly follows the spec.
+```
+
+## Supported Symbol shams
+ - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols)
+ - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js)
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[1]: https://npmjs.org/package/has-symbols
+[2]: https://versionbadg.es/inspect-js/has-symbols.svg
+[5]: https://david-dm.org/inspect-js/has-symbols.svg
+[6]: https://david-dm.org/inspect-js/has-symbols
+[7]: https://david-dm.org/inspect-js/has-symbols/dev-status.svg
+[8]: https://david-dm.org/inspect-js/has-symbols#info=devDependencies
+[11]: https://nodei.co/npm/has-symbols.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/has-symbols.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/has-symbols.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=has-symbols
+[codecov-image]: https://codecov.io/gh/inspect-js/has-symbols/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/inspect-js/has-symbols/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-symbols
+[actions-url]: https://github.com/inspect-js/has-symbols/actions
diff --git a/client/node_modules/has-symbols/index.js b/client/node_modules/has-symbols/index.js
new file mode 100644
index 0000000..17044fa
--- /dev/null
+++ b/client/node_modules/has-symbols/index.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var origSymbol = typeof Symbol !== 'undefined' && Symbol;
+var hasSymbolSham = require('./shams');
+
+module.exports = function hasNativeSymbols() {
+ if (typeof origSymbol !== 'function') { return false; }
+ if (typeof Symbol !== 'function') { return false; }
+ if (typeof origSymbol('foo') !== 'symbol') { return false; }
+ if (typeof Symbol('bar') !== 'symbol') { return false; }
+
+ return hasSymbolSham();
+};
diff --git a/client/node_modules/has-symbols/package.json b/client/node_modules/has-symbols/package.json
new file mode 100644
index 0000000..fe7004a
--- /dev/null
+++ b/client/node_modules/has-symbols/package.json
@@ -0,0 +1,101 @@
+{
+ "name": "has-symbols",
+ "version": "1.0.3",
+ "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.",
+ "main": "index.js",
+ "scripts": {
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "pretest": "npm run --silent lint",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "tests-only": "npm run test:stock && npm run test:staging && npm run test:shams",
+ "test:stock": "nyc node test",
+ "test:staging": "nyc node --harmony --es-staging test",
+ "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs",
+ "test:shams:corejs": "nyc node test/shams/core-js.js",
+ "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js",
+ "lint": "eslint --ext=js,mjs .",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/inspect-js/has-symbols.git"
+ },
+ "keywords": [
+ "Symbol",
+ "symbols",
+ "typeof",
+ "sham",
+ "polyfill",
+ "native",
+ "core-js",
+ "ES6"
+ ],
+ "author": {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ },
+ "contributors": [
+ {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ }
+ ],
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/has-symbols/issues"
+ },
+ "homepage": "https://github.com/ljharb/has-symbols#readme",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^20.2.3",
+ "aud": "^2.0.0",
+ "auto-changelog": "^2.4.0",
+ "core-js": "^2.6.12",
+ "eslint": "=8.8.0",
+ "get-own-property-symbols": "^0.9.5",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.5.2"
+ },
+ "testling": {
+ "files": "test/index.js",
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "greenkeeper": {
+ "ignore": [
+ "core-js"
+ ]
+ }
+}
diff --git a/client/node_modules/has-symbols/shams.js b/client/node_modules/has-symbols/shams.js
new file mode 100644
index 0000000..1285210
--- /dev/null
+++ b/client/node_modules/has-symbols/shams.js
@@ -0,0 +1,42 @@
+'use strict';
+
+/* eslint complexity: [2, 18], max-statements: [2, 33] */
+module.exports = function hasSymbols() {
+ if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
+ if (typeof Symbol.iterator === 'symbol') { return true; }
+
+ var obj = {};
+ var sym = Symbol('test');
+ var symObj = Object(sym);
+ if (typeof sym === 'string') { return false; }
+
+ if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
+ if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
+
+ // temp disabled per https://github.com/ljharb/object.assign/issues/17
+ // if (sym instanceof Symbol) { return false; }
+ // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
+ // if (!(symObj instanceof Symbol)) { return false; }
+
+ // if (typeof Symbol.prototype.toString !== 'function') { return false; }
+ // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
+
+ var symVal = 42;
+ obj[sym] = symVal;
+ for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
+ if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
+
+ if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
+
+ var syms = Object.getOwnPropertySymbols(obj);
+ if (syms.length !== 1 || syms[0] !== sym) { return false; }
+
+ if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
+
+ if (typeof Object.getOwnPropertyDescriptor === 'function') {
+ var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
+ if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
+ }
+
+ return true;
+};
diff --git a/client/node_modules/has-symbols/test/index.js b/client/node_modules/has-symbols/test/index.js
new file mode 100644
index 0000000..352129c
--- /dev/null
+++ b/client/node_modules/has-symbols/test/index.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var test = require('tape');
+var hasSymbols = require('../');
+var runSymbolTests = require('./tests');
+
+test('interface', function (t) {
+ t.equal(typeof hasSymbols, 'function', 'is a function');
+ t.equal(typeof hasSymbols(), 'boolean', 'returns a boolean');
+ t.end();
+});
+
+test('Symbols are supported', { skip: !hasSymbols() }, function (t) {
+ runSymbolTests(t);
+ t.end();
+});
+
+test('Symbols are not supported', { skip: hasSymbols() }, function (t) {
+ t.equal(typeof Symbol, 'undefined', 'global Symbol is undefined');
+ t.equal(typeof Object.getOwnPropertySymbols, 'undefined', 'Object.getOwnPropertySymbols does not exist');
+ t.end();
+});
diff --git a/client/node_modules/has-symbols/test/shams/core-js.js b/client/node_modules/has-symbols/test/shams/core-js.js
new file mode 100644
index 0000000..df5365c
--- /dev/null
+++ b/client/node_modules/has-symbols/test/shams/core-js.js
@@ -0,0 +1,28 @@
+'use strict';
+
+var test = require('tape');
+
+if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') {
+ test('has native Symbol support', function (t) {
+ t.equal(typeof Symbol, 'function');
+ t.equal(typeof Symbol(), 'symbol');
+ t.end();
+ });
+ return;
+}
+
+var hasSymbols = require('../../shams');
+
+test('polyfilled Symbols', function (t) {
+ /* eslint-disable global-require */
+ t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling');
+ require('core-js/fn/symbol');
+ require('core-js/fn/symbol/to-string-tag');
+
+ require('../tests')(t);
+
+ var hasSymbolsAfter = hasSymbols();
+ t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling');
+ /* eslint-enable global-require */
+ t.end();
+});
diff --git a/client/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/client/node_modules/has-symbols/test/shams/get-own-property-symbols.js
new file mode 100644
index 0000000..9191b24
--- /dev/null
+++ b/client/node_modules/has-symbols/test/shams/get-own-property-symbols.js
@@ -0,0 +1,28 @@
+'use strict';
+
+var test = require('tape');
+
+if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') {
+ test('has native Symbol support', function (t) {
+ t.equal(typeof Symbol, 'function');
+ t.equal(typeof Symbol(), 'symbol');
+ t.end();
+ });
+ return;
+}
+
+var hasSymbols = require('../../shams');
+
+test('polyfilled Symbols', function (t) {
+ /* eslint-disable global-require */
+ t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling');
+
+ require('get-own-property-symbols');
+
+ require('../tests')(t);
+
+ var hasSymbolsAfter = hasSymbols();
+ t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling');
+ /* eslint-enable global-require */
+ t.end();
+});
diff --git a/client/node_modules/has-symbols/test/tests.js b/client/node_modules/has-symbols/test/tests.js
new file mode 100644
index 0000000..89edd12
--- /dev/null
+++ b/client/node_modules/has-symbols/test/tests.js
@@ -0,0 +1,56 @@
+'use strict';
+
+// eslint-disable-next-line consistent-return
+module.exports = function runSymbolTests(t) {
+ t.equal(typeof Symbol, 'function', 'global Symbol is a function');
+
+ if (typeof Symbol !== 'function') { return false; }
+
+ t.notEqual(Symbol(), Symbol(), 'two symbols are not equal');
+
+ /*
+ t.equal(
+ Symbol.prototype.toString.call(Symbol('foo')),
+ Symbol.prototype.toString.call(Symbol('foo')),
+ 'two symbols with the same description stringify the same'
+ );
+ */
+
+ /*
+ var foo = Symbol('foo');
+
+ t.notEqual(
+ String(foo),
+ String(Symbol('bar')),
+ 'two symbols with different descriptions do not stringify the same'
+ );
+ */
+
+ t.equal(typeof Symbol.prototype.toString, 'function', 'Symbol#toString is a function');
+ // t.equal(String(foo), Symbol.prototype.toString.call(foo), 'Symbol#toString equals String of the same symbol');
+
+ t.equal(typeof Object.getOwnPropertySymbols, 'function', 'Object.getOwnPropertySymbols is a function');
+
+ var obj = {};
+ var sym = Symbol('test');
+ var symObj = Object(sym);
+ t.notEqual(typeof sym, 'string', 'Symbol is not a string');
+ t.equal(Object.prototype.toString.call(sym), '[object Symbol]', 'symbol primitive Object#toStrings properly');
+ t.equal(Object.prototype.toString.call(symObj), '[object Symbol]', 'symbol primitive Object#toStrings properly');
+
+ var symVal = 42;
+ obj[sym] = symVal;
+ // eslint-disable-next-line no-restricted-syntax
+ for (sym in obj) { t.fail('symbol property key was found in for..in of object'); }
+
+ t.deepEqual(Object.keys(obj), [], 'no enumerable own keys on symbol-valued object');
+ t.deepEqual(Object.getOwnPropertyNames(obj), [], 'no own names on symbol-valued object');
+ t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'one own symbol on symbol-valued object');
+ t.equal(Object.prototype.propertyIsEnumerable.call(obj, sym), true, 'symbol is enumerable');
+ t.deepEqual(Object.getOwnPropertyDescriptor(obj, sym), {
+ configurable: true,
+ enumerable: true,
+ value: 42,
+ writable: true
+ }, 'property descriptor is correct');
+};
diff --git a/client/node_modules/hasown/.eslintrc b/client/node_modules/hasown/.eslintrc
new file mode 100644
index 0000000..3b5d9e9
--- /dev/null
+++ b/client/node_modules/hasown/.eslintrc
@@ -0,0 +1,5 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+}
diff --git a/client/node_modules/hasown/.github/FUNDING.yml b/client/node_modules/hasown/.github/FUNDING.yml
new file mode 100644
index 0000000..d68c8b7
--- /dev/null
+++ b/client/node_modules/hasown/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/hasown
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with a single custom sponsorship URL
diff --git a/client/node_modules/hasown/.nycrc b/client/node_modules/hasown/.nycrc
new file mode 100644
index 0000000..1826526
--- /dev/null
+++ b/client/node_modules/hasown/.nycrc
@@ -0,0 +1,13 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "lines": 86,
+ "statements": 85.93,
+ "functions": 82.43,
+ "branches": 76.06,
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/client/node_modules/hasown/CHANGELOG.md b/client/node_modules/hasown/CHANGELOG.md
new file mode 100644
index 0000000..1cbd1f5
--- /dev/null
+++ b/client/node_modules/hasown/CHANGELOG.md
@@ -0,0 +1,20 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v2.0.0](https://github.com/inspect-js/hasOwn/compare/v1.0.1...v2.0.0) - 2023-10-19
+
+### Commits
+
+- revamped implementation, tests, readme [`72bf8b3`](https://github.com/inspect-js/hasOwn/commit/72bf8b338e77a638f0a290c63ffaed18339c36b4)
+- [meta] revamp package.json [`079775f`](https://github.com/inspect-js/hasOwn/commit/079775fb1ec72c1c6334069593617a0be3847458)
+- Only apps should have lockfiles [`6640e23`](https://github.com/inspect-js/hasOwn/commit/6640e233d1bb8b65260880f90787637db157d215)
+
+## v1.0.1 - 2023-10-10
+
+### Commits
+
+- Initial commit [`8dbfde6`](https://github.com/inspect-js/hasOwn/commit/8dbfde6e8fb0ebb076fab38d138f2984eb340a62)
diff --git a/client/node_modules/hasown/LICENSE b/client/node_modules/hasown/LICENSE
new file mode 100644
index 0000000..0314929
--- /dev/null
+++ b/client/node_modules/hasown/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Jordan Harband and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/hasown/README.md b/client/node_modules/hasown/README.md
new file mode 100644
index 0000000..f759b8a
--- /dev/null
+++ b/client/node_modules/hasown/README.md
@@ -0,0 +1,40 @@
+# hasown <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+A robust, ES3 compatible, "has own property" predicate.
+
+## Example
+
+```js
+const assert = require('assert');
+const hasOwn = require('hasown');
+
+assert.equal(hasOwn({}, 'toString'), false);
+assert.equal(hasOwn([], 'length'), true);
+assert.equal(hasOwn({ a: 42 }, 'a'), true);
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/hasown
+[npm-version-svg]: https://versionbadg.es/inspect-js/hasown.svg
+[deps-svg]: https://david-dm.org/inspect-js/hasOwn.svg
+[deps-url]: https://david-dm.org/inspect-js/hasOwn
+[dev-deps-svg]: https://david-dm.org/inspect-js/hasOwn/dev-status.svg
+[dev-deps-url]: https://david-dm.org/inspect-js/hasOwn#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/hasown.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/hasown.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/hasown.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=hasown
+[codecov-image]: https://codecov.io/gh/inspect-js/hasOwn/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/inspect-js/hasOwn/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/hasOwn
+[actions-url]: https://github.com/inspect-js/hasOwn/actions
diff --git a/client/node_modules/hasown/index.d.ts b/client/node_modules/hasown/index.d.ts
new file mode 100644
index 0000000..caf4a06
--- /dev/null
+++ b/client/node_modules/hasown/index.d.ts
@@ -0,0 +1,3 @@
+declare const _exports: (o: {}, p: PropertyKey) => p is never;
+export = _exports;
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/client/node_modules/hasown/index.d.ts.map b/client/node_modules/hasown/index.d.ts.map
new file mode 100644
index 0000000..d40068a
--- /dev/null
+++ b/client/node_modules/hasown/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"4BAMe,EAAE,KAAK,WAAW"} \ No newline at end of file
diff --git a/client/node_modules/hasown/index.js b/client/node_modules/hasown/index.js
new file mode 100644
index 0000000..3b91618
--- /dev/null
+++ b/client/node_modules/hasown/index.js
@@ -0,0 +1,8 @@
+'use strict';
+
+var call = Function.prototype.call;
+var $hasOwn = Object.prototype.hasOwnProperty;
+var bind = require('function-bind');
+
+/** @type {(o: {}, p: PropertyKey) => p is keyof o} */
+module.exports = bind.call(call, $hasOwn);
diff --git a/client/node_modules/hasown/package.json b/client/node_modules/hasown/package.json
new file mode 100644
index 0000000..9545006
--- /dev/null
+++ b/client/node_modules/hasown/package.json
@@ -0,0 +1,91 @@
+{
+ "name": "hasown",
+ "version": "2.0.0",
+ "description": "A robust, ES3 compatible, \"has own property\" predicate.",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated && npm run emit-types",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "npm run tsc",
+ "preemit-types": "rm -f *.ts *.ts.map test/*.ts test/*.ts.map",
+ "emit-types": "npm run tsc -- --noEmit false --emitDeclarationOnly",
+ "pretest": "npm run lint",
+ "tsc": "tsc -p .",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/inspect-js/hasOwn.git"
+ },
+ "keywords": [
+ "has",
+ "hasOwnProperty",
+ "hasOwn",
+ "has-own",
+ "own",
+ "has",
+ "property",
+ "in",
+ "javascript",
+ "ecmascript"
+ ],
+ "author": "Jordan Harband <ljharb@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/inspect-js/hasOwn/issues"
+ },
+ "homepage": "https://github.com/inspect-js/hasOwn#readme",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.1.0",
+ "@types/function-bind": "^1.1.9",
+ "@types/mock-property": "^1.0.1",
+ "@types/tape": "^5.6.3",
+ "aud": "^2.0.3",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "mock-property": "^1.0.2",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.7.1",
+ "typescript": "^5.3.0-dev.20231019"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "testling": {
+ "files": "test/index.js"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows",
+ "test",
+ "!*.d.ts",
+ "!*.d.ts.map"
+ ]
+ }
+}
diff --git a/client/node_modules/hasown/tsconfig.json b/client/node_modules/hasown/tsconfig.json
new file mode 100644
index 0000000..fdab34f
--- /dev/null
+++ b/client/node_modules/hasown/tsconfig.json
@@ -0,0 +1,49 @@
+{
+ "compilerOptions": {
+ /* Visit https://aka.ms/tsconfig to read more about this file */
+
+ /* Projects */
+
+ /* Language and Environment */
+ "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
+ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+ "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
+
+ /* Modules */
+ "module": "commonjs", /* Specify what module code is generated. */
+ // "rootDir": "./", /* Specify the root folder within your source files. */
+ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+ "typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */
+ "resolveJsonModule": true, /* Enable importing .json files. */
+ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
+
+ /* JavaScript Support */
+ "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+ "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
+
+ /* Emit */
+ "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
+ "declarationMap": true, /* Create sourcemaps for d.ts files. */
+ "noEmit": true, /* Disable emitting files from a compilation. */
+
+ /* Interop Constraints */
+ "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
+
+ /* Type Checking */
+ "strict": true, /* Enable all strict type-checking options. */
+
+ /* Completeness */
+ //"skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "exclude": [
+ "coverage"
+ ]
+}
diff --git a/client/node_modules/http-cache-semantics/LICENSE b/client/node_modules/http-cache-semantics/LICENSE
new file mode 100644
index 0000000..493d2ea
--- /dev/null
+++ b/client/node_modules/http-cache-semantics/LICENSE
@@ -0,0 +1,9 @@
+Copyright 2016-2018 Kornel Lesiński
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/http-cache-semantics/README.md b/client/node_modules/http-cache-semantics/README.md
new file mode 100644
index 0000000..685aa55
--- /dev/null
+++ b/client/node_modules/http-cache-semantics/README.md
@@ -0,0 +1,203 @@
+# Can I cache this? [![Build Status](https://travis-ci.org/kornelski/http-cache-semantics.svg?branch=master)](https://travis-ci.org/kornelski/http-cache-semantics)
+
+`CachePolicy` tells when responses can be reused from a cache, taking into account [HTTP RFC 7234](http://httpwg.org/specs/rfc7234.html) rules for user agents and shared caches.
+It also implements [RFC 5861](https://tools.ietf.org/html/rfc5861), implementing `stale-if-error` and `stale-while-revalidate`.
+It's aware of many tricky details such as the `Vary` header, proxy revalidation, and authenticated responses.
+
+## Usage
+
+Cacheability of an HTTP response depends on how it was requested, so both `request` and `response` are required to create the policy.
+
+```js
+const policy = new CachePolicy(request, response, options);
+
+if (!policy.storable()) {
+ // throw the response away, it's not usable at all
+ return;
+}
+
+// Cache the data AND the policy object in your cache
+// (this is pseudocode, roll your own cache (lru-cache package works))
+letsPretendThisIsSomeCache.set(
+ request.url,
+ { policy, response },
+ policy.timeToLive()
+);
+```
+
+```js
+// And later, when you receive a new request:
+const { policy, response } = letsPretendThisIsSomeCache.get(newRequest.url);
+
+// It's not enough that it exists in the cache, it has to match the new request, too:
+if (policy && policy.satisfiesWithoutRevalidation(newRequest)) {
+ // OK, the previous response can be used to respond to the `newRequest`.
+ // Response headers have to be updated, e.g. to add Age and remove uncacheable headers.
+ response.headers = policy.responseHeaders();
+ return response;
+}
+```
+
+It may be surprising, but it's not enough for an HTTP response to be [fresh](#yo-fresh) to satisfy a request. It may need to match request headers specified in `Vary`. Even a matching fresh response may still not be usable if the new request restricted cacheability, etc.
+
+The key method is `satisfiesWithoutRevalidation(newRequest)`, which checks whether the `newRequest` is compatible with the original request and whether all caching conditions are met.
+
+### Constructor options
+
+Request and response must have a `headers` property with all header names in lower case. `url`, `status` and `method` are optional (defaults are any URL, status `200`, and `GET` method).
+
+```js
+const request = {
+ url: '/',
+ method: 'GET',
+ headers: {
+ accept: '*/*',
+ },
+};
+
+const response = {
+ status: 200,
+ headers: {
+ 'cache-control': 'public, max-age=7234',
+ },
+};
+
+const options = {
+ shared: true,
+ cacheHeuristic: 0.1,
+ immutableMinTimeToLive: 24 * 3600 * 1000, // 24h
+ ignoreCargoCult: false,
+};
+```
+
+If `options.shared` is `true` (default), then the response is evaluated from a perspective of a shared cache (i.e. `private` is not cacheable and `s-maxage` is respected). If `options.shared` is `false`, then the response is evaluated from a perspective of a single-user cache (i.e. `private` is cacheable and `s-maxage` is ignored). `shared: true` is recommended for HTTP clients.
+
+`options.cacheHeuristic` is a fraction of response's age that is used as a fallback cache duration. The default is 0.1 (10%), e.g. if a file hasn't been modified for 100 days, it'll be cached for 100\*0.1 = 10 days.
+
+`options.immutableMinTimeToLive` is a number of milliseconds to assume as the default time to cache responses with `Cache-Control: immutable`. Note that [per RFC](http://httpwg.org/http-extensions/immutable.html) these can become stale, so `max-age` still overrides the default.
+
+If `options.ignoreCargoCult` is true, common anti-cache directives will be completely ignored if the non-standard `pre-check` and `post-check` directives are present. These two useless directives are most commonly found in bad StackOverflow answers and PHP's "session limiter" defaults.
+
+### `storable()`
+
+Returns `true` if the response can be stored in a cache. If it's `false` then you MUST NOT store either the request or the response.
+
+### `satisfiesWithoutRevalidation(newRequest)`
+
+This is the most important method. Use this method to check whether the cached response is still fresh in the context of the new request.
+
+If it returns `true`, then the given `request` matches the original response this cache policy has been created with, and the response can be reused without contacting the server. Note that the old response can't be returned without being updated, see `responseHeaders()`.
+
+If it returns `false`, then the response may not be matching at all (e.g. it's for a different URL or method), or may require to be refreshed first (see `revalidationHeaders()`).
+
+### `responseHeaders()`
+
+Returns updated, filtered set of response headers to return to clients receiving the cached response. This function is necessary, because proxies MUST always remove hop-by-hop headers (such as `TE` and `Connection`) and update response's `Age` to avoid doubling cache time.
+
+```js
+cachedResponse.headers = cachePolicy.responseHeaders(cachedResponse);
+```
+
+### `timeToLive()`
+
+Returns approximate time in _milliseconds_ until the response becomes stale (i.e. not fresh).
+
+After that time (when `timeToLive() <= 0`) the response might not be usable without revalidation. However, there are exceptions, e.g. a client can explicitly allow stale responses, so always check with `satisfiesWithoutRevalidation()`.
+`stale-if-error` and `stale-while-revalidate` extend the time to live of the cache, that can still be used if stale.
+
+### `toObject()`/`fromObject(json)`
+
+Chances are you'll want to store the `CachePolicy` object along with the cached response. `obj = policy.toObject()` gives a plain JSON-serializable object. `policy = CachePolicy.fromObject(obj)` creates an instance from it.
+
+### Refreshing stale cache (revalidation)
+
+When a cached response has expired, it can be made fresh again by making a request to the origin server. The server may respond with status 304 (Not Modified) without sending the response body again, saving bandwidth.
+
+The following methods help perform the update efficiently and correctly.
+
+#### `revalidationHeaders(newRequest)`
+
+Returns updated, filtered set of request headers to send to the origin server to check if the cached response can be reused. These headers allow the origin server to return status 304 indicating the response is still fresh. All headers unrelated to caching are passed through as-is.
+
+Use this method when updating cache from the origin server.
+
+```js
+updateRequest.headers = cachePolicy.revalidationHeaders(updateRequest);
+```
+
+#### `revalidatedPolicy(revalidationRequest, revalidationResponse)`
+
+Use this method to update the cache after receiving a new response from the origin server. It returns an object with two keys:
+
+- `policy` — A new `CachePolicy` with HTTP headers updated from `revalidationResponse`. You can always replace the old cached `CachePolicy` with the new one.
+- `modified` — Boolean indicating whether the response body has changed.
+ - If `false`, then a valid 304 Not Modified response has been received, and you can reuse the old cached response body. This is also affected by `stale-if-error`.
+ - If `true`, you should use new response's body (if present), or make another request to the origin server without any conditional headers (i.e. don't use `revalidationHeaders()` this time) to get the new resource.
+
+```js
+// When serving requests from cache:
+const { oldPolicy, oldResponse } = letsPretendThisIsSomeCache.get(
+ newRequest.url
+);
+
+if (!oldPolicy.satisfiesWithoutRevalidation(newRequest)) {
+ // Change the request to ask the origin server if the cached response can be used
+ newRequest.headers = oldPolicy.revalidationHeaders(newRequest);
+
+ // Send request to the origin server. The server may respond with status 304
+ const newResponse = await makeRequest(newRequest);
+
+ // Create updated policy and combined response from the old and new data
+ const { policy, modified } = oldPolicy.revalidatedPolicy(
+ newRequest,
+ newResponse
+ );
+ const response = modified ? newResponse : oldResponse;
+
+ // Update the cache with the newer/fresher response
+ letsPretendThisIsSomeCache.set(
+ newRequest.url,
+ { policy, response },
+ policy.timeToLive()
+ );
+
+ // And proceed returning cached response as usual
+ response.headers = policy.responseHeaders();
+ return response;
+}
+```
+
+# Yo, FRESH
+
+![satisfiesWithoutRevalidation](fresh.jpg)
+
+## Used by
+
+- [ImageOptim API](https://imageoptim.com/api), [make-fetch-happen](https://github.com/zkat/make-fetch-happen), [cacheable-request](https://www.npmjs.com/package/cacheable-request) ([got](https://www.npmjs.com/package/got)), [npm/registry-fetch](https://github.com/npm/registry-fetch), [etc.](https://github.com/kornelski/http-cache-semantics/network/dependents)
+
+## Implemented
+
+- `Cache-Control` response header with all the quirks.
+- `Expires` with check for bad clocks.
+- `Pragma` response header.
+- `Age` response header.
+- `Vary` response header.
+- Default cacheability of statuses and methods.
+- Requests for stale data.
+- Filtering of hop-by-hop headers.
+- Basic revalidation request
+- `stale-if-error`
+
+## Unimplemented
+
+- Merging of range requests, `If-Range` (but correctly supports them as non-cacheable)
+- Revalidation of multiple representations
+
+### Trusting server `Date`
+
+Per the RFC, the cache should take into account the time between server-supplied `Date` and the time it received the response. The RFC-mandated behavior creates two problems:
+
+ * Servers with incorrectly set timezone may add several hours to cache age (or more, if the clock is completely wrong).
+ * Even reasonably correct clocks may be off by a couple of seconds, breaking `max-age=1` trick (which is useful for reverse proxies on high-traffic servers).
+
+Previous versions of this library had an option to ignore the server date if it was "too inaccurate". To support the `max-age=1` trick the library also has to ignore dates that pretty accurate. There's no point of having an option to trust dates that are only a bit inaccurate, so this library won't trust any server dates. `max-age` will be interpreted from the time the response has been received, not from when it has been sent. This will affect only [RFC 1149 networks](https://tools.ietf.org/html/rfc1149).
diff --git a/client/node_modules/http-cache-semantics/index.js b/client/node_modules/http-cache-semantics/index.js
new file mode 100644
index 0000000..31fba48
--- /dev/null
+++ b/client/node_modules/http-cache-semantics/index.js
@@ -0,0 +1,674 @@
+'use strict';
+// rfc7231 6.1
+const statusCodeCacheableByDefault = new Set([
+ 200,
+ 203,
+ 204,
+ 206,
+ 300,
+ 301,
+ 308,
+ 404,
+ 405,
+ 410,
+ 414,
+ 501,
+]);
+
+// This implementation does not understand partial responses (206)
+const understoodStatuses = new Set([
+ 200,
+ 203,
+ 204,
+ 300,
+ 301,
+ 302,
+ 303,
+ 307,
+ 308,
+ 404,
+ 405,
+ 410,
+ 414,
+ 501,
+]);
+
+const errorStatusCodes = new Set([
+ 500,
+ 502,
+ 503,
+ 504,
+]);
+
+const hopByHopHeaders = {
+ date: true, // included, because we add Age update Date
+ connection: true,
+ 'keep-alive': true,
+ 'proxy-authenticate': true,
+ 'proxy-authorization': true,
+ te: true,
+ trailer: true,
+ 'transfer-encoding': true,
+ upgrade: true,
+};
+
+const excludedFromRevalidationUpdate = {
+ // Since the old body is reused, it doesn't make sense to change properties of the body
+ 'content-length': true,
+ 'content-encoding': true,
+ 'transfer-encoding': true,
+ 'content-range': true,
+};
+
+function toNumberOrZero(s) {
+ const n = parseInt(s, 10);
+ return isFinite(n) ? n : 0;
+}
+
+// RFC 5861
+function isErrorResponse(response) {
+ // consider undefined response as faulty
+ if(!response) {
+ return true
+ }
+ return errorStatusCodes.has(response.status);
+}
+
+function parseCacheControl(header) {
+ const cc = {};
+ if (!header) return cc;
+
+ // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives),
+ // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale
+ const parts = header.trim().split(/,/);
+ for (const part of parts) {
+ const [k, v] = part.split(/=/, 2);
+ cc[k.trim()] = v === undefined ? true : v.trim().replace(/^"|"$/g, '');
+ }
+
+ return cc;
+}
+
+function formatCacheControl(cc) {
+ let parts = [];
+ for (const k in cc) {
+ const v = cc[k];
+ parts.push(v === true ? k : k + '=' + v);
+ }
+ if (!parts.length) {
+ return undefined;
+ }
+ return parts.join(', ');
+}
+
+module.exports = class CachePolicy {
+ constructor(
+ req,
+ res,
+ {
+ shared,
+ cacheHeuristic,
+ immutableMinTimeToLive,
+ ignoreCargoCult,
+ _fromObject,
+ } = {}
+ ) {
+ if (_fromObject) {
+ this._fromObject(_fromObject);
+ return;
+ }
+
+ if (!res || !res.headers) {
+ throw Error('Response headers missing');
+ }
+ this._assertRequestHasHeaders(req);
+
+ this._responseTime = this.now();
+ this._isShared = shared !== false;
+ this._cacheHeuristic =
+ undefined !== cacheHeuristic ? cacheHeuristic : 0.1; // 10% matches IE
+ this._immutableMinTtl =
+ undefined !== immutableMinTimeToLive
+ ? immutableMinTimeToLive
+ : 24 * 3600 * 1000;
+
+ this._status = 'status' in res ? res.status : 200;
+ this._resHeaders = res.headers;
+ this._rescc = parseCacheControl(res.headers['cache-control']);
+ this._method = 'method' in req ? req.method : 'GET';
+ this._url = req.url;
+ this._host = req.headers.host;
+ this._noAuthorization = !req.headers.authorization;
+ this._reqHeaders = res.headers.vary ? req.headers : null; // Don't keep all request headers if they won't be used
+ this._reqcc = parseCacheControl(req.headers['cache-control']);
+
+ // Assume that if someone uses legacy, non-standard uncecessary options they don't understand caching,
+ // so there's no point stricly adhering to the blindly copy&pasted directives.
+ if (
+ ignoreCargoCult &&
+ 'pre-check' in this._rescc &&
+ 'post-check' in this._rescc
+ ) {
+ delete this._rescc['pre-check'];
+ delete this._rescc['post-check'];
+ delete this._rescc['no-cache'];
+ delete this._rescc['no-store'];
+ delete this._rescc['must-revalidate'];
+ this._resHeaders = Object.assign({}, this._resHeaders, {
+ 'cache-control': formatCacheControl(this._rescc),
+ });
+ delete this._resHeaders.expires;
+ delete this._resHeaders.pragma;
+ }
+
+ // When the Cache-Control header field is not present in a request, caches MUST consider the no-cache request pragma-directive
+ // as having the same effect as if "Cache-Control: no-cache" were present (see Section 5.2.1).
+ if (
+ res.headers['cache-control'] == null &&
+ /no-cache/.test(res.headers.pragma)
+ ) {
+ this._rescc['no-cache'] = true;
+ }
+ }
+
+ now() {
+ return Date.now();
+ }
+
+ storable() {
+ // The "no-store" request directive indicates that a cache MUST NOT store any part of either this request or any response to it.
+ return !!(
+ !this._reqcc['no-store'] &&
+ // A cache MUST NOT store a response to any request, unless:
+ // The request method is understood by the cache and defined as being cacheable, and
+ ('GET' === this._method ||
+ 'HEAD' === this._method ||
+ ('POST' === this._method && this._hasExplicitExpiration())) &&
+ // the response status code is understood by the cache, and
+ understoodStatuses.has(this._status) &&
+ // the "no-store" cache directive does not appear in request or response header fields, and
+ !this._rescc['no-store'] &&
+ // the "private" response directive does not appear in the response, if the cache is shared, and
+ (!this._isShared || !this._rescc.private) &&
+ // the Authorization header field does not appear in the request, if the cache is shared,
+ (!this._isShared ||
+ this._noAuthorization ||
+ this._allowsStoringAuthenticated()) &&
+ // the response either:
+ // contains an Expires header field, or
+ (this._resHeaders.expires ||
+ // contains a max-age response directive, or
+ // contains a s-maxage response directive and the cache is shared, or
+ // contains a public response directive.
+ this._rescc['max-age'] ||
+ (this._isShared && this._rescc['s-maxage']) ||
+ this._rescc.public ||
+ // has a status code that is defined as cacheable by default
+ statusCodeCacheableByDefault.has(this._status))
+ );
+ }
+
+ _hasExplicitExpiration() {
+ // 4.2.1 Calculating Freshness Lifetime
+ return (
+ (this._isShared && this._rescc['s-maxage']) ||
+ this._rescc['max-age'] ||
+ this._resHeaders.expires
+ );
+ }
+
+ _assertRequestHasHeaders(req) {
+ if (!req || !req.headers) {
+ throw Error('Request headers missing');
+ }
+ }
+
+ satisfiesWithoutRevalidation(req) {
+ this._assertRequestHasHeaders(req);
+
+ // When presented with a request, a cache MUST NOT reuse a stored response, unless:
+ // the presented request does not contain the no-cache pragma (Section 5.4), nor the no-cache cache directive,
+ // unless the stored response is successfully validated (Section 4.3), and
+ const requestCC = parseCacheControl(req.headers['cache-control']);
+ if (requestCC['no-cache'] || /no-cache/.test(req.headers.pragma)) {
+ return false;
+ }
+
+ if (requestCC['max-age'] && this.age() > requestCC['max-age']) {
+ return false;
+ }
+
+ if (
+ requestCC['min-fresh'] &&
+ this.timeToLive() < 1000 * requestCC['min-fresh']
+ ) {
+ return false;
+ }
+
+ // the stored response is either:
+ // fresh, or allowed to be served stale
+ if (this.stale()) {
+ const allowsStale =
+ requestCC['max-stale'] &&
+ !this._rescc['must-revalidate'] &&
+ (true === requestCC['max-stale'] ||
+ requestCC['max-stale'] > this.age() - this.maxAge());
+ if (!allowsStale) {
+ return false;
+ }
+ }
+
+ return this._requestMatches(req, false);
+ }
+
+ _requestMatches(req, allowHeadMethod) {
+ // The presented effective request URI and that of the stored response match, and
+ return (
+ (!this._url || this._url === req.url) &&
+ this._host === req.headers.host &&
+ // the request method associated with the stored response allows it to be used for the presented request, and
+ (!req.method ||
+ this._method === req.method ||
+ (allowHeadMethod && 'HEAD' === req.method)) &&
+ // selecting header fields nominated by the stored response (if any) match those presented, and
+ this._varyMatches(req)
+ );
+ }
+
+ _allowsStoringAuthenticated() {
+ // following Cache-Control response directives (Section 5.2.2) have such an effect: must-revalidate, public, and s-maxage.
+ return (
+ this._rescc['must-revalidate'] ||
+ this._rescc.public ||
+ this._rescc['s-maxage']
+ );
+ }
+
+ _varyMatches(req) {
+ if (!this._resHeaders.vary) {
+ return true;
+ }
+
+ // A Vary header field-value of "*" always fails to match
+ if (this._resHeaders.vary === '*') {
+ return false;
+ }
+
+ const fields = this._resHeaders.vary
+ .trim()
+ .toLowerCase()
+ .split(/\s*,\s*/);
+ for (const name of fields) {
+ if (req.headers[name] !== this._reqHeaders[name]) return false;
+ }
+ return true;
+ }
+
+ _copyWithoutHopByHopHeaders(inHeaders) {
+ const headers = {};
+ for (const name in inHeaders) {
+ if (hopByHopHeaders[name]) continue;
+ headers[name] = inHeaders[name];
+ }
+ // 9.1. Connection
+ if (inHeaders.connection) {
+ const tokens = inHeaders.connection.trim().split(/\s*,\s*/);
+ for (const name of tokens) {
+ delete headers[name];
+ }
+ }
+ if (headers.warning) {
+ const warnings = headers.warning.split(/,/).filter(warning => {
+ return !/^\s*1[0-9][0-9]/.test(warning);
+ });
+ if (!warnings.length) {
+ delete headers.warning;
+ } else {
+ headers.warning = warnings.join(',').trim();
+ }
+ }
+ return headers;
+ }
+
+ responseHeaders() {
+ const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);
+ const age = this.age();
+
+ // A cache SHOULD generate 113 warning if it heuristically chose a freshness
+ // lifetime greater than 24 hours and the response's age is greater than 24 hours.
+ if (
+ age > 3600 * 24 &&
+ !this._hasExplicitExpiration() &&
+ this.maxAge() > 3600 * 24
+ ) {
+ headers.warning =
+ (headers.warning ? `${headers.warning}, ` : '') +
+ '113 - "rfc7234 5.5.4"';
+ }
+ headers.age = `${Math.round(age)}`;
+ headers.date = new Date(this.now()).toUTCString();
+ return headers;
+ }
+
+ /**
+ * Value of the Date response header or current time if Date was invalid
+ * @return timestamp
+ */
+ date() {
+ const serverDate = Date.parse(this._resHeaders.date);
+ if (isFinite(serverDate)) {
+ return serverDate;
+ }
+ return this._responseTime;
+ }
+
+ /**
+ * Value of the Age header, in seconds, updated for the current time.
+ * May be fractional.
+ *
+ * @return Number
+ */
+ age() {
+ let age = this._ageValue();
+
+ const residentTime = (this.now() - this._responseTime) / 1000;
+ return age + residentTime;
+ }
+
+ _ageValue() {
+ return toNumberOrZero(this._resHeaders.age);
+ }
+
+ /**
+ * Value of applicable max-age (or heuristic equivalent) in seconds. This counts since response's `Date`.
+ *
+ * For an up-to-date value, see `timeToLive()`.
+ *
+ * @return Number
+ */
+ maxAge() {
+ if (!this.storable() || this._rescc['no-cache']) {
+ return 0;
+ }
+
+ // Shared responses with cookies are cacheable according to the RFC, but IMHO it'd be unwise to do so by default
+ // so this implementation requires explicit opt-in via public header
+ if (
+ this._isShared &&
+ (this._resHeaders['set-cookie'] &&
+ !this._rescc.public &&
+ !this._rescc.immutable)
+ ) {
+ return 0;
+ }
+
+ if (this._resHeaders.vary === '*') {
+ return 0;
+ }
+
+ if (this._isShared) {
+ if (this._rescc['proxy-revalidate']) {
+ return 0;
+ }
+ // if a response includes the s-maxage directive, a shared cache recipient MUST ignore the Expires field.
+ if (this._rescc['s-maxage']) {
+ return toNumberOrZero(this._rescc['s-maxage']);
+ }
+ }
+
+ // If a response includes a Cache-Control field with the max-age directive, a recipient MUST ignore the Expires field.
+ if (this._rescc['max-age']) {
+ return toNumberOrZero(this._rescc['max-age']);
+ }
+
+ const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;
+
+ const serverDate = this.date();
+ if (this._resHeaders.expires) {
+ const expires = Date.parse(this._resHeaders.expires);
+ // A cache recipient MUST interpret invalid date formats, especially the value "0", as representing a time in the past (i.e., "already expired").
+ if (Number.isNaN(expires) || expires < serverDate) {
+ return 0;
+ }
+ return Math.max(defaultMinTtl, (expires - serverDate) / 1000);
+ }
+
+ if (this._resHeaders['last-modified']) {
+ const lastModified = Date.parse(this._resHeaders['last-modified']);
+ if (isFinite(lastModified) && serverDate > lastModified) {
+ return Math.max(
+ defaultMinTtl,
+ ((serverDate - lastModified) / 1000) * this._cacheHeuristic
+ );
+ }
+ }
+
+ return defaultMinTtl;
+ }
+
+ timeToLive() {
+ const age = this.maxAge() - this.age();
+ const staleIfErrorAge = age + toNumberOrZero(this._rescc['stale-if-error']);
+ const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc['stale-while-revalidate']);
+ return Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1000;
+ }
+
+ stale() {
+ return this.maxAge() <= this.age();
+ }
+
+ _useStaleIfError() {
+ return this.maxAge() + toNumberOrZero(this._rescc['stale-if-error']) > this.age();
+ }
+
+ useStaleWhileRevalidate() {
+ return this.maxAge() + toNumberOrZero(this._rescc['stale-while-revalidate']) > this.age();
+ }
+
+ static fromObject(obj) {
+ return new this(undefined, undefined, { _fromObject: obj });
+ }
+
+ _fromObject(obj) {
+ if (this._responseTime) throw Error('Reinitialized');
+ if (!obj || obj.v !== 1) throw Error('Invalid serialization');
+
+ this._responseTime = obj.t;
+ this._isShared = obj.sh;
+ this._cacheHeuristic = obj.ch;
+ this._immutableMinTtl =
+ obj.imm !== undefined ? obj.imm : 24 * 3600 * 1000;
+ this._status = obj.st;
+ this._resHeaders = obj.resh;
+ this._rescc = obj.rescc;
+ this._method = obj.m;
+ this._url = obj.u;
+ this._host = obj.h;
+ this._noAuthorization = obj.a;
+ this._reqHeaders = obj.reqh;
+ this._reqcc = obj.reqcc;
+ }
+
+ toObject() {
+ return {
+ v: 1,
+ t: this._responseTime,
+ sh: this._isShared,
+ ch: this._cacheHeuristic,
+ imm: this._immutableMinTtl,
+ st: this._status,
+ resh: this._resHeaders,
+ rescc: this._rescc,
+ m: this._method,
+ u: this._url,
+ h: this._host,
+ a: this._noAuthorization,
+ reqh: this._reqHeaders,
+ reqcc: this._reqcc,
+ };
+ }
+
+ /**
+ * Headers for sending to the origin server to revalidate stale response.
+ * Allows server to return 304 to allow reuse of the previous response.
+ *
+ * Hop by hop headers are always stripped.
+ * Revalidation headers may be added or removed, depending on request.
+ */
+ revalidationHeaders(incomingReq) {
+ this._assertRequestHasHeaders(incomingReq);
+ const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);
+
+ // This implementation does not understand range requests
+ delete headers['if-range'];
+
+ if (!this._requestMatches(incomingReq, true) || !this.storable()) {
+ // revalidation allowed via HEAD
+ // not for the same resource, or wasn't allowed to be cached anyway
+ delete headers['if-none-match'];
+ delete headers['if-modified-since'];
+ return headers;
+ }
+
+ /* MUST send that entity-tag in any cache validation request (using If-Match or If-None-Match) if an entity-tag has been provided by the origin server. */
+ if (this._resHeaders.etag) {
+ headers['if-none-match'] = headers['if-none-match']
+ ? `${headers['if-none-match']}, ${this._resHeaders.etag}`
+ : this._resHeaders.etag;
+ }
+
+ // Clients MAY issue simple (non-subrange) GET requests with either weak validators or strong validators. Clients MUST NOT use weak validators in other forms of request.
+ const forbidsWeakValidators =
+ headers['accept-ranges'] ||
+ headers['if-match'] ||
+ headers['if-unmodified-since'] ||
+ (this._method && this._method != 'GET');
+
+ /* SHOULD send the Last-Modified value in non-subrange cache validation requests (using If-Modified-Since) if only a Last-Modified value has been provided by the origin server.
+ Note: This implementation does not understand partial responses (206) */
+ if (forbidsWeakValidators) {
+ delete headers['if-modified-since'];
+
+ if (headers['if-none-match']) {
+ const etags = headers['if-none-match']
+ .split(/,/)
+ .filter(etag => {
+ return !/^\s*W\//.test(etag);
+ });
+ if (!etags.length) {
+ delete headers['if-none-match'];
+ } else {
+ headers['if-none-match'] = etags.join(',').trim();
+ }
+ }
+ } else if (
+ this._resHeaders['last-modified'] &&
+ !headers['if-modified-since']
+ ) {
+ headers['if-modified-since'] = this._resHeaders['last-modified'];
+ }
+
+ return headers;
+ }
+
+ /**
+ * Creates new CachePolicy with information combined from the previews response,
+ * and the new revalidation response.
+ *
+ * Returns {policy, modified} where modified is a boolean indicating
+ * whether the response body has been modified, and old cached body can't be used.
+ *
+ * @return {Object} {policy: CachePolicy, modified: Boolean}
+ */
+ revalidatedPolicy(request, response) {
+ this._assertRequestHasHeaders(request);
+ if(this._useStaleIfError() && isErrorResponse(response)) { // I consider the revalidation request unsuccessful
+ return {
+ modified: false,
+ matches: false,
+ policy: this,
+ };
+ }
+ if (!response || !response.headers) {
+ throw Error('Response headers missing');
+ }
+
+ // These aren't going to be supported exactly, since one CachePolicy object
+ // doesn't know about all the other cached objects.
+ let matches = false;
+ if (response.status !== undefined && response.status != 304) {
+ matches = false;
+ } else if (
+ response.headers.etag &&
+ !/^\s*W\//.test(response.headers.etag)
+ ) {
+ // "All of the stored responses with the same strong validator are selected.
+ // If none of the stored responses contain the same strong validator,
+ // then the cache MUST NOT use the new response to update any stored responses."
+ matches =
+ this._resHeaders.etag &&
+ this._resHeaders.etag.replace(/^\s*W\//, '') ===
+ response.headers.etag;
+ } else if (this._resHeaders.etag && response.headers.etag) {
+ // "If the new response contains a weak validator and that validator corresponds
+ // to one of the cache's stored responses,
+ // then the most recent of those matching stored responses is selected for update."
+ matches =
+ this._resHeaders.etag.replace(/^\s*W\//, '') ===
+ response.headers.etag.replace(/^\s*W\//, '');
+ } else if (this._resHeaders['last-modified']) {
+ matches =
+ this._resHeaders['last-modified'] ===
+ response.headers['last-modified'];
+ } else {
+ // If the new response does not include any form of validator (such as in the case where
+ // a client generates an If-Modified-Since request from a source other than the Last-Modified
+ // response header field), and there is only one stored response, and that stored response also
+ // lacks a validator, then that stored response is selected for update.
+ if (
+ !this._resHeaders.etag &&
+ !this._resHeaders['last-modified'] &&
+ !response.headers.etag &&
+ !response.headers['last-modified']
+ ) {
+ matches = true;
+ }
+ }
+
+ if (!matches) {
+ return {
+ policy: new this.constructor(request, response),
+ // Client receiving 304 without body, even if it's invalid/mismatched has no option
+ // but to reuse a cached body. We don't have a good way to tell clients to do
+ // error recovery in such case.
+ modified: response.status != 304,
+ matches: false,
+ };
+ }
+
+ // use other header fields provided in the 304 (Not Modified) response to replace all instances
+ // of the corresponding header fields in the stored response.
+ const headers = {};
+ for (const k in this._resHeaders) {
+ headers[k] =
+ k in response.headers && !excludedFromRevalidationUpdate[k]
+ ? response.headers[k]
+ : this._resHeaders[k];
+ }
+
+ const newResponse = Object.assign({}, response, {
+ status: this._status,
+ method: this._method,
+ headers,
+ });
+ return {
+ policy: new this.constructor(request, newResponse, {
+ shared: this._isShared,
+ cacheHeuristic: this._cacheHeuristic,
+ immutableMinTimeToLive: this._immutableMinTtl,
+ }),
+ modified: false,
+ matches: true,
+ };
+ }
+};
diff --git a/client/node_modules/http-cache-semantics/package.json b/client/node_modules/http-cache-semantics/package.json
new file mode 100644
index 0000000..defbb04
--- /dev/null
+++ b/client/node_modules/http-cache-semantics/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "http-cache-semantics",
+ "version": "4.1.1",
+ "description": "Parses Cache-Control and other headers. Helps building correct HTTP caches and proxies",
+ "repository": "https://github.com/kornelski/http-cache-semantics.git",
+ "main": "index.js",
+ "scripts": {
+ "test": "mocha"
+ },
+ "files": [
+ "index.js"
+ ],
+ "author": "Kornel Lesiński <kornel@geekhood.net> (https://kornel.ski/)",
+ "license": "BSD-2-Clause",
+ "devDependencies": {
+ "mocha": "^10.0"
+ }
+}
diff --git a/client/node_modules/http2-wrapper/LICENSE b/client/node_modules/http2-wrapper/LICENSE
new file mode 100644
index 0000000..15ad2e8
--- /dev/null
+++ b/client/node_modules/http2-wrapper/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Szymon Marczak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/http2-wrapper/README.md b/client/node_modules/http2-wrapper/README.md
new file mode 100644
index 0000000..09b5f48
--- /dev/null
+++ b/client/node_modules/http2-wrapper/README.md
@@ -0,0 +1,470 @@
+# http2-wrapper
+> HTTP/2 client, just with the familiar `https` API
+
+[![Node CI](https://github.com/szmarczak/http2-wrapper/workflows/Node%20CI/badge.svg)](https://github.com/szmarczak/http2-wrapper/actions)
+[![codecov](https://codecov.io/gh/szmarczak/http2-wrapper/branch/master/graph/badge.svg)](https://codecov.io/gh/szmarczak/http2-wrapper)
+[![npm](https://img.shields.io/npm/dm/http2-wrapper.svg)](https://www.npmjs.com/package/http2-wrapper)
+[![install size](https://packagephobia.now.sh/badge?p=http2-wrapper)](https://packagephobia.now.sh/result?p=http2-wrapper)
+
+This package was created to support HTTP/2 without the need to rewrite your code.<br>
+I recommend adapting to the [`http2`](https://nodejs.org/api/http2.html) module if possible - it's much simpler to use and has many cool features!
+
+**Tip**: `http2-wrapper` is very useful when you rely on other modules that use the HTTP/1 API and you want to support HTTP/2.
+
+**Pro Tip**: While the native `http2` doesn't have agents yet, you can use `http2-wrapper` Agents and still operate on the native HTTP/2 streams.
+
+## Installation
+
+> `$ npm install http2-wrapper`<br>
+> `$ yarn add http2-wrapper`
+
+## Usage
+```js
+const http2 = require('http2-wrapper');
+
+const options = {
+ hostname: 'nghttp2.org',
+ protocol: 'https:',
+ path: '/httpbin/post',
+ method: 'POST',
+ headers: {
+ 'content-length': 6
+ }
+};
+
+const request = http2.request(options, response => {
+ console.log('statusCode:', response.statusCode);
+ console.log('headers:', response.headers);
+
+ const body = [];
+ response.on('data', chunk => {
+ body.push(chunk);
+ });
+ response.on('end', () => {
+ console.log('body:', Buffer.concat(body).toString());
+ });
+});
+
+request.on('error', console.error);
+
+request.write('123');
+request.end('456');
+
+// statusCode: 200
+// headers: [Object: null prototype] {
+// ':status': 200,
+// date: 'Fri, 27 Sep 2019 19:45:46 GMT',
+// 'content-type': 'application/json',
+// 'access-control-allow-origin': '*',
+// 'access-control-allow-credentials': 'true',
+// 'content-length': '239',
+// 'x-backend-header-rtt': '0.002516',
+// 'strict-transport-security': 'max-age=31536000',
+// server: 'nghttpx',
+// via: '1.1 nghttpx',
+// 'alt-svc': 'h3-23=":4433"; ma=3600',
+// 'x-frame-options': 'SAMEORIGIN',
+// 'x-xss-protection': '1; mode=block',
+// 'x-content-type-options': 'nosniff'
+// }
+// body: {
+// "args": {},
+// "data": "123456",
+// "files": {},
+// "form": {},
+// "headers": {
+// "Content-Length": "6",
+// "Host": "nghttp2.org"
+// },
+// "json": 123456,
+// "origin": "xxx.xxx.xxx.xxx",
+// "url": "https://nghttp2.org/httpbin/post"
+// }
+```
+
+## API
+
+**Note:** The `session` option was renamed to `tlsSession` for better readability.
+
+### http2.auto(url, options, callback)
+
+Performs [ALPN](https://nodejs.org/api/tls.html#tls_alpn_and_sni) negotiation.
+Returns a Promise giving proper `ClientRequest` instance (depending on the ALPN).
+
+**Note**: The `agent` option represents an object with `http`, `https` and `http2` properties.
+
+```js
+const http2 = require('http2-wrapper');
+
+const options = {
+ hostname: 'httpbin.org',
+ protocol: 'http:', // Note the `http:` protocol here
+ path: '/post',
+ method: 'POST',
+ headers: {
+ 'content-length': 6
+ }
+};
+
+(async () => {
+ try {
+ const request = await http2.auto(options, response => {
+ console.log('statusCode:', response.statusCode);
+ console.log('headers:', response.headers);
+
+ const body = [];
+ response.on('data', chunk => body.push(chunk));
+ response.on('end', () => {
+ console.log('body:', Buffer.concat(body).toString());
+ });
+ });
+
+ request.on('error', console.error);
+
+ request.write('123');
+ request.end('456');
+ } catch (error) {
+ console.error(error);
+ }
+})();
+
+// statusCode: 200
+// headers: { connection: 'close',
+// server: 'gunicorn/19.9.0',
+// date: 'Sat, 15 Dec 2018 18:19:32 GMT',
+// 'content-type': 'application/json',
+// 'content-length': '259',
+// 'access-control-allow-origin': '*',
+// 'access-control-allow-credentials': 'true',
+// via: '1.1 vegur' }
+// body: {
+// "args": {},
+// "data": "123456",
+// "files": {},
+// "form": {},
+// "headers": {
+// "Connection": "close",
+// "Content-Length": "6",
+// "Host": "httpbin.org"
+// },
+// "json": 123456,
+// "origin": "xxx.xxx.xxx.xxx",
+// "url": "http://httpbin.org/post"
+// }
+```
+
+### http2.auto.protocolCache
+
+An instance of [`quick-lru`](https://github.com/sindresorhus/quick-lru) used for ALPN cache.
+
+There is a maximum of 100 entries. You can modify the limit through `protocolCache.maxSize` - note that the change will be visible globally.
+
+### http2.request(url, options, callback)
+
+Same as [`https.request`](https://nodejs.org/api/https.html#https_https_request_options_callback).
+
+##### options.h2session
+
+Type: `Http2Session`<br>
+
+The session used to make the actual request. If none provided, it will use `options.agent`.
+
+### http2.get(url, options, callback)
+
+Same as [`https.get`](https://nodejs.org/api/https.html#https_https_get_options_callback).
+
+### new http2.ClientRequest(url, options, callback)
+
+Same as [`https.ClientRequest`](https://nodejs.org/api/https.html#https_class_https_clientrequest).
+
+### new http2.IncomingMessage(socket)
+
+Same as [`https.IncomingMessage`](https://nodejs.org/api/https.html#https_class_https_incomingmessage).
+
+### new http2.Agent(options)
+
+**Note:** this is **not** compatible with the classic `http.Agent`.
+
+Usage example:
+
+```js
+const http2 = require('http2-wrapper');
+
+class MyAgent extends http2.Agent {
+ createConnection(origin, options) {
+ console.log(`Connecting to ${http2.Agent.normalizeOrigin(origin)}`);
+ return http2.Agent.connect(origin, options);
+ }
+}
+
+http2.get({
+ hostname: 'google.com',
+ agent: new MyAgent()
+}, res => {
+ res.on('data', chunk => console.log(`Received chunk of ${chunk.length} bytes`));
+});
+```
+
+#### options
+
+Each option is assigned to each `Agent` instance and can be changed later.
+
+##### timeout
+
+Type: `number`<br>
+Default: `60000`
+
+If there's no activity after `timeout` milliseconds, the session will be closed.
+
+##### maxSessions
+
+Type: `number`<br>
+Default: `Infinity`
+
+The maximum amount of sessions in total.
+
+##### maxFreeSessions
+
+Type: `number`<br>
+Default: `10`
+
+The maximum amount of free sessions in total. This only applies to sessions with no pending requests.
+
+**Note:** It is possible that the amount will be exceeded when sessions have at least 1 pending request.
+
+##### maxCachedTlsSessions
+
+Type: `number`<br>
+Default: `100`
+
+The maximum amount of cached TLS sessions.
+
+#### Agent.normalizeOrigin(url)
+
+Returns a string representing the origin of the URL.
+
+#### agent.settings
+
+Type: `object`<br>
+Default: `{enablePush: false}`
+
+[Settings](https://nodejs.org/api/http2.html#http2_settings_object) used by the current agent instance.
+
+#### agent.normalizeOptions([options](https://github.com/szmarczak/http2-wrapper/blob/master/source/agent.js))
+
+Returns a string representing normalized options.
+
+```js
+Agent.normalizeOptions({servername: 'example.com'});
+// => ':example.com'
+```
+
+#### agent.getSession(origin, options)
+
+##### [origin](https://nodejs.org/api/http2.html#http2_http2_connect_authority_options_listener)
+
+Type: `string` `URL` `object`
+
+An origin used to create new session.
+
+##### [options](https://nodejs.org/api/http2.html#http2_http2_connect_authority_options_listener)
+
+Type: `object`
+
+The options used to create new session.
+
+Returns a Promise giving free `Http2Session`. If no free sessions are found, a new one is created.
+
+#### agent.getSession([origin](#origin), [options](options-1), listener)
+
+##### listener
+
+Type: `object`
+
+```
+{
+ reject: error => void,
+ resolve: session => void
+}
+```
+
+If the `listener` argument is present, the Promise will resolve immediately. It will use the `resolve` function to pass the session.
+
+#### agent.request([origin](#origin), [options](#options-1), [headers](https://nodejs.org/api/http2.html#http2_headers_object), [streamOptions](https://nodejs.org/api/http2.html#http2_clienthttp2session_request_headers_options))
+
+Returns a Promise giving `Http2Stream`.
+
+#### agent.createConnection([origin](#origin), [options](#options-1))
+
+Returns a new `TLSSocket`. It defaults to `Agent.connect(origin, options)`.
+
+#### agent.closeFreeSessions()
+
+Makes an attempt to close free sessions. Only sessions with 0 concurrent streams will be closed.
+
+#### agent.destroy(reason)
+
+Destroys **all** sessions.
+
+#### Event: 'session'
+
+```js
+agent.on('session', session => {
+ // A new session has been created by the Agent.
+});
+```
+
+## Proxy support
+
+An example of a full-featured proxy server can be found [here](examples/proxy/server.js). It supports **mirroring, custom authorities and the CONNECT protocol**.
+
+### Mirroring
+
+To mirror another server we need to use only [`http2-proxy`](https://github.com/nxtedition/node-http2-proxy). We don't need the CONNECT protocol or custom authorities.
+
+To see the result, just navigate to the server's address.
+
+### HTTP/1 over HTTP/2
+
+Since we don't care about mirroring, the server needs to support the CONNECT protocol in this case.
+
+The client looks like this:
+
+```js
+const https = require('https');
+const http2 = require('http2');
+
+const session = http2.connect('https://localhost:8000', {
+ // For demo purposes only!
+ rejectUnauthorized: false
+});
+
+session.ref();
+
+https.request('https://httpbin.org/anything', {
+ createConnection: options => {
+ return session.request({
+ ':method': 'CONNECT',
+ ':authority': `${options.host}:${options.port}`
+ });
+ }
+}, response => {
+ console.log('statusCode:', response.statusCode);
+ console.log('headers:', response.headers);
+
+ const body = [];
+ response.on('data', chunk => {
+ body.push(chunk);
+ });
+ response.on('end', () => {
+ console.log('body:', Buffer.concat(body).toString());
+
+ session.unref();
+ });
+}).end();
+```
+
+### HTTP/2 over HTTP/2
+
+It's a tricky one! We cannot create an HTTP/2 session on top of an HTTP/2 stream. But... we can still specify the `:authority` header, no need to use the CONNECT protocol here.
+
+The client looks like this:
+
+```js
+const http2 = require('../../source');
+const {Agent} = http2;
+
+class ProxyAgent extends Agent {
+ constructor(url, options) {
+ super(options);
+
+ this.origin = url;
+ }
+
+ request(origin, sessionOptions, headers, streamOptions) {
+ return super.request(this.origin, sessionOptions, {
+ ...headers,
+ ':authority': (new URL(origin)).host
+ }, streamOptions);
+ }
+}
+
+const request = http2.request({
+ hostname: 'httpbin.org',
+ protocol: 'https:',
+ path: '/anything',
+ agent: new ProxyAgent('https://localhost:8000'),
+ // For demo purposes only!
+ rejectUnauthorized: false
+}, response => {
+ console.log('statusCode:', response.statusCode);
+ console.log('headers:', response.headers);
+
+ const body = [];
+ response.on('data', chunk => {
+ body.push(chunk);
+ });
+ response.on('end', () => {
+ console.log('body:', Buffer.concat(body).toString());
+ });
+});
+
+request.on('error', console.error);
+
+request.end();
+```
+
+## Notes
+
+ - If you're interested in [WebSockets over HTTP/2](https://tools.ietf.org/html/rfc8441), then [check out this discussion](https://github.com/websockets/ws/issues/1458).
+ - [HTTP/2 sockets cannot be malformed](https://github.com/nodejs/node/blob/cc8250fab86486632fdeb63892be735d7628cd13/lib/internal/http2/core.js#L725), therefore modifying the socket will have no effect.
+ - You can make [a custom Agent](examples/push-stream/index.js) to support push streams.
+
+## Benchmarks
+
+CPU: Intel i7-7700k (governor: performance)<br>
+Server: H2O v2.2.5 [`h2o.conf`](h2o.conf)<br>
+Node: v14.5.0
+Linux: 5.6.18-156.current
+
+`auto` means `http2wrapper.auto`.
+
+```
+http2-wrapper x 12,181 ops/sec ±3.39% (75 runs sampled)
+http2-wrapper - preconfigured session x 13,140 ops/sec ±2.51% (79 runs sampled)
+http2-wrapper - auto x 11,412 ops/sec ±2.55% (78 runs sampled)
+http2 x 16,050 ops/sec ±1.39% (86 runs sampled)
+https - auto - keepalive x 12,288 ops/sec ±2.69% (79 runs sampled)
+https - keepalive x 12,155 ops/sec ±3.32% (78 runs sampled)
+https x 1,604 ops/sec ±2.03% (77 runs sampled)
+http x 6,041 ops/sec ±3.82% (76 runs sampled)
+Fastest is http2
+```
+
+`http2-wrapper`:
+- 32% **less** performant than `http2`
+- as performant as `https - keepalive`
+- 100% **more** performant than `http`
+
+`http2-wrapper - preconfigured session`:
+- 22% **less** performant than `http2`
+- 8% **more** performant than `https - keepalive`
+- 118% **more** performant than `http`
+
+`http2-wrapper - auto`:
+- 41% **less** performant than `http2`
+- 8% **less** performant than `https - keepalive`
+- 89% **more** performant than `http`
+
+`https - auto - keepalive`:
+- 31% **less** performant than `http2`
+- as performant as `https - keepalive`
+- 103% **more** performant than `http`
+
+## Related
+
+ - [`got`](https://github.com/sindresorhus/got) - Simplified HTTP requests
+
+## License
+
+MIT
diff --git a/client/node_modules/http2-wrapper/package.json b/client/node_modules/http2-wrapper/package.json
new file mode 100644
index 0000000..d47894f
--- /dev/null
+++ b/client/node_modules/http2-wrapper/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "http2-wrapper",
+ "version": "1.0.3",
+ "description": "HTTP2 client, just with the familiar `https` API",
+ "main": "source",
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "scripts": {
+ "test": "xo && nyc --reporter=lcovonly --reporter=text --reporter=html ava"
+ },
+ "files": [
+ "source"
+ ],
+ "keywords": [
+ "http2",
+ "https",
+ "http",
+ "request"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/szmarczak/http2-wrapper.git"
+ },
+ "author": "Szymon Marczak",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/szmarczak/http2-wrapper/issues"
+ },
+ "homepage": "https://github.com/szmarczak/http2-wrapper#readme",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "devDependencies": {
+ "@sindresorhus/is": "^3.0.0",
+ "ava": "^3.10.1",
+ "benchmark": "^2.1.4",
+ "get-stream": "^5.1.0",
+ "got": "^11.5.0",
+ "http2-proxy": "^5.0.51",
+ "lolex": "^6.0.0",
+ "many-keys-map": "^1.0.2",
+ "nyc": "^15.1.0",
+ "p-event": "^4.2.0",
+ "tempy": "^0.5.0",
+ "to-readable-stream": "^2.1.0",
+ "tsd": "^0.13.1",
+ "xo": "^0.32.1"
+ },
+ "ava": {
+ "timeout": "2m"
+ }
+}
diff --git a/client/node_modules/http2-wrapper/source/agent.js b/client/node_modules/http2-wrapper/source/agent.js
new file mode 100644
index 0000000..b2b1cff
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/agent.js
@@ -0,0 +1,670 @@
+'use strict';
+const EventEmitter = require('events');
+const tls = require('tls');
+const http2 = require('http2');
+const QuickLRU = require('quick-lru');
+
+const kCurrentStreamsCount = Symbol('currentStreamsCount');
+const kRequest = Symbol('request');
+const kOriginSet = Symbol('cachedOriginSet');
+const kGracefullyClosing = Symbol('gracefullyClosing');
+
+const nameKeys = [
+ // `http2.connect()` options
+ 'maxDeflateDynamicTableSize',
+ 'maxSessionMemory',
+ 'maxHeaderListPairs',
+ 'maxOutstandingPings',
+ 'maxReservedRemoteStreams',
+ 'maxSendHeaderBlockLength',
+ 'paddingStrategy',
+
+ // `tls.connect()` options
+ 'localAddress',
+ 'path',
+ 'rejectUnauthorized',
+ 'minDHSize',
+
+ // `tls.createSecureContext()` options
+ 'ca',
+ 'cert',
+ 'clientCertEngine',
+ 'ciphers',
+ 'key',
+ 'pfx',
+ 'servername',
+ 'minVersion',
+ 'maxVersion',
+ 'secureProtocol',
+ 'crl',
+ 'honorCipherOrder',
+ 'ecdhCurve',
+ 'dhparam',
+ 'secureOptions',
+ 'sessionIdContext'
+];
+
+const getSortedIndex = (array, value, compare) => {
+ let low = 0;
+ let high = array.length;
+
+ while (low < high) {
+ const mid = (low + high) >>> 1;
+
+ /* istanbul ignore next */
+ if (compare(array[mid], value)) {
+ // This never gets called because we use descending sort. Better to have this anyway.
+ low = mid + 1;
+ } else {
+ high = mid;
+ }
+ }
+
+ return low;
+};
+
+const compareSessions = (a, b) => {
+ return a.remoteSettings.maxConcurrentStreams > b.remoteSettings.maxConcurrentStreams;
+};
+
+// See https://tools.ietf.org/html/rfc8336
+const closeCoveredSessions = (where, session) => {
+ // Clients SHOULD NOT emit new requests on any connection whose Origin
+ // Set is a proper subset of another connection's Origin Set, and they
+ // SHOULD close it once all outstanding requests are satisfied.
+ for (const coveredSession of where) {
+ if (
+ // The set is a proper subset when its length is less than the other set.
+ coveredSession[kOriginSet].length < session[kOriginSet].length &&
+
+ // And the other set includes all elements of the subset.
+ coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin)) &&
+
+ // Makes sure that the session can handle all requests from the covered session.
+ coveredSession[kCurrentStreamsCount] + session[kCurrentStreamsCount] <= session.remoteSettings.maxConcurrentStreams
+ ) {
+ // This allows pending requests to finish and prevents making new requests.
+ gracefullyClose(coveredSession);
+ }
+ }
+};
+
+// This is basically inverted `closeCoveredSessions(...)`.
+const closeSessionIfCovered = (where, coveredSession) => {
+ for (const session of where) {
+ if (
+ coveredSession[kOriginSet].length < session[kOriginSet].length &&
+ coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin)) &&
+ coveredSession[kCurrentStreamsCount] + session[kCurrentStreamsCount] <= session.remoteSettings.maxConcurrentStreams
+ ) {
+ gracefullyClose(coveredSession);
+ }
+ }
+};
+
+const getSessions = ({agent, isFree}) => {
+ const result = {};
+
+ // eslint-disable-next-line guard-for-in
+ for (const normalizedOptions in agent.sessions) {
+ const sessions = agent.sessions[normalizedOptions];
+
+ const filtered = sessions.filter(session => {
+ const result = session[Agent.kCurrentStreamsCount] < session.remoteSettings.maxConcurrentStreams;
+
+ return isFree ? result : !result;
+ });
+
+ if (filtered.length !== 0) {
+ result[normalizedOptions] = filtered;
+ }
+ }
+
+ return result;
+};
+
+const gracefullyClose = session => {
+ session[kGracefullyClosing] = true;
+
+ if (session[kCurrentStreamsCount] === 0) {
+ session.close();
+ }
+};
+
+class Agent extends EventEmitter {
+ constructor({timeout = 60000, maxSessions = Infinity, maxFreeSessions = 10, maxCachedTlsSessions = 100} = {}) {
+ super();
+
+ // A session is considered busy when its current streams count
+ // is equal to or greater than the `maxConcurrentStreams` value.
+
+ // A session is considered free when its current streams count
+ // is less than the `maxConcurrentStreams` value.
+
+ // SESSIONS[NORMALIZED_OPTIONS] = [];
+ this.sessions = {};
+
+ // The queue for creating new sessions. It looks like this:
+ // QUEUE[NORMALIZED_OPTIONS][NORMALIZED_ORIGIN] = ENTRY_FUNCTION
+ //
+ // The entry function has `listeners`, `completed` and `destroyed` properties.
+ // `listeners` is an array of objects containing `resolve` and `reject` functions.
+ // `completed` is a boolean. It's set to true after ENTRY_FUNCTION is executed.
+ // `destroyed` is a boolean. If it's set to true, the session will be destroyed if hasn't connected yet.
+ this.queue = {};
+
+ // Each session will use this timeout value.
+ this.timeout = timeout;
+
+ // Max sessions in total
+ this.maxSessions = maxSessions;
+
+ // Max free sessions in total
+ // TODO: decreasing `maxFreeSessions` should close some sessions
+ this.maxFreeSessions = maxFreeSessions;
+
+ this._freeSessionsCount = 0;
+ this._sessionsCount = 0;
+
+ // We don't support push streams by default.
+ this.settings = {
+ enablePush: false
+ };
+
+ // Reusing TLS sessions increases performance.
+ this.tlsSessionCache = new QuickLRU({maxSize: maxCachedTlsSessions});
+ }
+
+ static normalizeOrigin(url, servername) {
+ if (typeof url === 'string') {
+ url = new URL(url);
+ }
+
+ if (servername && url.hostname !== servername) {
+ url.hostname = servername;
+ }
+
+ return url.origin;
+ }
+
+ normalizeOptions(options) {
+ let normalized = '';
+
+ if (options) {
+ for (const key of nameKeys) {
+ if (options[key]) {
+ normalized += `:${options[key]}`;
+ }
+ }
+ }
+
+ return normalized;
+ }
+
+ _tryToCreateNewSession(normalizedOptions, normalizedOrigin) {
+ if (!(normalizedOptions in this.queue) || !(normalizedOrigin in this.queue[normalizedOptions])) {
+ return;
+ }
+
+ const item = this.queue[normalizedOptions][normalizedOrigin];
+
+ // The entry function can be run only once.
+ // BUG: The session may be never created when:
+ // - the first condition is false AND
+ // - this function is never called with the same arguments in the future.
+ if (this._sessionsCount < this.maxSessions && !item.completed) {
+ item.completed = true;
+
+ item();
+ }
+ }
+
+ getSession(origin, options, listeners) {
+ return new Promise((resolve, reject) => {
+ if (Array.isArray(listeners)) {
+ listeners = [...listeners];
+
+ // Resolve the current promise ASAP, we're just moving the listeners.
+ // They will be executed at a different time.
+ resolve();
+ } else {
+ listeners = [{resolve, reject}];
+ }
+
+ const normalizedOptions = this.normalizeOptions(options);
+ const normalizedOrigin = Agent.normalizeOrigin(origin, options && options.servername);
+
+ if (normalizedOrigin === undefined) {
+ for (const {reject} of listeners) {
+ reject(new TypeError('The `origin` argument needs to be a string or an URL object'));
+ }
+
+ return;
+ }
+
+ if (normalizedOptions in this.sessions) {
+ const sessions = this.sessions[normalizedOptions];
+
+ let maxConcurrentStreams = -1;
+ let currentStreamsCount = -1;
+ let optimalSession;
+
+ // We could just do this.sessions[normalizedOptions].find(...) but that isn't optimal.
+ // Additionally, we are looking for session which has biggest current pending streams count.
+ for (const session of sessions) {
+ const sessionMaxConcurrentStreams = session.remoteSettings.maxConcurrentStreams;
+
+ if (sessionMaxConcurrentStreams < maxConcurrentStreams) {
+ break;
+ }
+
+ if (session[kOriginSet].includes(normalizedOrigin)) {
+ const sessionCurrentStreamsCount = session[kCurrentStreamsCount];
+
+ if (
+ sessionCurrentStreamsCount >= sessionMaxConcurrentStreams ||
+ session[kGracefullyClosing] ||
+ // Unfortunately the `close` event isn't called immediately,
+ // so `session.destroyed` is `true`, but `session.closed` is `false`.
+ session.destroyed
+ ) {
+ continue;
+ }
+
+ // We only need set this once.
+ if (!optimalSession) {
+ maxConcurrentStreams = sessionMaxConcurrentStreams;
+ }
+
+ // We're looking for the session which has biggest current pending stream count,
+ // in order to minimalize the amount of active sessions.
+ if (sessionCurrentStreamsCount > currentStreamsCount) {
+ optimalSession = session;
+ currentStreamsCount = sessionCurrentStreamsCount;
+ }
+ }
+ }
+
+ if (optimalSession) {
+ /* istanbul ignore next: safety check */
+ if (listeners.length !== 1) {
+ for (const {reject} of listeners) {
+ const error = new Error(
+ `Expected the length of listeners to be 1, got ${listeners.length}.\n` +
+ 'Please report this to https://github.com/szmarczak/http2-wrapper/'
+ );
+
+ reject(error);
+ }
+
+ return;
+ }
+
+ listeners[0].resolve(optimalSession);
+ return;
+ }
+ }
+
+ if (normalizedOptions in this.queue) {
+ if (normalizedOrigin in this.queue[normalizedOptions]) {
+ // There's already an item in the queue, just attach ourselves to it.
+ this.queue[normalizedOptions][normalizedOrigin].listeners.push(...listeners);
+
+ // This shouldn't be executed here.
+ // See the comment inside _tryToCreateNewSession.
+ this._tryToCreateNewSession(normalizedOptions, normalizedOrigin);
+ return;
+ }
+ } else {
+ this.queue[normalizedOptions] = {};
+ }
+
+ // The entry must be removed from the queue IMMEDIATELY when:
+ // 1. the session connects successfully,
+ // 2. an error occurs.
+ const removeFromQueue = () => {
+ // Our entry can be replaced. We cannot remove the new one.
+ if (normalizedOptions in this.queue && this.queue[normalizedOptions][normalizedOrigin] === entry) {
+ delete this.queue[normalizedOptions][normalizedOrigin];
+
+ if (Object.keys(this.queue[normalizedOptions]).length === 0) {
+ delete this.queue[normalizedOptions];
+ }
+ }
+ };
+
+ // The main logic is here
+ const entry = () => {
+ const name = `${normalizedOrigin}:${normalizedOptions}`;
+ let receivedSettings = false;
+
+ try {
+ const session = http2.connect(origin, {
+ createConnection: this.createConnection,
+ settings: this.settings,
+ session: this.tlsSessionCache.get(name),
+ ...options
+ });
+ session[kCurrentStreamsCount] = 0;
+ session[kGracefullyClosing] = false;
+
+ const isFree = () => session[kCurrentStreamsCount] < session.remoteSettings.maxConcurrentStreams;
+ let wasFree = true;
+
+ session.socket.once('session', tlsSession => {
+ this.tlsSessionCache.set(name, tlsSession);
+ });
+
+ session.once('error', error => {
+ // Listeners are empty when the session successfully connected.
+ for (const {reject} of listeners) {
+ reject(error);
+ }
+
+ // The connection got broken, purge the cache.
+ this.tlsSessionCache.delete(name);
+ });
+
+ session.setTimeout(this.timeout, () => {
+ // Terminates all streams owned by this session.
+ // TODO: Maybe the streams should have a "Session timed out" error?
+ session.destroy();
+ });
+
+ session.once('close', () => {
+ if (receivedSettings) {
+ // 1. If it wasn't free then no need to decrease because
+ // it has been decreased already in session.request().
+ // 2. `stream.once('close')` won't increment the count
+ // because the session is already closed.
+ if (wasFree) {
+ this._freeSessionsCount--;
+ }
+
+ this._sessionsCount--;
+
+ // This cannot be moved to the stream logic,
+ // because there may be a session that hadn't made a single request.
+ const where = this.sessions[normalizedOptions];
+ where.splice(where.indexOf(session), 1);
+
+ if (where.length === 0) {
+ delete this.sessions[normalizedOptions];
+ }
+ } else {
+ // Broken connection
+ const error = new Error('Session closed without receiving a SETTINGS frame');
+ error.code = 'HTTP2WRAPPER_NOSETTINGS';
+
+ for (const {reject} of listeners) {
+ reject(error);
+ }
+
+ removeFromQueue();
+ }
+
+ // There may be another session awaiting.
+ this._tryToCreateNewSession(normalizedOptions, normalizedOrigin);
+ });
+
+ // Iterates over the queue and processes listeners.
+ const processListeners = () => {
+ if (!(normalizedOptions in this.queue) || !isFree()) {
+ return;
+ }
+
+ for (const origin of session[kOriginSet]) {
+ if (origin in this.queue[normalizedOptions]) {
+ const {listeners} = this.queue[normalizedOptions][origin];
+
+ // Prevents session overloading.
+ while (listeners.length !== 0 && isFree()) {
+ // We assume `resolve(...)` calls `request(...)` *directly*,
+ // otherwise the session will get overloaded.
+ listeners.shift().resolve(session);
+ }
+
+ const where = this.queue[normalizedOptions];
+ if (where[origin].listeners.length === 0) {
+ delete where[origin];
+
+ if (Object.keys(where).length === 0) {
+ delete this.queue[normalizedOptions];
+ break;
+ }
+ }
+
+ // We're no longer free, no point in continuing.
+ if (!isFree()) {
+ break;
+ }
+ }
+ }
+ };
+
+ // The Origin Set cannot shrink. No need to check if it suddenly became covered by another one.
+ session.on('origin', () => {
+ session[kOriginSet] = session.originSet;
+
+ if (!isFree()) {
+ // The session is full.
+ return;
+ }
+
+ processListeners();
+
+ // Close covered sessions (if possible).
+ closeCoveredSessions(this.sessions[normalizedOptions], session);
+ });
+
+ session.once('remoteSettings', () => {
+ // Fix Node.js bug preventing the process from exiting
+ session.ref();
+ session.unref();
+
+ this._sessionsCount++;
+
+ // The Agent could have been destroyed already.
+ if (entry.destroyed) {
+ const error = new Error('Agent has been destroyed');
+
+ for (const listener of listeners) {
+ listener.reject(error);
+ }
+
+ session.destroy();
+ return;
+ }
+
+ session[kOriginSet] = session.originSet;
+
+ {
+ const where = this.sessions;
+
+ if (normalizedOptions in where) {
+ const sessions = where[normalizedOptions];
+ sessions.splice(getSortedIndex(sessions, session, compareSessions), 0, session);
+ } else {
+ where[normalizedOptions] = [session];
+ }
+ }
+
+ this._freeSessionsCount += 1;
+ receivedSettings = true;
+
+ this.emit('session', session);
+
+ processListeners();
+ removeFromQueue();
+
+ // TODO: Close last recently used (or least used?) session
+ if (session[kCurrentStreamsCount] === 0 && this._freeSessionsCount > this.maxFreeSessions) {
+ session.close();
+ }
+
+ // Check if we haven't managed to execute all listeners.
+ if (listeners.length !== 0) {
+ // Request for a new session with predefined listeners.
+ this.getSession(normalizedOrigin, options, listeners);
+ listeners.length = 0;
+ }
+
+ // `session.remoteSettings.maxConcurrentStreams` might get increased
+ session.on('remoteSettings', () => {
+ processListeners();
+
+ // In case the Origin Set changes
+ closeCoveredSessions(this.sessions[normalizedOptions], session);
+ });
+ });
+
+ // Shim `session.request()` in order to catch all streams
+ session[kRequest] = session.request;
+ session.request = (headers, streamOptions) => {
+ if (session[kGracefullyClosing]) {
+ throw new Error('The session is gracefully closing. No new streams are allowed.');
+ }
+
+ const stream = session[kRequest](headers, streamOptions);
+
+ // The process won't exit until the session is closed or all requests are gone.
+ session.ref();
+
+ ++session[kCurrentStreamsCount];
+
+ if (session[kCurrentStreamsCount] === session.remoteSettings.maxConcurrentStreams) {
+ this._freeSessionsCount--;
+ }
+
+ stream.once('close', () => {
+ wasFree = isFree();
+
+ --session[kCurrentStreamsCount];
+
+ if (!session.destroyed && !session.closed) {
+ closeSessionIfCovered(this.sessions[normalizedOptions], session);
+
+ if (isFree() && !session.closed) {
+ if (!wasFree) {
+ this._freeSessionsCount++;
+
+ wasFree = true;
+ }
+
+ const isEmpty = session[kCurrentStreamsCount] === 0;
+
+ if (isEmpty) {
+ session.unref();
+ }
+
+ if (
+ isEmpty &&
+ (
+ this._freeSessionsCount > this.maxFreeSessions ||
+ session[kGracefullyClosing]
+ )
+ ) {
+ session.close();
+ } else {
+ closeCoveredSessions(this.sessions[normalizedOptions], session);
+ processListeners();
+ }
+ }
+ }
+ });
+
+ return stream;
+ };
+ } catch (error) {
+ for (const listener of listeners) {
+ listener.reject(error);
+ }
+
+ removeFromQueue();
+ }
+ };
+
+ entry.listeners = listeners;
+ entry.completed = false;
+ entry.destroyed = false;
+
+ this.queue[normalizedOptions][normalizedOrigin] = entry;
+ this._tryToCreateNewSession(normalizedOptions, normalizedOrigin);
+ });
+ }
+
+ request(origin, options, headers, streamOptions) {
+ return new Promise((resolve, reject) => {
+ this.getSession(origin, options, [{
+ reject,
+ resolve: session => {
+ try {
+ resolve(session.request(headers, streamOptions));
+ } catch (error) {
+ reject(error);
+ }
+ }
+ }]);
+ });
+ }
+
+ createConnection(origin, options) {
+ return Agent.connect(origin, options);
+ }
+
+ static connect(origin, options) {
+ options.ALPNProtocols = ['h2'];
+
+ const port = origin.port || 443;
+ const host = origin.hostname || origin.host;
+
+ if (typeof options.servername === 'undefined') {
+ options.servername = host;
+ }
+
+ return tls.connect(port, host, options);
+ }
+
+ closeFreeSessions() {
+ for (const sessions of Object.values(this.sessions)) {
+ for (const session of sessions) {
+ if (session[kCurrentStreamsCount] === 0) {
+ session.close();
+ }
+ }
+ }
+ }
+
+ destroy(reason) {
+ for (const sessions of Object.values(this.sessions)) {
+ for (const session of sessions) {
+ session.destroy(reason);
+ }
+ }
+
+ for (const entriesOfAuthority of Object.values(this.queue)) {
+ for (const entry of Object.values(entriesOfAuthority)) {
+ entry.destroyed = true;
+ }
+ }
+
+ // New requests should NOT attach to destroyed sessions
+ this.queue = {};
+ }
+
+ get freeSessions() {
+ return getSessions({agent: this, isFree: true});
+ }
+
+ get busySessions() {
+ return getSessions({agent: this, isFree: false});
+ }
+}
+
+Agent.kCurrentStreamsCount = kCurrentStreamsCount;
+Agent.kGracefullyClosing = kGracefullyClosing;
+
+module.exports = {
+ Agent,
+ globalAgent: new Agent()
+};
diff --git a/client/node_modules/http2-wrapper/source/auto.js b/client/node_modules/http2-wrapper/source/auto.js
new file mode 100644
index 0000000..af4e9ba
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/auto.js
@@ -0,0 +1,149 @@
+'use strict';
+const http = require('http');
+const https = require('https');
+const resolveALPN = require('resolve-alpn');
+const QuickLRU = require('quick-lru');
+const Http2ClientRequest = require('./client-request');
+const calculateServerName = require('./utils/calculate-server-name');
+const urlToOptions = require('./utils/url-to-options');
+
+const cache = new QuickLRU({maxSize: 100});
+const queue = new Map();
+
+const installSocket = (agent, socket, options) => {
+ socket._httpMessage = {shouldKeepAlive: true};
+
+ const onFree = () => {
+ agent.emit('free', socket, options);
+ };
+
+ socket.on('free', onFree);
+
+ const onClose = () => {
+ agent.removeSocket(socket, options);
+ };
+
+ socket.on('close', onClose);
+
+ const onRemove = () => {
+ agent.removeSocket(socket, options);
+ socket.off('close', onClose);
+ socket.off('free', onFree);
+ socket.off('agentRemove', onRemove);
+ };
+
+ socket.on('agentRemove', onRemove);
+
+ agent.emit('free', socket, options);
+};
+
+const resolveProtocol = async options => {
+ const name = `${options.host}:${options.port}:${options.ALPNProtocols.sort()}`;
+
+ if (!cache.has(name)) {
+ if (queue.has(name)) {
+ const result = await queue.get(name);
+ return result.alpnProtocol;
+ }
+
+ const {path, agent} = options;
+ options.path = options.socketPath;
+
+ const resultPromise = resolveALPN(options);
+ queue.set(name, resultPromise);
+
+ try {
+ const {socket, alpnProtocol} = await resultPromise;
+ cache.set(name, alpnProtocol);
+
+ options.path = path;
+
+ if (alpnProtocol === 'h2') {
+ // https://github.com/nodejs/node/issues/33343
+ socket.destroy();
+ } else {
+ const {globalAgent} = https;
+ const defaultCreateConnection = https.Agent.prototype.createConnection;
+
+ if (agent) {
+ if (agent.createConnection === defaultCreateConnection) {
+ installSocket(agent, socket, options);
+ } else {
+ socket.destroy();
+ }
+ } else if (globalAgent.createConnection === defaultCreateConnection) {
+ installSocket(globalAgent, socket, options);
+ } else {
+ socket.destroy();
+ }
+ }
+
+ queue.delete(name);
+
+ return alpnProtocol;
+ } catch (error) {
+ queue.delete(name);
+
+ throw error;
+ }
+ }
+
+ return cache.get(name);
+};
+
+module.exports = async (input, options, callback) => {
+ if (typeof input === 'string' || input instanceof URL) {
+ input = urlToOptions(new URL(input));
+ }
+
+ if (typeof options === 'function') {
+ callback = options;
+ options = undefined;
+ }
+
+ options = {
+ ALPNProtocols: ['h2', 'http/1.1'],
+ ...input,
+ ...options,
+ resolveSocket: true
+ };
+
+ if (!Array.isArray(options.ALPNProtocols) || options.ALPNProtocols.length === 0) {
+ throw new Error('The `ALPNProtocols` option must be an Array with at least one entry');
+ }
+
+ options.protocol = options.protocol || 'https:';
+ const isHttps = options.protocol === 'https:';
+
+ options.host = options.hostname || options.host || 'localhost';
+ options.session = options.tlsSession;
+ options.servername = options.servername || calculateServerName(options);
+ options.port = options.port || (isHttps ? 443 : 80);
+ options._defaultAgent = isHttps ? https.globalAgent : http.globalAgent;
+
+ const agents = options.agent;
+
+ if (agents) {
+ if (agents.addRequest) {
+ throw new Error('The `options.agent` object can contain only `http`, `https` or `http2` properties');
+ }
+
+ options.agent = agents[isHttps ? 'https' : 'http'];
+ }
+
+ if (isHttps) {
+ const protocol = await resolveProtocol(options);
+
+ if (protocol === 'h2') {
+ if (agents) {
+ options.agent = agents.http2;
+ }
+
+ return new Http2ClientRequest(options, callback);
+ }
+ }
+
+ return http.request(options, callback);
+};
+
+module.exports.protocolCache = cache;
diff --git a/client/node_modules/http2-wrapper/source/client-request.js b/client/node_modules/http2-wrapper/source/client-request.js
new file mode 100644
index 0000000..b712967
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/client-request.js
@@ -0,0 +1,445 @@
+'use strict';
+const http2 = require('http2');
+const {Writable} = require('stream');
+const {Agent, globalAgent} = require('./agent');
+const IncomingMessage = require('./incoming-message');
+const urlToOptions = require('./utils/url-to-options');
+const proxyEvents = require('./utils/proxy-events');
+const isRequestPseudoHeader = require('./utils/is-request-pseudo-header');
+const {
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_PROTOCOL,
+ ERR_HTTP_HEADERS_SENT,
+ ERR_INVALID_HTTP_TOKEN,
+ ERR_HTTP_INVALID_HEADER_VALUE,
+ ERR_INVALID_CHAR
+} = require('./utils/errors');
+
+const {
+ HTTP2_HEADER_STATUS,
+ HTTP2_HEADER_METHOD,
+ HTTP2_HEADER_PATH,
+ HTTP2_METHOD_CONNECT
+} = http2.constants;
+
+const kHeaders = Symbol('headers');
+const kOrigin = Symbol('origin');
+const kSession = Symbol('session');
+const kOptions = Symbol('options');
+const kFlushedHeaders = Symbol('flushedHeaders');
+const kJobs = Symbol('jobs');
+
+const isValidHttpToken = /^[\^`\-\w!#$%&*+.|~]+$/;
+const isInvalidHeaderValue = /[^\t\u0020-\u007E\u0080-\u00FF]/;
+
+class ClientRequest extends Writable {
+ constructor(input, options, callback) {
+ super({
+ autoDestroy: false
+ });
+
+ const hasInput = typeof input === 'string' || input instanceof URL;
+ if (hasInput) {
+ input = urlToOptions(input instanceof URL ? input : new URL(input));
+ }
+
+ if (typeof options === 'function' || options === undefined) {
+ // (options, callback)
+ callback = options;
+ options = hasInput ? input : {...input};
+ } else {
+ // (input, options, callback)
+ options = {...input, ...options};
+ }
+
+ if (options.h2session) {
+ this[kSession] = options.h2session;
+ } else if (options.agent === false) {
+ this.agent = new Agent({maxFreeSessions: 0});
+ } else if (typeof options.agent === 'undefined' || options.agent === null) {
+ if (typeof options.createConnection === 'function') {
+ // This is a workaround - we don't have to create the session on our own.
+ this.agent = new Agent({maxFreeSessions: 0});
+ this.agent.createConnection = options.createConnection;
+ } else {
+ this.agent = globalAgent;
+ }
+ } else if (typeof options.agent.request === 'function') {
+ this.agent = options.agent;
+ } else {
+ throw new ERR_INVALID_ARG_TYPE('options.agent', ['Agent-like Object', 'undefined', 'false'], options.agent);
+ }
+
+ if (options.protocol && options.protocol !== 'https:') {
+ throw new ERR_INVALID_PROTOCOL(options.protocol, 'https:');
+ }
+
+ const port = options.port || options.defaultPort || (this.agent && this.agent.defaultPort) || 443;
+ const host = options.hostname || options.host || 'localhost';
+
+ // Don't enforce the origin via options. It may be changed in an Agent.
+ delete options.hostname;
+ delete options.host;
+ delete options.port;
+
+ const {timeout} = options;
+ options.timeout = undefined;
+
+ this[kHeaders] = Object.create(null);
+ this[kJobs] = [];
+
+ this.socket = null;
+ this.connection = null;
+
+ this.method = options.method || 'GET';
+ this.path = options.path;
+
+ this.res = null;
+ this.aborted = false;
+ this.reusedSocket = false;
+
+ if (options.headers) {
+ for (const [header, value] of Object.entries(options.headers)) {
+ this.setHeader(header, value);
+ }
+ }
+
+ if (options.auth && !('authorization' in this[kHeaders])) {
+ this[kHeaders].authorization = 'Basic ' + Buffer.from(options.auth).toString('base64');
+ }
+
+ options.session = options.tlsSession;
+ options.path = options.socketPath;
+
+ this[kOptions] = options;
+
+ // Clients that generate HTTP/2 requests directly SHOULD use the :authority pseudo-header field instead of the Host header field.
+ if (port === 443) {
+ this[kOrigin] = `https://${host}`;
+
+ if (!(':authority' in this[kHeaders])) {
+ this[kHeaders][':authority'] = host;
+ }
+ } else {
+ this[kOrigin] = `https://${host}:${port}`;
+
+ if (!(':authority' in this[kHeaders])) {
+ this[kHeaders][':authority'] = `${host}:${port}`;
+ }
+ }
+
+ if (timeout) {
+ this.setTimeout(timeout);
+ }
+
+ if (callback) {
+ this.once('response', callback);
+ }
+
+ this[kFlushedHeaders] = false;
+ }
+
+ get method() {
+ return this[kHeaders][HTTP2_HEADER_METHOD];
+ }
+
+ set method(value) {
+ if (value) {
+ this[kHeaders][HTTP2_HEADER_METHOD] = value.toUpperCase();
+ }
+ }
+
+ get path() {
+ return this[kHeaders][HTTP2_HEADER_PATH];
+ }
+
+ set path(value) {
+ if (value) {
+ this[kHeaders][HTTP2_HEADER_PATH] = value;
+ }
+ }
+
+ get _mustNotHaveABody() {
+ return this.method === 'GET' || this.method === 'HEAD' || this.method === 'DELETE';
+ }
+
+ _write(chunk, encoding, callback) {
+ // https://github.com/nodejs/node/blob/654df09ae0c5e17d1b52a900a545f0664d8c7627/lib/internal/http2/util.js#L148-L156
+ if (this._mustNotHaveABody) {
+ callback(new Error('The GET, HEAD and DELETE methods must NOT have a body'));
+ /* istanbul ignore next: Node.js 12 throws directly */
+ return;
+ }
+
+ this.flushHeaders();
+
+ const callWrite = () => this._request.write(chunk, encoding, callback);
+ if (this._request) {
+ callWrite();
+ } else {
+ this[kJobs].push(callWrite);
+ }
+ }
+
+ _final(callback) {
+ if (this.destroyed) {
+ return;
+ }
+
+ this.flushHeaders();
+
+ const callEnd = () => {
+ // For GET, HEAD and DELETE
+ if (this._mustNotHaveABody) {
+ callback();
+ return;
+ }
+
+ this._request.end(callback);
+ };
+
+ if (this._request) {
+ callEnd();
+ } else {
+ this[kJobs].push(callEnd);
+ }
+ }
+
+ abort() {
+ if (this.res && this.res.complete) {
+ return;
+ }
+
+ if (!this.aborted) {
+ process.nextTick(() => this.emit('abort'));
+ }
+
+ this.aborted = true;
+
+ this.destroy();
+ }
+
+ _destroy(error, callback) {
+ if (this.res) {
+ this.res._dump();
+ }
+
+ if (this._request) {
+ this._request.destroy();
+ }
+
+ callback(error);
+ }
+
+ async flushHeaders() {
+ if (this[kFlushedHeaders] || this.destroyed) {
+ return;
+ }
+
+ this[kFlushedHeaders] = true;
+
+ const isConnectMethod = this.method === HTTP2_METHOD_CONNECT;
+
+ // The real magic is here
+ const onStream = stream => {
+ this._request = stream;
+
+ if (this.destroyed) {
+ stream.destroy();
+ return;
+ }
+
+ // Forwards `timeout`, `continue`, `close` and `error` events to this instance.
+ if (!isConnectMethod) {
+ proxyEvents(stream, this, ['timeout', 'continue', 'close', 'error']);
+ }
+
+ // Wait for the `finish` event. We don't want to emit the `response` event
+ // before `request.end()` is called.
+ const waitForEnd = fn => {
+ return (...args) => {
+ if (!this.writable && !this.destroyed) {
+ fn(...args);
+ } else {
+ this.once('finish', () => {
+ fn(...args);
+ });
+ }
+ };
+ };
+
+ // This event tells we are ready to listen for the data.
+ stream.once('response', waitForEnd((headers, flags, rawHeaders) => {
+ // If we were to emit raw request stream, it would be as fast as the native approach.
+ // Note that wrapping the raw stream in a Proxy instance won't improve the performance (already tested it).
+ const response = new IncomingMessage(this.socket, stream.readableHighWaterMark);
+ this.res = response;
+
+ response.req = this;
+ response.statusCode = headers[HTTP2_HEADER_STATUS];
+ response.headers = headers;
+ response.rawHeaders = rawHeaders;
+
+ response.once('end', () => {
+ if (this.aborted) {
+ response.aborted = true;
+ response.emit('aborted');
+ } else {
+ response.complete = true;
+
+ // Has no effect, just be consistent with the Node.js behavior
+ response.socket = null;
+ response.connection = null;
+ }
+ });
+
+ if (isConnectMethod) {
+ response.upgrade = true;
+
+ // The HTTP1 API says the socket is detached here,
+ // but we can't do that so we pass the original HTTP2 request.
+ if (this.emit('connect', response, stream, Buffer.alloc(0))) {
+ this.emit('close');
+ } else {
+ // No listeners attached, destroy the original request.
+ stream.destroy();
+ }
+ } else {
+ // Forwards data
+ stream.on('data', chunk => {
+ if (!response._dumped && !response.push(chunk)) {
+ stream.pause();
+ }
+ });
+
+ stream.once('end', () => {
+ response.push(null);
+ });
+
+ if (!this.emit('response', response)) {
+ // No listeners attached, dump the response.
+ response._dump();
+ }
+ }
+ }));
+
+ // Emits `information` event
+ stream.once('headers', waitForEnd(
+ headers => this.emit('information', {statusCode: headers[HTTP2_HEADER_STATUS]})
+ ));
+
+ stream.once('trailers', waitForEnd((trailers, flags, rawTrailers) => {
+ const {res} = this;
+
+ // Assigns trailers to the response object.
+ res.trailers = trailers;
+ res.rawTrailers = rawTrailers;
+ }));
+
+ const {socket} = stream.session;
+ this.socket = socket;
+ this.connection = socket;
+
+ for (const job of this[kJobs]) {
+ job();
+ }
+
+ this.emit('socket', this.socket);
+ };
+
+ // Makes a HTTP2 request
+ if (this[kSession]) {
+ try {
+ onStream(this[kSession].request(this[kHeaders]));
+ } catch (error) {
+ this.emit('error', error);
+ }
+ } else {
+ this.reusedSocket = true;
+
+ try {
+ onStream(await this.agent.request(this[kOrigin], this[kOptions], this[kHeaders]));
+ } catch (error) {
+ this.emit('error', error);
+ }
+ }
+ }
+
+ getHeader(name) {
+ if (typeof name !== 'string') {
+ throw new ERR_INVALID_ARG_TYPE('name', 'string', name);
+ }
+
+ return this[kHeaders][name.toLowerCase()];
+ }
+
+ get headersSent() {
+ return this[kFlushedHeaders];
+ }
+
+ removeHeader(name) {
+ if (typeof name !== 'string') {
+ throw new ERR_INVALID_ARG_TYPE('name', 'string', name);
+ }
+
+ if (this.headersSent) {
+ throw new ERR_HTTP_HEADERS_SENT('remove');
+ }
+
+ delete this[kHeaders][name.toLowerCase()];
+ }
+
+ setHeader(name, value) {
+ if (this.headersSent) {
+ throw new ERR_HTTP_HEADERS_SENT('set');
+ }
+
+ if (typeof name !== 'string' || (!isValidHttpToken.test(name) && !isRequestPseudoHeader(name))) {
+ throw new ERR_INVALID_HTTP_TOKEN('Header name', name);
+ }
+
+ if (typeof value === 'undefined') {
+ throw new ERR_HTTP_INVALID_HEADER_VALUE(value, name);
+ }
+
+ if (isInvalidHeaderValue.test(value)) {
+ throw new ERR_INVALID_CHAR('header content', name);
+ }
+
+ this[kHeaders][name.toLowerCase()] = value;
+ }
+
+ setNoDelay() {
+ // HTTP2 sockets cannot be malformed, do nothing.
+ }
+
+ setSocketKeepAlive() {
+ // HTTP2 sockets cannot be malformed, do nothing.
+ }
+
+ setTimeout(ms, callback) {
+ const applyTimeout = () => this._request.setTimeout(ms, callback);
+
+ if (this._request) {
+ applyTimeout();
+ } else {
+ this[kJobs].push(applyTimeout);
+ }
+
+ return this;
+ }
+
+ get maxHeadersCount() {
+ if (!this.destroyed && this._request) {
+ return this._request.session.localSettings.maxHeaderListSize;
+ }
+
+ return undefined;
+ }
+
+ set maxHeadersCount(_value) {
+ // Updating HTTP2 settings would affect all requests, do nothing.
+ }
+}
+
+module.exports = ClientRequest;
diff --git a/client/node_modules/http2-wrapper/source/incoming-message.js b/client/node_modules/http2-wrapper/source/incoming-message.js
new file mode 100644
index 0000000..7d5c0d3
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/incoming-message.js
@@ -0,0 +1,58 @@
+'use strict';
+const {Readable} = require('stream');
+
+class IncomingMessage extends Readable {
+ constructor(socket, highWaterMark) {
+ super({
+ highWaterMark,
+ autoDestroy: false
+ });
+
+ this.statusCode = null;
+ this.statusMessage = '';
+ this.httpVersion = '2.0';
+ this.httpVersionMajor = 2;
+ this.httpVersionMinor = 0;
+ this.headers = {};
+ this.trailers = {};
+ this.req = null;
+
+ this.aborted = false;
+ this.complete = false;
+ this.upgrade = null;
+
+ this.rawHeaders = [];
+ this.rawTrailers = [];
+
+ this.socket = socket;
+ this.connection = socket;
+
+ this._dumped = false;
+ }
+
+ _destroy(error) {
+ this.req._request.destroy(error);
+ }
+
+ setTimeout(ms, callback) {
+ this.req.setTimeout(ms, callback);
+ return this;
+ }
+
+ _dump() {
+ if (!this._dumped) {
+ this._dumped = true;
+
+ this.removeAllListeners('data');
+ this.resume();
+ }
+ }
+
+ _read() {
+ if (this.req) {
+ this.req._request.resume();
+ }
+ }
+}
+
+module.exports = IncomingMessage;
diff --git a/client/node_modules/http2-wrapper/source/index.js b/client/node_modules/http2-wrapper/source/index.js
new file mode 100644
index 0000000..fb83349
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/index.js
@@ -0,0 +1,28 @@
+'use strict';
+const http2 = require('http2');
+const agent = require('./agent');
+const ClientRequest = require('./client-request');
+const IncomingMessage = require('./incoming-message');
+const auto = require('./auto');
+
+const request = (url, options, callback) => {
+ return new ClientRequest(url, options, callback);
+};
+
+const get = (url, options, callback) => {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ const req = new ClientRequest(url, options, callback);
+ req.end();
+
+ return req;
+};
+
+module.exports = {
+ ...http2,
+ ClientRequest,
+ IncomingMessage,
+ ...agent,
+ request,
+ get,
+ auto
+};
diff --git a/client/node_modules/http2-wrapper/source/utils/calculate-server-name.js b/client/node_modules/http2-wrapper/source/utils/calculate-server-name.js
new file mode 100644
index 0000000..b05c099
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/utils/calculate-server-name.js
@@ -0,0 +1,27 @@
+'use strict';
+const net = require('net');
+/* istanbul ignore file: https://github.com/nodejs/node/blob/v13.0.1/lib/_http_agent.js */
+
+module.exports = options => {
+ let servername = options.host;
+ const hostHeader = options.headers && options.headers.host;
+
+ if (hostHeader) {
+ if (hostHeader.startsWith('[')) {
+ const index = hostHeader.indexOf(']');
+ if (index === -1) {
+ servername = hostHeader;
+ } else {
+ servername = hostHeader.slice(1, -1);
+ }
+ } else {
+ servername = hostHeader.split(':', 1)[0];
+ }
+ }
+
+ if (net.isIP(servername)) {
+ return '';
+ }
+
+ return servername;
+};
diff --git a/client/node_modules/http2-wrapper/source/utils/errors.js b/client/node_modules/http2-wrapper/source/utils/errors.js
new file mode 100644
index 0000000..5018283
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/utils/errors.js
@@ -0,0 +1,45 @@
+'use strict';
+/* istanbul ignore file: https://github.com/nodejs/node/blob/master/lib/internal/errors.js */
+
+const makeError = (Base, key, getMessage) => {
+ module.exports[key] = class NodeError extends Base {
+ constructor(...args) {
+ super(typeof getMessage === 'string' ? getMessage : getMessage(args));
+ this.name = `${super.name} [${key}]`;
+ this.code = key;
+ }
+ };
+};
+
+makeError(TypeError, 'ERR_INVALID_ARG_TYPE', args => {
+ const type = args[0].includes('.') ? 'property' : 'argument';
+
+ let valid = args[1];
+ const isManyTypes = Array.isArray(valid);
+
+ if (isManyTypes) {
+ valid = `${valid.slice(0, -1).join(', ')} or ${valid.slice(-1)}`;
+ }
+
+ return `The "${args[0]}" ${type} must be ${isManyTypes ? 'one of' : 'of'} type ${valid}. Received ${typeof args[2]}`;
+});
+
+makeError(TypeError, 'ERR_INVALID_PROTOCOL', args => {
+ return `Protocol "${args[0]}" not supported. Expected "${args[1]}"`;
+});
+
+makeError(Error, 'ERR_HTTP_HEADERS_SENT', args => {
+ return `Cannot ${args[0]} headers after they are sent to the client`;
+});
+
+makeError(TypeError, 'ERR_INVALID_HTTP_TOKEN', args => {
+ return `${args[0]} must be a valid HTTP token [${args[1]}]`;
+});
+
+makeError(TypeError, 'ERR_HTTP_INVALID_HEADER_VALUE', args => {
+ return `Invalid value "${args[0]} for header "${args[1]}"`;
+});
+
+makeError(TypeError, 'ERR_INVALID_CHAR', args => {
+ return `Invalid character in ${args[0]} [${args[1]}]`;
+});
diff --git a/client/node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js b/client/node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js
new file mode 100644
index 0000000..bed31cd
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = header => {
+ switch (header) {
+ case ':method':
+ case ':scheme':
+ case ':authority':
+ case ':path':
+ return true;
+ default:
+ return false;
+ }
+};
diff --git a/client/node_modules/http2-wrapper/source/utils/proxy-events.js b/client/node_modules/http2-wrapper/source/utils/proxy-events.js
new file mode 100644
index 0000000..35e2ae0
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/utils/proxy-events.js
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = (from, to, events) => {
+ for (const event of events) {
+ from.on(event, (...args) => to.emit(event, ...args));
+ }
+};
diff --git a/client/node_modules/http2-wrapper/source/utils/url-to-options.js b/client/node_modules/http2-wrapper/source/utils/url-to-options.js
new file mode 100644
index 0000000..36d1580
--- /dev/null
+++ b/client/node_modules/http2-wrapper/source/utils/url-to-options.js
@@ -0,0 +1,25 @@
+'use strict';
+/* istanbul ignore file: https://github.com/nodejs/node/blob/a91293d4d9ab403046ab5eb022332e4e3d249bd3/lib/internal/url.js#L1257 */
+
+module.exports = url => {
+ const options = {
+ protocol: url.protocol,
+ hostname: typeof url.hostname === 'string' && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,
+ host: url.host,
+ hash: url.hash,
+ search: url.search,
+ pathname: url.pathname,
+ href: url.href,
+ path: `${url.pathname || ''}${url.search || ''}`
+ };
+
+ if (typeof url.port === 'string' && url.port.length !== 0) {
+ options.port = Number(url.port);
+ }
+
+ if (url.username || url.password) {
+ options.auth = `${url.username || ''}:${url.password || ''}`;
+ }
+
+ return options;
+};
diff --git a/client/node_modules/json-buffer/.travis.yml b/client/node_modules/json-buffer/.travis.yml
new file mode 100644
index 0000000..244b7e8
--- /dev/null
+++ b/client/node_modules/json-buffer/.travis.yml
@@ -0,0 +1,3 @@
+language: node_js
+node_js:
+ - '0.10'
diff --git a/client/node_modules/json-buffer/LICENSE b/client/node_modules/json-buffer/LICENSE
new file mode 100644
index 0000000..b799ec0
--- /dev/null
+++ b/client/node_modules/json-buffer/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2013 Dominic Tarr
+
+Permission is hereby granted, free of charge,
+to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to
+deal in the Software without restriction, including
+without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom
+the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/json-buffer/README.md b/client/node_modules/json-buffer/README.md
new file mode 100644
index 0000000..4773d63
--- /dev/null
+++ b/client/node_modules/json-buffer/README.md
@@ -0,0 +1,24 @@
+# json-buffer
+
+JSON functions that can convert buffers!
+
+[![build status](https://secure.travis-ci.org/dominictarr/json-buffer.png)](http://travis-ci.org/dominictarr/json-buffer)
+
+[![testling badge](https://ci.testling.com/dominictarr/json-buffer.png)](https://ci.testling.com/dominictarr/json-buffer)
+
+JSON mangles buffers by converting to an array...
+which isn't helpful. json-buffers converts to base64 instead,
+and deconverts base64 to a buffer.
+
+``` js
+var JSONB = require('json-buffer')
+var Buffer = require('buffer').Buffer
+
+var str = JSONB.stringify(Buffer.from('hello there!'))
+
+console.log(JSONB.parse(str)) //GET a BUFFER back
+```
+
+## License
+
+MIT
diff --git a/client/node_modules/json-buffer/index.js b/client/node_modules/json-buffer/index.js
new file mode 100644
index 0000000..16f012e
--- /dev/null
+++ b/client/node_modules/json-buffer/index.js
@@ -0,0 +1,58 @@
+//TODO: handle reviver/dehydrate function like normal
+//and handle indentation, like normal.
+//if anyone needs this... please send pull request.
+
+exports.stringify = function stringify (o) {
+ if('undefined' == typeof o) return o
+
+ if(o && Buffer.isBuffer(o))
+ return JSON.stringify(':base64:' + o.toString('base64'))
+
+ if(o && o.toJSON)
+ o = o.toJSON()
+
+ if(o && 'object' === typeof o) {
+ var s = ''
+ var array = Array.isArray(o)
+ s = array ? '[' : '{'
+ var first = true
+
+ for(var k in o) {
+ var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])
+ if(Object.hasOwnProperty.call(o, k) && !ignore) {
+ if(!first)
+ s += ','
+ first = false
+ if (array) {
+ if(o[k] == undefined)
+ s += 'null'
+ else
+ s += stringify(o[k])
+ } else if (o[k] !== void(0)) {
+ s += stringify(k) + ':' + stringify(o[k])
+ }
+ }
+ }
+
+ s += array ? ']' : '}'
+
+ return s
+ } else if ('string' === typeof o) {
+ return JSON.stringify(/^:/.test(o) ? ':' + o : o)
+ } else if ('undefined' === typeof o) {
+ return 'null';
+ } else
+ return JSON.stringify(o)
+}
+
+exports.parse = function (s) {
+ return JSON.parse(s, function (key, value) {
+ if('string' === typeof value) {
+ if(/^:base64:/.test(value))
+ return Buffer.from(value.substring(8), 'base64')
+ else
+ return /^:/.test(value) ? value.substring(1) : value
+ }
+ return value
+ })
+}
diff --git a/client/node_modules/json-buffer/package.json b/client/node_modules/json-buffer/package.json
new file mode 100644
index 0000000..346747f
--- /dev/null
+++ b/client/node_modules/json-buffer/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "json-buffer",
+ "description": "JSON parse & stringify that supports binary via bops & base64",
+ "version": "3.0.1",
+ "homepage": "https://github.com/dominictarr/json-buffer",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/dominictarr/json-buffer.git"
+ },
+ "devDependencies": {
+ "tape": "^4.6.3"
+ },
+ "scripts": {
+ "test": "set -e; for t in test/*.js; do node $t; done"
+ },
+ "author": "Dominic Tarr <dominic.tarr@gmail.com> (http://dominictarr.com)",
+ "license": "MIT",
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/8..latest",
+ "firefox/17..latest",
+ "firefox/nightly",
+ "chrome/22..latest",
+ "chrome/canary",
+ "opera/12..latest",
+ "opera/next",
+ "safari/5.1..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2..latest"
+ ]
+ }
+}
diff --git a/client/node_modules/json-buffer/test/index.js b/client/node_modules/json-buffer/test/index.js
new file mode 100644
index 0000000..94e8372
--- /dev/null
+++ b/client/node_modules/json-buffer/test/index.js
@@ -0,0 +1,63 @@
+
+var test = require('tape')
+var _JSON = require('../')
+
+function clone (o) {
+ return JSON.parse(JSON.stringify(o))
+}
+
+var examples = {
+ simple: { foo: [], bar: {}, baz: Buffer.from('some binary data') },
+ just_buffer: Buffer.from('JUST A BUFFER'),
+ all_types: {
+ string:'hello',
+ number: 3145,
+ null: null,
+ object: {},
+ array: [],
+ boolean: true,
+ boolean2: false
+ },
+ foo: Buffer.from('foo'),
+ foo2: Buffer.from('foo2'),
+ escape: {
+ buffer: Buffer.from('x'),
+ string: _JSON.stringify(Buffer.from('x'))
+ },
+ escape2: {
+ buffer: Buffer.from('x'),
+ string: ':base64:'+ Buffer.from('x').toString('base64')
+ },
+ undefined: {
+ empty: undefined, test: true
+ },
+ undefined2: {
+ first: 1, empty: undefined, test: true
+ },
+ undefinedArray: {
+ array: [undefined, 1, 'two']
+ },
+ fn: {
+ fn: function () {}
+ },
+ undefined: undefined
+}
+
+for(k in examples)
+(function (value, k) {
+ test(k, function (t) {
+ var s = _JSON.stringify(value)
+ console.log('parse', s)
+ if(JSON.stringify(value) !== undefined) {
+ console.log(s)
+ var _value = _JSON.parse(s)
+ t.deepEqual(clone(_value), clone(value))
+ }
+ else
+ t.equal(s, undefined)
+ t.end()
+ })
+})(examples[k], k)
+
+
+
diff --git a/client/node_modules/json-stringify-safe/.npmignore b/client/node_modules/json-stringify-safe/.npmignore
new file mode 100644
index 0000000..17d6b36
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/.npmignore
@@ -0,0 +1 @@
+/*.tgz
diff --git a/client/node_modules/json-stringify-safe/CHANGELOG.md b/client/node_modules/json-stringify-safe/CHANGELOG.md
new file mode 100644
index 0000000..42bcb60
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/CHANGELOG.md
@@ -0,0 +1,14 @@
+## Unreleased
+- Fixes stringify to only take ancestors into account when checking
+ circularity.
+ It previously assumed every visited object was circular which led to [false
+ positives][issue9].
+ Uses the tiny serializer I wrote for [Must.js][must] a year and a half ago.
+- Fixes calling the `replacer` function in the proper context (`thisArg`).
+- Fixes calling the `cycleReplacer` function in the proper context (`thisArg`).
+- Speeds serializing by a factor of
+ Big-O(h-my-god-it-linearly-searched-every-object) it had ever seen. Searching
+ only the ancestors for a circular references speeds up things considerably.
+
+[must]: https://github.com/moll/js-must
+[issue9]: https://github.com/isaacs/json-stringify-safe/issues/9
diff --git a/client/node_modules/json-stringify-safe/LICENSE b/client/node_modules/json-stringify-safe/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/json-stringify-safe/Makefile b/client/node_modules/json-stringify-safe/Makefile
new file mode 100644
index 0000000..36088c7
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/Makefile
@@ -0,0 +1,35 @@
+NODE_OPTS =
+TEST_OPTS =
+
+love:
+ @echo "Feel like makin' love."
+
+test:
+ @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot $(TEST_OPTS)
+
+spec:
+ @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec $(TEST_OPTS)
+
+autotest:
+ @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot --watch $(TEST_OPTS)
+
+autospec:
+ @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec --watch $(TEST_OPTS)
+
+pack:
+ @file=$$(npm pack); echo "$$file"; tar tf "$$file"
+
+publish:
+ npm publish
+
+tag:
+ git tag "v$$(node -e 'console.log(require("./package").version)')"
+
+clean:
+ rm -f *.tgz
+ npm prune --production
+
+.PHONY: love
+.PHONY: test spec autotest autospec
+.PHONY: pack publish tag
+.PHONY: clean
diff --git a/client/node_modules/json-stringify-safe/README.md b/client/node_modules/json-stringify-safe/README.md
new file mode 100644
index 0000000..a11f302
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/README.md
@@ -0,0 +1,52 @@
+# json-stringify-safe
+
+Like JSON.stringify, but doesn't throw on circular references.
+
+## Usage
+
+Takes the same arguments as `JSON.stringify`.
+
+```javascript
+var stringify = require('json-stringify-safe');
+var circularObj = {};
+circularObj.circularRef = circularObj;
+circularObj.list = [ circularObj, circularObj ];
+console.log(stringify(circularObj, null, 2));
+```
+
+Output:
+
+```json
+{
+ "circularRef": "[Circular]",
+ "list": [
+ "[Circular]",
+ "[Circular]"
+ ]
+}
+```
+
+## Details
+
+```
+stringify(obj, serializer, indent, decycler)
+```
+
+The first three arguments are the same as to JSON.stringify. The last
+is an argument that's only used when the object has been seen already.
+
+The default `decycler` function returns the string `'[Circular]'`.
+If, for example, you pass in `function(k,v){}` (return nothing) then it
+will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,
+then cyclical objects will always be represented as `{"foo":"bar"}` in
+the result.
+
+```
+stringify.getSerialize(serializer, decycler)
+```
+
+Returns a serializer that can be used elsewhere. This is the actual
+function that's passed to JSON.stringify.
+
+**Note** that the function returned from `getSerialize` is stateful for now, so
+do **not** use it more than once.
diff --git a/client/node_modules/json-stringify-safe/package.json b/client/node_modules/json-stringify-safe/package.json
new file mode 100644
index 0000000..8e17b12
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "json-stringify-safe",
+ "version": "5.0.1",
+ "description": "Like JSON.stringify, but doesn't blow up on circular refs.",
+ "keywords": [
+ "json",
+ "stringify",
+ "circular",
+ "safe"
+ ],
+ "homepage": "https://github.com/isaacs/json-stringify-safe",
+ "bugs": "https://github.com/isaacs/json-stringify-safe/issues",
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
+ "contributors": [
+ "Andri Möll <andri@dot.ee> (http://themoll.com)"
+ ],
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/json-stringify-safe"
+ },
+ "main": "stringify.js",
+ "scripts": {
+ "test": "node test.js"
+ },
+ "devDependencies": {
+ "mocha": ">= 2.1.0 < 3",
+ "must": ">= 0.12 < 0.13",
+ "sinon": ">= 1.12.2 < 2"
+ }
+}
diff --git a/client/node_modules/json-stringify-safe/stringify.js b/client/node_modules/json-stringify-safe/stringify.js
new file mode 100644
index 0000000..124a452
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/stringify.js
@@ -0,0 +1,27 @@
+exports = module.exports = stringify
+exports.getSerialize = serializer
+
+function stringify(obj, replacer, spaces, cycleReplacer) {
+ return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
+}
+
+function serializer(replacer, cycleReplacer) {
+ var stack = [], keys = []
+
+ if (cycleReplacer == null) cycleReplacer = function(key, value) {
+ if (stack[0] === value) return "[Circular ~]"
+ return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
+ }
+
+ return function(key, value) {
+ if (stack.length > 0) {
+ var thisPos = stack.indexOf(this)
+ ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
+ ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
+ if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
+ }
+ else stack.push(value)
+
+ return replacer == null ? value : replacer.call(this, key, value)
+ }
+}
diff --git a/client/node_modules/json-stringify-safe/test/mocha.opts b/client/node_modules/json-stringify-safe/test/mocha.opts
new file mode 100644
index 0000000..2544e58
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/test/mocha.opts
@@ -0,0 +1,2 @@
+--recursive
+--require must
diff --git a/client/node_modules/json-stringify-safe/test/stringify_test.js b/client/node_modules/json-stringify-safe/test/stringify_test.js
new file mode 100644
index 0000000..5b32583
--- /dev/null
+++ b/client/node_modules/json-stringify-safe/test/stringify_test.js
@@ -0,0 +1,246 @@
+var Sinon = require("sinon")
+var stringify = require("..")
+function jsonify(obj) { return JSON.stringify(obj, null, 2) }
+
+describe("Stringify", function() {
+ it("must stringify circular objects", function() {
+ var obj = {name: "Alice"}
+ obj.self = obj
+ var json = stringify(obj, null, 2)
+ json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
+ })
+
+ it("must stringify circular objects with intermediaries", function() {
+ var obj = {name: "Alice"}
+ obj.identity = {self: obj}
+ var json = stringify(obj, null, 2)
+ json.must.eql(jsonify({name: "Alice", identity: {self: "[Circular ~]"}}))
+ })
+
+ it("must stringify circular objects deeper", function() {
+ var obj = {name: "Alice", child: {name: "Bob"}}
+ obj.child.self = obj.child
+
+ stringify(obj, null, 2).must.eql(jsonify({
+ name: "Alice",
+ child: {name: "Bob", self: "[Circular ~.child]"}
+ }))
+ })
+
+ it("must stringify circular objects deeper with intermediaries", function() {
+ var obj = {name: "Alice", child: {name: "Bob"}}
+ obj.child.identity = {self: obj.child}
+
+ stringify(obj, null, 2).must.eql(jsonify({
+ name: "Alice",
+ child: {name: "Bob", identity: {self: "[Circular ~.child]"}}
+ }))
+ })
+
+ it("must stringify circular objects in an array", function() {
+ var obj = {name: "Alice"}
+ obj.self = [obj, obj]
+
+ stringify(obj, null, 2).must.eql(jsonify({
+ name: "Alice", self: ["[Circular ~]", "[Circular ~]"]
+ }))
+ })
+
+ it("must stringify circular objects deeper in an array", function() {
+ var obj = {name: "Alice", children: [{name: "Bob"}, {name: "Eve"}]}
+ obj.children[0].self = obj.children[0]
+ obj.children[1].self = obj.children[1]
+
+ stringify(obj, null, 2).must.eql(jsonify({
+ name: "Alice",
+ children: [
+ {name: "Bob", self: "[Circular ~.children.0]"},
+ {name: "Eve", self: "[Circular ~.children.1]"}
+ ]
+ }))
+ })
+
+ it("must stringify circular arrays", function() {
+ var obj = []
+ obj.push(obj)
+ obj.push(obj)
+ var json = stringify(obj, null, 2)
+ json.must.eql(jsonify(["[Circular ~]", "[Circular ~]"]))
+ })
+
+ it("must stringify circular arrays with intermediaries", function() {
+ var obj = []
+ obj.push({name: "Alice", self: obj})
+ obj.push({name: "Bob", self: obj})
+
+ stringify(obj, null, 2).must.eql(jsonify([
+ {name: "Alice", self: "[Circular ~]"},
+ {name: "Bob", self: "[Circular ~]"}
+ ]))
+ })
+
+ it("must stringify repeated objects in objects", function() {
+ var obj = {}
+ var alice = {name: "Alice"}
+ obj.alice1 = alice
+ obj.alice2 = alice
+
+ stringify(obj, null, 2).must.eql(jsonify({
+ alice1: {name: "Alice"},
+ alice2: {name: "Alice"}
+ }))
+ })
+
+ it("must stringify repeated objects in arrays", function() {
+ var alice = {name: "Alice"}
+ var obj = [alice, alice]
+ var json = stringify(obj, null, 2)
+ json.must.eql(jsonify([{name: "Alice"}, {name: "Alice"}]))
+ })
+
+ it("must call given decycler and use its output", function() {
+ var obj = {}
+ obj.a = obj
+ obj.b = obj
+
+ var decycle = Sinon.spy(function() { return decycle.callCount })
+ var json = stringify(obj, null, 2, decycle)
+ json.must.eql(jsonify({a: 1, b: 2}, null, 2))
+
+ decycle.callCount.must.equal(2)
+ decycle.thisValues[0].must.equal(obj)
+ decycle.args[0][0].must.equal("a")
+ decycle.args[0][1].must.equal(obj)
+ decycle.thisValues[1].must.equal(obj)
+ decycle.args[1][0].must.equal("b")
+ decycle.args[1][1].must.equal(obj)
+ })
+
+ it("must call replacer and use its output", function() {
+ var obj = {name: "Alice", child: {name: "Bob"}}
+
+ var replacer = Sinon.spy(bangString)
+ var json = stringify(obj, replacer, 2)
+ json.must.eql(jsonify({name: "Alice!", child: {name: "Bob!"}}))
+
+ replacer.callCount.must.equal(4)
+ replacer.args[0][0].must.equal("")
+ replacer.args[0][1].must.equal(obj)
+ replacer.thisValues[1].must.equal(obj)
+ replacer.args[1][0].must.equal("name")
+ replacer.args[1][1].must.equal("Alice")
+ replacer.thisValues[2].must.equal(obj)
+ replacer.args[2][0].must.equal("child")
+ replacer.args[2][1].must.equal(obj.child)
+ replacer.thisValues[3].must.equal(obj.child)
+ replacer.args[3][0].must.equal("name")
+ replacer.args[3][1].must.equal("Bob")
+ })
+
+ it("must call replacer after describing circular references", function() {
+ var obj = {name: "Alice"}
+ obj.self = obj
+
+ var replacer = Sinon.spy(bangString)
+ var json = stringify(obj, replacer, 2)
+ json.must.eql(jsonify({name: "Alice!", self: "[Circular ~]!"}))
+
+ replacer.callCount.must.equal(3)
+ replacer.args[0][0].must.equal("")
+ replacer.args[0][1].must.equal(obj)
+ replacer.thisValues[1].must.equal(obj)
+ replacer.args[1][0].must.equal("name")
+ replacer.args[1][1].must.equal("Alice")
+ replacer.thisValues[2].must.equal(obj)
+ replacer.args[2][0].must.equal("self")
+ replacer.args[2][1].must.equal("[Circular ~]")
+ })
+
+ it("must call given decycler and use its output for nested objects",
+ function() {
+ var obj = {}
+ obj.a = obj
+ obj.b = {self: obj}
+
+ var decycle = Sinon.spy(function() { return decycle.callCount })
+ var json = stringify(obj, null, 2, decycle)
+ json.must.eql(jsonify({a: 1, b: {self: 2}}))
+
+ decycle.callCount.must.equal(2)
+ decycle.args[0][0].must.equal("a")
+ decycle.args[0][1].must.equal(obj)
+ decycle.args[1][0].must.equal("self")
+ decycle.args[1][1].must.equal(obj)
+ })
+
+ it("must use decycler's output when it returned null", function() {
+ var obj = {a: "b"}
+ obj.self = obj
+ obj.selves = [obj, obj]
+
+ function decycle() { return null }
+ stringify(obj, null, 2, decycle).must.eql(jsonify({
+ a: "b",
+ self: null,
+ selves: [null, null]
+ }))
+ })
+
+ it("must use decycler's output when it returned undefined", function() {
+ var obj = {a: "b"}
+ obj.self = obj
+ obj.selves = [obj, obj]
+
+ function decycle() {}
+ stringify(obj, null, 2, decycle).must.eql(jsonify({
+ a: "b",
+ selves: [null, null]
+ }))
+ })
+
+ it("must throw given a decycler that returns a cycle", function() {
+ var obj = {}
+ obj.self = obj
+ var err
+ function identity(key, value) { return value }
+ try { stringify(obj, null, 2, identity) } catch (ex) { err = ex }
+ err.must.be.an.instanceof(TypeError)
+ })
+
+ describe(".getSerialize", function() {
+ it("must stringify circular objects", function() {
+ var obj = {a: "b"}
+ obj.circularRef = obj
+ obj.list = [obj, obj]
+
+ var json = JSON.stringify(obj, stringify.getSerialize(), 2)
+ json.must.eql(jsonify({
+ "a": "b",
+ "circularRef": "[Circular ~]",
+ "list": ["[Circular ~]", "[Circular ~]"]
+ }))
+ })
+
+ // This is the behavior as of Mar 3, 2015.
+ // The serializer function keeps state inside the returned function and
+ // so far I'm not sure how to not do that. JSON.stringify's replacer is not
+ // called _after_ serialization.
+ xit("must return a function that could be called twice", function() {
+ var obj = {name: "Alice"}
+ obj.self = obj
+
+ var json
+ var serializer = stringify.getSerialize()
+
+ json = JSON.stringify(obj, serializer, 2)
+ json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
+
+ json = JSON.stringify(obj, serializer, 2)
+ json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"}))
+ })
+ })
+})
+
+function bangString(key, value) {
+ return typeof value == "string" ? value + "!" : value
+}
diff --git a/client/node_modules/jsonfile/CHANGELOG.md b/client/node_modules/jsonfile/CHANGELOG.md
new file mode 100644
index 0000000..7718857
--- /dev/null
+++ b/client/node_modules/jsonfile/CHANGELOG.md
@@ -0,0 +1,145 @@
+4.0.0 / 2017-07-12
+------------------
+
+- **BREAKING:** Remove global `spaces` option.
+- **BREAKING:** Drop support for Node 0.10, 0.12, and io.js.
+- Remove undocumented `passParsingErrors` option.
+- Added `EOL` override option to `writeFile` when using `spaces`. [#89]
+
+3.0.1 / 2017-07-05
+------------------
+
+- Fixed bug in `writeFile` when there was a serialization error & no callback was passed. In previous versions, an empty file would be written; now no file is written.
+
+3.0.0 / 2017-04-25
+------------------
+
+- Changed behavior of `throws` option for `readFileSync`; now does not throw filesystem errors when `throws` is `false`
+
+2.4.0 / 2016-09-15
+------------------
+### Changed
+- added optional support for `graceful-fs` [#62]
+
+2.3.1 / 2016-05-13
+------------------
+- fix to support BOM. [#45][#45]
+
+2.3.0 / 2016-04-16
+------------------
+- add `throws` to `readFile()`. See [#39][#39]
+- add support for any arbitrary `fs` module. Useful with [mock-fs](https://www.npmjs.com/package/mock-fs)
+
+2.2.3 / 2015-10-14
+------------------
+- include file name in parse error. See: https://github.com/jprichardson/node-jsonfile/pull/34
+
+2.2.2 / 2015-09-16
+------------------
+- split out tests into separate files
+- fixed `throws` when set to `true` in `readFileSync()`. See: https://github.com/jprichardson/node-jsonfile/pull/33
+
+2.2.1 / 2015-06-25
+------------------
+- fixed regression when passing in string as encoding for options in `writeFile()` and `writeFileSync()`. See: https://github.com/jprichardson/node-jsonfile/issues/28
+
+2.2.0 / 2015-06-25
+------------------
+- added `options.spaces` to `writeFile()` and `writeFileSync()`
+
+2.1.2 / 2015-06-22
+------------------
+- fixed if passed `readFileSync(file, 'utf8')`. See: https://github.com/jprichardson/node-jsonfile/issues/25
+
+2.1.1 / 2015-06-19
+------------------
+- fixed regressions if `null` is passed for options. See: https://github.com/jprichardson/node-jsonfile/issues/24
+
+2.1.0 / 2015-06-19
+------------------
+- cleanup: JavaScript Standard Style, rename files, dropped terst for assert
+- methods now support JSON revivers/replacers
+
+2.0.1 / 2015-05-24
+------------------
+- update license attribute https://github.com/jprichardson/node-jsonfile/pull/21
+
+2.0.0 / 2014-07-28
+------------------
+* added `\n` to end of file on write. [#14](https://github.com/jprichardson/node-jsonfile/pull/14)
+* added `options.throws` to `readFileSync()`
+* dropped support for Node v0.8
+
+1.2.0 / 2014-06-29
+------------------
+* removed semicolons
+* bugfix: passed `options` to `fs.readFile` and `fs.readFileSync`. This technically changes behavior, but
+changes it according to docs. [#12][#12]
+
+1.1.1 / 2013-11-11
+------------------
+* fixed catching of callback bug (ffissore / #5)
+
+1.1.0 / 2013-10-11
+------------------
+* added `options` param to methods, (seanodell / #4)
+
+1.0.1 / 2013-09-05
+------------------
+* removed `homepage` field from package.json to remove NPM warning
+
+1.0.0 / 2013-06-28
+------------------
+* added `.npmignore`, #1
+* changed spacing default from `4` to `2` to follow Node conventions
+
+0.0.1 / 2012-09-10
+------------------
+* Initial release.
+
+[#89]: https://github.com/jprichardson/node-jsonfile/pull/89
+[#45]: https://github.com/jprichardson/node-jsonfile/issues/45 "Reading of UTF8-encoded (w/ BOM) files fails"
+[#44]: https://github.com/jprichardson/node-jsonfile/issues/44 "Extra characters in written file"
+[#43]: https://github.com/jprichardson/node-jsonfile/issues/43 "Prettyfy json when written to file"
+[#42]: https://github.com/jprichardson/node-jsonfile/pull/42 "Moved fs.readFileSync within the try/catch"
+[#41]: https://github.com/jprichardson/node-jsonfile/issues/41 "Linux: Hidden file not working"
+[#40]: https://github.com/jprichardson/node-jsonfile/issues/40 "autocreate folder doesn't work from Path-value"
+[#39]: https://github.com/jprichardson/node-jsonfile/pull/39 "Add `throws` option for readFile (async)"
+[#38]: https://github.com/jprichardson/node-jsonfile/pull/38 "Update README.md writeFile[Sync] signature"
+[#37]: https://github.com/jprichardson/node-jsonfile/pull/37 "support append file"
+[#36]: https://github.com/jprichardson/node-jsonfile/pull/36 "Add typescript definition file."
+[#35]: https://github.com/jprichardson/node-jsonfile/pull/35 "Add typescript definition file."
+[#34]: https://github.com/jprichardson/node-jsonfile/pull/34 "readFile JSON parse error includes filename"
+[#33]: https://github.com/jprichardson/node-jsonfile/pull/33 "fix throw->throws typo in readFileSync()"
+[#32]: https://github.com/jprichardson/node-jsonfile/issues/32 "readFile & readFileSync can possible have strip-comments as an option?"
+[#31]: https://github.com/jprichardson/node-jsonfile/pull/31 "[Modify] Support string include is unicode escape string"
+[#30]: https://github.com/jprichardson/node-jsonfile/issues/30 "How to use Jsonfile package in Meteor.js App?"
+[#29]: https://github.com/jprichardson/node-jsonfile/issues/29 "writefile callback if no error?"
+[#28]: https://github.com/jprichardson/node-jsonfile/issues/28 "writeFile options argument broken "
+[#27]: https://github.com/jprichardson/node-jsonfile/pull/27 "Use svg instead of png to get better image quality"
+[#26]: https://github.com/jprichardson/node-jsonfile/issues/26 "Breaking change to fs-extra"
+[#25]: https://github.com/jprichardson/node-jsonfile/issues/25 "support string encoding param for read methods"
+[#24]: https://github.com/jprichardson/node-jsonfile/issues/24 "readFile: Passing in null options with a callback throws an error"
+[#23]: https://github.com/jprichardson/node-jsonfile/pull/23 "Add appendFile and appendFileSync"
+[#22]: https://github.com/jprichardson/node-jsonfile/issues/22 "Default value for spaces in readme.md is outdated"
+[#21]: https://github.com/jprichardson/node-jsonfile/pull/21 "Update license attribute"
+[#20]: https://github.com/jprichardson/node-jsonfile/issues/20 "Add simple caching functionallity"
+[#19]: https://github.com/jprichardson/node-jsonfile/pull/19 "Add appendFileSync method"
+[#18]: https://github.com/jprichardson/node-jsonfile/issues/18 "Add updateFile and updateFileSync methods"
+[#17]: https://github.com/jprichardson/node-jsonfile/issues/17 "seem read & write sync has sequentially problem"
+[#16]: https://github.com/jprichardson/node-jsonfile/pull/16 "export spaces defaulted to null"
+[#15]: https://github.com/jprichardson/node-jsonfile/issues/15 "`jsonfile.spaces` should default to `null`"
+[#14]: https://github.com/jprichardson/node-jsonfile/pull/14 "Add EOL at EOF"
+[#13]: https://github.com/jprichardson/node-jsonfile/issues/13 "Add a final newline"
+[#12]: https://github.com/jprichardson/node-jsonfile/issues/12 "readFile doesn't accept options"
+[#11]: https://github.com/jprichardson/node-jsonfile/pull/11 "Added try,catch to readFileSync"
+[#10]: https://github.com/jprichardson/node-jsonfile/issues/10 "No output or error from writeFile"
+[#9]: https://github.com/jprichardson/node-jsonfile/pull/9 "Change 'js' to 'jf' in example."
+[#8]: https://github.com/jprichardson/node-jsonfile/pull/8 "Updated forgotten module.exports to me."
+[#7]: https://github.com/jprichardson/node-jsonfile/pull/7 "Add file name in error message"
+[#6]: https://github.com/jprichardson/node-jsonfile/pull/6 "Use graceful-fs when possible"
+[#5]: https://github.com/jprichardson/node-jsonfile/pull/5 "Jsonfile doesn't behave nicely when used inside a test suite."
+[#4]: https://github.com/jprichardson/node-jsonfile/pull/4 "Added options parameter to writeFile and writeFileSync"
+[#3]: https://github.com/jprichardson/node-jsonfile/issues/3 "test2"
+[#2]: https://github.com/jprichardson/node-jsonfile/issues/2 "homepage field must be a string url. Deleted."
+[#1]: https://github.com/jprichardson/node-jsonfile/pull/1 "adding an `.npmignore` file"
diff --git a/client/node_modules/jsonfile/LICENSE b/client/node_modules/jsonfile/LICENSE
new file mode 100644
index 0000000..cb7e807
--- /dev/null
+++ b/client/node_modules/jsonfile/LICENSE
@@ -0,0 +1,15 @@
+(The MIT License)
+
+Copyright (c) 2012-2015, JP Richardson <jprichardson@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
+(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/jsonfile/README.md b/client/node_modules/jsonfile/README.md
new file mode 100644
index 0000000..721685c
--- /dev/null
+++ b/client/node_modules/jsonfile/README.md
@@ -0,0 +1,168 @@
+Node.js - jsonfile
+================
+
+Easily read/write JSON files.
+
+[![npm Package](https://img.shields.io/npm/v/jsonfile.svg?style=flat-square)](https://www.npmjs.org/package/jsonfile)
+[![build status](https://secure.travis-ci.org/jprichardson/node-jsonfile.svg)](http://travis-ci.org/jprichardson/node-jsonfile)
+[![windows Build status](https://img.shields.io/appveyor/ci/jprichardson/node-jsonfile/master.svg?label=windows%20build)](https://ci.appveyor.com/project/jprichardson/node-jsonfile/branch/master)
+
+<a href="https://github.com/feross/standard"><img src="https://cdn.rawgit.com/feross/standard/master/sticker.svg" alt="Standard JavaScript" width="100"></a>
+
+Why?
+----
+
+Writing `JSON.stringify()` and then `fs.writeFile()` and `JSON.parse()` with `fs.readFile()` enclosed in `try/catch` blocks became annoying.
+
+
+
+Installation
+------------
+
+ npm install --save jsonfile
+
+
+
+API
+---
+
+### readFile(filename, [options], callback)
+
+`options` (`object`, default `undefined`): Pass in any `fs.readFile` options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse).
+ - `throws` (`boolean`, default: `true`). If `JSON.parse` throws an error, pass this error to the callback.
+ If `false`, returns `null` for the object.
+
+
+```js
+var jsonfile = require('jsonfile')
+var file = '/tmp/data.json'
+jsonfile.readFile(file, function(err, obj) {
+ console.dir(obj)
+})
+```
+
+
+### readFileSync(filename, [options])
+
+`options` (`object`, default `undefined`): Pass in any `fs.readFileSync` options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse).
+- `throws` (`boolean`, default: `true`). If an error is encountered reading or parsing the file, throw the error. If `false`, returns `null` for the object.
+
+```js
+var jsonfile = require('jsonfile')
+var file = '/tmp/data.json'
+
+console.dir(jsonfile.readFileSync(file))
+```
+
+
+### writeFile(filename, obj, [options], callback)
+
+`options`: Pass in any `fs.writeFile` options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces` and override `EOL` string.
+
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFile(file, obj, function (err) {
+ console.error(err)
+})
+```
+
+**formatting with spaces:**
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFile(file, obj, {spaces: 2}, function(err) {
+ console.error(err)
+})
+```
+
+**overriding EOL:**
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFile(file, obj, {spaces: 2, EOL: '\r\n'}, function(err) {
+ console.error(err)
+})
+```
+
+**appending to an existing JSON file:**
+
+You can use `fs.writeFile` option `{flag: 'a'}` to achieve this.
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/mayAlreadyExistedData.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFile(file, obj, {flag: 'a'}, function (err) {
+ console.error(err)
+})
+```
+
+### writeFileSync(filename, obj, [options])
+
+`options`: Pass in any `fs.writeFileSync` options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces` and override `EOL` string.
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFileSync(file, obj)
+```
+
+**formatting with spaces:**
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFileSync(file, obj, {spaces: 2})
+```
+
+**overriding EOL:**
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/data.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFileSync(file, obj, {spaces: 2, EOL: '\r\n'})
+```
+
+**appending to an existing JSON file:**
+
+You can use `fs.writeFileSync` option `{flag: 'a'}` to achieve this.
+
+```js
+var jsonfile = require('jsonfile')
+
+var file = '/tmp/mayAlreadyExistedData.json'
+var obj = {name: 'JP'}
+
+jsonfile.writeFileSync(file, obj, {flag: 'a'})
+```
+
+License
+-------
+
+(MIT License)
+
+Copyright 2012-2016, JP Richardson <jprichardson@gmail.com>
diff --git a/client/node_modules/jsonfile/index.js b/client/node_modules/jsonfile/index.js
new file mode 100644
index 0000000..d1e5827
--- /dev/null
+++ b/client/node_modules/jsonfile/index.js
@@ -0,0 +1,134 @@
+var _fs
+try {
+ _fs = require('graceful-fs')
+} catch (_) {
+ _fs = require('fs')
+}
+
+function readFile (file, options, callback) {
+ if (callback == null) {
+ callback = options
+ options = {}
+ }
+
+ if (typeof options === 'string') {
+ options = {encoding: options}
+ }
+
+ options = options || {}
+ var fs = options.fs || _fs
+
+ var shouldThrow = true
+ if ('throws' in options) {
+ shouldThrow = options.throws
+ }
+
+ fs.readFile(file, options, function (err, data) {
+ if (err) return callback(err)
+
+ data = stripBom(data)
+
+ var obj
+ try {
+ obj = JSON.parse(data, options ? options.reviver : null)
+ } catch (err2) {
+ if (shouldThrow) {
+ err2.message = file + ': ' + err2.message
+ return callback(err2)
+ } else {
+ return callback(null, null)
+ }
+ }
+
+ callback(null, obj)
+ })
+}
+
+function readFileSync (file, options) {
+ options = options || {}
+ if (typeof options === 'string') {
+ options = {encoding: options}
+ }
+
+ var fs = options.fs || _fs
+
+ var shouldThrow = true
+ if ('throws' in options) {
+ shouldThrow = options.throws
+ }
+
+ try {
+ var content = fs.readFileSync(file, options)
+ content = stripBom(content)
+ return JSON.parse(content, options.reviver)
+ } catch (err) {
+ if (shouldThrow) {
+ err.message = file + ': ' + err.message
+ throw err
+ } else {
+ return null
+ }
+ }
+}
+
+function stringify (obj, options) {
+ var spaces
+ var EOL = '\n'
+ if (typeof options === 'object' && options !== null) {
+ if (options.spaces) {
+ spaces = options.spaces
+ }
+ if (options.EOL) {
+ EOL = options.EOL
+ }
+ }
+
+ var str = JSON.stringify(obj, options ? options.replacer : null, spaces)
+
+ return str.replace(/\n/g, EOL) + EOL
+}
+
+function writeFile (file, obj, options, callback) {
+ if (callback == null) {
+ callback = options
+ options = {}
+ }
+ options = options || {}
+ var fs = options.fs || _fs
+
+ var str = ''
+ try {
+ str = stringify(obj, options)
+ } catch (err) {
+ // Need to return whether a callback was passed or not
+ if (callback) callback(err, null)
+ return
+ }
+
+ fs.writeFile(file, str, options, callback)
+}
+
+function writeFileSync (file, obj, options) {
+ options = options || {}
+ var fs = options.fs || _fs
+
+ var str = stringify(obj, options)
+ // not sure if fs.writeFileSync returns anything, but just in case
+ return fs.writeFileSync(file, str, options)
+}
+
+function stripBom (content) {
+ // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified
+ if (Buffer.isBuffer(content)) content = content.toString('utf8')
+ content = content.replace(/^\uFEFF/, '')
+ return content
+}
+
+var jsonfile = {
+ readFile: readFile,
+ readFileSync: readFileSync,
+ writeFile: writeFile,
+ writeFileSync: writeFileSync
+}
+
+module.exports = jsonfile
diff --git a/client/node_modules/jsonfile/package.json b/client/node_modules/jsonfile/package.json
new file mode 100644
index 0000000..29e783f
--- /dev/null
+++ b/client/node_modules/jsonfile/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "jsonfile",
+ "version": "4.0.0",
+ "description": "Easily read/write JSON files.",
+ "repository": {
+ "type": "git",
+ "url": "git@github.com:jprichardson/node-jsonfile.git"
+ },
+ "keywords": [
+ "read",
+ "write",
+ "file",
+ "json",
+ "fs",
+ "fs-extra"
+ ],
+ "author": "JP Richardson <jprichardson@gmail.com>",
+ "license": "MIT",
+ "dependencies": {},
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ },
+ "devDependencies": {
+ "mocha": "2.x",
+ "rimraf": "^2.4.0",
+ "standard": "^10.0.3"
+ },
+ "main": "index.js",
+ "files": [
+ "index.js"
+ ],
+ "scripts": {
+ "lint": "standard",
+ "test": "npm run lint && npm run unit",
+ "unit": "mocha"
+ }
+}
diff --git a/client/node_modules/keyv/README.md b/client/node_modules/keyv/README.md
new file mode 100644
index 0000000..294a30e
--- /dev/null
+++ b/client/node_modules/keyv/README.md
@@ -0,0 +1,429 @@
+<h1 align="center">
+ <img width="250" src="https://jaredwray.com/images/keyv.svg" alt="keyv">
+ <br>
+ <br>
+</h1>
+
+> Simple key-value storage with support for multiple backends
+
+[![build](https://github.com/jaredwray/keyv/actions/workflows/tests.yaml/badge.svg)](https://github.com/jaredwray/keyv/actions/workflows/tests.yaml)
+[![codecov](https://codecov.io/gh/jaredwray/keyv/branch/main/graph/badge.svg?token=bRzR3RyOXZ)](https://codecov.io/gh/jaredwray/keyv)
+[![npm](https://img.shields.io/npm/dm/keyv.svg)](https://www.npmjs.com/package/keyv)
+[![npm](https://img.shields.io/npm/v/keyv.svg)](https://www.npmjs.com/package/keyv)
+
+Keyv provides a consistent interface for key-value storage across multiple backends via storage adapters. It supports TTL based expiry, making it suitable as a cache or a persistent key-value store.
+
+## Features
+
+There are a few existing modules similar to Keyv, however Keyv is different because it:
+
+- Isn't bloated
+- Has a simple Promise based API
+- Suitable as a TTL based cache or persistent key-value store
+- [Easily embeddable](#add-cache-support-to-your-module) inside another module
+- Works with any storage that implements the [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) API
+- Handles all JSON types plus `Buffer`
+- Supports namespaces
+- Wide range of [**efficient, well tested**](#official-storage-adapters) storage adapters
+- Connection errors are passed through (db failures won't kill your app)
+- Supports the current active LTS version of Node.js or higher
+
+## Usage
+
+Install Keyv.
+
+```
+npm install --save keyv
+```
+
+By default everything is stored in memory, you can optionally also install a storage adapter.
+
+```
+npm install --save @keyv/redis
+npm install --save @keyv/mongo
+npm install --save @keyv/sqlite
+npm install --save @keyv/postgres
+npm install --save @keyv/mysql
+npm install --save @keyv/etcd
+```
+
+Create a new Keyv instance, passing your connection string if applicable. Keyv will automatically load the correct storage adapter.
+
+```js
+const Keyv = require('keyv');
+
+// One of the following
+const keyv = new Keyv();
+const keyv = new Keyv('redis://user:pass@localhost:6379');
+const keyv = new Keyv('mongodb://user:pass@localhost:27017/dbname');
+const keyv = new Keyv('sqlite://path/to/database.sqlite');
+const keyv = new Keyv('postgresql://user:pass@localhost:5432/dbname');
+const keyv = new Keyv('mysql://user:pass@localhost:3306/dbname');
+const keyv = new Keyv('etcd://localhost:2379');
+
+// Handle DB connection errors
+keyv.on('error', err => console.log('Connection Error', err));
+
+await keyv.set('foo', 'expires in 1 second', 1000); // true
+await keyv.set('foo', 'never expires'); // true
+await keyv.get('foo'); // 'never expires'
+await keyv.delete('foo'); // true
+await keyv.clear(); // undefined
+```
+
+### Namespaces
+
+You can namespace your Keyv instance to avoid key collisions and allow you to clear only a certain namespace while using the same database.
+
+```js
+const users = new Keyv('redis://user:pass@localhost:6379', { namespace: 'users' });
+const cache = new Keyv('redis://user:pass@localhost:6379', { namespace: 'cache' });
+
+await users.set('foo', 'users'); // true
+await cache.set('foo', 'cache'); // true
+await users.get('foo'); // 'users'
+await cache.get('foo'); // 'cache'
+await users.clear(); // undefined
+await users.get('foo'); // undefined
+await cache.get('foo'); // 'cache'
+```
+
+### Custom Serializers
+
+Keyv uses [`json-buffer`](https://github.com/dominictarr/json-buffer) for data serialization to ensure consistency across different backends.
+
+You can optionally provide your own serialization functions to support extra data types or to serialize to something other than JSON.
+
+```js
+const keyv = new Keyv({ serialize: JSON.stringify, deserialize: JSON.parse });
+```
+
+**Warning:** Using custom serializers means you lose any guarantee of data consistency. You should do extensive testing with your serialisation functions and chosen storage engine.
+
+## Official Storage Adapters
+
+The official storage adapters are covered by [over 150 integration tests](https://github.com/jaredwray/keyv/actions/workflows/tests.yaml) to guarantee consistent behaviour. They are lightweight, efficient wrappers over the DB clients making use of indexes and native TTLs where available.
+
+Database | Adapter | Native TTL
+---|---|---
+Redis | [@keyv/redis](https://github.com/jaredwray/keyv/tree/master/packages/redis) | Yes
+MongoDB | [@keyv/mongo](https://github.com/jaredwray/keyv/tree/master/packages/mongo) | Yes
+SQLite | [@keyv/sqlite](https://github.com/jaredwray/keyv/tree/master/packages/sqlite) | No
+PostgreSQL | [@keyv/postgres](https://github.com/jaredwray/keyv/tree/master/packages/postgres) | No
+MySQL | [@keyv/mysql](https://github.com/jaredwray/keyv/tree/master/packages/mysql) | No
+Etcd | [@keyv/etcd](https://github.com/jaredwray/keyv/tree/master/packages/etcd) | Yes
+Memcache | [@keyv/memcache](https://github.com/jaredwray/keyv/tree/master/packages/memcache) | Yes
+
+## Third-party Storage Adapters
+
+You can also use third-party storage adapters or build your own. Keyv will wrap these storage adapters in TTL functionality and handle complex types internally.
+
+```js
+const Keyv = require('keyv');
+const myAdapter = require('./my-storage-adapter');
+
+const keyv = new Keyv({ store: myAdapter });
+```
+
+Any store that follows the [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) api will work.
+
+```js
+new Keyv({ store: new Map() });
+```
+
+For example, [`quick-lru`](https://github.com/sindresorhus/quick-lru) is a completely unrelated module that implements the Map API.
+
+```js
+const Keyv = require('keyv');
+const QuickLRU = require('quick-lru');
+
+const lru = new QuickLRU({ maxSize: 1000 });
+const keyv = new Keyv({ store: lru });
+```
+
+The following are third-party storage adapters compatible with Keyv:
+
+- [quick-lru](https://github.com/sindresorhus/quick-lru) - Simple "Least Recently Used" (LRU) cache
+- [keyv-file](https://github.com/zaaack/keyv-file) - File system storage adapter for Keyv
+- [keyv-dynamodb](https://www.npmjs.com/package/keyv-dynamodb) - DynamoDB storage adapter for Keyv
+- [keyv-lru](https://www.npmjs.com/package/keyv-lru) - LRU storage adapter for Keyv
+- [keyv-null](https://www.npmjs.com/package/keyv-null) - Null storage adapter for Keyv
+- [keyv-firestore ](https://github.com/goto-bus-stop/keyv-firestore) – Firebase Cloud Firestore adapter for Keyv
+- [keyv-mssql](https://github.com/pmorgan3/keyv-mssql) - Microsoft Sql Server adapter for Keyv
+- [keyv-azuretable](https://github.com/howlowck/keyv-azuretable) - Azure Table Storage/API adapter for Keyv
+- [keyv-arango](https://github.com/TimMikeladze/keyv-arango) - ArangoDB storage adapter for Keyv
+- [keyv-momento](https://github.com/momentohq/node-keyv-adaptor/) - Momento storage adapter for Keyv
+
+## Add Cache Support to your Module
+
+Keyv is designed to be easily embedded into other modules to add cache support. The recommended pattern is to expose a `cache` option in your modules options which is passed through to Keyv. Caching will work in memory by default and users have the option to also install a Keyv storage adapter and pass in a connection string, or any other storage that implements the `Map` API.
+
+You should also set a namespace for your module so you can safely call `.clear()` without clearing unrelated app data.
+
+Inside your module:
+
+```js
+class AwesomeModule {
+ constructor(opts) {
+ this.cache = new Keyv({
+ uri: typeof opts.cache === 'string' && opts.cache,
+ store: typeof opts.cache !== 'string' && opts.cache,
+ namespace: 'awesome-module'
+ });
+ }
+}
+```
+
+Now it can be consumed like this:
+
+```js
+const AwesomeModule = require('awesome-module');
+
+// Caches stuff in memory by default
+const awesomeModule = new AwesomeModule();
+
+// After npm install --save keyv-redis
+const awesomeModule = new AwesomeModule({ cache: 'redis://localhost' });
+
+// Some third-party module that implements the Map API
+const awesomeModule = new AwesomeModule({ cache: some3rdPartyStore });
+```
+
+## Compression
+
+Keyv supports `gzip` and `brotli` compression. To enable compression, pass the `compress` option to the constructor.
+
+```js
+const KeyvGzip = require('@keyv/compress-gzip');
+const Keyv = require('keyv');
+
+const keyvGzip = new KeyvGzip();
+const keyv = new Keyv({ compression: KeyvGzip });
+```
+
+You can also pass a custom compression function to the `compression` option. Following the pattern of the official compression adapters.
+
+### Want to build your own?
+
+Great! Keyv is designed to be easily extended. You can build your own compression adapter by following the pattern of the official compression adapters based on this interface:
+
+```typescript
+interface CompressionAdapter {
+ async compress(value: any, options?: any);
+ async decompress(value: any, options?: any);
+ async serialize(value: any);
+ async deserialize(value: any);
+}
+```
+
+In addition to the interface, you can test it with our compression test suite using @keyv/test-suite:
+
+```js
+const {keyvCompresstionTests} = require('@keyv/test-suite');
+const KeyvGzip = require('@keyv/compress-gzip');
+
+keyvCompresstionTests(test, new KeyvGzip());
+```
+
+## API
+
+### new Keyv([uri], [options])
+
+Returns a new Keyv instance.
+
+The Keyv instance is also an `EventEmitter` that will emit an `'error'` event if the storage adapter connection fails.
+
+### uri
+
+Type: `String`<br>
+Default: `undefined`
+
+The connection string URI.
+
+Merged into the options object as options.uri.
+
+### options
+
+Type: `Object`
+
+The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
+
+#### options.namespace
+
+Type: `String`<br>
+Default: `'keyv'`
+
+Namespace for the current instance.
+
+#### options.ttl
+
+Type: `Number`<br>
+Default: `undefined`
+
+Default TTL. Can be overridden by specififying a TTL on `.set()`.
+
+#### options.compression
+
+Type: `@keyv/compress-<compression_package_name>`<br>
+Default: `undefined`
+
+Compression package to use. See [Compression](#compression) for more details.
+
+#### options.serialize
+
+Type: `Function`<br>
+Default: `JSONB.stringify`
+
+A custom serialization function.
+
+#### options.deserialize
+
+Type: `Function`<br>
+Default: `JSONB.parse`
+
+A custom deserialization function.
+
+#### options.store
+
+Type: `Storage adapter instance`<br>
+Default: `new Map()`
+
+The storage adapter instance to be used by Keyv.
+
+#### options.adapter
+
+Type: `String`<br>
+Default: `undefined`
+
+Specify an adapter to use. e.g `'redis'` or `'mongodb'`.
+
+### Instance
+
+Keys must always be strings. Values can be of any type.
+
+#### .set(key, value, [ttl])
+
+Set a value.
+
+By default keys are persistent. You can set an expiry TTL in milliseconds.
+
+Returns a promise which resolves to `true`.
+
+#### .get(key, [options])
+
+Returns a promise which resolves to the retrieved value.
+
+##### options.raw
+
+Type: `Boolean`<br>
+Default: `false`
+
+If set to true the raw DB object Keyv stores internally will be returned instead of just the value.
+
+This contains the TTL timestamp.
+
+#### .delete(key)
+
+Deletes an entry.
+
+Returns a promise which resolves to `true` if the key existed, `false` if not.
+
+#### .clear()
+
+Delete all entries in the current namespace.
+
+Returns a promise which is resolved when the entries have been cleared.
+
+#### .iterator()
+
+Iterate over all entries of the current namespace.
+
+Returns a iterable that can be iterated by for-of loops. For example:
+
+```js
+// please note that the "await" keyword should be used here
+for await (const [key, value] of this.keyv.iterator()) {
+ console.log(key, value);
+};
+```
+
+# How to Contribute
+
+In this section of the documentation we will cover:
+
+1) How to set up this repository locally
+2) How to get started with running commands
+3) How to contribute changes using Pull Requests
+
+## Dependencies
+
+This package requires the following dependencies to run:
+
+1) [Yarn V1](https://yarnpkg.com/getting-started/install)
+3) [Docker](https://docs.docker.com/get-docker/)
+
+## Setting up your workspace
+
+To contribute to this repository, start by setting up this project locally:
+
+1) Fork this repository into your Git account
+2) Clone the forked repository to your local directory using `git clone`
+3) Install any of the above missing dependencies
+
+## Launching the project
+
+Once the project is installed locally, you are ready to start up its services:
+
+1) Ensure that your Docker service is running.
+2) From the root directory of your project, run the `yarn` command in the command prompt to install yarn.
+3) Run the `yarn bootstrap` command to install any necessary dependencies.
+4) Run `yarn test:services:start` to start up this project's Docker container. The container will launch all services within your workspace.
+
+## Available Commands
+
+Once the project is running, you can execute a variety of commands. The root workspace and each subpackage contain a `package.json` file with a `scripts` field listing all the commands that can be executed from that directory. This project also supports native `yarn`, and `docker` commands.
+
+Here, we'll cover the primary commands that can be executed from the root directory. Unless otherwise noted, these commands can also be executed from a subpackage. If executed from a subpackage, they will only affect that subpackage, rather than the entire workspace.
+
+### `yarn`
+
+The `yarn` command installs yarn in the workspace.
+
+### `yarn bootstrap`
+
+The `yarn bootstrap` command installs all dependencies in the workspace.
+
+### `yarn test:services:start`
+
+The `yarn test:services:start` command starts up the project's Docker container, launching all services in the workspace. This command must be executed from the root directory.
+
+### `yarn test:services:stop`
+
+The `yarn test:services:stop` command brings down the project's Docker container, halting all services. This command must be executed from the root directory.
+
+### `yarn test`
+
+The `yarn test` command runs all tests in the workspace.
+
+### `yarn clean`
+
+The `yarn clean` command removes yarn and all dependencies installed by yarn. After executing this command, you must repeat the steps in *Setting up your workspace* to rebuild your workspace.
+
+## Contributing Changes
+
+Now that you've set up your workspace, you're ready to contribute changes to the `keyv` repository.
+
+1) Make any changes that you would like to contribute in your local workspace.
+2) After making these changes, ensure that the project's tests still pass by executing the `yarn test` command in the root directory.
+3) Commit your changes and push them to your forked repository.
+4) Navigate to the original `keyv` repository and go the *Pull Requests* tab.
+5) Click the *New pull request* button, and open a pull request for the branch in your repository that contains your changes.
+6) Once your pull request is created, ensure that all checks have passed and that your branch has no conflicts with the base branch. If there are any issues, resolve these changes in your local repository, and then commit and push them to git.
+7) Similarly, respond to any reviewer comments or requests for changes by making edits to your local repository and pushing them to Git.
+8) Once the pull request has been reviewed, those with write access to the branch will be able to merge your changes into the `keyv` repository.
+
+If you need more information on the steps to create a pull request, you can find a detailed walkthrough in the [Github documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)
+
+## License
+
+MIT © Jared Wray
diff --git a/client/node_modules/keyv/package.json b/client/node_modules/keyv/package.json
new file mode 100644
index 0000000..a830461
--- /dev/null
+++ b/client/node_modules/keyv/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "keyv",
+ "version": "4.5.4",
+ "description": "Simple key-value storage with support for multiple backends",
+ "main": "src/index.js",
+ "scripts": {
+ "build": "echo 'No build step required.'",
+ "prepare": "yarn build",
+ "test": "xo && c8 ava --serial",
+ "test:ci": "xo && ava --serial",
+ "clean": "rm -rf node_modules && rm -rf ./coverage && rm -rf ./test/testdb.sqlite"
+ },
+ "xo": {
+ "rules": {
+ "unicorn/prefer-module": 0,
+ "unicorn/prefer-node-protocol": 0,
+ "@typescript-eslint/consistent-type-definitions": 0,
+ "unicorn/no-typeof-undefined": 0,
+ "unicorn/prefer-event-target": 0
+ }
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jaredwray/keyv.git"
+ },
+ "keywords": [
+ "key",
+ "value",
+ "store",
+ "cache",
+ "ttl"
+ ],
+ "author": "Jared Wray <me@jaredwray.com> (http://jaredwray.com)",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/jaredwray/keyv/issues"
+ },
+ "homepage": "https://github.com/jaredwray/keyv",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ },
+ "devDependencies": {
+ "@keyv/test-suite": "*",
+ "eslint": "^8.51.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "pify": "^5.0.0",
+ "timekeeper": "^2.3.1",
+ "tsd": "^0.29.0"
+ },
+ "tsd": {
+ "directory": "test"
+ },
+ "types": "./src/index.d.ts",
+ "files": [
+ "src"
+ ]
+}
diff --git a/client/node_modules/keyv/src/index.d.ts b/client/node_modules/keyv/src/index.d.ts
new file mode 100644
index 0000000..77d81ca
--- /dev/null
+++ b/client/node_modules/keyv/src/index.d.ts
@@ -0,0 +1,112 @@
+import {EventEmitter} from 'events';
+
+type WithRequiredProperties<T, K extends keyof T> = T & Required<Pick<T, K>>;
+
+declare class Keyv<Value = any, Options extends Record<string, any> = Record<string, unknown>> extends EventEmitter {
+ /**
+ * `this.opts` is an object containing at least the properties listed
+ * below. However, `Keyv.Options` allows arbitrary properties as well.
+ * These properties can be specified as the second type parameter to `Keyv`.
+ */
+ opts: WithRequiredProperties<
+ Keyv.Options<Value>,
+ 'deserialize' | 'namespace' | 'serialize' | 'store' | 'uri'
+ > &
+ Options;
+
+ /**
+ * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
+ */
+ constructor(options?: Keyv.Options<Value> & Options);
+ /**
+ * @param uri The connection string URI.
+ *
+ * Merged into the options object as options.uri.
+ * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
+ */
+ constructor(uri?: string, options?: Keyv.Options<Value> & Options);
+
+ /** Returns the value. */
+ get(key: string, options?: {raw?: false}): Promise<Value | undefined>;
+ /** Returns the raw value. */
+ get(key: string, options: {raw: true}): Promise<Keyv.DeserializedData<Value> | undefined>;
+
+ /** Returns an array of values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */
+ get(key: string[], options?: {raw?: false}): Promise<Array<Value | undefined>>;
+ /** Returns an array of raw values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */
+ get(key: string[], options: {raw: true}): Promise<Array<Keyv.DeserializedData<Value> | undefined>>;
+
+ /**
+ * Set a value.
+ *
+ * By default keys are persistent. You can set an expiry TTL in milliseconds.
+ */
+ set(key: string, value: Value, ttl?: number): Promise<true>;
+ /**
+ * Deletes an entry.
+ *
+ * Returns `true` if the key existed, `false` if not.
+ */
+ delete(key: string | string[]): Promise<boolean>;
+ /** Delete all entries in the current namespace. */
+ clear(): Promise<void>;
+ /** Check if key exists in current namespace. */
+ has(key: string): Promise<boolean>;
+ /** Iterator */
+ iterator(namespace?: string): AsyncGenerator<any, void, any>;
+ /**
+ * Closes the connection.
+ *
+ * Returns `undefined` when the connection closes.
+ */
+ disconnect(): Promise<void>;
+}
+
+declare namespace Keyv {
+ interface Options<Value> {
+ [key: string]: any;
+
+ /** Namespace for the current instance. */
+ namespace?: string | undefined;
+ /** A custom serialization function. */
+ serialize?: ((data: DeserializedData<Value>) => string) | undefined;
+ /** A custom deserialization function. */
+ deserialize?: ((data: string) => DeserializedData<Value> | undefined) | undefined;
+ /** The connection string URI. */
+ uri?: string | undefined;
+ /** The storage adapter instance to be used by Keyv. */
+ store?: Store<string | undefined> | undefined;
+ /** Default TTL. Can be overridden by specififying a TTL on `.set()`. */
+ ttl?: number | undefined;
+ /** Specify an adapter to use. e.g `'redis'` or `'mongodb'`. */
+ adapter?: 'redis' | 'mongodb' | 'mongo' | 'sqlite' | 'postgresql' | 'postgres' | 'mysql' | undefined;
+ /** Enable compression option **/
+ compression?: CompressionAdapter | undefined;
+ }
+
+ interface CompressionAdapter {
+ compress(value: any, options?: any): Promise<any>;
+ decompress(value: any, options?: any): Promise<any>;
+ serialize(value: any): Promise<any>;
+ deserialize(value: any): Promise<any>;
+ }
+
+ interface DeserializedData<Value> {
+ value: Value; expires: number | undefined;
+ }
+
+ type StoredData<Value> = DeserializedData<Value> | string | undefined;
+
+ interface Store<Value> {
+ get(key: string): Value | Promise<Value | undefined> | undefined;
+ set(key: string, value: Value, ttl?: number): any;
+ delete(key: string): boolean | Promise<boolean>;
+ clear(): void | Promise<void>;
+ has?(key: string): boolean | Promise<boolean>;
+ getMany?(
+ keys: string[]
+ ): Array<StoredData<Value>> | Promise<Array<StoredData<Value>>> | undefined;
+ }
+}
+
+export = Keyv;
diff --git a/client/node_modules/keyv/src/index.js b/client/node_modules/keyv/src/index.js
new file mode 100644
index 0000000..ac539bd
--- /dev/null
+++ b/client/node_modules/keyv/src/index.js
@@ -0,0 +1,259 @@
+'use strict';
+
+const EventEmitter = require('events');
+const JSONB = require('json-buffer');
+
+const loadStore = options => {
+ const adapters = {
+ redis: '@keyv/redis',
+ rediss: '@keyv/redis',
+ mongodb: '@keyv/mongo',
+ mongo: '@keyv/mongo',
+ sqlite: '@keyv/sqlite',
+ postgresql: '@keyv/postgres',
+ postgres: '@keyv/postgres',
+ mysql: '@keyv/mysql',
+ etcd: '@keyv/etcd',
+ offline: '@keyv/offline',
+ tiered: '@keyv/tiered',
+ };
+ if (options.adapter || options.uri) {
+ const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
+ return new (require(adapters[adapter]))(options);
+ }
+
+ return new Map();
+};
+
+const iterableAdapters = [
+ 'sqlite',
+ 'postgres',
+ 'mysql',
+ 'mongo',
+ 'redis',
+ 'tiered',
+];
+
+class Keyv extends EventEmitter {
+ constructor(uri, {emitErrors = true, ...options} = {}) {
+ super();
+ this.opts = {
+ namespace: 'keyv',
+ serialize: JSONB.stringify,
+ deserialize: JSONB.parse,
+ ...((typeof uri === 'string') ? {uri} : uri),
+ ...options,
+ };
+
+ if (!this.opts.store) {
+ const adapterOptions = {...this.opts};
+ this.opts.store = loadStore(adapterOptions);
+ }
+
+ if (this.opts.compression) {
+ const compression = this.opts.compression;
+ this.opts.serialize = compression.serialize.bind(compression);
+ this.opts.deserialize = compression.deserialize.bind(compression);
+ }
+
+ if (typeof this.opts.store.on === 'function' && emitErrors) {
+ this.opts.store.on('error', error => this.emit('error', error));
+ }
+
+ this.opts.store.namespace = this.opts.namespace;
+
+ const generateIterator = iterator => async function * () {
+ for await (const [key, raw] of typeof iterator === 'function'
+ ? iterator(this.opts.store.namespace)
+ : iterator) {
+ const data = await this.opts.deserialize(raw);
+ if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
+ continue;
+ }
+
+ if (typeof data.expires === 'number' && Date.now() > data.expires) {
+ this.delete(key);
+ continue;
+ }
+
+ yield [this._getKeyUnprefix(key), data.value];
+ }
+ };
+
+ // Attach iterators
+ if (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {
+ this.iterator = generateIterator(this.opts.store);
+ } else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts
+ && this._checkIterableAdaptar()) {
+ this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
+ }
+ }
+
+ _checkIterableAdaptar() {
+ return iterableAdapters.includes(this.opts.store.opts.dialect)
+ || iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;
+ }
+
+ _getKeyPrefix(key) {
+ return `${this.opts.namespace}:${key}`;
+ }
+
+ _getKeyPrefixArray(keys) {
+ return keys.map(key => `${this.opts.namespace}:${key}`);
+ }
+
+ _getKeyUnprefix(key) {
+ return key
+ .split(':')
+ .splice(1)
+ .join(':');
+ }
+
+ get(key, options) {
+ const {store} = this.opts;
+ const isArray = Array.isArray(key);
+ const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
+ if (isArray && store.getMany === undefined) {
+ const promises = [];
+ for (const key of keyPrefixed) {
+ promises.push(Promise.resolve()
+ .then(() => store.get(key))
+ .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
+ .then(data => {
+ if (data === undefined || data === null) {
+ return undefined;
+ }
+
+ if (typeof data.expires === 'number' && Date.now() > data.expires) {
+ return this.delete(key).then(() => undefined);
+ }
+
+ return (options && options.raw) ? data : data.value;
+ }),
+ );
+ }
+
+ return Promise.allSettled(promises)
+ .then(values => {
+ const data = [];
+ for (const value of values) {
+ data.push(value.value);
+ }
+
+ return data;
+ });
+ }
+
+ return Promise.resolve()
+ .then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))
+ .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
+ .then(data => {
+ if (data === undefined || data === null) {
+ return undefined;
+ }
+
+ if (isArray) {
+ return data.map((row, index) => {
+ if ((typeof row === 'string')) {
+ row = this.opts.deserialize(row);
+ }
+
+ if (row === undefined || row === null) {
+ return undefined;
+ }
+
+ if (typeof row.expires === 'number' && Date.now() > row.expires) {
+ this.delete(key[index]).then(() => undefined);
+ return undefined;
+ }
+
+ return (options && options.raw) ? row : row.value;
+ });
+ }
+
+ if (typeof data.expires === 'number' && Date.now() > data.expires) {
+ return this.delete(key).then(() => undefined);
+ }
+
+ return (options && options.raw) ? data : data.value;
+ });
+ }
+
+ set(key, value, ttl) {
+ const keyPrefixed = this._getKeyPrefix(key);
+ if (typeof ttl === 'undefined') {
+ ttl = this.opts.ttl;
+ }
+
+ if (ttl === 0) {
+ ttl = undefined;
+ }
+
+ const {store} = this.opts;
+
+ return Promise.resolve()
+ .then(() => {
+ const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
+ if (typeof value === 'symbol') {
+ this.emit('error', 'symbol cannot be serialized');
+ }
+
+ value = {value, expires};
+ return this.opts.serialize(value);
+ })
+ .then(value => store.set(keyPrefixed, value, ttl))
+ .then(() => true);
+ }
+
+ delete(key) {
+ const {store} = this.opts;
+ if (Array.isArray(key)) {
+ const keyPrefixed = this._getKeyPrefixArray(key);
+ if (store.deleteMany === undefined) {
+ const promises = [];
+ for (const key of keyPrefixed) {
+ promises.push(store.delete(key));
+ }
+
+ return Promise.allSettled(promises)
+ .then(values => values.every(x => x.value === true));
+ }
+
+ return Promise.resolve()
+ .then(() => store.deleteMany(keyPrefixed));
+ }
+
+ const keyPrefixed = this._getKeyPrefix(key);
+ return Promise.resolve()
+ .then(() => store.delete(keyPrefixed));
+ }
+
+ clear() {
+ const {store} = this.opts;
+ return Promise.resolve()
+ .then(() => store.clear());
+ }
+
+ has(key) {
+ const keyPrefixed = this._getKeyPrefix(key);
+ const {store} = this.opts;
+ return Promise.resolve()
+ .then(async () => {
+ if (typeof store.has === 'function') {
+ return store.has(keyPrefixed);
+ }
+
+ const value = await store.get(keyPrefixed);
+ return value !== undefined;
+ });
+ }
+
+ disconnect() {
+ const {store} = this.opts;
+ if (typeof store.disconnect === 'function') {
+ return store.disconnect();
+ }
+ }
+}
+
+module.exports = Keyv;
diff --git a/client/node_modules/lowercase-keys/index.d.ts b/client/node_modules/lowercase-keys/index.d.ts
new file mode 100644
index 0000000..dc90a75
--- /dev/null
+++ b/client/node_modules/lowercase-keys/index.d.ts
@@ -0,0 +1,16 @@
+/**
+Lowercase the keys of an object.
+
+@returns A new object with the keys lowercased.
+
+@example
+```
+import lowercaseKeys = require('lowercase-keys');
+
+lowercaseKeys({FOO: true, bAr: false});
+//=> {foo: true, bar: false}
+```
+*/
+declare function lowercaseKeys<T extends unknown>(object: {[key: string]: T}): {[key: string]: T};
+
+export = lowercaseKeys;
diff --git a/client/node_modules/lowercase-keys/index.js b/client/node_modules/lowercase-keys/index.js
new file mode 100644
index 0000000..357fb8f
--- /dev/null
+++ b/client/node_modules/lowercase-keys/index.js
@@ -0,0 +1,10 @@
+'use strict';
+module.exports = object => {
+ const result = {};
+
+ for (const [key, value] of Object.entries(object)) {
+ result[key.toLowerCase()] = value;
+ }
+
+ return result;
+};
diff --git a/client/node_modules/lowercase-keys/license b/client/node_modules/lowercase-keys/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/lowercase-keys/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/lowercase-keys/package.json b/client/node_modules/lowercase-keys/package.json
new file mode 100644
index 0000000..c11d813
--- /dev/null
+++ b/client/node_modules/lowercase-keys/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "lowercase-keys",
+ "version": "2.0.0",
+ "description": "Lowercase the keys of an object",
+ "license": "MIT",
+ "repository": "sindresorhus/lowercase-keys",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "object",
+ "assign",
+ "extend",
+ "properties",
+ "lowercase",
+ "lower-case",
+ "case",
+ "keys",
+ "key"
+ ],
+ "devDependencies": {
+ "ava": "^1.4.1",
+ "tsd": "^0.7.2",
+ "xo": "^0.24.0"
+ }
+}
diff --git a/client/node_modules/lowercase-keys/readme.md b/client/node_modules/lowercase-keys/readme.md
new file mode 100644
index 0000000..b1ed061
--- /dev/null
+++ b/client/node_modules/lowercase-keys/readme.md
@@ -0,0 +1,32 @@
+# lowercase-keys [![Build Status](https://travis-ci.org/sindresorhus/lowercase-keys.svg?branch=master)](https://travis-ci.org/sindresorhus/lowercase-keys)
+
+> Lowercase the keys of an object
+
+
+## Install
+
+```
+$ npm install lowercase-keys
+```
+
+
+## Usage
+
+```js
+const lowercaseKeys = require('lowercase-keys');
+
+lowercaseKeys({FOO: true, bAr: false});
+//=> {foo: true, bar: false}
+```
+
+
+## API
+
+### lowercaseKeys(object)
+
+Returns a new object with the keys lowercased.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/client/node_modules/lru-cache/LICENSE b/client/node_modules/lru-cache/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/lru-cache/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/lru-cache/README.md b/client/node_modules/lru-cache/README.md
new file mode 100644
index 0000000..435dfeb
--- /dev/null
+++ b/client/node_modules/lru-cache/README.md
@@ -0,0 +1,166 @@
+# lru cache
+
+A cache object that deletes the least-recently-used items.
+
+[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)
+
+## Installation:
+
+```javascript
+npm install lru-cache --save
+```
+
+## Usage:
+
+```javascript
+var LRU = require("lru-cache")
+ , options = { max: 500
+ , length: function (n, key) { return n * 2 + key.length }
+ , dispose: function (key, n) { n.close() }
+ , maxAge: 1000 * 60 * 60 }
+ , cache = new LRU(options)
+ , otherCache = new LRU(50) // sets just the max size
+
+cache.set("key", "value")
+cache.get("key") // "value"
+
+// non-string keys ARE fully supported
+// but note that it must be THE SAME object, not
+// just a JSON-equivalent object.
+var someObject = { a: 1 }
+cache.set(someObject, 'a value')
+// Object keys are not toString()-ed
+cache.set('[object Object]', 'a different value')
+assert.equal(cache.get(someObject), 'a value')
+// A similar object with same keys/values won't work,
+// because it's a different object identity
+assert.equal(cache.get({ a: 1 }), undefined)
+
+cache.reset() // empty the cache
+```
+
+If you put more stuff in it, then items will fall out.
+
+If you try to put an oversized thing in it, then it'll fall out right
+away.
+
+## Options
+
+* `max` The maximum size of the cache, checked by applying the length
+ function to all values in the cache. Not setting this is kind of
+ silly, since that's the whole purpose of this lib, but it defaults
+ to `Infinity`. Setting it to a non-number or negative number will
+ throw a `TypeError`. Setting it to 0 makes it be `Infinity`.
+* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
+ as they age, but if you try to get an item that is too old, it'll
+ drop it and return undefined instead of giving it to you.
+ Setting this to a negative value will make everything seem old!
+ Setting it to a non-number will throw a `TypeError`.
+* `length` Function that is used to calculate the length of stored
+ items. If you're storing strings or buffers, then you probably want
+ to do something like `function(n, key){return n.length}`. The default is
+ `function(){return 1}`, which is fine if you want to store `max`
+ like-sized things. The item is passed as the first argument, and
+ the key is passed as the second argumnet.
+* `dispose` Function that is called on items when they are dropped
+ from the cache. This can be handy if you want to close file
+ descriptors or do other cleanup tasks when items are no longer
+ accessible. Called with `key, value`. It's called *before*
+ actually removing the item from the internal cache, so if you want
+ to immediately put it back in, you'll have to do that in a
+ `nextTick` or `setTimeout` callback or it won't do anything.
+* `stale` By default, if you set a `maxAge`, it'll only actually pull
+ stale items out of the cache when you `get(key)`. (That is, it's
+ not pre-emptively doing a `setTimeout` or anything.) If you set
+ `stale:true`, it'll return the stale value before deleting it. If
+ you don't set this, then it'll return `undefined` when you try to
+ get a stale entry, as if it had already been deleted.
+* `noDisposeOnSet` By default, if you set a `dispose()` method, then
+ it'll be called whenever a `set()` operation overwrites an existing
+ key. If you set this option, `dispose()` will only be called when a
+ key falls out of the cache, not when it is overwritten.
+* `updateAgeOnGet` When using time-expiring entries with `maxAge`,
+ setting this to `true` will make each item's effective time update
+ to the current time whenever it is retrieved from cache, causing it
+ to not expire. (It can still fall out of cache based on recency of
+ use, of course.)
+
+## API
+
+* `set(key, value, maxAge)`
+* `get(key) => value`
+
+ Both of these will update the "recently used"-ness of the key.
+ They do what you think. `maxAge` is optional and overrides the
+ cache `maxAge` option if provided.
+
+ If the key is not found, `get()` will return `undefined`.
+
+ The key and val can be any value.
+
+* `peek(key)`
+
+ Returns the key value (or `undefined` if not found) without
+ updating the "recently used"-ness of the key.
+
+ (If you find yourself using this a lot, you *might* be using the
+ wrong sort of data structure, but there are some use cases where
+ it's handy.)
+
+* `del(key)`
+
+ Deletes a key out of the cache.
+
+* `reset()`
+
+ Clear the cache entirely, throwing away all values.
+
+* `has(key)`
+
+ Check if a key is in the cache, without updating the recent-ness
+ or deleting it for being stale.
+
+* `forEach(function(value,key,cache), [thisp])`
+
+ Just like `Array.prototype.forEach`. Iterates over all the keys
+ in the cache, in order of recent-ness. (Ie, more recently used
+ items are iterated over first.)
+
+* `rforEach(function(value,key,cache), [thisp])`
+
+ The same as `cache.forEach(...)` but items are iterated over in
+ reverse order. (ie, less recently used items are iterated over
+ first.)
+
+* `keys()`
+
+ Return an array of the keys in the cache.
+
+* `values()`
+
+ Return an array of the values in the cache.
+
+* `length`
+
+ Return total length of objects in cache taking into account
+ `length` options function.
+
+* `itemCount`
+
+ Return total quantity of objects currently in cache. Note, that
+ `stale` (see options) items are returned as part of this item
+ count.
+
+* `dump()`
+
+ Return an array of the cache entries ready for serialization and usage
+ with 'destinationCache.load(arr)`.
+
+* `load(cacheEntriesArray)`
+
+ Loads another cache entries array, obtained with `sourceCache.dump()`,
+ into the cache. The destination cache is reset before loading new entries
+
+* `prune()`
+
+ Manually iterates over the entire cache proactively pruning old entries
diff --git a/client/node_modules/lru-cache/index.js b/client/node_modules/lru-cache/index.js
new file mode 100644
index 0000000..573b6b8
--- /dev/null
+++ b/client/node_modules/lru-cache/index.js
@@ -0,0 +1,334 @@
+'use strict'
+
+// A linked list to keep track of recently-used-ness
+const Yallist = require('yallist')
+
+const MAX = Symbol('max')
+const LENGTH = Symbol('length')
+const LENGTH_CALCULATOR = Symbol('lengthCalculator')
+const ALLOW_STALE = Symbol('allowStale')
+const MAX_AGE = Symbol('maxAge')
+const DISPOSE = Symbol('dispose')
+const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
+const LRU_LIST = Symbol('lruList')
+const CACHE = Symbol('cache')
+const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
+
+const naiveLength = () => 1
+
+// lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+class LRUCache {
+ constructor (options) {
+ if (typeof options === 'number')
+ options = { max: options }
+
+ if (!options)
+ options = {}
+
+ if (options.max && (typeof options.max !== 'number' || options.max < 0))
+ throw new TypeError('max must be a non-negative number')
+ // Kind of weird to have a default max of Infinity, but oh well.
+ const max = this[MAX] = options.max || Infinity
+
+ const lc = options.length || naiveLength
+ this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
+ this[ALLOW_STALE] = options.stale || false
+ if (options.maxAge && typeof options.maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
+ this[MAX_AGE] = options.maxAge || 0
+ this[DISPOSE] = options.dispose
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
+ this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
+ this.reset()
+ }
+
+ // resize the cache when the max changes.
+ set max (mL) {
+ if (typeof mL !== 'number' || mL < 0)
+ throw new TypeError('max must be a non-negative number')
+
+ this[MAX] = mL || Infinity
+ trim(this)
+ }
+ get max () {
+ return this[MAX]
+ }
+
+ set allowStale (allowStale) {
+ this[ALLOW_STALE] = !!allowStale
+ }
+ get allowStale () {
+ return this[ALLOW_STALE]
+ }
+
+ set maxAge (mA) {
+ if (typeof mA !== 'number')
+ throw new TypeError('maxAge must be a non-negative number')
+
+ this[MAX_AGE] = mA
+ trim(this)
+ }
+ get maxAge () {
+ return this[MAX_AGE]
+ }
+
+ // resize the cache when the lengthCalculator changes.
+ set lengthCalculator (lC) {
+ if (typeof lC !== 'function')
+ lC = naiveLength
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC
+ this[LENGTH] = 0
+ this[LRU_LIST].forEach(hit => {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
+ this[LENGTH] += hit.length
+ })
+ }
+ trim(this)
+ }
+ get lengthCalculator () { return this[LENGTH_CALCULATOR] }
+
+ get length () { return this[LENGTH] }
+ get itemCount () { return this[LRU_LIST].length }
+
+ rforEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].tail; walker !== null;) {
+ const prev = walker.prev
+ forEachStep(this, fn, walker, thisp)
+ walker = prev
+ }
+ }
+
+ forEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].head; walker !== null;) {
+ const next = walker.next
+ forEachStep(this, fn, walker, thisp)
+ walker = next
+ }
+ }
+
+ keys () {
+ return this[LRU_LIST].toArray().map(k => k.key)
+ }
+
+ values () {
+ return this[LRU_LIST].toArray().map(k => k.value)
+ }
+
+ reset () {
+ if (this[DISPOSE] &&
+ this[LRU_LIST] &&
+ this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
+ }
+
+ this[CACHE] = new Map() // hash of items by key
+ this[LRU_LIST] = new Yallist() // list of items in order of use recency
+ this[LENGTH] = 0 // length of items in the list
+ }
+
+ dump () {
+ return this[LRU_LIST].map(hit =>
+ isStale(this, hit) ? false : {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }).toArray().filter(h => h)
+ }
+
+ dumpLru () {
+ return this[LRU_LIST]
+ }
+
+ set (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE]
+
+ if (maxAge && typeof maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
+
+ const now = maxAge ? Date.now() : 0
+ const len = this[LENGTH_CALCULATOR](value, key)
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key))
+ return false
+ }
+
+ const node = this[CACHE].get(key)
+ const item = node.value
+
+ // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET])
+ this[DISPOSE](key, item.value)
+ }
+
+ item.now = now
+ item.maxAge = maxAge
+ item.value = value
+ this[LENGTH] += len - item.length
+ item.length = len
+ this.get(key)
+ trim(this)
+ return true
+ }
+
+ const hit = new Entry(key, value, len, now, maxAge)
+
+ // oversized objects fall out of cache automatically.
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE])
+ this[DISPOSE](key, value)
+
+ return false
+ }
+
+ this[LENGTH] += hit.length
+ this[LRU_LIST].unshift(hit)
+ this[CACHE].set(key, this[LRU_LIST].head)
+ trim(this)
+ return true
+ }
+
+ has (key) {
+ if (!this[CACHE].has(key)) return false
+ const hit = this[CACHE].get(key).value
+ return !isStale(this, hit)
+ }
+
+ get (key) {
+ return get(this, key, true)
+ }
+
+ peek (key) {
+ return get(this, key, false)
+ }
+
+ pop () {
+ const node = this[LRU_LIST].tail
+ if (!node)
+ return null
+
+ del(this, node)
+ return node.value
+ }
+
+ del (key) {
+ del(this, this[CACHE].get(key))
+ }
+
+ load (arr) {
+ // reset the cache
+ this.reset()
+
+ const now = Date.now()
+ // A previous serialized cache has the most recent items first
+ for (let l = arr.length - 1; l >= 0; l--) {
+ const hit = arr[l]
+ const expiresAt = hit.e || 0
+ if (expiresAt === 0)
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v)
+ else {
+ const maxAge = expiresAt - now
+ // dont add already expired items
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge)
+ }
+ }
+ }
+ }
+
+ prune () {
+ this[CACHE].forEach((value, key) => get(this, key, false))
+ }
+}
+
+const get = (self, key, doUse) => {
+ const node = self[CACHE].get(key)
+ if (node) {
+ const hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ return undefined
+ } else {
+ if (doUse) {
+ if (self[UPDATE_AGE_ON_GET])
+ node.value.now = Date.now()
+ self[LRU_LIST].unshiftNode(node)
+ }
+ }
+ return hit.value
+ }
+}
+
+const isStale = (self, hit) => {
+ if (!hit || (!hit.maxAge && !self[MAX_AGE]))
+ return false
+
+ const diff = Date.now() - hit.now
+ return hit.maxAge ? diff > hit.maxAge
+ : self[MAX_AGE] && (diff > self[MAX_AGE])
+}
+
+const trim = self => {
+ if (self[LENGTH] > self[MAX]) {
+ for (let walker = self[LRU_LIST].tail;
+ self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ const prev = walker.prev
+ del(self, walker)
+ walker = prev
+ }
+ }
+}
+
+const del = (self, node) => {
+ if (node) {
+ const hit = node.value
+ if (self[DISPOSE])
+ self[DISPOSE](hit.key, hit.value)
+
+ self[LENGTH] -= hit.length
+ self[CACHE].delete(hit.key)
+ self[LRU_LIST].removeNode(node)
+ }
+}
+
+class Entry {
+ constructor (key, value, length, now, maxAge) {
+ this.key = key
+ this.value = value
+ this.length = length
+ this.now = now
+ this.maxAge = maxAge || 0
+ }
+}
+
+const forEachStep = (self, fn, node, thisp) => {
+ let hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ hit = undefined
+ }
+ if (hit)
+ fn.call(thisp, hit.value, hit.key, self)
+}
+
+module.exports = LRUCache
diff --git a/client/node_modules/lru-cache/package.json b/client/node_modules/lru-cache/package.json
new file mode 100644
index 0000000..43b7502
--- /dev/null
+++ b/client/node_modules/lru-cache/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "lru-cache",
+ "description": "A cache object that deletes the least-recently-used items.",
+ "version": "6.0.0",
+ "author": "Isaac Z. Schlueter <i@izs.me>",
+ "keywords": [
+ "mru",
+ "lru",
+ "cache"
+ ],
+ "scripts": {
+ "test": "tap",
+ "snap": "tap",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "prepublishOnly": "git push origin --follow-tags"
+ },
+ "main": "index.js",
+ "repository": "git://github.com/isaacs/node-lru-cache.git",
+ "devDependencies": {
+ "benchmark": "^2.1.4",
+ "tap": "^14.10.7"
+ },
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+}
diff --git a/client/node_modules/matcher/index.d.ts b/client/node_modules/matcher/index.d.ts
new file mode 100644
index 0000000..3405f51
--- /dev/null
+++ b/client/node_modules/matcher/index.d.ts
@@ -0,0 +1,85 @@
+declare namespace matcher {
+ interface Options {
+ /**
+ Treat uppercase and lowercase characters as being the same.
+
+ Ensure you use this correctly. For example, files and directories should be matched case-insensitively, while most often, object keys should be matched case-sensitively.
+
+ @default false
+ */
+ readonly caseSensitive?: boolean;
+ }
+}
+
+declare const matcher: {
+ /**
+ Simple [wildcard](https://en.wikipedia.org/wiki/Wildcard_character) matching.
+
+ It matches even across newlines. For example, `foo*r` will match `foo\nbar`.
+
+ @param inputs - Strings to match.
+ @param patterns - Use `*` to match zero or more characters. A pattern starting with `!` will be negated.
+ @returns The `inputs` filtered based on the `patterns`.
+
+ @example
+ ```
+ import matcher = require('matcher');
+
+ matcher(['foo', 'bar', 'moo'], ['*oo', '!foo']);
+ //=> ['moo']
+
+ matcher(['foo', 'bar', 'moo'], ['!*oo']);
+ //=> ['bar']
+ ```
+ */
+ (inputs: readonly string[], patterns: readonly string[], options?: matcher.Options): string[];
+
+ /**
+ It matches even across newlines. For example, `foo*r` will match `foo\nbar`.
+
+ @param input - String or array of strings to match.
+ @param pattern - String or array of string patterns. Use `*` to match zero or more characters. A pattern starting with `!` will be negated.
+ @returns Whether any given `input` matches every given `pattern`.
+
+ @example
+ ```
+ import matcher = require('matcher');
+
+ matcher.isMatch('unicorn', 'uni*');
+ //=> true
+
+ matcher.isMatch('unicorn', '*corn');
+ //=> true
+
+ matcher.isMatch('unicorn', 'un*rn');
+ //=> true
+
+ matcher.isMatch('rainbow', '!unicorn');
+ //=> true
+
+ matcher.isMatch('foo bar baz', 'foo b* b*');
+ //=> true
+
+ matcher.isMatch('unicorn', 'uni\\*');
+ //=> false
+
+ matcher.isMatch('UNICORN', 'UNI*', {caseSensitive: true});
+ //=> true
+
+ matcher.isMatch('UNICORN', 'unicorn', {caseSensitive: true});
+ //=> false
+
+ matcher.isMatch(['foo', 'bar'], 'f*');
+ //=> true
+
+ matcher.isMatch(['foo', 'bar'], ['a*', 'b*']);
+ //=> true
+
+ matcher.isMatch('unicorn', ['tri*', 'UNI*'], {caseSensitive: true});
+ //=> false
+ ```
+ */
+ isMatch: (input: string | readonly string[], pattern: string | readonly string[], options?: matcher.Options) => boolean;
+};
+
+export = matcher;
diff --git a/client/node_modules/matcher/index.js b/client/node_modules/matcher/index.js
new file mode 100644
index 0000000..bab0afc
--- /dev/null
+++ b/client/node_modules/matcher/index.js
@@ -0,0 +1,77 @@
+'use strict';
+const escapeStringRegexp = require('escape-string-regexp');
+
+const regexpCache = new Map();
+
+function makeRegexp(pattern, options) {
+ options = {
+ caseSensitive: false,
+ ...options
+ };
+
+ const cacheKey = pattern + JSON.stringify(options);
+
+ if (regexpCache.has(cacheKey)) {
+ return regexpCache.get(cacheKey);
+ }
+
+ const negated = pattern[0] === '!';
+
+ if (negated) {
+ pattern = pattern.slice(1);
+ }
+
+ pattern = escapeStringRegexp(pattern).replace(/\\\*/g, '[\\s\\S]*');
+
+ const regexp = new RegExp(`^${pattern}$`, options.caseSensitive ? '' : 'i');
+ regexp.negated = negated;
+ regexpCache.set(cacheKey, regexp);
+
+ return regexp;
+}
+
+module.exports = (inputs, patterns, options) => {
+ if (!(Array.isArray(inputs) && Array.isArray(patterns))) {
+ throw new TypeError(`Expected two arrays, got ${typeof inputs} ${typeof patterns}`);
+ }
+
+ if (patterns.length === 0) {
+ return inputs;
+ }
+
+ const isFirstPatternNegated = patterns[0][0] === '!';
+
+ patterns = patterns.map(pattern => makeRegexp(pattern, options));
+
+ const result = [];
+
+ for (const input of inputs) {
+ // If first pattern is negated we include everything to match user expectation.
+ let matches = isFirstPatternNegated;
+
+ for (const pattern of patterns) {
+ if (pattern.test(input)) {
+ matches = !pattern.negated;
+ }
+ }
+
+ if (matches) {
+ result.push(input);
+ }
+ }
+
+ return result;
+};
+
+module.exports.isMatch = (input, pattern, options) => {
+ const inputArray = Array.isArray(input) ? input : [input];
+ const patternArray = Array.isArray(pattern) ? pattern : [pattern];
+
+ return inputArray.some(input => {
+ return patternArray.every(pattern => {
+ const regexp = makeRegexp(pattern, options);
+ const matches = regexp.test(input);
+ return regexp.negated ? !matches : matches;
+ });
+ });
+};
diff --git a/client/node_modules/matcher/license b/client/node_modules/matcher/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/matcher/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/matcher/package.json b/client/node_modules/matcher/package.json
new file mode 100644
index 0000000..fe9c386
--- /dev/null
+++ b/client/node_modules/matcher/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "matcher",
+ "version": "3.0.0",
+ "description": "Simple wildcard matching",
+ "license": "MIT",
+ "repository": "sindresorhus/matcher",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd",
+ "bench": "matcha bench.js"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "matcher",
+ "matching",
+ "match",
+ "regex",
+ "regexp",
+ "regular",
+ "expression",
+ "wildcard",
+ "pattern",
+ "string",
+ "filter",
+ "glob",
+ "globber",
+ "globbing",
+ "minimatch"
+ ],
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "matcha": "^0.7.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.30.0"
+ },
+ "xo": {
+ "rules": {
+ "@typescript-eslint/member-ordering": "off"
+ }
+ }
+}
diff --git a/client/node_modules/matcher/readme.md b/client/node_modules/matcher/readme.md
new file mode 100644
index 0000000..962070a
--- /dev/null
+++ b/client/node_modules/matcher/readme.md
@@ -0,0 +1,120 @@
+# matcher [![Build Status](https://travis-ci.com/sindresorhus/matcher.svg?branch=master)](https://travis-ci.com/sindresorhus/matcher)
+
+> Simple [wildcard](https://en.wikipedia.org/wiki/Wildcard_character) matching
+
+Useful when you want to accept loose string input and regexes/globs are too convoluted.
+
+## Install
+
+```
+$ npm install matcher
+```
+
+## Usage
+
+```js
+const matcher = require('matcher');
+
+matcher(['foo', 'bar', 'moo'], ['*oo', '!foo']);
+//=> ['moo']
+
+matcher(['foo', 'bar', 'moo'], ['!*oo']);
+//=> ['bar']
+
+matcher.isMatch('unicorn', 'uni*');
+//=> true
+
+matcher.isMatch('unicorn', '*corn');
+//=> true
+
+matcher.isMatch('unicorn', 'un*rn');
+//=> true
+
+matcher.isMatch('rainbow', '!unicorn');
+//=> true
+
+matcher.isMatch('foo bar baz', 'foo b* b*');
+//=> true
+
+matcher.isMatch('unicorn', 'uni\\*');
+//=> false
+
+matcher.isMatch('UNICORN', 'UNI*', {caseSensitive: true});
+//=> true
+
+matcher.isMatch('UNICORN', 'unicorn', {caseSensitive: true});
+//=> false
+
+matcher.isMatch(['foo', 'bar'], 'f*');
+//=> true
+
+matcher.isMatch(['foo', 'bar'], ['a*', 'b*']);
+//=> true
+
+matcher.isMatch('unicorn', ['tri*', 'UNI*'], {caseSensitive: true});
+//=> false
+```
+
+## API
+
+It matches even across newlines. For example, `foo*r` will match `foo\nbar`.
+
+### matcher(inputs, patterns, options?)
+
+Accepts an array of `input`'s and `pattern`'s.
+
+Returns an array of `inputs` filtered based on the `patterns`.
+
+### matcher.isMatch(input, pattern, options?)
+
+Accepts either a string or array of strings for both `input` and `pattern`.
+
+Returns a `boolean` of whether any given `input` matches every given `pattern`.
+
+#### input
+
+Type: `string | string[]`
+
+String or array of strings to match.
+
+#### options
+
+Type: `object`
+
+##### caseSensitive
+
+Type: `boolean`\
+Default: `false`
+
+Treat uppercase and lowercase characters as being the same.
+
+Ensure you use this correctly. For example, files and directories should be matched case-insensitively, while most often, object keys should be matched case-sensitively.
+
+#### pattern
+
+Type: `string | string[]`
+
+Use `*` to match zero or more characters. A pattern starting with `!` will be negated.
+
+## Benchmark
+
+```
+$ npm run bench
+```
+
+## Related
+
+- [matcher-cli](https://github.com/sindresorhus/matcher-cli) - CLI for this module
+- [multimatch](https://github.com/sindresorhus/multimatch) - Extends `minimatch.match()` with support for multiple patterns
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-matcher?utm_source=npm-matcher&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/mimic-response/index.js b/client/node_modules/mimic-response/index.js
new file mode 100644
index 0000000..d5e33be
--- /dev/null
+++ b/client/node_modules/mimic-response/index.js
@@ -0,0 +1,32 @@
+'use strict';
+
+// We define these manually to ensure they're always copied
+// even if they would move up the prototype chain
+// https://nodejs.org/api/http.html#http_class_http_incomingmessage
+const knownProps = [
+ 'destroy',
+ 'setTimeout',
+ 'socket',
+ 'headers',
+ 'trailers',
+ 'rawHeaders',
+ 'statusCode',
+ 'httpVersion',
+ 'httpVersionMinor',
+ 'httpVersionMajor',
+ 'rawTrailers',
+ 'statusMessage'
+];
+
+module.exports = (fromStream, toStream) => {
+ const fromProps = new Set(Object.keys(fromStream).concat(knownProps));
+
+ for (const prop of fromProps) {
+ // Don't overwrite existing properties
+ if (prop in toStream) {
+ continue;
+ }
+
+ toStream[prop] = typeof fromStream[prop] === 'function' ? fromStream[prop].bind(fromStream) : fromStream[prop];
+ }
+};
diff --git a/client/node_modules/mimic-response/license b/client/node_modules/mimic-response/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/mimic-response/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/mimic-response/package.json b/client/node_modules/mimic-response/package.json
new file mode 100644
index 0000000..689cb61
--- /dev/null
+++ b/client/node_modules/mimic-response/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "mimic-response",
+ "version": "1.0.1",
+ "description": "Mimic a Node.js HTTP response stream",
+ "license": "MIT",
+ "repository": "sindresorhus/mimic-response",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "mimic",
+ "response",
+ "stream",
+ "http",
+ "https",
+ "request",
+ "get",
+ "core"
+ ],
+ "devDependencies": {
+ "ava": "*",
+ "create-test-server": "^0.1.0",
+ "pify": "^3.0.0",
+ "xo": "*"
+ }
+}
diff --git a/client/node_modules/mimic-response/readme.md b/client/node_modules/mimic-response/readme.md
new file mode 100644
index 0000000..e07ec66
--- /dev/null
+++ b/client/node_modules/mimic-response/readme.md
@@ -0,0 +1,54 @@
+# mimic-response [![Build Status](https://travis-ci.org/sindresorhus/mimic-response.svg?branch=master)](https://travis-ci.org/sindresorhus/mimic-response)
+
+> Mimic a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+
+## Install
+
+```
+$ npm install mimic-response
+```
+
+
+## Usage
+
+```js
+const stream = require('stream');
+const mimicResponse = require('mimic-response');
+
+const responseStream = getHttpResponseStream();
+const myStream = new stream.PassThrough();
+
+mimicResponse(responseStream, myStream);
+
+console.log(myStream.statusCode);
+//=> 200
+```
+
+
+## API
+
+### mimicResponse(from, to)
+
+#### from
+
+Type: `Stream`
+
+[Node.js HTTP response stream.](https://nodejs.org/api/http.html#http_class_http_incomingmessage)
+
+#### to
+
+Type: `Stream`
+
+Any stream.
+
+
+## Related
+
+- [mimic-fn](https://github.com/sindresorhus/mimic-fn) - Make a function mimic another one
+- [clone-response](https://github.com/lukechilds/clone-response) - Clone a Node.js response stream
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/client/node_modules/ms/index.js b/client/node_modules/ms/index.js
new file mode 100644
index 0000000..c4498bc
--- /dev/null
+++ b/client/node_modules/ms/index.js
@@ -0,0 +1,162 @@
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var w = d * 7;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} [options]
+ * @throws {Error} throw an error if val is not a non-empty string or a number
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === 'string' && val.length > 0) {
+ return parse(val);
+ } else if (type === 'number' && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
+ }
+ throw new Error(
+ 'val is not a non-empty string or a valid number. val=' +
+ JSON.stringify(val)
+ );
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
+ }
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
+ str
+ );
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'weeks':
+ case 'week':
+ case 'w':
+ return n * w;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ default:
+ return undefined;
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + 'd';
+ }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + 'h';
+ }
+ if (msAbs >= m) {
+ return Math.round(ms / m) + 'm';
+ }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + 's';
+ }
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural(ms, msAbs, d, 'day');
+ }
+ if (msAbs >= h) {
+ return plural(ms, msAbs, h, 'hour');
+ }
+ if (msAbs >= m) {
+ return plural(ms, msAbs, m, 'minute');
+ }
+ if (msAbs >= s) {
+ return plural(ms, msAbs, s, 'second');
+ }
+ return ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, msAbs, n, name) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
+}
diff --git a/client/node_modules/ms/license.md b/client/node_modules/ms/license.md
new file mode 100644
index 0000000..69b6125
--- /dev/null
+++ b/client/node_modules/ms/license.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Zeit, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/ms/package.json b/client/node_modules/ms/package.json
new file mode 100644
index 0000000..eea666e
--- /dev/null
+++ b/client/node_modules/ms/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "ms",
+ "version": "2.1.2",
+ "description": "Tiny millisecond conversion utility",
+ "repository": "zeit/ms",
+ "main": "./index",
+ "files": [
+ "index.js"
+ ],
+ "scripts": {
+ "precommit": "lint-staged",
+ "lint": "eslint lib/* bin/*",
+ "test": "mocha tests.js"
+ },
+ "eslintConfig": {
+ "extends": "eslint:recommended",
+ "env": {
+ "node": true,
+ "es6": true
+ }
+ },
+ "lint-staged": {
+ "*.js": [
+ "npm run lint",
+ "prettier --single-quote --write",
+ "git add"
+ ]
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "eslint": "4.12.1",
+ "expect.js": "0.3.1",
+ "husky": "0.14.3",
+ "lint-staged": "5.0.0",
+ "mocha": "4.0.1"
+ }
+}
diff --git a/client/node_modules/ms/readme.md b/client/node_modules/ms/readme.md
new file mode 100644
index 0000000..9a1996b
--- /dev/null
+++ b/client/node_modules/ms/readme.md
@@ -0,0 +1,60 @@
+# ms
+
+[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms)
+[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/zeit)
+
+Use this package to easily convert various time formats to milliseconds.
+
+## Examples
+
+```js
+ms('2 days') // 172800000
+ms('1d') // 86400000
+ms('10h') // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h') // 7200000
+ms('1m') // 60000
+ms('5s') // 5000
+ms('1y') // 31557600000
+ms('100') // 100
+ms('-3 days') // -259200000
+ms('-1h') // -3600000
+ms('-200') // -200
+```
+
+### Convert from Milliseconds
+
+```js
+ms(60000) // "1m"
+ms(2 * 60000) // "2m"
+ms(-3 * 60000) // "-3m"
+ms(ms('10 hours')) // "10h"
+```
+
+### Time Format Written-Out
+
+```js
+ms(60000, { long: true }) // "1 minute"
+ms(2 * 60000, { long: true }) // "2 minutes"
+ms(-3 * 60000, { long: true }) // "-3 minutes"
+ms(ms('10 hours'), { long: true }) // "10 hours"
+```
+
+## Features
+
+- Works both in [Node.js](https://nodejs.org) and in the browser
+- If a number is supplied to `ms`, a string with a unit is returned
+- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
+- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
+
+## Related Packages
+
+- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
+
+## Caught a Bug?
+
+1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
+2. Link the package to the global module directory: `npm link`
+3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
+
+As always, you can run the tests using: `npm test`
diff --git a/client/node_modules/node-fetch/LICENSE.md b/client/node_modules/node-fetch/LICENSE.md
new file mode 100644
index 0000000..660ffec
--- /dev/null
+++ b/client/node_modules/node-fetch/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 David Frank
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/client/node_modules/node-fetch/README.md b/client/node_modules/node-fetch/README.md
new file mode 100644
index 0000000..55f09b7
--- /dev/null
+++ b/client/node_modules/node-fetch/README.md
@@ -0,0 +1,634 @@
+node-fetch
+==========
+
+[![npm version][npm-image]][npm-url]
+[![build status][travis-image]][travis-url]
+[![coverage status][codecov-image]][codecov-url]
+[![install size][install-size-image]][install-size-url]
+[![Discord][discord-image]][discord-url]
+
+A light-weight module that brings `window.fetch` to Node.js
+
+(We are looking for [v2 maintainers and collaborators](https://github.com/bitinn/node-fetch/issues/567))
+
+[![Backers][opencollective-image]][opencollective-url]
+
+<!-- TOC -->
+
+- [Motivation](#motivation)
+- [Features](#features)
+- [Difference from client-side fetch](#difference-from-client-side-fetch)
+- [Installation](#installation)
+- [Loading and configuring the module](#loading-and-configuring-the-module)
+- [Common Usage](#common-usage)
+ - [Plain text or HTML](#plain-text-or-html)
+ - [JSON](#json)
+ - [Simple Post](#simple-post)
+ - [Post with JSON](#post-with-json)
+ - [Post with form parameters](#post-with-form-parameters)
+ - [Handling exceptions](#handling-exceptions)
+ - [Handling client and server errors](#handling-client-and-server-errors)
+- [Advanced Usage](#advanced-usage)
+ - [Streams](#streams)
+ - [Buffer](#buffer)
+ - [Accessing Headers and other Meta data](#accessing-headers-and-other-meta-data)
+ - [Extract Set-Cookie Header](#extract-set-cookie-header)
+ - [Post data using a file stream](#post-data-using-a-file-stream)
+ - [Post with form-data (detect multipart)](#post-with-form-data-detect-multipart)
+ - [Request cancellation with AbortSignal](#request-cancellation-with-abortsignal)
+- [API](#api)
+ - [fetch(url[, options])](#fetchurl-options)
+ - [Options](#options)
+ - [Class: Request](#class-request)
+ - [Class: Response](#class-response)
+ - [Class: Headers](#class-headers)
+ - [Interface: Body](#interface-body)
+ - [Class: FetchError](#class-fetcherror)
+- [License](#license)
+- [Acknowledgement](#acknowledgement)
+
+<!-- /TOC -->
+
+## Motivation
+
+Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence, `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime.
+
+See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side).
+
+## Features
+
+- Stay consistent with `window.fetch` API.
+- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences.
+- Use native promise but allow substituting it with [insert your favorite promise library].
+- Use native Node streams for body on both request and response.
+- Decode content encoding (gzip/deflate) properly and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically.
+- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting.
+
+## Difference from client-side fetch
+
+- See [Known Differences](LIMITS.md) for details.
+- If you happen to use a missing feature that `window.fetch` offers, feel free to open an issue.
+- Pull requests are welcomed too!
+
+## Installation
+
+Current stable release (`2.x`)
+
+```sh
+$ npm install node-fetch
+```
+
+## Loading and configuring the module
+We suggest you load the module via `require` until the stabilization of ES modules in node:
+```js
+const fetch = require('node-fetch');
+```
+
+If you are using a Promise library other than native, set it through `fetch.Promise`:
+```js
+const Bluebird = require('bluebird');
+
+fetch.Promise = Bluebird;
+```
+
+## Common Usage
+
+NOTE: The documentation below is up-to-date with `2.x` releases; see the [`1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences.
+
+#### Plain text or HTML
+```js
+fetch('https://github.com/')
+ .then(res => res.text())
+ .then(body => console.log(body));
+```
+
+#### JSON
+
+```js
+
+fetch('https://api.github.com/users/github')
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Simple Post
+```js
+fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
+ .then(res => res.json()) // expecting a json response
+ .then(json => console.log(json));
+```
+
+#### Post with JSON
+
+```js
+const body = { a: 1 };
+
+fetch('https://httpbin.org/post', {
+ method: 'post',
+ body: JSON.stringify(body),
+ headers: { 'Content-Type': 'application/json' },
+ })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Post with form parameters
+`URLSearchParams` is available in Node.js as of v7.5.0. See [official documentation](https://nodejs.org/api/url.html#url_class_urlsearchparams) for more usage methods.
+
+NOTE: The `Content-Type` header is only set automatically to `x-www-form-urlencoded` when an instance of `URLSearchParams` is given as such:
+
+```js
+const { URLSearchParams } = require('url');
+
+const params = new URLSearchParams();
+params.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: params })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Handling exceptions
+NOTE: 3xx-5xx responses are *NOT* exceptions and should be handled in `then()`; see the next section for more information.
+
+Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, network errors and operational errors, which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details.
+
+```js
+fetch('https://domain.invalid/')
+ .catch(err => console.error(err));
+```
+
+#### Handling client and server errors
+It is common to create a helper function to check that the response contains no client (4xx) or server (5xx) error responses:
+
+```js
+function checkStatus(res) {
+ if (res.ok) { // res.status >= 200 && res.status < 300
+ return res;
+ } else {
+ throw MyCustomError(res.statusText);
+ }
+}
+
+fetch('https://httpbin.org/status/400')
+ .then(checkStatus)
+ .then(res => console.log('will not get here...'))
+```
+
+## Advanced Usage
+
+#### Streams
+The "Node.js way" is to use streams when possible:
+
+```js
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+ .then(res => {
+ const dest = fs.createWriteStream('./octocat.png');
+ res.body.pipe(dest);
+ });
+```
+
+In Node.js 14 you can also use async iterators to read `body`; however, be careful to catch
+errors -- the longer a response runs, the more likely it is to encounter an error.
+
+```js
+const fetch = require('node-fetch');
+const response = await fetch('https://httpbin.org/stream/3');
+try {
+ for await (const chunk of response.body) {
+ console.dir(JSON.parse(chunk.toString()));
+ }
+} catch (err) {
+ console.error(err.stack);
+}
+```
+
+In Node.js 12 you can also use async iterators to read `body`; however, async iterators with streams
+did not mature until Node.js 14, so you need to do some extra work to ensure you handle errors
+directly from the stream and wait on it response to fully close.
+
+```js
+const fetch = require('node-fetch');
+const read = async body => {
+ let error;
+ body.on('error', err => {
+ error = err;
+ });
+ for await (const chunk of body) {
+ console.dir(JSON.parse(chunk.toString()));
+ }
+ return new Promise((resolve, reject) => {
+ body.on('close', () => {
+ error ? reject(error) : resolve();
+ });
+ });
+};
+try {
+ const response = await fetch('https://httpbin.org/stream/3');
+ await read(response.body);
+} catch (err) {
+ console.error(err.stack);
+}
+```
+
+#### Buffer
+If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API)
+
+```js
+const fileType = require('file-type');
+
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+ .then(res => res.buffer())
+ .then(buffer => fileType(buffer))
+ .then(type => { /* ... */ });
+```
+
+#### Accessing Headers and other Meta data
+```js
+fetch('https://github.com/')
+ .then(res => {
+ console.log(res.ok);
+ console.log(res.status);
+ console.log(res.statusText);
+ console.log(res.headers.raw());
+ console.log(res.headers.get('content-type'));
+ });
+```
+
+#### Extract Set-Cookie Header
+
+Unlike browsers, you can access raw `Set-Cookie` headers manually using `Headers.raw()`. This is a `node-fetch` only API.
+
+```js
+fetch(url).then(res => {
+ // returns an array of values, instead of a string of comma-separated values
+ console.log(res.headers.raw()['set-cookie']);
+});
+```
+
+#### Post data using a file stream
+
+```js
+const { createReadStream } = require('fs');
+
+const stream = createReadStream('input.txt');
+
+fetch('https://httpbin.org/post', { method: 'POST', body: stream })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Post with form-data (detect multipart)
+
+```js
+const FormData = require('form-data');
+
+const form = new FormData();
+form.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: form })
+ .then(res => res.json())
+ .then(json => console.log(json));
+
+// OR, using custom headers
+// NOTE: getHeaders() is non-standard API
+
+const form = new FormData();
+form.append('a', 1);
+
+const options = {
+ method: 'POST',
+ body: form,
+ headers: form.getHeaders()
+}
+
+fetch('https://httpbin.org/post', options)
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Request cancellation with AbortSignal
+
+> NOTE: You may cancel streamed requests only on Node >= v8.0.0
+
+You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller).
+
+An example of timing out a request after 150ms could be achieved as the following:
+
+```js
+import AbortController from 'abort-controller';
+
+const controller = new AbortController();
+const timeout = setTimeout(
+ () => { controller.abort(); },
+ 150,
+);
+
+fetch(url, { signal: controller.signal })
+ .then(res => res.json())
+ .then(
+ data => {
+ useData(data)
+ },
+ err => {
+ if (err.name === 'AbortError') {
+ // request was aborted
+ }
+ },
+ )
+ .finally(() => {
+ clearTimeout(timeout);
+ });
+```
+
+See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js) for more examples.
+
+
+## API
+
+### fetch(url[, options])
+
+- `url` A string representing the URL for fetching
+- `options` [Options](#fetch-options) for the HTTP(S) request
+- Returns: <code>Promise&lt;[Response](#class-response)&gt;</code>
+
+Perform an HTTP(S) fetch.
+
+`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.
+
+<a id="fetch-options"></a>
+### Options
+
+The default values are shown after each option key.
+
+```js
+{
+ // These properties are part of the Fetch Standard
+ method: 'GET',
+ headers: {}, // request headers. format is the identical to that accepted by the Headers constructor (see below)
+ body: null, // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream
+ redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect
+ signal: null, // pass an instance of AbortSignal to optionally abort requests
+
+ // The following properties are node-fetch extensions
+ follow: 20, // maximum redirect count. 0 to not follow redirect
+ timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead.
+ compress: true, // support gzip/deflate content encoding. false to disable
+ size: 0, // maximum response body size in bytes. 0 to disable
+ agent: null // http(s).Agent instance or function that returns an instance (see below)
+}
+```
+
+##### Default Headers
+
+If no values are set, the following request headers will be sent automatically:
+
+Header | Value
+------------------- | --------------------------------------------------------
+`Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_
+`Accept` | `*/*`
+`Content-Length` | _(automatically calculated, if possible)_
+`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_
+`User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`
+
+Note: when `body` is a `Stream`, `Content-Length` is not set automatically.
+
+##### Custom Agent
+
+The `agent` option allows you to specify networking related options which are out of the scope of Fetch, including and not limited to the following:
+
+- Support self-signed certificate
+- Use only IPv4 or IPv6
+- Custom DNS Lookup
+
+See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information.
+
+If no agent is specified, the default agent provided by Node.js is used. Note that [this changed in Node.js 19](https://github.com/nodejs/node/blob/4267b92604ad78584244488e7f7508a690cb80d0/lib/_http_agent.js#L564) to have `keepalive` true by default. If you wish to enable `keepalive` in an earlier version of Node.js, you can override the agent as per the following code sample.
+
+In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
+
+```js
+const httpAgent = new http.Agent({
+ keepAlive: true
+});
+const httpsAgent = new https.Agent({
+ keepAlive: true
+});
+
+const options = {
+ agent: function (_parsedURL) {
+ if (_parsedURL.protocol == 'http:') {
+ return httpAgent;
+ } else {
+ return httpsAgent;
+ }
+ }
+}
+```
+
+<a id="class-request"></a>
+### Class: Request
+
+An HTTP(S) request containing information about URL, method, headers, and the body. This class implements the [Body](#iface-body) interface.
+
+Due to the nature of Node.js, the following properties are not implemented at this moment:
+
+- `type`
+- `destination`
+- `referrer`
+- `referrerPolicy`
+- `mode`
+- `credentials`
+- `cache`
+- `integrity`
+- `keepalive`
+
+The following node-fetch extension properties are provided:
+
+- `follow`
+- `compress`
+- `counter`
+- `agent`
+
+See [options](#fetch-options) for exact meaning of these extensions.
+
+#### new Request(input[, options])
+
+<small>*(spec-compliant)*</small>
+
+- `input` A string representing a URL, or another `Request` (which will be cloned)
+- `options` [Options][#fetch-options] for the HTTP(S) request
+
+Constructs a new `Request` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
+
+In most cases, directly `fetch(url, options)` is simpler than creating a `Request` object.
+
+<a id="class-response"></a>
+### Class: Response
+
+An HTTP(S) response. This class implements the [Body](#iface-body) interface.
+
+The following properties are not implemented in node-fetch at this moment:
+
+- `Response.error()`
+- `Response.redirect()`
+- `type`
+- `trailer`
+
+#### new Response([body[, options]])
+
+<small>*(spec-compliant)*</small>
+
+- `body` A `String` or [`Readable` stream][node-readable]
+- `options` A [`ResponseInit`][response-init] options dictionary
+
+Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response).
+
+Because Node.js does not implement service workers (for which this class was designed), one rarely has to construct a `Response` directly.
+
+#### response.ok
+
+<small>*(spec-compliant)*</small>
+
+Convenience property representing if the request ended normally. Will evaluate to true if the response status was greater than or equal to 200 but smaller than 300.
+
+#### response.redirected
+
+<small>*(spec-compliant)*</small>
+
+Convenience property representing if the request has been redirected at least once. Will evaluate to true if the internal redirect counter is greater than 0.
+
+<a id="class-headers"></a>
+### Class: Headers
+
+This class allows manipulating and iterating over a set of HTTP headers. All methods specified in the [Fetch Standard][whatwg-fetch] are implemented.
+
+#### new Headers([init])
+
+<small>*(spec-compliant)*</small>
+
+- `init` Optional argument to pre-fill the `Headers` object
+
+Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object or any iterable object.
+
+```js
+// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class
+
+const meta = {
+ 'Content-Type': 'text/xml',
+ 'Breaking-Bad': '<3'
+};
+const headers = new Headers(meta);
+
+// The above is equivalent to
+const meta = [
+ [ 'Content-Type', 'text/xml' ],
+ [ 'Breaking-Bad', '<3' ]
+];
+const headers = new Headers(meta);
+
+// You can in fact use any iterable objects, like a Map or even another Headers
+const meta = new Map();
+meta.set('Content-Type', 'text/xml');
+meta.set('Breaking-Bad', '<3');
+const headers = new Headers(meta);
+const copyOfHeaders = new Headers(headers);
+```
+
+<a id="iface-body"></a>
+### Interface: Body
+
+`Body` is an abstract interface with methods that are applicable to both `Request` and `Response` classes.
+
+The following methods are not yet implemented in node-fetch at this moment:
+
+- `formData()`
+
+#### body.body
+
+<small>*(deviation from spec)*</small>
+
+* Node.js [`Readable` stream][node-readable]
+
+Data are encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable].
+
+#### body.bodyUsed
+
+<small>*(spec-compliant)*</small>
+
+* `Boolean`
+
+A boolean property for if this body has been consumed. Per the specs, a consumed body cannot be used again.
+
+#### body.arrayBuffer()
+#### body.blob()
+#### body.json()
+#### body.text()
+
+<small>*(spec-compliant)*</small>
+
+* Returns: <code>Promise</code>
+
+Consume the body and return a promise that will resolve to one of these formats.
+
+#### body.buffer()
+
+<small>*(node-fetch extension)*</small>
+
+* Returns: <code>Promise&lt;Buffer&gt;</code>
+
+Consume the body and return a promise that will resolve to a Buffer.
+
+#### body.textConverted()
+
+<small>*(node-fetch extension)*</small>
+
+* Returns: <code>Promise&lt;String&gt;</code>
+
+Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8 if possible.
+
+(This API requires an optional dependency of the npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.)
+
+<a id="class-fetcherror"></a>
+### Class: FetchError
+
+<small>*(node-fetch extension)*</small>
+
+An operational error in the fetching process. See [ERROR-HANDLING.md][] for more info.
+
+<a id="class-aborterror"></a>
+### Class: AbortError
+
+<small>*(node-fetch extension)*</small>
+
+An Error thrown when the request is aborted in response to an `AbortSignal`'s `abort` event. It has a `name` property of `AbortError`. See [ERROR-HANDLING.MD][] for more info.
+
+## Acknowledgement
+
+Thanks to [github/fetch](https://github.com/github/fetch) for providing a solid implementation reference.
+
+`node-fetch` v1 was maintained by [@bitinn](https://github.com/bitinn); v2 was maintained by [@TimothyGu](https://github.com/timothygu), [@bitinn](https://github.com/bitinn) and [@jimmywarting](https://github.com/jimmywarting); v2 readme is written by [@jkantr](https://github.com/jkantr).
+
+## License
+
+MIT
+
+[npm-image]: https://flat.badgen.net/npm/v/node-fetch
+[npm-url]: https://www.npmjs.com/package/node-fetch
+[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch
+[travis-url]: https://travis-ci.org/bitinn/node-fetch
+[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master
+[codecov-url]: https://codecov.io/gh/bitinn/node-fetch
+[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch
+[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch
+[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square
+[discord-url]: https://discord.gg/Zxbndcm
+[opencollective-image]: https://opencollective.com/node-fetch/backers.svg
+[opencollective-url]: https://opencollective.com/node-fetch
+[whatwg-fetch]: https://fetch.spec.whatwg.org/
+[response-init]: https://fetch.spec.whatwg.org/#responseinit
+[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams
+[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers
+[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md
+[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md
+[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md
diff --git a/client/node_modules/node-fetch/browser.js b/client/node_modules/node-fetch/browser.js
new file mode 100644
index 0000000..ee86265
--- /dev/null
+++ b/client/node_modules/node-fetch/browser.js
@@ -0,0 +1,25 @@
+"use strict";
+
+// ref: https://github.com/tc39/proposal-global
+var getGlobal = function () {
+ // the only reliable means to get the global object is
+ // `Function('return this')()`
+ // However, this causes CSP violations in Chrome apps.
+ if (typeof self !== 'undefined') { return self; }
+ if (typeof window !== 'undefined') { return window; }
+ if (typeof global !== 'undefined') { return global; }
+ throw new Error('unable to locate global object');
+}
+
+var globalObject = getGlobal();
+
+module.exports = exports = globalObject.fetch;
+
+// Needed for TypeScript and Webpack.
+if (globalObject.fetch) {
+ exports.default = globalObject.fetch.bind(globalObject);
+}
+
+exports.Headers = globalObject.Headers;
+exports.Request = globalObject.Request;
+exports.Response = globalObject.Response;
diff --git a/client/node_modules/node-fetch/lib/index.es.js b/client/node_modules/node-fetch/lib/index.es.js
new file mode 100644
index 0000000..aae9799
--- /dev/null
+++ b/client/node_modules/node-fetch/lib/index.es.js
@@ -0,0 +1,1777 @@
+process.emitWarning("The .es.js file is deprecated. Use .mjs instead.");
+
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import whatwgUrl from 'whatwg-url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // html4
+ if (!res && str) {
+ res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+ if (!res) {
+ res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
+ if (res) {
+ res.pop(); // drop last quote
+ }
+ }
+
+ if (res) {
+ res = /charset=(.*)/i.exec(res.pop());
+ }
+ }
+
+ // xml
+ if (!res && str) {
+ res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // found charset
+ if (res) {
+ charset = res.pop();
+
+ // prevent decode issues when sites use incorrect encoding
+ // ref: https://hsivonen.fi/encoding-menu/
+ if (charset === 'gb2312' || charset === 'gbk') {
+ charset = 'gb18030';
+ }
+ }
+
+ // turn raw buffers into a single utf-8 buffer
+ return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param Object obj Object to detect by type or brand
+ * @return String
+ */
+function isURLSearchParams(obj) {
+ // Duck-typing as a necessary condition.
+ if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+ return false;
+ }
+
+ // Brand-checking and more duck-typing as optional condition.
+ return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+ return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param Mixed instance Response or Request instance
+ * @return Mixed
+ */
+function clone(instance) {
+ let p1, p2;
+ let body = instance.body;
+
+ // don't allow cloning a used body
+ if (instance.bodyUsed) {
+ throw new Error('cannot clone body after it is used');
+ }
+
+ // check that body is a stream and not form-data object
+ // note: we can't clone the form-data object without having it as a dependency
+ if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+ // tee instance body
+ p1 = new PassThrough();
+ p2 = new PassThrough();
+ body.pipe(p1);
+ body.pipe(p2);
+ // set instance body to teed body and return the other teed body
+ instance[INTERNALS].body = p1;
+ body = p2;
+ }
+
+ return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param Mixed instance Any options.body input
+ */
+function extractContentType(body) {
+ if (body === null) {
+ // body is null
+ return null;
+ } else if (typeof body === 'string') {
+ // body is string
+ return 'text/plain;charset=UTF-8';
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ return 'application/x-www-form-urlencoded;charset=UTF-8';
+ } else if (isBlob(body)) {
+ // body is blob
+ return body.type || null;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return null;
+ } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ return null;
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ return null;
+ } else if (typeof body.getBoundary === 'function') {
+ // detect form data input from form-data module
+ return `multipart/form-data;boundary=${body.getBoundary()}`;
+ } else if (body instanceof Stream) {
+ // body is stream
+ // can't really do much about this
+ return null;
+ } else {
+ // Body constructor defaults other things to string
+ return 'text/plain;charset=UTF-8';
+ }
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param Body instance Instance of Body
+ * @return Number? Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ return 0;
+ } else if (isBlob(body)) {
+ return body.size;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return body.length;
+ } else if (body && typeof body.getLengthSync === 'function') {
+ // detect form data input from form-data module
+ if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+ body.hasKnownLength && body.hasKnownLength()) {
+ // 2.x
+ return body.getLengthSync();
+ }
+ return null;
+ } else {
+ // body is stream
+ return null;
+ }
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param Body instance Instance of Body
+ * @return Void
+ */
+function writeToStream(dest, instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ dest.end();
+ } else if (isBlob(body)) {
+ body.stream().pipe(dest);
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ dest.write(body);
+ dest.end();
+ } else {
+ // body is stream
+ body.pipe(dest);
+ }
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+ name = `${name}`;
+ if (invalidTokenRegex.test(name) || name === '') {
+ throw new TypeError(`${name} is not a legal HTTP header name`);
+ }
+}
+
+function validateValue(value) {
+ value = `${value}`;
+ if (invalidHeaderCharRegex.test(value)) {
+ throw new TypeError(`${value} is not a legal HTTP header value`);
+ }
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param String name Header name
+ * @return String|Undefined
+ */
+function find(map, name) {
+ name = name.toLowerCase();
+ for (const key in map) {
+ if (key.toLowerCase() === name) {
+ return key;
+ }
+ }
+ return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+ /**
+ * Headers class
+ *
+ * @param Object headers Response headers
+ * @return Void
+ */
+ constructor() {
+ let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence<sequence<ByteString>>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record<ByteString, ByteString>
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+const URL = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+/**
+ * Wrapper around `new URL` to handle arbitrary URLs
+ *
+ * @param {string} urlStr
+ * @return {void}
+ */
+function parseURL(urlStr) {
+ /*
+ Check whether the URL is absolute or not
+ Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+ if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+ urlStr = new URL(urlStr).toString();
+ }
+
+ // Fallback to old implementation for arbitrary URLs
+ return parse_url(urlStr);
+}
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parseURL(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parseURL(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parseURL(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+const URL$1 = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+
+const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
+ const orig = new URL$1(original).hostname;
+ const dest = new URL$1(destination).hostname;
+
+ return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
+};
+
+/**
+ * isSameProtocol reports whether the two provided URLs use the same protocol.
+ *
+ * Both domains must already be in canonical form.
+ * @param {string|URL} original
+ * @param {string|URL} destination
+ */
+const isSameProtocol = function isSameProtocol(destination, original) {
+ const orig = new URL$1(original).protocol;
+ const dest = new URL$1(destination).protocol;
+
+ return orig === dest;
+};
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ destroyStream(request.body, error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+
+ finalize();
+ });
+
+ fixResponseChunkedTransferBadEnding(req, function (err) {
+ if (signal && signal.aborted) {
+ return;
+ }
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+ });
+
+ /* c8 ignore next 18 */
+ if (parseInt(process.version.substring(1)) < 14) {
+ // Before Node.js 14, pipeline() does not fully support async iterators and does not always
+ // properly handle when the socket close/end events are out of order.
+ req.on('socket', function (s) {
+ s.addListener('close', function (hadError) {
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = s.listenerCount('data') > 0;
+
+ // if end happened before close but the socket didn't emit an error, do it now
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ response.body.emit('error', err);
+ }
+ });
+ });
+ }
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ let locationURL = null;
+ try {
+ locationURL = location === null ? null : new URL$1(location, request.url).toString();
+ } catch (err) {
+ // error here can only be invalid URL in Location: header
+ // do not throw when options.redirect == manual
+ // let the user extract the errorneous redirect URL
+ if (request.redirect !== 'manual') {
+ reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
+ finalize();
+ return;
+ }
+ }
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
+ for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
+ requestOpts.headers.delete(name);
+ }
+ }
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ raw.on('end', function () {
+ // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
+ if (!response) {
+ response = new Response(body, response_options);
+ resolve(response);
+ }
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+function fixResponseChunkedTransferBadEnding(request, errorCallback) {
+ let socket;
+
+ request.on('socket', function (s) {
+ socket = s;
+ });
+
+ request.on('response', function (response) {
+ const headers = response.headers;
+
+ if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
+ response.once('close', function (hadError) {
+ // tests for socket presence, as in some situations the
+ // the 'socket' event is not triggered for the request
+ // (happens in deno), avoids `TypeError`
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = socket && socket.listenerCount('data') > 0;
+
+ if (hasDataListener && !hadError) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ errorCallback(err);
+ }
+ });
+ }
+ });
+}
+
+function destroyStream(stream, err) {
+ if (stream.destroy) {
+ stream.destroy(err);
+ } else {
+ // node < 8
+ stream.emit('error', err);
+ stream.end();
+ }
+}
+
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError, AbortError };
diff --git a/client/node_modules/node-fetch/lib/index.js b/client/node_modules/node-fetch/lib/index.js
new file mode 100644
index 0000000..567ff5d
--- /dev/null
+++ b/client/node_modules/node-fetch/lib/index.js
@@ -0,0 +1,1787 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var Stream = _interopDefault(require('stream'));
+var http = _interopDefault(require('http'));
+var Url = _interopDefault(require('url'));
+var whatwgUrl = _interopDefault(require('whatwg-url'));
+var https = _interopDefault(require('https'));
+var zlib = _interopDefault(require('zlib'));
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // html4
+ if (!res && str) {
+ res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+ if (!res) {
+ res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
+ if (res) {
+ res.pop(); // drop last quote
+ }
+ }
+
+ if (res) {
+ res = /charset=(.*)/i.exec(res.pop());
+ }
+ }
+
+ // xml
+ if (!res && str) {
+ res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // found charset
+ if (res) {
+ charset = res.pop();
+
+ // prevent decode issues when sites use incorrect encoding
+ // ref: https://hsivonen.fi/encoding-menu/
+ if (charset === 'gb2312' || charset === 'gbk') {
+ charset = 'gb18030';
+ }
+ }
+
+ // turn raw buffers into a single utf-8 buffer
+ return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param Object obj Object to detect by type or brand
+ * @return String
+ */
+function isURLSearchParams(obj) {
+ // Duck-typing as a necessary condition.
+ if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+ return false;
+ }
+
+ // Brand-checking and more duck-typing as optional condition.
+ return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+ return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param Mixed instance Response or Request instance
+ * @return Mixed
+ */
+function clone(instance) {
+ let p1, p2;
+ let body = instance.body;
+
+ // don't allow cloning a used body
+ if (instance.bodyUsed) {
+ throw new Error('cannot clone body after it is used');
+ }
+
+ // check that body is a stream and not form-data object
+ // note: we can't clone the form-data object without having it as a dependency
+ if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+ // tee instance body
+ p1 = new PassThrough();
+ p2 = new PassThrough();
+ body.pipe(p1);
+ body.pipe(p2);
+ // set instance body to teed body and return the other teed body
+ instance[INTERNALS].body = p1;
+ body = p2;
+ }
+
+ return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param Mixed instance Any options.body input
+ */
+function extractContentType(body) {
+ if (body === null) {
+ // body is null
+ return null;
+ } else if (typeof body === 'string') {
+ // body is string
+ return 'text/plain;charset=UTF-8';
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ return 'application/x-www-form-urlencoded;charset=UTF-8';
+ } else if (isBlob(body)) {
+ // body is blob
+ return body.type || null;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return null;
+ } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ return null;
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ return null;
+ } else if (typeof body.getBoundary === 'function') {
+ // detect form data input from form-data module
+ return `multipart/form-data;boundary=${body.getBoundary()}`;
+ } else if (body instanceof Stream) {
+ // body is stream
+ // can't really do much about this
+ return null;
+ } else {
+ // Body constructor defaults other things to string
+ return 'text/plain;charset=UTF-8';
+ }
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param Body instance Instance of Body
+ * @return Number? Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ return 0;
+ } else if (isBlob(body)) {
+ return body.size;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return body.length;
+ } else if (body && typeof body.getLengthSync === 'function') {
+ // detect form data input from form-data module
+ if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+ body.hasKnownLength && body.hasKnownLength()) {
+ // 2.x
+ return body.getLengthSync();
+ }
+ return null;
+ } else {
+ // body is stream
+ return null;
+ }
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param Body instance Instance of Body
+ * @return Void
+ */
+function writeToStream(dest, instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ dest.end();
+ } else if (isBlob(body)) {
+ body.stream().pipe(dest);
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ dest.write(body);
+ dest.end();
+ } else {
+ // body is stream
+ body.pipe(dest);
+ }
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+ name = `${name}`;
+ if (invalidTokenRegex.test(name) || name === '') {
+ throw new TypeError(`${name} is not a legal HTTP header name`);
+ }
+}
+
+function validateValue(value) {
+ value = `${value}`;
+ if (invalidHeaderCharRegex.test(value)) {
+ throw new TypeError(`${value} is not a legal HTTP header value`);
+ }
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param String name Header name
+ * @return String|Undefined
+ */
+function find(map, name) {
+ name = name.toLowerCase();
+ for (const key in map) {
+ if (key.toLowerCase() === name) {
+ return key;
+ }
+ }
+ return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+ /**
+ * Headers class
+ *
+ * @param Object headers Response headers
+ * @return Void
+ */
+ constructor() {
+ let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence<sequence<ByteString>>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record<ByteString, ByteString>
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+const URL = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+/**
+ * Wrapper around `new URL` to handle arbitrary URLs
+ *
+ * @param {string} urlStr
+ * @return {void}
+ */
+function parseURL(urlStr) {
+ /*
+ Check whether the URL is absolute or not
+ Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+ if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+ urlStr = new URL(urlStr).toString();
+ }
+
+ // Fallback to old implementation for arbitrary URLs
+ return parse_url(urlStr);
+}
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parseURL(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parseURL(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parseURL(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+const URL$1 = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+
+const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
+ const orig = new URL$1(original).hostname;
+ const dest = new URL$1(destination).hostname;
+
+ return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
+};
+
+/**
+ * isSameProtocol reports whether the two provided URLs use the same protocol.
+ *
+ * Both domains must already be in canonical form.
+ * @param {string|URL} original
+ * @param {string|URL} destination
+ */
+const isSameProtocol = function isSameProtocol(destination, original) {
+ const orig = new URL$1(original).protocol;
+ const dest = new URL$1(destination).protocol;
+
+ return orig === dest;
+};
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ destroyStream(request.body, error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+
+ finalize();
+ });
+
+ fixResponseChunkedTransferBadEnding(req, function (err) {
+ if (signal && signal.aborted) {
+ return;
+ }
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+ });
+
+ /* c8 ignore next 18 */
+ if (parseInt(process.version.substring(1)) < 14) {
+ // Before Node.js 14, pipeline() does not fully support async iterators and does not always
+ // properly handle when the socket close/end events are out of order.
+ req.on('socket', function (s) {
+ s.addListener('close', function (hadError) {
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = s.listenerCount('data') > 0;
+
+ // if end happened before close but the socket didn't emit an error, do it now
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ response.body.emit('error', err);
+ }
+ });
+ });
+ }
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ let locationURL = null;
+ try {
+ locationURL = location === null ? null : new URL$1(location, request.url).toString();
+ } catch (err) {
+ // error here can only be invalid URL in Location: header
+ // do not throw when options.redirect == manual
+ // let the user extract the errorneous redirect URL
+ if (request.redirect !== 'manual') {
+ reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
+ finalize();
+ return;
+ }
+ }
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
+ for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
+ requestOpts.headers.delete(name);
+ }
+ }
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ raw.on('end', function () {
+ // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
+ if (!response) {
+ response = new Response(body, response_options);
+ resolve(response);
+ }
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+function fixResponseChunkedTransferBadEnding(request, errorCallback) {
+ let socket;
+
+ request.on('socket', function (s) {
+ socket = s;
+ });
+
+ request.on('response', function (response) {
+ const headers = response.headers;
+
+ if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
+ response.once('close', function (hadError) {
+ // tests for socket presence, as in some situations the
+ // the 'socket' event is not triggered for the request
+ // (happens in deno), avoids `TypeError`
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = socket && socket.listenerCount('data') > 0;
+
+ if (hasDataListener && !hadError) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ errorCallback(err);
+ }
+ });
+ }
+ });
+}
+
+function destroyStream(stream, err) {
+ if (stream.destroy) {
+ stream.destroy(err);
+ } else {
+ // node < 8
+ stream.emit('error', err);
+ stream.end();
+ }
+}
+
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+module.exports = exports = fetch;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = exports;
+exports.Headers = Headers;
+exports.Request = Request;
+exports.Response = Response;
+exports.FetchError = FetchError;
+exports.AbortError = AbortError;
diff --git a/client/node_modules/node-fetch/lib/index.mjs b/client/node_modules/node-fetch/lib/index.mjs
new file mode 100644
index 0000000..2863dd9
--- /dev/null
+++ b/client/node_modules/node-fetch/lib/index.mjs
@@ -0,0 +1,1775 @@
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import whatwgUrl from 'whatwg-url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // html4
+ if (!res && str) {
+ res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+ if (!res) {
+ res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
+ if (res) {
+ res.pop(); // drop last quote
+ }
+ }
+
+ if (res) {
+ res = /charset=(.*)/i.exec(res.pop());
+ }
+ }
+
+ // xml
+ if (!res && str) {
+ res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+ }
+
+ // found charset
+ if (res) {
+ charset = res.pop();
+
+ // prevent decode issues when sites use incorrect encoding
+ // ref: https://hsivonen.fi/encoding-menu/
+ if (charset === 'gb2312' || charset === 'gbk') {
+ charset = 'gb18030';
+ }
+ }
+
+ // turn raw buffers into a single utf-8 buffer
+ return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param Object obj Object to detect by type or brand
+ * @return String
+ */
+function isURLSearchParams(obj) {
+ // Duck-typing as a necessary condition.
+ if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+ return false;
+ }
+
+ // Brand-checking and more duck-typing as optional condition.
+ return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+ return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param Mixed instance Response or Request instance
+ * @return Mixed
+ */
+function clone(instance) {
+ let p1, p2;
+ let body = instance.body;
+
+ // don't allow cloning a used body
+ if (instance.bodyUsed) {
+ throw new Error('cannot clone body after it is used');
+ }
+
+ // check that body is a stream and not form-data object
+ // note: we can't clone the form-data object without having it as a dependency
+ if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+ // tee instance body
+ p1 = new PassThrough();
+ p2 = new PassThrough();
+ body.pipe(p1);
+ body.pipe(p2);
+ // set instance body to teed body and return the other teed body
+ instance[INTERNALS].body = p1;
+ body = p2;
+ }
+
+ return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param Mixed instance Any options.body input
+ */
+function extractContentType(body) {
+ if (body === null) {
+ // body is null
+ return null;
+ } else if (typeof body === 'string') {
+ // body is string
+ return 'text/plain;charset=UTF-8';
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ return 'application/x-www-form-urlencoded;charset=UTF-8';
+ } else if (isBlob(body)) {
+ // body is blob
+ return body.type || null;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return null;
+ } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ return null;
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ return null;
+ } else if (typeof body.getBoundary === 'function') {
+ // detect form data input from form-data module
+ return `multipart/form-data;boundary=${body.getBoundary()}`;
+ } else if (body instanceof Stream) {
+ // body is stream
+ // can't really do much about this
+ return null;
+ } else {
+ // Body constructor defaults other things to string
+ return 'text/plain;charset=UTF-8';
+ }
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param Body instance Instance of Body
+ * @return Number? Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ return 0;
+ } else if (isBlob(body)) {
+ return body.size;
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ return body.length;
+ } else if (body && typeof body.getLengthSync === 'function') {
+ // detect form data input from form-data module
+ if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+ body.hasKnownLength && body.hasKnownLength()) {
+ // 2.x
+ return body.getLengthSync();
+ }
+ return null;
+ } else {
+ // body is stream
+ return null;
+ }
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param Body instance Instance of Body
+ * @return Void
+ */
+function writeToStream(dest, instance) {
+ const body = instance.body;
+
+
+ if (body === null) {
+ // body is null
+ dest.end();
+ } else if (isBlob(body)) {
+ body.stream().pipe(dest);
+ } else if (Buffer.isBuffer(body)) {
+ // body is buffer
+ dest.write(body);
+ dest.end();
+ } else {
+ // body is stream
+ body.pipe(dest);
+ }
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+ name = `${name}`;
+ if (invalidTokenRegex.test(name) || name === '') {
+ throw new TypeError(`${name} is not a legal HTTP header name`);
+ }
+}
+
+function validateValue(value) {
+ value = `${value}`;
+ if (invalidHeaderCharRegex.test(value)) {
+ throw new TypeError(`${value} is not a legal HTTP header value`);
+ }
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param String name Header name
+ * @return String|Undefined
+ */
+function find(map, name) {
+ name = name.toLowerCase();
+ for (const key in map) {
+ if (key.toLowerCase() === name) {
+ return key;
+ }
+ }
+ return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+ /**
+ * Headers class
+ *
+ * @param Object headers Response headers
+ * @return Void
+ */
+ constructor() {
+ let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence<sequence<ByteString>>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record<ByteString, ByteString>
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+const URL = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+/**
+ * Wrapper around `new URL` to handle arbitrary URLs
+ *
+ * @param {string} urlStr
+ * @return {void}
+ */
+function parseURL(urlStr) {
+ /*
+ Check whether the URL is absolute or not
+ Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
+ Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
+ */
+ if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
+ urlStr = new URL(urlStr).toString();
+ }
+
+ // Fallback to old implementation for arbitrary URLs
+ return parse_url(urlStr);
+}
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parseURL(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parseURL(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parseURL(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+const URL$1 = Url.URL || whatwgUrl.URL;
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+
+const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
+ const orig = new URL$1(original).hostname;
+ const dest = new URL$1(destination).hostname;
+
+ return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
+};
+
+/**
+ * isSameProtocol reports whether the two provided URLs use the same protocol.
+ *
+ * Both domains must already be in canonical form.
+ * @param {string|URL} original
+ * @param {string|URL} destination
+ */
+const isSameProtocol = function isSameProtocol(destination, original) {
+ const orig = new URL$1(original).protocol;
+ const dest = new URL$1(destination).protocol;
+
+ return orig === dest;
+};
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ destroyStream(request.body, error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+
+ finalize();
+ });
+
+ fixResponseChunkedTransferBadEnding(req, function (err) {
+ if (signal && signal.aborted) {
+ return;
+ }
+
+ if (response && response.body) {
+ destroyStream(response.body, err);
+ }
+ });
+
+ /* c8 ignore next 18 */
+ if (parseInt(process.version.substring(1)) < 14) {
+ // Before Node.js 14, pipeline() does not fully support async iterators and does not always
+ // properly handle when the socket close/end events are out of order.
+ req.on('socket', function (s) {
+ s.addListener('close', function (hadError) {
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = s.listenerCount('data') > 0;
+
+ // if end happened before close but the socket didn't emit an error, do it now
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ response.body.emit('error', err);
+ }
+ });
+ });
+ }
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ let locationURL = null;
+ try {
+ locationURL = location === null ? null : new URL$1(location, request.url).toString();
+ } catch (err) {
+ // error here can only be invalid URL in Location: header
+ // do not throw when options.redirect == manual
+ // let the user extract the errorneous redirect URL
+ if (request.redirect !== 'manual') {
+ reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
+ finalize();
+ return;
+ }
+ }
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
+ for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
+ requestOpts.headers.delete(name);
+ }
+ }
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ raw.on('end', function () {
+ // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
+ if (!response) {
+ response = new Response(body, response_options);
+ resolve(response);
+ }
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+function fixResponseChunkedTransferBadEnding(request, errorCallback) {
+ let socket;
+
+ request.on('socket', function (s) {
+ socket = s;
+ });
+
+ request.on('response', function (response) {
+ const headers = response.headers;
+
+ if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
+ response.once('close', function (hadError) {
+ // tests for socket presence, as in some situations the
+ // the 'socket' event is not triggered for the request
+ // (happens in deno), avoids `TypeError`
+ // if a data listener is still present we didn't end cleanly
+ const hasDataListener = socket && socket.listenerCount('data') > 0;
+
+ if (hasDataListener && !hadError) {
+ const err = new Error('Premature close');
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
+ errorCallback(err);
+ }
+ });
+ }
+ });
+}
+
+function destroyStream(stream, err) {
+ if (stream.destroy) {
+ stream.destroy(err);
+ } else {
+ // node < 8
+ stream.emit('error', err);
+ stream.end();
+ }
+}
+
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError, AbortError };
diff --git a/client/node_modules/node-fetch/package.json b/client/node_modules/node-fetch/package.json
new file mode 100644
index 0000000..e0be176
--- /dev/null
+++ b/client/node_modules/node-fetch/package.json
@@ -0,0 +1,89 @@
+{
+ "name": "node-fetch",
+ "version": "2.7.0",
+ "description": "A light-weight module that brings window.fetch to node.js",
+ "main": "lib/index.js",
+ "browser": "./browser.js",
+ "module": "lib/index.mjs",
+ "files": [
+ "lib/index.js",
+ "lib/index.mjs",
+ "lib/index.es.js",
+ "browser.js"
+ ],
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "scripts": {
+ "build": "cross-env BABEL_ENV=rollup rollup -c",
+ "prepare": "npm run build",
+ "test": "cross-env BABEL_ENV=test mocha --require babel-register --throw-deprecation test/test.js",
+ "report": "cross-env BABEL_ENV=coverage nyc --reporter lcov --reporter text mocha -R spec test/test.js",
+ "coverage": "cross-env BABEL_ENV=coverage nyc --reporter json --reporter text mocha -R spec test/test.js && codecov -f coverage/coverage-final.json"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/bitinn/node-fetch.git"
+ },
+ "keywords": [
+ "fetch",
+ "http",
+ "promise"
+ ],
+ "author": "David Frank",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/bitinn/node-fetch/issues"
+ },
+ "homepage": "https://github.com/bitinn/node-fetch",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ },
+ "devDependencies": {
+ "@ungap/url-search-params": "^0.1.2",
+ "abort-controller": "^1.1.0",
+ "abortcontroller-polyfill": "^1.3.0",
+ "babel-core": "^6.26.3",
+ "babel-plugin-istanbul": "^4.1.6",
+ "babel-plugin-transform-async-generator-functions": "^6.24.1",
+ "babel-polyfill": "^6.26.0",
+ "babel-preset-env": "1.4.0",
+ "babel-register": "^6.16.3",
+ "chai": "^3.5.0",
+ "chai-as-promised": "^7.1.1",
+ "chai-iterator": "^1.1.1",
+ "chai-string": "~1.3.0",
+ "codecov": "3.3.0",
+ "cross-env": "^5.2.0",
+ "form-data": "^2.3.3",
+ "is-builtin-module": "^1.0.0",
+ "mocha": "^5.0.0",
+ "nyc": "11.9.0",
+ "parted": "^0.1.1",
+ "promise": "^8.0.3",
+ "resumer": "0.0.0",
+ "rollup": "^0.63.4",
+ "rollup-plugin-babel": "^3.0.7",
+ "string-to-arraybuffer": "^1.0.2",
+ "teeny-request": "3.7.0"
+ },
+ "release": {
+ "branches": [
+ "+([0-9]).x",
+ "main",
+ "next",
+ {
+ "name": "beta",
+ "prerelease": true
+ }
+ ]
+ }
+}
diff --git a/client/node_modules/normalize-url/index.d.ts b/client/node_modules/normalize-url/index.d.ts
new file mode 100644
index 0000000..ca40f8f
--- /dev/null
+++ b/client/node_modules/normalize-url/index.d.ts
@@ -0,0 +1,267 @@
+declare namespace normalizeUrl {
+ interface Options {
+ /**
+ @default 'http:'
+ */
+ readonly defaultProtocol?: string;
+
+ /**
+ Prepends `defaultProtocol` to the URL if it's protocol-relative.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('//sindresorhus.com:80/');
+ //=> 'http://sindresorhus.com'
+
+ normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
+ //=> '//sindresorhus.com'
+ ```
+ */
+ readonly normalizeProtocol?: boolean;
+
+ /**
+ Normalizes `https:` URLs to `http:`.
+
+ @default false
+
+ @example
+ ```
+ normalizeUrl('https://sindresorhus.com:80/');
+ //=> 'https://sindresorhus.com'
+
+ normalizeUrl('https://sindresorhus.com:80/', {forceHttp: true});
+ //=> 'http://sindresorhus.com'
+ ```
+ */
+ readonly forceHttp?: boolean;
+
+ /**
+ Normalizes `http:` URLs to `https:`.
+
+ This option can't be used with the `forceHttp` option at the same time.
+
+ @default false
+
+ @example
+ ```
+ normalizeUrl('https://sindresorhus.com:80/');
+ //=> 'https://sindresorhus.com'
+
+ normalizeUrl('http://sindresorhus.com:80/', {forceHttps: true});
+ //=> 'https://sindresorhus.com'
+ ```
+ */
+ readonly forceHttps?: boolean;
+
+ /**
+ Strip the [authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) part of a URL.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('user:password@sindresorhus.com');
+ //=> 'https://sindresorhus.com'
+
+ normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false});
+ //=> 'https://user:password@sindresorhus.com'
+ ```
+ */
+ readonly stripAuthentication?: boolean;
+
+ /**
+ Removes hash from the URL.
+
+ @default false
+
+ @example
+ ```
+ normalizeUrl('sindresorhus.com/about.html#contact');
+ //=> 'http://sindresorhus.com/about.html#contact'
+
+ normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true});
+ //=> 'http://sindresorhus.com/about.html'
+ ```
+ */
+ readonly stripHash?: boolean;
+
+ /**
+ Removes HTTP(S) protocol from an URL `http://sindresorhus.com` → `sindresorhus.com`.
+
+ @default false
+
+ @example
+ ```
+ normalizeUrl('https://sindresorhus.com');
+ //=> 'https://sindresorhus.com'
+
+ normalizeUrl('sindresorhus.com', {stripProtocol: true});
+ //=> 'sindresorhus.com'
+ ```
+ */
+ readonly stripProtocol?: boolean;
+
+ /**
+ Strip the [text fragment](https://web.dev/text-fragments/) part of the URL
+
+ __Note:__ The text fragment will always be removed if the `stripHash` option is set to `true`, as the hash contains the text fragment.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello');
+ //=> 'http://sindresorhus.com/about.html#'
+
+ normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello');
+ //=> 'http://sindresorhus.com/about.html#section'
+
+ normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false});
+ //=> 'http://sindresorhus.com/about.html#:~:text=hello'
+
+ normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false});
+ //=> 'http://sindresorhus.com/about.html#section:~:text=hello'
+ ```
+ */
+ readonly stripTextFragment?: boolean;
+
+ /**
+ Removes `www.` from the URL.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('http://www.sindresorhus.com');
+ //=> 'http://sindresorhus.com'
+
+ normalizeUrl('http://www.sindresorhus.com', {stripWWW: false});
+ //=> 'http://www.sindresorhus.com'
+ ```
+ */
+ readonly stripWWW?: boolean;
+
+ /**
+ Removes query parameters that matches any of the provided strings or regexes.
+
+ @default [/^utm_\w+/i]
+
+ @example
+ ```
+ normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', {
+ removeQueryParameters: ['ref']
+ });
+ //=> 'http://sindresorhus.com/?foo=bar'
+ ```
+
+ If a boolean is provided, `true` will remove all the query parameters.
+
+ ```
+ normalizeUrl('www.sindresorhus.com?foo=bar', {
+ removeQueryParameters: true
+ });
+ //=> 'http://sindresorhus.com'
+ ```
+
+ `false` will not remove any query parameter.
+
+ ```
+ normalizeUrl('www.sindresorhus.com?foo=bar&utm_medium=test&ref=test_ref', {
+ removeQueryParameters: false
+ });
+ //=> 'http://www.sindresorhus.com/?foo=bar&ref=test_ref&utm_medium=test'
+ ```
+ */
+ readonly removeQueryParameters?: ReadonlyArray<RegExp | string> | boolean;
+
+ /**
+ Removes trailing slash.
+
+ __Note__: Trailing slash is always removed if the URL doesn't have a pathname unless the `removeSingleSlash` option is set to `false`.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('http://sindresorhus.com/redirect/');
+ //=> 'http://sindresorhus.com/redirect'
+
+ normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false});
+ //=> 'http://sindresorhus.com/redirect/'
+
+ normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false});
+ //=> 'http://sindresorhus.com'
+ ```
+ */
+ readonly removeTrailingSlash?: boolean;
+
+ /**
+ Remove a sole `/` pathname in the output. This option is independant of `removeTrailingSlash`.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('https://sindresorhus.com/');
+ //=> 'https://sindresorhus.com'
+
+ normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false});
+ //=> 'https://sindresorhus.com/'
+ ```
+ */
+ readonly removeSingleSlash?: boolean;
+
+ /**
+ Removes the default directory index file from path that matches any of the provided strings or regexes.
+ When `true`, the regex `/^index\.[a-z]+$/` is used.
+
+ @default false
+
+ @example
+ ```
+ normalizeUrl('www.sindresorhus.com/foo/default.php', {
+ removeDirectoryIndex: [/^default\.[a-z]+$/]
+ });
+ //=> 'http://sindresorhus.com/foo'
+ ```
+ */
+ readonly removeDirectoryIndex?: ReadonlyArray<RegExp | string>;
+
+ /**
+ Sorts the query parameters alphabetically by key.
+
+ @default true
+
+ @example
+ ```
+ normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', {
+ sortQueryParameters: false
+ });
+ //=> 'http://sindresorhus.com/?b=two&a=one&c=three'
+ ```
+ */
+ readonly sortQueryParameters?: boolean;
+ }
+}
+
+/**
+[Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL.
+
+@param url - URL to normalize, including [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).
+
+@example
+```
+import normalizeUrl = require('normalize-url');
+
+normalizeUrl('sindresorhus.com');
+//=> 'http://sindresorhus.com'
+
+normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
+//=> 'http://sindresorhus.com/baz?a=foo&b=bar'
+```
+*/
+declare function normalizeUrl(url: string, options?: normalizeUrl.Options): string;
+
+export = normalizeUrl;
diff --git a/client/node_modules/normalize-url/index.js b/client/node_modules/normalize-url/index.js
new file mode 100644
index 0000000..c9340ab
--- /dev/null
+++ b/client/node_modules/normalize-url/index.js
@@ -0,0 +1,216 @@
+'use strict';
+
+// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
+const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';
+const DATA_URL_DEFAULT_CHARSET = 'us-ascii';
+
+const testParameter = (name, filters) => {
+ return filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);
+};
+
+const normalizeDataURL = (urlString, {stripHash}) => {
+ const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
+
+ if (!match) {
+ throw new Error(`Invalid URL: ${urlString}`);
+ }
+
+ let {type, data, hash} = match.groups;
+ const mediaType = type.split(';');
+ hash = stripHash ? '' : hash;
+
+ let isBase64 = false;
+ if (mediaType[mediaType.length - 1] === 'base64') {
+ mediaType.pop();
+ isBase64 = true;
+ }
+
+ // Lowercase MIME type
+ const mimeType = (mediaType.shift() || '').toLowerCase();
+ const attributes = mediaType
+ .map(attribute => {
+ let [key, value = ''] = attribute.split('=').map(string => string.trim());
+
+ // Lowercase `charset`
+ if (key === 'charset') {
+ value = value.toLowerCase();
+
+ if (value === DATA_URL_DEFAULT_CHARSET) {
+ return '';
+ }
+ }
+
+ return `${key}${value ? `=${value}` : ''}`;
+ })
+ .filter(Boolean);
+
+ const normalizedMediaType = [
+ ...attributes
+ ];
+
+ if (isBase64) {
+ normalizedMediaType.push('base64');
+ }
+
+ if (normalizedMediaType.length !== 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) {
+ normalizedMediaType.unshift(mimeType);
+ }
+
+ return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;
+};
+
+const normalizeUrl = (urlString, options) => {
+ options = {
+ defaultProtocol: 'http:',
+ normalizeProtocol: true,
+ forceHttp: false,
+ forceHttps: false,
+ stripAuthentication: true,
+ stripHash: false,
+ stripTextFragment: true,
+ stripWWW: true,
+ removeQueryParameters: [/^utm_\w+/i],
+ removeTrailingSlash: true,
+ removeSingleSlash: true,
+ removeDirectoryIndex: false,
+ sortQueryParameters: true,
+ ...options
+ };
+
+ urlString = urlString.trim();
+
+ // Data URL
+ if (/^data:/i.test(urlString)) {
+ return normalizeDataURL(urlString, options);
+ }
+
+ if (/^view-source:/i.test(urlString)) {
+ throw new Error('`view-source:` is not supported as it is a non-standard protocol');
+ }
+
+ const hasRelativeProtocol = urlString.startsWith('//');
+ const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
+
+ // Prepend protocol
+ if (!isRelativeUrl) {
+ urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
+ }
+
+ const urlObj = new URL(urlString);
+
+ if (options.forceHttp && options.forceHttps) {
+ throw new Error('The `forceHttp` and `forceHttps` options cannot be used together');
+ }
+
+ if (options.forceHttp && urlObj.protocol === 'https:') {
+ urlObj.protocol = 'http:';
+ }
+
+ if (options.forceHttps && urlObj.protocol === 'http:') {
+ urlObj.protocol = 'https:';
+ }
+
+ // Remove auth
+ if (options.stripAuthentication) {
+ urlObj.username = '';
+ urlObj.password = '';
+ }
+
+ // Remove hash
+ if (options.stripHash) {
+ urlObj.hash = '';
+ } else if (options.stripTextFragment) {
+ urlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, '');
+ }
+
+ // Remove duplicate slashes if not preceded by a protocol
+ if (urlObj.pathname) {
+ urlObj.pathname = urlObj.pathname.replace(/(?<!\b(?:[a-z][a-z\d+\-.]{1,50}:))\/{2,}/g, '/');
+ }
+
+ // Decode URI octets
+ if (urlObj.pathname) {
+ try {
+ urlObj.pathname = decodeURI(urlObj.pathname);
+ } catch (_) {}
+ }
+
+ // Remove directory index
+ if (options.removeDirectoryIndex === true) {
+ options.removeDirectoryIndex = [/^index\.[a-z]+$/];
+ }
+
+ if (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {
+ let pathComponents = urlObj.pathname.split('/');
+ const lastComponent = pathComponents[pathComponents.length - 1];
+
+ if (testParameter(lastComponent, options.removeDirectoryIndex)) {
+ pathComponents = pathComponents.slice(0, pathComponents.length - 1);
+ urlObj.pathname = pathComponents.slice(1).join('/') + '/';
+ }
+ }
+
+ if (urlObj.hostname) {
+ // Remove trailing dot
+ urlObj.hostname = urlObj.hostname.replace(/\.$/, '');
+
+ // Remove `www.`
+ if (options.stripWWW && /^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(urlObj.hostname)) {
+ // Each label should be max 63 at length (min: 1).
+ // Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
+ // Each TLD should be up to 63 characters long (min: 2).
+ // It is technically possible to have a single character TLD, but none currently exist.
+ urlObj.hostname = urlObj.hostname.replace(/^www\./, '');
+ }
+ }
+
+ // Remove query unwanted parameters
+ if (Array.isArray(options.removeQueryParameters)) {
+ for (const key of [...urlObj.searchParams.keys()]) {
+ if (testParameter(key, options.removeQueryParameters)) {
+ urlObj.searchParams.delete(key);
+ }
+ }
+ }
+
+ if (options.removeQueryParameters === true) {
+ urlObj.search = '';
+ }
+
+ // Sort query parameters
+ if (options.sortQueryParameters) {
+ urlObj.searchParams.sort();
+ }
+
+ if (options.removeTrailingSlash) {
+ urlObj.pathname = urlObj.pathname.replace(/\/$/, '');
+ }
+
+ const oldUrlString = urlString;
+
+ // Take advantage of many of the Node `url` normalizations
+ urlString = urlObj.toString();
+
+ if (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') {
+ urlString = urlString.replace(/\/$/, '');
+ }
+
+ // Remove ending `/` unless removeSingleSlash is false
+ if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) {
+ urlString = urlString.replace(/\/$/, '');
+ }
+
+ // Restore relative protocol, if applicable
+ if (hasRelativeProtocol && !options.normalizeProtocol) {
+ urlString = urlString.replace(/^http:\/\//, '//');
+ }
+
+ // Remove http/https
+ if (options.stripProtocol) {
+ urlString = urlString.replace(/^(?:https?:)?\/\//, '');
+ }
+
+ return urlString;
+};
+
+module.exports = normalizeUrl;
diff --git a/client/node_modules/normalize-url/license b/client/node_modules/normalize-url/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/normalize-url/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/normalize-url/package.json b/client/node_modules/normalize-url/package.json
new file mode 100644
index 0000000..2670e4a
--- /dev/null
+++ b/client/node_modules/normalize-url/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "normalize-url",
+ "version": "6.1.0",
+ "description": "Normalize a URL",
+ "license": "MIT",
+ "repository": "sindresorhus/normalize-url",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && nyc ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "normalize",
+ "url",
+ "uri",
+ "address",
+ "string",
+ "normalization",
+ "normalisation",
+ "query",
+ "querystring",
+ "simplify",
+ "strip",
+ "trim",
+ "canonical"
+ ],
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "nyc": "^15.0.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.25.3"
+ },
+ "nyc": {
+ "reporter": [
+ "text",
+ "lcov"
+ ]
+ }
+}
diff --git a/client/node_modules/normalize-url/readme.md b/client/node_modules/normalize-url/readme.md
new file mode 100644
index 0000000..4b29b29
--- /dev/null
+++ b/client/node_modules/normalize-url/readme.md
@@ -0,0 +1,286 @@
+# normalize-url [![Coverage Status](https://codecov.io/gh/sindresorhus/normalize-url/branch/main/graph/badge.svg)](https://codecov.io/gh/sindresorhus/normalize-url)
+
+> [Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL
+
+Useful when you need to display, store, deduplicate, sort, compare, etc, URLs.
+
+## Install
+
+```
+$ npm install normalize-url
+```
+
+*If you need to use this in the browser, use version 4: `npm i normalize-url@4`*
+
+## Usage
+
+```js
+const normalizeUrl = require('normalize-url');
+
+normalizeUrl('sindresorhus.com');
+//=> 'http://sindresorhus.com'
+
+normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
+//=> 'http://sindresorhus.com/baz?a=foo&b=bar'
+```
+
+## API
+
+### normalizeUrl(url, options?)
+
+#### url
+
+Type: `string`
+
+URL to normalize, including [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).
+
+#### options
+
+Type: `object`
+
+##### defaultProtocol
+
+Type: `string`\
+Default: `http:`
+
+##### normalizeProtocol
+
+Type: `boolean`\
+Default: `true`
+
+Prepend `defaultProtocol` to the URL if it's protocol-relative.
+
+```js
+normalizeUrl('//sindresorhus.com:80/');
+//=> 'http://sindresorhus.com'
+
+normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false});
+//=> '//sindresorhus.com'
+```
+
+##### forceHttp
+
+Type: `boolean`\
+Default: `false`
+
+Normalize `https:` to `http:`.
+
+```js
+normalizeUrl('https://sindresorhus.com:80/');
+//=> 'https://sindresorhus.com'
+
+normalizeUrl('https://sindresorhus.com:80/', {forceHttp: true});
+//=> 'http://sindresorhus.com'
+```
+
+##### forceHttps
+
+Type: `boolean`\
+Default: `false`
+
+Normalize `http:` to `https:`.
+
+```js
+normalizeUrl('https://sindresorhus.com:80/');
+//=> 'https://sindresorhus.com'
+
+normalizeUrl('http://sindresorhus.com:80/', {forceHttps: true});
+//=> 'https://sindresorhus.com'
+```
+
+This option can't be used with the `forceHttp` option at the same time.
+
+##### stripAuthentication
+
+Type: `boolean`\
+Default: `true`
+
+Strip the [authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) part of the URL.
+
+```js
+normalizeUrl('user:password@sindresorhus.com');
+//=> 'https://sindresorhus.com'
+
+normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false});
+//=> 'https://user:password@sindresorhus.com'
+```
+
+##### stripHash
+
+Type: `boolean`\
+Default: `false`
+
+Strip the hash part of the URL.
+
+```js
+normalizeUrl('sindresorhus.com/about.html#contact');
+//=> 'http://sindresorhus.com/about.html#contact'
+
+normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true});
+//=> 'http://sindresorhus.com/about.html'
+```
+
+##### stripProtocol
+
+Type: `boolean`\
+Default: `false`
+
+Remove HTTP(S) protocol from the URL: `http://sindresorhus.com` → `sindresorhus.com`.
+
+```js
+normalizeUrl('https://sindresorhus.com');
+//=> 'https://sindresorhus.com'
+
+normalizeUrl('https://sindresorhus.com', {stripProtocol: true});
+//=> 'sindresorhus.com'
+```
+
+##### stripTextFragment
+
+Type: `boolean`\
+Default: `true`
+
+Strip the [text fragment](https://web.dev/text-fragments/) part of the URL.
+
+**Note:** The text fragment will always be removed if the `stripHash` option is set to `true`, as the hash contains the text fragment.
+
+```js
+normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello');
+//=> 'http://sindresorhus.com/about.html#'
+
+normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello');
+//=> 'http://sindresorhus.com/about.html#section'
+
+normalizeUrl('http://sindresorhus.com/about.html#:~:text=hello', {stripTextFragment: false});
+//=> 'http://sindresorhus.com/about.html#:~:text=hello'
+
+normalizeUrl('http://sindresorhus.com/about.html#section:~:text=hello', {stripTextFragment: false});
+//=> 'http://sindresorhus.com/about.html#section:~:text=hello'
+```
+
+##### stripWWW
+
+Type: `boolean`\
+Default: `true`
+
+Remove `www.` from the URL.
+
+```js
+normalizeUrl('http://www.sindresorhus.com');
+//=> 'http://sindresorhus.com'
+
+normalizeUrl('http://www.sindresorhus.com', {stripWWW: false});
+//=> 'http://www.sindresorhus.com'
+```
+
+##### removeQueryParameters
+
+Type: `Array<RegExp | string> | boolean`\
+Default: `[/^utm_\w+/i]`
+
+Remove query parameters that matches any of the provided strings or regexes.
+
+```js
+normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', {
+ removeQueryParameters: ['ref']
+});
+//=> 'http://sindresorhus.com/?foo=bar'
+```
+
+If a boolean is provided, `true` will remove all the query parameters.
+
+```js
+normalizeUrl('www.sindresorhus.com?foo=bar', {
+ removeQueryParameters: true
+});
+//=> 'http://sindresorhus.com'
+```
+
+`false` will not remove any query parameter.
+
+```js
+normalizeUrl('www.sindresorhus.com?foo=bar&utm_medium=test&ref=test_ref', {
+ removeQueryParameters: false
+});
+//=> 'http://www.sindresorhus.com/?foo=bar&ref=test_ref&utm_medium=test'
+```
+
+##### removeTrailingSlash
+
+Type: `boolean`\
+Default: `true`
+
+Remove trailing slash.
+
+**Note:** Trailing slash is always removed if the URL doesn't have a pathname unless the `removeSingleSlash` option is set to `false`.
+
+```js
+normalizeUrl('http://sindresorhus.com/redirect/');
+//=> 'http://sindresorhus.com/redirect'
+
+normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false});
+//=> 'http://sindresorhus.com/redirect/'
+
+normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false});
+//=> 'http://sindresorhus.com'
+```
+
+##### removeSingleSlash
+
+Type: `boolean`\
+Default: `true`
+
+Remove a sole `/` pathname in the output. This option is independant of `removeTrailingSlash`.
+
+```js
+normalizeUrl('https://sindresorhus.com/');
+//=> 'https://sindresorhus.com'
+
+normalizeUrl('https://sindresorhus.com/', {removeSingleSlash: false});
+//=> 'https://sindresorhus.com/'
+```
+
+
+##### removeDirectoryIndex
+
+Type: `boolean | Array<RegExp | string>`\
+Default: `false`
+
+Removes the default directory index file from path that matches any of the provided strings or regexes. When `true`, the regex `/^index\.[a-z]+$/` is used.
+
+```js
+normalizeUrl('www.sindresorhus.com/foo/default.php', {
+ removeDirectoryIndex: [/^default\.[a-z]+$/]
+});
+//=> 'http://sindresorhus.com/foo'
+```
+
+##### sortQueryParameters
+
+Type: `boolean`\
+Default: `true`
+
+Sorts the query parameters alphabetically by key.
+
+```js
+normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', {
+ sortQueryParameters: false
+});
+//=> 'http://sindresorhus.com/?b=two&a=one&c=three'
+```
+
+## Related
+
+- [compare-urls](https://github.com/sindresorhus/compare-urls) - Compare URLs by first normalizing them
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-normalize-url?utm_source=npm-normalize-url&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/object-keys/.editorconfig b/client/node_modules/object-keys/.editorconfig
new file mode 100644
index 0000000..eaa2141
--- /dev/null
+++ b/client/node_modules/object-keys/.editorconfig
@@ -0,0 +1,13 @@
+root = true
+
+[*]
+indent_style = tab;
+insert_final_newline = true;
+quote_type = auto;
+space_after_anonymous_functions = true;
+space_after_control_statements = true;
+spaces_around_operators = true;
+trim_trailing_whitespace = true;
+spaces_in_brackets = false;
+end_of_line = lf;
+
diff --git a/client/node_modules/object-keys/.eslintrc b/client/node_modules/object-keys/.eslintrc
new file mode 100644
index 0000000..9a8d5b0
--- /dev/null
+++ b/client/node_modules/object-keys/.eslintrc
@@ -0,0 +1,17 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "complexity": [2, 23],
+ "id-length": [2, { "min": 1, "max": 40 }],
+ "max-params": [2, 3],
+ "max-statements": [2, 23],
+ "max-statements-per-line": [2, { "max": 2 }],
+ "no-extra-parens": [1],
+ "no-invalid-this": [1],
+ "no-restricted-syntax": [2, "BreakStatement", "ContinueStatement", "LabeledStatement", "WithStatement"],
+ "operator-linebreak": [2, "after"]
+ }
+}
diff --git a/client/node_modules/object-keys/.travis.yml b/client/node_modules/object-keys/.travis.yml
new file mode 100644
index 0000000..94a6ce4
--- /dev/null
+++ b/client/node_modules/object-keys/.travis.yml
@@ -0,0 +1,277 @@
+language: node_js
+os:
+ - linux
+node_js:
+ - "11.8"
+ - "10.15"
+ - "9.11"
+ - "8.15"
+ - "7.10"
+ - "6.16"
+ - "5.12"
+ - "4.9"
+ - "iojs-v3.3"
+ - "iojs-v2.5"
+ - "iojs-v1.8"
+ - "0.12"
+ - "0.10"
+ - "0.8"
+before_install:
+ - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac'
+ - 'nvm install-latest-npm'
+install:
+ - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;'
+script:
+ - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi'
+ - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi'
+ - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi'
+ - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi'
+sudo: false
+env:
+ - TEST=true
+matrix:
+ fast_finish: true
+ include:
+ - node_js: "lts/*"
+ env: PRETEST=true
+ - node_js: "lts/*"
+ env: POSTTEST=true
+ - node_js: "4"
+ env: COVERAGE=true
+ - node_js: "11.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "11.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.14"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.13"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.12"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "10.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "9.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.14"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.13"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.12"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "8.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "7.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.15"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.14"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.13"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.12"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "6.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.10"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "5.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.8"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "4.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v3.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v2.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.7"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.5"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.4"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.3"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.2"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.1"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "iojs-v1.0"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.11"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.9"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.6"
+ env: TEST=true ALLOW_FAILURE=true
+ - node_js: "0.4"
+ env: TEST=true ALLOW_FAILURE=true
+ allow_failures:
+ - os: osx
+ - env: TEST=true ALLOW_FAILURE=true
+ - env: COVERAGE=true
+ - env: POSTTEST=true
diff --git a/client/node_modules/object-keys/CHANGELOG.md b/client/node_modules/object-keys/CHANGELOG.md
new file mode 100644
index 0000000..b7d92df
--- /dev/null
+++ b/client/node_modules/object-keys/CHANGELOG.md
@@ -0,0 +1,232 @@
+1.1.1 / 2019-04-06
+=================
+ * [Fix] exclude deprecated Firefox keys (#53)
+
+1.1.0 / 2019-02-10
+=================
+ * [New] [Refactor] move full implementation to `implementation` entry point
+ * [Refactor] only evaluate the implementation if `Object.keys` is not present
+ * [Tests] up to `node` `v11.8`, `v10.15`, `v8.15`, `v6.16`
+ * [Tests] remove jscs
+ * [Tests] switch to `npm audit` from `nsp`
+
+1.0.12 / 2018-06-18
+=================
+ * [Fix] avoid accessing `window.applicationCache`, to avoid issues with latest Chrome on HTTP (#46)
+
+1.0.11 / 2016-07-05
+=================
+ * [Fix] exclude keys regarding the style (eg. `pageYOffset`) on `window` to avoid reflow (#32)
+
+1.0.10 / 2016-07-04
+=================
+ * [Fix] exclude `height` and `width` keys on `window` to avoid reflow (#31)
+ * [Fix] In IE 6, `window.external` makes `Object.keys` throw
+ * [Tests] up to `node` `v6.2`, `v5.10`, `v4.4`
+ * [Tests] use pretest/posttest for linting/security
+ * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`
+ * [Dev Deps] remove unused eccheck script + dep
+
+1.0.9 / 2015-10-19
+=================
+ * [Fix] Blacklist 'frame' property on window (#16, #17)
+ * [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config`
+
+1.0.8 / 2015-10-14
+=================
+ * [Fix] wrap automation equality bug checking in try/catch, per [es5-shim#327](https://github.com/es-shims/es5-shim/issues/327)
+ * [Fix] Blacklist 'window.frameElement' per [es5-shim#322](https://github.com/es-shims/es5-shim/issues/322)
+ * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
+ * [Tests] up to `io.js` `v3.3`, `node` `v4.2`
+ * [Dev Deps] update `eslint`, `tape`, `@ljharb/eslint-config`, `jscs`
+
+1.0.7 / 2015-07-18
+=================
+ * [Fix] A proper fix for 176f03335e90d5c8d0d8125a99f27819c9b9cdad / https://github.com/es-shims/es5-shim/issues/275 that doesn't break dontEnum/constructor fixes in IE 8.
+ * [Fix] Remove deprecation message in Chrome by touching deprecated window properties (#15)
+ * [Tests] Improve test output for automation equality bugfix
+ * [Tests] Test on `io.js` `v2.4`
+
+1.0.6 / 2015-07-09
+=================
+ * [Fix] Use an object lookup rather than ES5's `indexOf` (#14)
+ * [Tests] ES3 browsers don't have `Array.isArray`
+ * [Tests] Fix `no-shadow` rule, as well as an IE 8 bug caused by engine NFE shadowing bugs.
+
+1.0.5 / 2015-07-03
+=================
+ * [Fix] Fix a flabbergasting IE 8 bug where `localStorage.constructor.prototype === localStorage` throws
+ * [Tests] Test up to `io.js` `v2.3`
+ * [Dev Deps] Update `nsp`, `eslint`
+
+1.0.4 / 2015-05-23
+=================
+ * Fix a Safari 5.0 bug with `Object.keys` not working with `arguments`
+ * Test on latest `node` and `io.js`
+ * Update `jscs`, `tape`, `eslint`, `nsp`, `is`, `editorconfig-tools`, `covert`
+
+1.0.3 / 2015-01-06
+=================
+ * Revert "Make `object-keys` more robust against later environment tampering" to maintain ES3 compliance
+
+1.0.2 / 2014-12-28
+=================
+ * Update lots of dev dependencies
+ * Tweaks to README
+ * Make `object-keys` more robust against later environment tampering
+
+1.0.1 / 2014-09-03
+=================
+ * Update URLs and badges in README
+
+1.0.0 / 2014-08-26
+=================
+ * v1.0.0
+
+0.6.1 / 2014-08-25
+=================
+ * v0.6.1
+ * Updating dependencies (tape, covert, is)
+ * Update badges in readme
+ * Use separate var statements
+
+0.6.0 / 2014-04-23
+=================
+ * v0.6.0
+ * Updating dependencies (tape, covert)
+ * Make sure boxed primitives, and arguments objects, work properly in ES3 browsers
+ * Improve test matrix: test all node versions, but only latest two stables are a failure
+ * Remove internal foreach shim.
+
+0.5.1 / 2014-03-09
+=================
+ * 0.5.1
+ * Updating dependencies (tape, covert, is)
+ * Removing forEach from the module (but keeping it in tests)
+
+0.5.0 / 2014-01-30
+=================
+ * 0.5.0
+ * Explicitly returning the shim, instead of returning native Object.keys when present
+ * Adding a changelog.
+ * Cleaning up IIFE wrapping
+ * Testing on node 0.4 through 0.11
+
+0.4.0 / 2013-08-14
+==================
+
+ * v0.4.0
+ * In Chrome 4-10 and Safari 4, typeof (new RegExp) === 'function'
+ * If it's a string, make sure to use charAt instead of brackets.
+ * Only use Function#call if necessary.
+ * Making sure the context tests actually run.
+ * Better function detection
+ * Adding the android browser
+ * Fixing testling files
+ * Updating tape
+ * Removing the "is" dependency.
+ * Making an isArguments shim.
+ * Adding a local forEach shim and tests.
+ * Updating paths.
+ * Moving the shim test.
+ * v0.3.0
+
+0.3.0 / 2013-05-18
+==================
+
+ * README tweak.
+ * Fixing constructor enum issue. Fixes [#5](https://github.com/ljharb/object-keys/issues/5).
+ * Adding a test for [#5](https://github.com/ljharb/object-keys/issues/5)
+ * Updating readme.
+ * Updating dependencies.
+ * Giving credit to lodash.
+ * Make sure that a prototype's constructor property is not enumerable. Fixes [#3](https://github.com/ljharb/object-keys/issues/3).
+ * Adding additional tests to handle arguments objects, and to skip "prototype" in functions. Fixes [#2](https://github.com/ljharb/object-keys/issues/2).
+ * Fixing a typo on this test for [#3](https://github.com/ljharb/object-keys/issues/3).
+ * Adding node 0.10 to travis.
+ * Adding an IE < 9 test per [#3](https://github.com/ljharb/object-keys/issues/3)
+ * Adding an iOS 5 mobile Safari test per [#2](https://github.com/ljharb/object-keys/issues/2)
+ * Moving "indexof" and "is" to be dev dependencies.
+ * Making sure the shim works with functions.
+ * Flattening the tests.
+
+0.2.0 / 2013-05-10
+==================
+
+ * v0.2.0
+ * Object.keys should work with arrays.
+
+0.1.8 / 2013-05-10
+==================
+
+ * v0.1.8
+ * Upgrading dependencies.
+ * Using a simpler check.
+ * Fixing a bug in hasDontEnumBug browsers.
+ * Using the newest tape!
+ * Fixing this error test.
+ * "undefined" is probably a reserved word in ES3.
+ * Better test message.
+
+0.1.7 / 2013-04-17
+==================
+
+ * Upgrading "is" once more.
+ * The key "null" is breaking some browsers.
+
+0.1.6 / 2013-04-17
+==================
+
+ * v0.1.6
+ * Upgrading "is"
+
+0.1.5 / 2013-04-14
+==================
+
+ * Bumping version.
+ * Adding more testling browsers.
+ * Updating "is"
+
+0.1.4 / 2013-04-08
+==================
+
+ * Using "is" instead of "is-extended".
+
+0.1.3 / 2013-04-07
+==================
+
+ * Using "foreach" instead of my own shim.
+ * Removing "tap"; I'll just wait for "tape" to fix its node 0.10 bug.
+
+0.1.2 / 2013-04-03
+==================
+
+ * Adding dependency status; moving links to an index at the bottom.
+ * Upgrading is-extended; version 0.1.2
+ * Adding an npm version badge.
+
+0.1.1 / 2013-04-01
+==================
+
+ * Adding Travis CI.
+ * Bumping the version.
+ * Adding indexOf since IE sucks.
+ * Adding a forEach shim since older browsers don't have Array#forEach.
+ * Upgrading tape - 0.3.2 uses Array#map
+ * Using explicit end instead of plan.
+ * Can't test with Array.isArray in older browsers.
+ * Using is-extended.
+ * Fixing testling files.
+ * JSHint/JSLint-ing.
+ * Removing an unused object.
+ * Using strict mode.
+
+0.1.0 / 2013-03-30
+==================
+
+ * Changing the exports should have meant a higher version bump.
+ * Oops, fixing the repo URL.
+ * Adding more tests.
+ * 0.0.2
+ * Merge branch 'export_one_thing'; closes [#1](https://github.com/ljharb/object-keys/issues/1)
+ * Move shim export to a separate file.
diff --git a/client/node_modules/object-keys/LICENSE b/client/node_modules/object-keys/LICENSE
new file mode 100644
index 0000000..28553fd
--- /dev/null
+++ b/client/node_modules/object-keys/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (C) 2013 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/client/node_modules/object-keys/README.md b/client/node_modules/object-keys/README.md
new file mode 100644
index 0000000..ed4c277
--- /dev/null
+++ b/client/node_modules/object-keys/README.md
@@ -0,0 +1,76 @@
+#object-keys <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
+
+[![Build Status][travis-svg]][travis-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+[![browser support][testling-svg]][testling-url]
+
+An Object.keys shim. Invoke its "shim" method to shim Object.keys if it is unavailable.
+
+Most common usage:
+```js
+var keys = Object.keys || require('object-keys');
+```
+
+## Example
+
+```js
+var keys = require('object-keys');
+var assert = require('assert');
+var obj = {
+ a: true,
+ b: true,
+ c: true
+};
+
+assert.deepEqual(keys(obj), ['a', 'b', 'c']);
+```
+
+```js
+var keys = require('object-keys');
+var assert = require('assert');
+/* when Object.keys is not present */
+delete Object.keys;
+var shimmedKeys = keys.shim();
+assert.equal(shimmedKeys, keys);
+assert.deepEqual(Object.keys(obj), keys(obj));
+```
+
+```js
+var keys = require('object-keys');
+var assert = require('assert');
+/* when Object.keys is present */
+var shimmedKeys = keys.shim();
+assert.equal(shimmedKeys, Object.keys);
+assert.deepEqual(Object.keys(obj), keys(obj));
+```
+
+## Source
+Implementation taken directly from [es5-shim][es5-shim-url], with modifications, including from [lodash][lodash-url].
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/object-keys
+[npm-version-svg]: http://versionbadg.es/ljharb/object-keys.svg
+[travis-svg]: https://travis-ci.org/ljharb/object-keys.svg
+[travis-url]: https://travis-ci.org/ljharb/object-keys
+[deps-svg]: https://david-dm.org/ljharb/object-keys.svg
+[deps-url]: https://david-dm.org/ljharb/object-keys
+[dev-deps-svg]: https://david-dm.org/ljharb/object-keys/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/object-keys#info=devDependencies
+[testling-svg]: https://ci.testling.com/ljharb/object-keys.png
+[testling-url]: https://ci.testling.com/ljharb/object-keys
+[es5-shim-url]: https://github.com/es-shims/es5-shim/blob/master/es5-shim.js#L542-589
+[lodash-url]: https://github.com/lodash/lodash
+[npm-badge-png]: https://nodei.co/npm/object-keys.png?downloads=true&stars=true
+[license-image]: http://img.shields.io/npm/l/object-keys.svg
+[license-url]: LICENSE
+[downloads-image]: http://img.shields.io/npm/dm/object-keys.svg
+[downloads-url]: http://npm-stat.com/charts.html?package=object-keys
+
diff --git a/client/node_modules/object-keys/implementation.js b/client/node_modules/object-keys/implementation.js
new file mode 100644
index 0000000..5b32986
--- /dev/null
+++ b/client/node_modules/object-keys/implementation.js
@@ -0,0 +1,122 @@
+'use strict';
+
+var keysShim;
+if (!Object.keys) {
+ // modified from https://github.com/es-shims/es5-shim
+ var has = Object.prototype.hasOwnProperty;
+ var toStr = Object.prototype.toString;
+ var isArgs = require('./isArguments'); // eslint-disable-line global-require
+ var isEnumerable = Object.prototype.propertyIsEnumerable;
+ var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
+ var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
+ var dontEnums = [
+ 'toString',
+ 'toLocaleString',
+ 'valueOf',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+ ];
+ var equalsConstructorPrototype = function (o) {
+ var ctor = o.constructor;
+ return ctor && ctor.prototype === o;
+ };
+ var excludedKeys = {
+ $applicationCache: true,
+ $console: true,
+ $external: true,
+ $frame: true,
+ $frameElement: true,
+ $frames: true,
+ $innerHeight: true,
+ $innerWidth: true,
+ $onmozfullscreenchange: true,
+ $onmozfullscreenerror: true,
+ $outerHeight: true,
+ $outerWidth: true,
+ $pageXOffset: true,
+ $pageYOffset: true,
+ $parent: true,
+ $scrollLeft: true,
+ $scrollTop: true,
+ $scrollX: true,
+ $scrollY: true,
+ $self: true,
+ $webkitIndexedDB: true,
+ $webkitStorageInfo: true,
+ $window: true
+ };
+ var hasAutomationEqualityBug = (function () {
+ /* global window */
+ if (typeof window === 'undefined') { return false; }
+ for (var k in window) {
+ try {
+ if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
+ try {
+ equalsConstructorPrototype(window[k]);
+ } catch (e) {
+ return true;
+ }
+ }
+ } catch (e) {
+ return true;
+ }
+ }
+ return false;
+ }());
+ var equalsConstructorPrototypeIfNotBuggy = function (o) {
+ /* global window */
+ if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
+ return equalsConstructorPrototype(o);
+ }
+ try {
+ return equalsConstructorPrototype(o);
+ } catch (e) {
+ return false;
+ }
+ };
+
+ keysShim = function keys(object) {
+ var isObject = object !== null && typeof object === 'object';
+ var isFunction = toStr.call(object) === '[object Function]';
+ var isArguments = isArgs(object);
+ var isString = isObject && toStr.call(object) === '[object String]';
+ var theKeys = [];
+
+ if (!isObject && !isFunction && !isArguments) {
+ throw new TypeError('Object.keys called on a non-object');
+ }
+
+ var skipProto = hasProtoEnumBug && isFunction;
+ if (isString && object.length > 0 && !has.call(object, 0)) {
+ for (var i = 0; i < object.length; ++i) {
+ theKeys.push(String(i));
+ }
+ }
+
+ if (isArguments && object.length > 0) {
+ for (var j = 0; j < object.length; ++j) {
+ theKeys.push(String(j));
+ }
+ } else {
+ for (var name in object) {
+ if (!(skipProto && name === 'prototype') && has.call(object, name)) {
+ theKeys.push(String(name));
+ }
+ }
+ }
+
+ if (hasDontEnumBug) {
+ var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
+
+ for (var k = 0; k < dontEnums.length; ++k) {
+ if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
+ theKeys.push(dontEnums[k]);
+ }
+ }
+ }
+ return theKeys;
+ };
+}
+module.exports = keysShim;
diff --git a/client/node_modules/object-keys/index.js b/client/node_modules/object-keys/index.js
new file mode 100644
index 0000000..a43807d
--- /dev/null
+++ b/client/node_modules/object-keys/index.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var slice = Array.prototype.slice;
+var isArgs = require('./isArguments');
+
+var origKeys = Object.keys;
+var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');
+
+var originalKeys = Object.keys;
+
+keysShim.shim = function shimObjectKeys() {
+ if (Object.keys) {
+ var keysWorksWithArguments = (function () {
+ // Safari 5.0 bug
+ var args = Object.keys(arguments);
+ return args && args.length === arguments.length;
+ }(1, 2));
+ if (!keysWorksWithArguments) {
+ Object.keys = function keys(object) { // eslint-disable-line func-name-matching
+ if (isArgs(object)) {
+ return originalKeys(slice.call(object));
+ }
+ return originalKeys(object);
+ };
+ }
+ } else {
+ Object.keys = keysShim;
+ }
+ return Object.keys || keysShim;
+};
+
+module.exports = keysShim;
diff --git a/client/node_modules/object-keys/isArguments.js b/client/node_modules/object-keys/isArguments.js
new file mode 100644
index 0000000..f2a2a90
--- /dev/null
+++ b/client/node_modules/object-keys/isArguments.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var toStr = Object.prototype.toString;
+
+module.exports = function isArguments(value) {
+ var str = toStr.call(value);
+ var isArgs = str === '[object Arguments]';
+ if (!isArgs) {
+ isArgs = str !== '[object Array]' &&
+ value !== null &&
+ typeof value === 'object' &&
+ typeof value.length === 'number' &&
+ value.length >= 0 &&
+ toStr.call(value.callee) === '[object Function]';
+ }
+ return isArgs;
+};
diff --git a/client/node_modules/object-keys/package.json b/client/node_modules/object-keys/package.json
new file mode 100644
index 0000000..99ea923
--- /dev/null
+++ b/client/node_modules/object-keys/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "object-keys",
+ "version": "1.1.1",
+ "author": {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ },
+ "contributors": [
+ {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ },
+ {
+ "name": "Raynos",
+ "email": "raynos2@gmail.com"
+ },
+ {
+ "name": "Nathan Rajlich",
+ "email": "nathan@tootallnate.net"
+ },
+ {
+ "name": "Ivan Starkov",
+ "email": "istarkov@gmail.com"
+ },
+ {
+ "name": "Gary Katsevman",
+ "email": "git@gkatsev.com"
+ }
+ ],
+ "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/es-shims/es5-shim",
+ "license": "MIT",
+ "main": "index.js",
+ "scripts": {
+ "pretest": "npm run --silent lint",
+ "test": "npm run --silent tests-only",
+ "posttest": "npm run --silent audit",
+ "tests-only": "node test/index.js",
+ "coverage": "covert test/*.js",
+ "coverage-quiet": "covert test/*.js --quiet",
+ "lint": "eslint .",
+ "preaudit": "npm install --package-lock --package-lock-only",
+ "audit": "npm audit",
+ "postaudit": "rm package-lock.json"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/ljharb/object-keys.git"
+ },
+ "keywords": [
+ "Object.keys",
+ "keys",
+ "ES5",
+ "shim"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "@ljharb/eslint-config": "^13.1.1",
+ "covert": "^1.1.1",
+ "eslint": "^5.13.0",
+ "foreach": "^2.0.5",
+ "indexof": "^0.0.1",
+ "is": "^3.3.0",
+ "tape": "^4.9.2"
+ },
+ "testling": {
+ "files": "test/index.js",
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+}
diff --git a/client/node_modules/object-keys/test/index.js b/client/node_modules/object-keys/test/index.js
new file mode 100644
index 0000000..5402465
--- /dev/null
+++ b/client/node_modules/object-keys/test/index.js
@@ -0,0 +1,5 @@
+'use strict';
+
+require('./isArguments');
+
+require('./shim');
diff --git a/client/node_modules/once/LICENSE b/client/node_modules/once/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/once/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/once/README.md b/client/node_modules/once/README.md
new file mode 100644
index 0000000..1f1ffca
--- /dev/null
+++ b/client/node_modules/once/README.md
@@ -0,0 +1,79 @@
+# once
+
+Only call a function once.
+
+## usage
+
+```javascript
+var once = require('once')
+
+function load (file, cb) {
+ cb = once(cb)
+ loader.load('file')
+ loader.once('load', cb)
+ loader.once('error', cb)
+}
+```
+
+Or add to the Function.prototype in a responsible way:
+
+```javascript
+// only has to be done once
+require('once').proto()
+
+function load (file, cb) {
+ cb = cb.once()
+ loader.load('file')
+ loader.once('load', cb)
+ loader.once('error', cb)
+}
+```
+
+Ironically, the prototype feature makes this module twice as
+complicated as necessary.
+
+To check whether you function has been called, use `fn.called`. Once the
+function is called for the first time the return value of the original
+function is saved in `fn.value` and subsequent calls will continue to
+return this value.
+
+```javascript
+var once = require('once')
+
+function load (cb) {
+ cb = once(cb)
+ var stream = createStream()
+ stream.once('data', cb)
+ stream.once('end', function () {
+ if (!cb.called) cb(new Error('not found'))
+ })
+}
+```
+
+## `once.strict(func)`
+
+Throw an error if the function is called twice.
+
+Some functions are expected to be called only once. Using `once` for them would
+potentially hide logical errors.
+
+In the example below, the `greet` function has to call the callback only once:
+
+```javascript
+function greet (name, cb) {
+ // return is missing from the if statement
+ // when no name is passed, the callback is called twice
+ if (!name) cb('Hello anonymous')
+ cb('Hello ' + name)
+}
+
+function log (msg) {
+ console.log(msg)
+}
+
+// this will print 'Hello anonymous' but the logical error will be missed
+greet(null, once(msg))
+
+// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
+greet(null, once.strict(msg))
+```
diff --git a/client/node_modules/once/once.js b/client/node_modules/once/once.js
new file mode 100644
index 0000000..2354067
--- /dev/null
+++ b/client/node_modules/once/once.js
@@ -0,0 +1,42 @@
+var wrappy = require('wrappy')
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function () {
+ return once(this)
+ },
+ configurable: true
+ })
+
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function () {
+ return onceStrict(this)
+ },
+ configurable: true
+ })
+})
+
+function once (fn) {
+ var f = function () {
+ if (f.called) return f.value
+ f.called = true
+ return f.value = fn.apply(this, arguments)
+ }
+ f.called = false
+ return f
+}
+
+function onceStrict (fn) {
+ var f = function () {
+ if (f.called)
+ throw new Error(f.onceError)
+ f.called = true
+ return f.value = fn.apply(this, arguments)
+ }
+ var name = fn.name || 'Function wrapped with `once`'
+ f.onceError = name + " shouldn't be called more than once"
+ f.called = false
+ return f
+}
diff --git a/client/node_modules/once/package.json b/client/node_modules/once/package.json
new file mode 100644
index 0000000..16815b2
--- /dev/null
+++ b/client/node_modules/once/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "once",
+ "version": "1.4.0",
+ "description": "Run a function exactly one time",
+ "main": "once.js",
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {
+ "wrappy": "1"
+ },
+ "devDependencies": {
+ "tap": "^7.0.1"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "files": [
+ "once.js"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/once"
+ },
+ "keywords": [
+ "once",
+ "function",
+ "one",
+ "single"
+ ],
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC"
+}
diff --git a/client/node_modules/p-cancelable/index.d.ts b/client/node_modules/p-cancelable/index.d.ts
new file mode 100644
index 0000000..8e0c9ef
--- /dev/null
+++ b/client/node_modules/p-cancelable/index.d.ts
@@ -0,0 +1,176 @@
+declare class CancelErrorClass extends Error {
+ readonly name: 'CancelError';
+ readonly isCanceled: true;
+
+ constructor(reason?: string);
+}
+
+declare namespace PCancelable {
+ /**
+ Accepts a function that is called when the promise is canceled.
+
+ You're not required to call this function. You can call this function multiple times to add multiple cancel handlers.
+ */
+ interface OnCancelFunction {
+ (cancelHandler: () => void): void;
+ shouldReject: boolean;
+ }
+
+ type CancelError = CancelErrorClass;
+}
+
+declare class PCancelable<ValueType> extends Promise<ValueType> {
+ /**
+ Convenience method to make your promise-returning or async function cancelable.
+
+ @param fn - A promise-returning function. The function you specify will have `onCancel` appended to its parameters.
+
+ @example
+ ```
+ import PCancelable = require('p-cancelable');
+
+ const fn = PCancelable.fn((input, onCancel) => {
+ const job = new Job();
+
+ onCancel(() => {
+ job.cleanup();
+ });
+
+ return job.start(); //=> Promise
+ });
+
+ const cancelablePromise = fn('input'); //=> PCancelable
+
+ // …
+
+ cancelablePromise.cancel();
+ ```
+ */
+ static fn<ReturnType>(
+ userFn: (onCancel: PCancelable.OnCancelFunction) => PromiseLike<ReturnType>
+ ): () => PCancelable<ReturnType>;
+ static fn<Agument1Type, ReturnType>(
+ userFn: (
+ argument1: Agument1Type,
+ onCancel: PCancelable.OnCancelFunction
+ ) => PromiseLike<ReturnType>
+ ): (argument1: Agument1Type) => PCancelable<ReturnType>;
+ static fn<Agument1Type, Agument2Type, ReturnType>(
+ userFn: (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ onCancel: PCancelable.OnCancelFunction
+ ) => PromiseLike<ReturnType>
+ ): (
+ argument1: Agument1Type,
+ argument2: Agument2Type
+ ) => PCancelable<ReturnType>;
+ static fn<Agument1Type, Agument2Type, Agument3Type, ReturnType>(
+ userFn: (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type,
+ onCancel: PCancelable.OnCancelFunction
+ ) => PromiseLike<ReturnType>
+ ): (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type
+ ) => PCancelable<ReturnType>;
+ static fn<Agument1Type, Agument2Type, Agument3Type, Agument4Type, ReturnType>(
+ userFn: (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type,
+ argument4: Agument4Type,
+ onCancel: PCancelable.OnCancelFunction
+ ) => PromiseLike<ReturnType>
+ ): (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type,
+ argument4: Agument4Type
+ ) => PCancelable<ReturnType>;
+ static fn<
+ Agument1Type,
+ Agument2Type,
+ Agument3Type,
+ Agument4Type,
+ Agument5Type,
+ ReturnType
+ >(
+ userFn: (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type,
+ argument4: Agument4Type,
+ argument5: Agument5Type,
+ onCancel: PCancelable.OnCancelFunction
+ ) => PromiseLike<ReturnType>
+ ): (
+ argument1: Agument1Type,
+ argument2: Agument2Type,
+ argument3: Agument3Type,
+ argument4: Agument4Type,
+ argument5: Agument5Type
+ ) => PCancelable<ReturnType>;
+ static fn<ReturnType>(
+ userFn: (...arguments: unknown[]) => PromiseLike<ReturnType>
+ ): (...arguments: unknown[]) => PCancelable<ReturnType>;
+
+ /**
+ Create a promise that can be canceled.
+
+ Can be constructed in the same was as a [`Promise` constructor](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise), but with an appended `onCancel` parameter in `executor`. `PCancelable` is a subclass of `Promise`.
+
+ Cancelling will reject the promise with `CancelError`. To avoid that, set `onCancel.shouldReject` to `false`.
+
+ @example
+ ```
+ import PCancelable = require('p-cancelable');
+
+ const cancelablePromise = new PCancelable((resolve, reject, onCancel) => {
+ const job = new Job();
+
+ onCancel.shouldReject = false;
+ onCancel(() => {
+ job.stop();
+ });
+
+ job.on('finish', resolve);
+ });
+
+ cancelablePromise.cancel(); // Doesn't throw an error
+ ```
+ */
+ constructor(
+ executor: (
+ resolve: (value?: ValueType | PromiseLike<ValueType>) => void,
+ reject: (reason?: unknown) => void,
+ onCancel: PCancelable.OnCancelFunction
+ ) => void
+ );
+
+ /**
+ Whether the promise is canceled.
+ */
+ readonly isCanceled: boolean;
+
+ /**
+ Cancel the promise and optionally provide a reason.
+
+ The cancellation is synchronous. Calling it after the promise has settled or multiple times does nothing.
+
+ @param reason - The cancellation reason to reject the promise with.
+ */
+ cancel: (reason?: string) => void;
+
+ /**
+ Rejection reason when `.cancel()` is called.
+
+ It includes a `.isCanceled` property for convenience.
+ */
+ static CancelError: typeof CancelErrorClass;
+}
+
+export = PCancelable;
diff --git a/client/node_modules/p-cancelable/index.js b/client/node_modules/p-cancelable/index.js
new file mode 100644
index 0000000..186adce
--- /dev/null
+++ b/client/node_modules/p-cancelable/index.js
@@ -0,0 +1,111 @@
+'use strict';
+
+class CancelError extends Error {
+ constructor(reason) {
+ super(reason || 'Promise was canceled');
+ this.name = 'CancelError';
+ }
+
+ get isCanceled() {
+ return true;
+ }
+}
+
+class PCancelable {
+ static fn(userFn) {
+ return (...arguments_) => {
+ return new PCancelable((resolve, reject, onCancel) => {
+ arguments_.push(onCancel);
+ // eslint-disable-next-line promise/prefer-await-to-then
+ userFn(...arguments_).then(resolve, reject);
+ });
+ };
+ }
+
+ constructor(executor) {
+ this._cancelHandlers = [];
+ this._isPending = true;
+ this._isCanceled = false;
+ this._rejectOnCancel = true;
+
+ this._promise = new Promise((resolve, reject) => {
+ this._reject = reject;
+
+ const onResolve = value => {
+ if (!this._isCanceled || !onCancel.shouldReject) {
+ this._isPending = false;
+ resolve(value);
+ }
+ };
+
+ const onReject = error => {
+ this._isPending = false;
+ reject(error);
+ };
+
+ const onCancel = handler => {
+ if (!this._isPending) {
+ throw new Error('The `onCancel` handler was attached after the promise settled.');
+ }
+
+ this._cancelHandlers.push(handler);
+ };
+
+ Object.defineProperties(onCancel, {
+ shouldReject: {
+ get: () => this._rejectOnCancel,
+ set: boolean => {
+ this._rejectOnCancel = boolean;
+ }
+ }
+ });
+
+ return executor(onResolve, onReject, onCancel);
+ });
+ }
+
+ then(onFulfilled, onRejected) {
+ // eslint-disable-next-line promise/prefer-await-to-then
+ return this._promise.then(onFulfilled, onRejected);
+ }
+
+ catch(onRejected) {
+ return this._promise.catch(onRejected);
+ }
+
+ finally(onFinally) {
+ return this._promise.finally(onFinally);
+ }
+
+ cancel(reason) {
+ if (!this._isPending || this._isCanceled) {
+ return;
+ }
+
+ this._isCanceled = true;
+
+ if (this._cancelHandlers.length > 0) {
+ try {
+ for (const handler of this._cancelHandlers) {
+ handler();
+ }
+ } catch (error) {
+ this._reject(error);
+ return;
+ }
+ }
+
+ if (this._rejectOnCancel) {
+ this._reject(new CancelError(reason));
+ }
+ }
+
+ get isCanceled() {
+ return this._isCanceled;
+ }
+}
+
+Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);
+
+module.exports = PCancelable;
+module.exports.CancelError = CancelError;
diff --git a/client/node_modules/p-cancelable/license b/client/node_modules/p-cancelable/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/p-cancelable/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/p-cancelable/package.json b/client/node_modules/p-cancelable/package.json
new file mode 100644
index 0000000..aa6a006
--- /dev/null
+++ b/client/node_modules/p-cancelable/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "p-cancelable",
+ "version": "2.1.1",
+ "description": "Create a promise that can be canceled",
+ "license": "MIT",
+ "repository": "sindresorhus/p-cancelable",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "promise",
+ "cancelable",
+ "cancel",
+ "canceled",
+ "canceling",
+ "cancellable",
+ "cancellation",
+ "abort",
+ "abortable",
+ "aborting",
+ "cleanup",
+ "task",
+ "token",
+ "async",
+ "function",
+ "await",
+ "promises",
+ "bluebird"
+ ],
+ "devDependencies": {
+ "ava": "^1.4.1",
+ "delay": "^4.1.0",
+ "promise.prototype.finally": "^3.1.0",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
+ }
+}
diff --git a/client/node_modules/p-cancelable/readme.md b/client/node_modules/p-cancelable/readme.md
new file mode 100644
index 0000000..0690cfa
--- /dev/null
+++ b/client/node_modules/p-cancelable/readme.md
@@ -0,0 +1,153 @@
+# p-cancelable
+
+> Create a promise that can be canceled
+
+Useful for animation, loading resources, long-running async computations, async iteration, etc.
+
+*If you target [Node.js 15](https://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278) or later, this package is [less useful](https://github.com/sindresorhus/p-cancelable/issues/27) and you should probably use [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) instead.*
+
+## Install
+
+```
+$ npm install p-cancelable
+```
+
+## Usage
+
+```js
+const PCancelable = require('p-cancelable');
+
+const cancelablePromise = new PCancelable((resolve, reject, onCancel) => {
+ const worker = new SomeLongRunningOperation();
+
+ onCancel(() => {
+ worker.close();
+ });
+
+ worker.on('finish', resolve);
+ worker.on('error', reject);
+});
+
+(async () => {
+ try {
+ console.log('Operation finished successfully:', await cancelablePromise);
+ } catch (error) {
+ if (cancelablePromise.isCanceled) {
+ // Handle the cancelation here
+ console.log('Operation was canceled');
+ return;
+ }
+
+ throw error;
+ }
+})();
+
+// Cancel the operation after 10 seconds
+setTimeout(() => {
+ cancelablePromise.cancel('Unicorn has changed its color');
+}, 10000);
+```
+
+## API
+
+### new PCancelable(executor)
+
+Same as the [`Promise` constructor](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise), but with an appended `onCancel` parameter in `executor`.<br>
+Cancelling will reject the promise with `PCancelable.CancelError`. To avoid that, set `onCancel.shouldReject` to `false`.
+
+```js
+const PCancelable = require('p-cancelable');
+
+const cancelablePromise = new PCancelable((resolve, reject, onCancel) => {
+ const job = new Job();
+
+ onCancel.shouldReject = false;
+ onCancel(() => {
+ job.stop();
+ });
+
+ job.on('finish', resolve);
+});
+
+cancelablePromise.cancel(); // Doesn't throw an error
+```
+
+`PCancelable` is a subclass of `Promise`.
+
+#### onCanceled(fn)
+
+Type: `Function`
+
+Accepts a function that is called when the promise is canceled.
+
+You're not required to call this function. You can call this function multiple times to add multiple cancel handlers.
+
+### PCancelable#cancel(reason?)
+
+Type: `Function`
+
+Cancel the promise and optionally provide a reason.
+
+The cancellation is synchronous. Calling it after the promise has settled or multiple times does nothing.
+
+### PCancelable#isCanceled
+
+Type: `boolean`
+
+Whether the promise is canceled.
+
+### PCancelable.CancelError
+
+Type: `Error`
+
+Rejection reason when `.cancel()` is called.
+
+It includes a `.isCanceled` property for convenience.
+
+### PCancelable.fn(fn)
+
+Convenience method to make your promise-returning or async function cancelable.
+
+The function you specify will have `onCancel` appended to its parameters.
+
+```js
+const PCancelable = require('p-cancelable');
+
+const fn = PCancelable.fn((input, onCancel) => {
+ const job = new Job();
+
+ onCancel(() => {
+ job.cleanup();
+ });
+
+ return job.start(); //=> Promise
+});
+
+const cancelablePromise = fn('input'); //=> PCancelable
+
+// …
+
+cancelablePromise.cancel();
+```
+
+## FAQ
+
+### Cancelable vs. Cancellable
+
+[In American English, the verb cancel is usually inflected canceled and canceling—with one l.](http://grammarist.com/spelling/cancel/)<br>Both a [browser API](https://developer.mozilla.org/en-US/docs/Web/API/Event/cancelable) and the [Cancelable Promises proposal](https://github.com/tc39/proposal-cancelable-promises) use this spelling.
+
+### What about the official [Cancelable Promises proposal](https://github.com/tc39/proposal-cancelable-promises)?
+
+~~It's still an early draft and I don't really like its current direction. It complicates everything and will require deep changes in the ecosystem to adapt to it. And the way you have to use cancel tokens is verbose and convoluted. I much prefer the more pragmatic and less invasive approach in this module.~~ The proposal was withdrawn.
+
+## p-cancelable for enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of p-cancelable and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-p-cancelable?utm_source=npm-p-cancelable&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
+
+## Related
+
+- [p-progress](https://github.com/sindresorhus/p-progress) - Create a promise that reports progress
+- [p-lazy](https://github.com/sindresorhus/p-lazy) - Create a lazy promise that defers execution until `.then()` or `.catch()` is called
+- [More…](https://github.com/sindresorhus/promise-fun)
diff --git a/client/node_modules/pend/LICENSE b/client/node_modules/pend/LICENSE
new file mode 100644
index 0000000..0bbb53e
--- /dev/null
+++ b/client/node_modules/pend/LICENSE
@@ -0,0 +1,23 @@
+The MIT License (Expat)
+
+Copyright (c) 2014 Andrew Kelley
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/pend/README.md b/client/node_modules/pend/README.md
new file mode 100644
index 0000000..bb40a07
--- /dev/null
+++ b/client/node_modules/pend/README.md
@@ -0,0 +1,41 @@
+# Pend
+
+Dead-simple optimistic async helper.
+
+## Usage
+
+```js
+var Pend = require('pend');
+var pend = new Pend();
+pend.max = 10; // defaults to Infinity
+setTimeout(pend.hold(), 1000); // pend.wait will have to wait for this hold to finish
+pend.go(function(cb) {
+ console.log("this function is immediately executed");
+ setTimeout(function() {
+ console.log("calling cb 1");
+ cb();
+ }, 500);
+});
+pend.go(function(cb) {
+ console.log("this function is also immediately executed");
+ setTimeout(function() {
+ console.log("calling cb 2");
+ cb();
+ }, 1000);
+});
+pend.wait(function(err) {
+ console.log("this is excuted when the first 2 have returned.");
+ console.log("err is a possible error in the standard callback style.");
+});
+```
+
+Output:
+
+```
+this function is immediately executed
+this function is also immediately executed
+calling cb 1
+calling cb 2
+this is excuted when the first 2 have returned.
+err is a possible error in the standard callback style.
+```
diff --git a/client/node_modules/pend/index.js b/client/node_modules/pend/index.js
new file mode 100644
index 0000000..3bf485e
--- /dev/null
+++ b/client/node_modules/pend/index.js
@@ -0,0 +1,55 @@
+module.exports = Pend;
+
+function Pend() {
+ this.pending = 0;
+ this.max = Infinity;
+ this.listeners = [];
+ this.waiting = [];
+ this.error = null;
+}
+
+Pend.prototype.go = function(fn) {
+ if (this.pending < this.max) {
+ pendGo(this, fn);
+ } else {
+ this.waiting.push(fn);
+ }
+};
+
+Pend.prototype.wait = function(cb) {
+ if (this.pending === 0) {
+ cb(this.error);
+ } else {
+ this.listeners.push(cb);
+ }
+};
+
+Pend.prototype.hold = function() {
+ return pendHold(this);
+};
+
+function pendHold(self) {
+ self.pending += 1;
+ var called = false;
+ return onCb;
+ function onCb(err) {
+ if (called) throw new Error("callback called twice");
+ called = true;
+ self.error = self.error || err;
+ self.pending -= 1;
+ if (self.waiting.length > 0 && self.pending < self.max) {
+ pendGo(self, self.waiting.shift());
+ } else if (self.pending === 0) {
+ var listeners = self.listeners;
+ self.listeners = [];
+ listeners.forEach(cbListener);
+ }
+ }
+ function cbListener(listener) {
+ listener(self.error);
+ }
+}
+
+function pendGo(self, fn) {
+ fn(pendHold(self));
+}
diff --git a/client/node_modules/pend/package.json b/client/node_modules/pend/package.json
new file mode 100644
index 0000000..8181f8b
--- /dev/null
+++ b/client/node_modules/pend/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "pend",
+ "version": "1.2.0",
+ "description": "dead-simple optimistic async helper",
+ "main": "index.js",
+ "scripts": {
+ "test": "node test.js"
+ },
+ "author": "Andrew Kelley <superjoe30@gmail.com>",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/andrewrk/node-pend.git"
+ },
+ "bugs": {
+ "url": "https://github.com/andrewrk/node-pend/issues"
+ }
+}
diff --git a/client/node_modules/pend/test.js b/client/node_modules/pend/test.js
new file mode 100644
index 0000000..75c0f2a
--- /dev/null
+++ b/client/node_modules/pend/test.js
@@ -0,0 +1,137 @@
+var assert = require('assert');
+var Pend = require('./');
+
+var tests = [
+ {
+ name: "basic",
+ fn: testBasic,
+ },
+ {
+ name: "max",
+ fn: testWithMax,
+ },
+ {
+ name: "callback twice",
+ fn: testCallbackTwice,
+ },
+ {
+ name: "calling wait twice",
+ fn: testCallingWaitTwice,
+ },
+ {
+ name: "hold()",
+ fn: testHoldFn,
+ },
+];
+var testCount = tests.length;
+
+doOneTest();
+
+function doOneTest() {
+ var test = tests.shift();
+ if (!test) {
+ console.log(testCount + " tests passed.");
+ return;
+ }
+ process.stdout.write(test.name + "...");
+ test.fn(function() {
+ process.stdout.write("OK\n");
+ doOneTest();
+ });
+}
+
+function testBasic(cb) {
+ var pend = new Pend();
+ var results = [];
+ pend.go(function(cb) {
+ results.push(1);
+ setTimeout(function() {
+ results.push(3);
+ cb();
+ }, 500);
+ });
+ pend.go(function(cb) {
+ results.push(2);
+ setTimeout(function() {
+ results.push(4);
+ cb();
+ }, 1000);
+ });
+ pend.wait(function(err) {
+ assert.deepEqual(results, [1,2,3,4]);
+ cb();
+ });
+ assert.deepEqual(results, [1, 2]);
+}
+
+function testWithMax(cb) {
+ var pend = new Pend();
+ var results = [];
+ pend.max = 2;
+ pend.go(function(cb) {
+ results.push('a');
+ setTimeout(function() {
+ results.push(1);
+ cb();
+ }, 500);
+ });
+ pend.go(function(cb) {
+ results.push('b');
+ setTimeout(function() {
+ results.push(1);
+ cb();
+ }, 500);
+ });
+ pend.go(function(cb) {
+ results.push('c');
+ setTimeout(function() {
+ results.push(2);
+ cb();
+ }, 100);
+ });
+ pend.wait(function(err) {
+ assert.deepEqual(results, ['a', 'b', 1, 'c', 1, 2]);
+ cb();
+ });
+ assert.deepEqual(results, ['a', 'b']);
+}
+
+function testCallbackTwice(cb) {
+ var pend = new Pend();
+ pend.go(function(cb) {
+ setTimeout(cb, 100);
+ });
+ pend.go(function(cb) {
+ cb();
+ assert.throws(cb, /callback called twice/);
+ });
+ pend.wait(cb);
+}
+
+function testCallingWaitTwice(cb) {
+ var pend = new Pend();
+ pend.go(function(cb) {
+ setTimeout(cb, 100);
+ });
+ pend.wait(function() {
+ pend.go(function(cb) {
+ setTimeout(cb, 50);
+ });
+ pend.go(function(cb) {
+ setTimeout(cb, 10);
+ });
+ pend.go(function(cb) {
+ setTimeout(cb, 20);
+ });
+ pend.wait(cb);
+ });
+}
+
+function testHoldFn(cb) {
+ var pend = new Pend();
+ setTimeout(pend.hold(), 100);
+ pend.go(function(cb) {
+ cb();
+ });
+ pend.wait(cb);
+}
diff --git a/client/node_modules/progress/CHANGELOG.md b/client/node_modules/progress/CHANGELOG.md
new file mode 100644
index 0000000..d9be0aa
--- /dev/null
+++ b/client/node_modules/progress/CHANGELOG.md
@@ -0,0 +1,115 @@
+
+2.0.0 / 2017-04-04
+==================
+
+ * Fix: check before using stream.clearLine to prevent crash in Docker
+ * Fix: fixed output multiline on windows cmd
+ * Fix: Bug with array length when window is too small
+ * Fix: Don't clear whole line every time; instead, clear everything after end of line
+ * Fix: Use `this.stream` instead of `console.log` when terminating a progress bar to ensure that, if a writable stream is provided, it uses that rather than process.stdout
+ * Fix: Bug causing potentially stale tokens on render
+ * Feature: configurable cursor
+ * Feature: feature to interrupt the bar and display a message
+ * Feature: Add rate reporting to progress bar
+ * Improvement: Add head option to specify head character
+ * Improvement: Rename tickTokens to tokens
+ * Improvement: Change default throttle time to 16ms
+ * Improvement: Rename renderDelay to renderThrottle
+ * Improvement: Add delay between render updates
+ * Docs: Add example and documentation for custom token usage
+ * Docs: Add head option to readme
+ * Docs: Updated README example for public use
+ * Docs: Add renderThrottle option to code documentation
+
+1.1.7 / 2014-06-30
+==================
+
+ * fixed a bug that occurs when a progress bar attempts to draw itself
+ on a console with very few columns
+
+1.1.6 / 2014-06-16
+==================
+
+ * now prevents progress bar from exceeding TTY width by limiting its width to
+ the with of the TTY
+
+1.1.5 / 2014-03-25
+==================
+
+ * updated documentation and various other repo maintenance
+ * updated makefile to run examples with `make`
+ * removed dependency on readline module
+
+1.1.4 / 2014-03-14
+==================
+
+ * now supports streams, for example output progress bar to stderr, while piping
+ stdout
+ * increases performance and flicker by remembering the last drawn progress bar
+
+1.1.3 / 2013-12-31
+==================
+
+ * fixes a bug where bar would bug when initializing
+ * allows to pass updated tokens when ticking or updating the bar
+ * fixes a bug where the bar would throw if skipping to far
+
+1.1.2 / 2013-10-17
+==================
+
+ * lets you pass an `fmt` and a `total` instead of an options object
+
+1.1.0 / 2013-09-18
+==================
+
+ * eta and elapsed tokens default to 0.0 instead of ?.?
+ * better JSDocs
+ * added back and forth example
+ * added method to update the progress bar to a specific percentage
+ * added an option to hide the bar on completion
+
+1.0.1 / 2013-08-07
+==================
+
+ * on os x readline now works, reverting the terminal hack
+
+1.0.0 / 2013-06-18
+==================
+
+ * remove .version
+ * merge pull request #15 from davglass/readline-osx
+ * on OSX revert back to terminal hack to avoid a readline bug
+
+0.1.0 / 2012-09-19
+==================
+
+ * fixed logic bug that caused bar to jump one extra space at the end [davglass]
+ * working with readline impl, even on Windows [davglass]
+ * using readline instead of the \r hack [davglass]
+
+0.0.5 / 2012-08-07
+==================
+
+ * add ability to tick by zero chunks - tick(0)
+ * fix ETA. Closes #4 [lwille]
+
+0.0.4 / 2011-11-14
+==================
+
+ * allow more recent versions of node
+
+0.0.3 / 2011-04-20
+==================
+
+ * changed; erase the line when complete
+
+0.0.2 / 2011-04-20
+==================
+
+ * added custom tokens support
+ * fixed; clear line before writing
+
+0.0.1 / 2010-01-03
+==================
+
+ * initial release
diff --git a/client/node_modules/progress/LICENSE b/client/node_modules/progress/LICENSE
new file mode 100644
index 0000000..4608b39
--- /dev/null
+++ b/client/node_modules/progress/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2017 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/progress/Makefile b/client/node_modules/progress/Makefile
new file mode 100644
index 0000000..f933be1
--- /dev/null
+++ b/client/node_modules/progress/Makefile
@@ -0,0 +1,8 @@
+
+EXAMPLES = $(foreach EXAMPLE, $(wildcard examples/*.js), $(EXAMPLE))
+
+.PHONY: test
+test: $(EXAMPLES)
+
+.PHONY: $(EXAMPLES)
+$(EXAMPLES): ; node $@ && echo
diff --git a/client/node_modules/progress/Readme.md b/client/node_modules/progress/Readme.md
new file mode 100644
index 0000000..6d4271a
--- /dev/null
+++ b/client/node_modules/progress/Readme.md
@@ -0,0 +1,146 @@
+Flexible ascii progress bar.
+
+## Installation
+
+```bash
+$ npm install progress
+```
+
+## Usage
+
+First we create a `ProgressBar`, giving it a format string
+as well as the `total`, telling the progress bar when it will
+be considered complete. After that all we need to do is `tick()` appropriately.
+
+```javascript
+var ProgressBar = require('progress');
+
+var bar = new ProgressBar(':bar', { total: 10 });
+var timer = setInterval(function () {
+ bar.tick();
+ if (bar.complete) {
+ console.log('\ncomplete\n');
+ clearInterval(timer);
+ }
+}, 100);
+```
+
+### Options
+
+These are keys in the options object you can pass to the progress bar along with
+`total` as seen in the example above.
+
+- `curr` current completed index
+- `total` total number of ticks to complete
+- `width` the displayed width of the progress bar defaulting to total
+- `stream` the output stream defaulting to stderr
+- `head` head character defaulting to complete character
+- `complete` completion character defaulting to "="
+- `incomplete` incomplete character defaulting to "-"
+- `renderThrottle` minimum time between updates in milliseconds defaulting to 16
+- `clear` option to clear the bar on completion defaulting to false
+- `callback` optional function to call when the progress bar completes
+
+### Tokens
+
+These are tokens you can use in the format of your progress bar.
+
+- `:bar` the progress bar itself
+- `:current` current tick number
+- `:total` total ticks
+- `:elapsed` time elapsed in seconds
+- `:percent` completion percentage
+- `:eta` estimated completion time in seconds
+- `:rate` rate of ticks per second
+
+### Custom Tokens
+
+You can define custom tokens by adding a `{'name': value}` object parameter to your method (`tick()`, `update()`, etc.) calls.
+
+```javascript
+var bar = new ProgressBar(':current: :token1 :token2', { total: 3 })
+bar.tick({
+ 'token1': "Hello",
+ 'token2': "World!\n"
+})
+bar.tick(2, {
+ 'token1': "Goodbye",
+ 'token2': "World!"
+})
+```
+The above example would result in the output below.
+
+```
+1: Hello World!
+3: Goodbye World!
+```
+
+## Examples
+
+### Download
+
+In our download example each tick has a variable influence, so we pass the chunk
+length which adjusts the progress bar appropriately relative to the total
+length.
+
+```javascript
+var ProgressBar = require('progress');
+var https = require('https');
+
+var req = https.request({
+ host: 'download.github.com',
+ port: 443,
+ path: '/visionmedia-node-jscoverage-0d4608a.zip'
+});
+
+req.on('response', function(res){
+ var len = parseInt(res.headers['content-length'], 10);
+
+ console.log();
+ var bar = new ProgressBar(' downloading [:bar] :rate/bps :percent :etas', {
+ complete: '=',
+ incomplete: ' ',
+ width: 20,
+ total: len
+ });
+
+ res.on('data', function (chunk) {
+ bar.tick(chunk.length);
+ });
+
+ res.on('end', function () {
+ console.log('\n');
+ });
+});
+
+req.end();
+```
+
+The above example result in a progress bar like the one below.
+
+```
+downloading [===== ] 39/bps 29% 3.7s
+```
+
+### Interrupt
+
+To display a message during progress bar execution, use `interrupt()`
+```javascript
+var ProgressBar = require('progress');
+
+var bar = new ProgressBar(':bar :current/:total', { total: 10 });
+var timer = setInterval(function () {
+ bar.tick();
+ if (bar.complete) {
+ clearInterval(timer);
+ } else if (bar.curr === 5) {
+ bar.interrupt('this message appears above the progress bar\ncurrent progress is ' + bar.curr + '/' + bar.total);
+ }
+}, 1000);
+```
+
+You can see more examples in the `examples` folder.
+
+## License
+
+MIT
diff --git a/client/node_modules/progress/index.js b/client/node_modules/progress/index.js
new file mode 100644
index 0000000..4449dd3
--- /dev/null
+++ b/client/node_modules/progress/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/node-progress');
diff --git a/client/node_modules/progress/lib/node-progress.js b/client/node_modules/progress/lib/node-progress.js
new file mode 100644
index 0000000..8eb0740
--- /dev/null
+++ b/client/node_modules/progress/lib/node-progress.js
@@ -0,0 +1,236 @@
+/*!
+ * node-progress
+ * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca>
+ * MIT Licensed
+ */
+
+/**
+ * Expose `ProgressBar`.
+ */
+
+exports = module.exports = ProgressBar;
+
+/**
+ * Initialize a `ProgressBar` with the given `fmt` string and `options` or
+ * `total`.
+ *
+ * Options:
+ *
+ * - `curr` current completed index
+ * - `total` total number of ticks to complete
+ * - `width` the displayed width of the progress bar defaulting to total
+ * - `stream` the output stream defaulting to stderr
+ * - `head` head character defaulting to complete character
+ * - `complete` completion character defaulting to "="
+ * - `incomplete` incomplete character defaulting to "-"
+ * - `renderThrottle` minimum time between updates in milliseconds defaulting to 16
+ * - `callback` optional function to call when the progress bar completes
+ * - `clear` will clear the progress bar upon termination
+ *
+ * Tokens:
+ *
+ * - `:bar` the progress bar itself
+ * - `:current` current tick number
+ * - `:total` total ticks
+ * - `:elapsed` time elapsed in seconds
+ * - `:percent` completion percentage
+ * - `:eta` eta in seconds
+ * - `:rate` rate of ticks per second
+ *
+ * @param {string} fmt
+ * @param {object|number} options or total
+ * @api public
+ */
+
+function ProgressBar(fmt, options) {
+ this.stream = options.stream || process.stderr;
+
+ if (typeof(options) == 'number') {
+ var total = options;
+ options = {};
+ options.total = total;
+ } else {
+ options = options || {};
+ if ('string' != typeof fmt) throw new Error('format required');
+ if ('number' != typeof options.total) throw new Error('total required');
+ }
+
+ this.fmt = fmt;
+ this.curr = options.curr || 0;
+ this.total = options.total;
+ this.width = options.width || this.total;
+ this.clear = options.clear
+ this.chars = {
+ complete : options.complete || '=',
+ incomplete : options.incomplete || '-',
+ head : options.head || (options.complete || '=')
+ };
+ this.renderThrottle = options.renderThrottle !== 0 ? (options.renderThrottle || 16) : 0;
+ this.lastRender = -Infinity;
+ this.callback = options.callback || function () {};
+ this.tokens = {};
+ this.lastDraw = '';
+}
+
+/**
+ * "tick" the progress bar with optional `len` and optional `tokens`.
+ *
+ * @param {number|object} len or tokens
+ * @param {object} tokens
+ * @api public
+ */
+
+ProgressBar.prototype.tick = function(len, tokens){
+ if (len !== 0)
+ len = len || 1;
+
+ // swap tokens
+ if ('object' == typeof len) tokens = len, len = 1;
+ if (tokens) this.tokens = tokens;
+
+ // start time for eta
+ if (0 == this.curr) this.start = new Date;
+
+ this.curr += len
+
+ // try to render
+ this.render();
+
+ // progress complete
+ if (this.curr >= this.total) {
+ this.render(undefined, true);
+ this.complete = true;
+ this.terminate();
+ this.callback(this);
+ return;
+ }
+};
+
+/**
+ * Method to render the progress bar with optional `tokens` to place in the
+ * progress bar's `fmt` field.
+ *
+ * @param {object} tokens
+ * @api public
+ */
+
+ProgressBar.prototype.render = function (tokens, force) {
+ force = force !== undefined ? force : false;
+ if (tokens) this.tokens = tokens;
+
+ if (!this.stream.isTTY) return;
+
+ var now = Date.now();
+ var delta = now - this.lastRender;
+ if (!force && (delta < this.renderThrottle)) {
+ return;
+ } else {
+ this.lastRender = now;
+ }
+
+ var ratio = this.curr / this.total;
+ ratio = Math.min(Math.max(ratio, 0), 1);
+
+ var percent = Math.floor(ratio * 100);
+ var incomplete, complete, completeLength;
+ var elapsed = new Date - this.start;
+ var eta = (percent == 100) ? 0 : elapsed * (this.total / this.curr - 1);
+ var rate = this.curr / (elapsed / 1000);
+
+ /* populate the bar template with percentages and timestamps */
+ var str = this.fmt
+ .replace(':current', this.curr)
+ .replace(':total', this.total)
+ .replace(':elapsed', isNaN(elapsed) ? '0.0' : (elapsed / 1000).toFixed(1))
+ .replace(':eta', (isNaN(eta) || !isFinite(eta)) ? '0.0' : (eta / 1000)
+ .toFixed(1))
+ .replace(':percent', percent.toFixed(0) + '%')
+ .replace(':rate', Math.round(rate));
+
+ /* compute the available space (non-zero) for the bar */
+ var availableSpace = Math.max(0, this.stream.columns - str.replace(':bar', '').length);
+ if(availableSpace && process.platform === 'win32'){
+ availableSpace = availableSpace - 1;
+ }
+
+ var width = Math.min(this.width, availableSpace);
+
+ /* TODO: the following assumes the user has one ':bar' token */
+ completeLength = Math.round(width * ratio);
+ complete = Array(Math.max(0, completeLength + 1)).join(this.chars.complete);
+ incomplete = Array(Math.max(0, width - completeLength + 1)).join(this.chars.incomplete);
+
+ /* add head to the complete string */
+ if(completeLength > 0)
+ complete = complete.slice(0, -1) + this.chars.head;
+
+ /* fill in the actual progress bar */
+ str = str.replace(':bar', complete + incomplete);
+
+ /* replace the extra tokens */
+ if (this.tokens) for (var key in this.tokens) str = str.replace(':' + key, this.tokens[key]);
+
+ if (this.lastDraw !== str) {
+ this.stream.cursorTo(0);
+ this.stream.write(str);
+ this.stream.clearLine(1);
+ this.lastDraw = str;
+ }
+};
+
+/**
+ * "update" the progress bar to represent an exact percentage.
+ * The ratio (between 0 and 1) specified will be multiplied by `total` and
+ * floored, representing the closest available "tick." For example, if a
+ * progress bar has a length of 3 and `update(0.5)` is called, the progress
+ * will be set to 1.
+ *
+ * A ratio of 0.5 will attempt to set the progress to halfway.
+ *
+ * @param {number} ratio The ratio (between 0 and 1 inclusive) to set the
+ * overall completion to.
+ * @api public
+ */
+
+ProgressBar.prototype.update = function (ratio, tokens) {
+ var goal = Math.floor(ratio * this.total);
+ var delta = goal - this.curr;
+
+ this.tick(delta, tokens);
+};
+
+/**
+ * "interrupt" the progress bar and write a message above it.
+ * @param {string} message The message to write.
+ * @api public
+ */
+
+ProgressBar.prototype.interrupt = function (message) {
+ // clear the current line
+ this.stream.clearLine();
+ // move the cursor to the start of the line
+ this.stream.cursorTo(0);
+ // write the message text
+ this.stream.write(message);
+ // terminate the line after writing the message
+ this.stream.write('\n');
+ // re-display the progress bar with its lastDraw
+ this.stream.write(this.lastDraw);
+};
+
+/**
+ * Terminates a progress bar.
+ *
+ * @api public
+ */
+
+ProgressBar.prototype.terminate = function () {
+ if (this.clear) {
+ if (this.stream.clearLine) {
+ this.stream.clearLine();
+ this.stream.cursorTo(0);
+ }
+ } else {
+ this.stream.write('\n');
+ }
+};
diff --git a/client/node_modules/progress/package.json b/client/node_modules/progress/package.json
new file mode 100644
index 0000000..bb81fa0
--- /dev/null
+++ b/client/node_modules/progress/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "progress",
+ "version": "2.0.3",
+ "description": "Flexible ascii progress bar",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/visionmedia/node-progress"
+ },
+ "keywords": [
+ "cli",
+ "progress"
+ ],
+ "author": "TJ Holowaychuk <tj@vision-media.ca>",
+ "contributors": [
+ "Christoffer Hallas <christoffer.hallas@gmail.com>",
+ "Jordan Scales <scalesjordan@gmail.com>",
+ "Andrew Rhyne <rhyneandrew@gmail.com>",
+ "Marco Brack <PapstDonB@Googlemail.com>"
+ ],
+ "dependencies": {},
+ "main": "./index.js",
+ "engines": {
+ "node": ">=0.4.0"
+ },
+ "license": "MIT"
+}
diff --git a/client/node_modules/pump/.travis.yml b/client/node_modules/pump/.travis.yml
new file mode 100644
index 0000000..17f9433
--- /dev/null
+++ b/client/node_modules/pump/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+ - "0.10"
+
+script: "npm test"
diff --git a/client/node_modules/pump/LICENSE b/client/node_modules/pump/LICENSE
new file mode 100644
index 0000000..757562e
--- /dev/null
+++ b/client/node_modules/pump/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/client/node_modules/pump/README.md b/client/node_modules/pump/README.md
new file mode 100644
index 0000000..4c81471
--- /dev/null
+++ b/client/node_modules/pump/README.md
@@ -0,0 +1,65 @@
+# pump
+
+pump is a small node module that pipes streams together and destroys all of them if one of them closes.
+
+```
+npm install pump
+```
+
+[![build status](http://img.shields.io/travis/mafintosh/pump.svg?style=flat)](http://travis-ci.org/mafintosh/pump)
+
+## What problem does it solve?
+
+When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
+You are also not able to provide a callback to tell when then pipe has finished.
+
+pump does these two things for you
+
+## Usage
+
+Simply pass the streams you want to pipe together to pump and add an optional callback
+
+``` js
+var pump = require('pump')
+var fs = require('fs')
+
+var source = fs.createReadStream('/dev/random')
+var dest = fs.createWriteStream('/dev/null')
+
+pump(source, dest, function(err) {
+ console.log('pipe finished', err)
+})
+
+setTimeout(function() {
+ dest.destroy() // when dest is closed pump will destroy source
+}, 1000)
+```
+
+You can use pump to pipe more than two streams together as well
+
+``` js
+var transform = someTransformStream()
+
+pump(source, transform, anotherTransform, dest, function(err) {
+ console.log('pipe finished', err)
+})
+```
+
+If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.
+
+Similarly to `stream.pipe()`, `pump()` returns the last stream passed in, so you can do:
+
+```
+return pump(s1, s2) // returns s2
+```
+
+If you want to return a stream that combines *both* s1 and s2 to a single stream use
+[pumpify](https://github.com/mafintosh/pumpify) instead.
+
+## License
+
+MIT
+
+## Related
+
+`pump` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/client/node_modules/pump/index.js b/client/node_modules/pump/index.js
new file mode 100644
index 0000000..c15059f
--- /dev/null
+++ b/client/node_modules/pump/index.js
@@ -0,0 +1,82 @@
+var once = require('once')
+var eos = require('end-of-stream')
+var fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes
+
+var noop = function () {}
+var ancient = /^v?\.0/.test(process.version)
+
+var isFn = function (fn) {
+ return typeof fn === 'function'
+}
+
+var isFS = function (stream) {
+ if (!ancient) return false // newer node version do not need to care about fs is a special way
+ if (!fs) return false // browser
+ return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
+}
+
+var isRequest = function (stream) {
+ return stream.setHeader && isFn(stream.abort)
+}
+
+var destroyer = function (stream, reading, writing, callback) {
+ callback = once(callback)
+
+ var closed = false
+ stream.on('close', function () {
+ closed = true
+ })
+
+ eos(stream, {readable: reading, writable: writing}, function (err) {
+ if (err) return callback(err)
+ closed = true
+ callback()
+ })
+
+ var destroyed = false
+ return function (err) {
+ if (closed) return
+ if (destroyed) return
+ destroyed = true
+
+ if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
+ if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
+
+ if (isFn(stream.destroy)) return stream.destroy()
+
+ callback(err || new Error('stream was destroyed'))
+ }
+}
+
+var call = function (fn) {
+ fn()
+}
+
+var pipe = function (from, to) {
+ return from.pipe(to)
+}
+
+var pump = function () {
+ var streams = Array.prototype.slice.call(arguments)
+ var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
+
+ if (Array.isArray(streams[0])) streams = streams[0]
+ if (streams.length < 2) throw new Error('pump requires two streams per minimum')
+
+ var error
+ var destroys = streams.map(function (stream, i) {
+ var reading = i < streams.length - 1
+ var writing = i > 0
+ return destroyer(stream, reading, writing, function (err) {
+ if (!error) error = err
+ if (err) destroys.forEach(call)
+ if (reading) return
+ destroys.forEach(call)
+ callback(error)
+ })
+ })
+
+ return streams.reduce(pipe)
+}
+
+module.exports = pump
diff --git a/client/node_modules/pump/package.json b/client/node_modules/pump/package.json
new file mode 100644
index 0000000..0b838f9
--- /dev/null
+++ b/client/node_modules/pump/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "pump",
+ "version": "3.0.0",
+ "repository": "git://github.com/mafintosh/pump.git",
+ "license": "MIT",
+ "description": "pipe streams together and close all of them if one of them closes",
+ "browser": {
+ "fs": false
+ },
+ "keywords": [
+ "streams",
+ "pipe",
+ "destroy",
+ "callback"
+ ],
+ "author": "Mathias Buus Madsen <mathiasbuus@gmail.com>",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ },
+ "scripts": {
+ "test": "node test-browser.js && node test-node.js"
+ }
+}
diff --git a/client/node_modules/pump/test-browser.js b/client/node_modules/pump/test-browser.js
new file mode 100644
index 0000000..9a06c8a
--- /dev/null
+++ b/client/node_modules/pump/test-browser.js
@@ -0,0 +1,66 @@
+var stream = require('stream')
+var pump = require('./index')
+
+var rs = new stream.Readable()
+var ws = new stream.Writable()
+
+rs._read = function (size) {
+ this.push(Buffer(size).fill('abc'))
+}
+
+ws._write = function (chunk, encoding, cb) {
+ setTimeout(function () {
+ cb()
+ }, 100)
+}
+
+var toHex = function () {
+ var reverse = new (require('stream').Transform)()
+
+ reverse._transform = function (chunk, enc, callback) {
+ reverse.push(chunk.toString('hex'))
+ callback()
+ }
+
+ return reverse
+}
+
+var wsClosed = false
+var rsClosed = false
+var callbackCalled = false
+
+var check = function () {
+ if (wsClosed && rsClosed && callbackCalled) {
+ console.log('test-browser.js passes')
+ clearTimeout(timeout)
+ }
+}
+
+ws.on('finish', function () {
+ wsClosed = true
+ check()
+})
+
+rs.on('end', function () {
+ rsClosed = true
+ check()
+})
+
+var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
+ callbackCalled = true
+ check()
+})
+
+if (res !== ws) {
+ throw new Error('should return last stream')
+}
+
+setTimeout(function () {
+ rs.push(null)
+ rs.emit('close')
+}, 1000)
+
+var timeout = setTimeout(function () {
+ check()
+ throw new Error('timeout')
+}, 5000)
diff --git a/client/node_modules/pump/test-node.js b/client/node_modules/pump/test-node.js
new file mode 100644
index 0000000..561251a
--- /dev/null
+++ b/client/node_modules/pump/test-node.js
@@ -0,0 +1,53 @@
+var pump = require('./index')
+
+var rs = require('fs').createReadStream('/dev/random')
+var ws = require('fs').createWriteStream('/dev/null')
+
+var toHex = function () {
+ var reverse = new (require('stream').Transform)()
+
+ reverse._transform = function (chunk, enc, callback) {
+ reverse.push(chunk.toString('hex'))
+ callback()
+ }
+
+ return reverse
+}
+
+var wsClosed = false
+var rsClosed = false
+var callbackCalled = false
+
+var check = function () {
+ if (wsClosed && rsClosed && callbackCalled) {
+ console.log('test-node.js passes')
+ clearTimeout(timeout)
+ }
+}
+
+ws.on('close', function () {
+ wsClosed = true
+ check()
+})
+
+rs.on('close', function () {
+ rsClosed = true
+ check()
+})
+
+var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
+ callbackCalled = true
+ check()
+})
+
+if (res !== ws) {
+ throw new Error('should return last stream')
+}
+
+setTimeout(function () {
+ rs.destroy()
+}, 1000)
+
+var timeout = setTimeout(function () {
+ throw new Error('timeout')
+}, 5000)
diff --git a/client/node_modules/quick-lru/index.d.ts b/client/node_modules/quick-lru/index.d.ts
new file mode 100644
index 0000000..fa58889
--- /dev/null
+++ b/client/node_modules/quick-lru/index.d.ts
@@ -0,0 +1,97 @@
+declare namespace QuickLRU {
+ interface Options<KeyType, ValueType> {
+ /**
+ The maximum number of items before evicting the least recently used items.
+ */
+ readonly maxSize: number;
+
+ /**
+ Called right before an item is evicted from the cache.
+
+ Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
+ */
+ onEviction?: (key: KeyType, value: ValueType) => void;
+ }
+}
+
+declare class QuickLRU<KeyType, ValueType>
+ implements Iterable<[KeyType, ValueType]> {
+ /**
+ The stored item count.
+ */
+ readonly size: number;
+
+ /**
+ Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
+
+ The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
+
+ @example
+ ```
+ import QuickLRU = require('quick-lru');
+
+ const lru = new QuickLRU({maxSize: 1000});
+
+ lru.set('🦄', '🌈');
+
+ lru.has('🦄');
+ //=> true
+
+ lru.get('🦄');
+ //=> '🌈'
+ ```
+ */
+ constructor(options: QuickLRU.Options<KeyType, ValueType>);
+
+ [Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
+
+ /**
+ Set an item.
+
+ @returns The list instance.
+ */
+ set(key: KeyType, value: ValueType): this;
+
+ /**
+ Get an item.
+
+ @returns The stored item or `undefined`.
+ */
+ get(key: KeyType): ValueType | undefined;
+
+ /**
+ Check if an item exists.
+ */
+ has(key: KeyType): boolean;
+
+ /**
+ Get an item without marking it as recently used.
+
+ @returns The stored item or `undefined`.
+ */
+ peek(key: KeyType): ValueType | undefined;
+
+ /**
+ Delete an item.
+
+ @returns `true` if the item is removed or `false` if the item doesn't exist.
+ */
+ delete(key: KeyType): boolean;
+
+ /**
+ Delete all items.
+ */
+ clear(): void;
+
+ /**
+ Iterable for all the keys.
+ */
+ keys(): IterableIterator<KeyType>;
+
+ /**
+ Iterable for all the values.
+ */
+ values(): IterableIterator<ValueType>;
+}
+
+export = QuickLRU;
diff --git a/client/node_modules/quick-lru/index.js b/client/node_modules/quick-lru/index.js
new file mode 100644
index 0000000..7d7032e
--- /dev/null
+++ b/client/node_modules/quick-lru/index.js
@@ -0,0 +1,123 @@
+'use strict';
+
+class QuickLRU {
+ constructor(options = {}) {
+ if (!(options.maxSize && options.maxSize > 0)) {
+ throw new TypeError('`maxSize` must be a number greater than 0');
+ }
+
+ this.maxSize = options.maxSize;
+ this.onEviction = options.onEviction;
+ this.cache = new Map();
+ this.oldCache = new Map();
+ this._size = 0;
+ }
+
+ _set(key, value) {
+ this.cache.set(key, value);
+ this._size++;
+
+ if (this._size >= this.maxSize) {
+ this._size = 0;
+
+ if (typeof this.onEviction === 'function') {
+ for (const [key, value] of this.oldCache.entries()) {
+ this.onEviction(key, value);
+ }
+ }
+
+ this.oldCache = this.cache;
+ this.cache = new Map();
+ }
+ }
+
+ get(key) {
+ if (this.cache.has(key)) {
+ return this.cache.get(key);
+ }
+
+ if (this.oldCache.has(key)) {
+ const value = this.oldCache.get(key);
+ this.oldCache.delete(key);
+ this._set(key, value);
+ return value;
+ }
+ }
+
+ set(key, value) {
+ if (this.cache.has(key)) {
+ this.cache.set(key, value);
+ } else {
+ this._set(key, value);
+ }
+
+ return this;
+ }
+
+ has(key) {
+ return this.cache.has(key) || this.oldCache.has(key);
+ }
+
+ peek(key) {
+ if (this.cache.has(key)) {
+ return this.cache.get(key);
+ }
+
+ if (this.oldCache.has(key)) {
+ return this.oldCache.get(key);
+ }
+ }
+
+ delete(key) {
+ const deleted = this.cache.delete(key);
+ if (deleted) {
+ this._size--;
+ }
+
+ return this.oldCache.delete(key) || deleted;
+ }
+
+ clear() {
+ this.cache.clear();
+ this.oldCache.clear();
+ this._size = 0;
+ }
+
+ * keys() {
+ for (const [key] of this) {
+ yield key;
+ }
+ }
+
+ * values() {
+ for (const [, value] of this) {
+ yield value;
+ }
+ }
+
+ * [Symbol.iterator]() {
+ for (const item of this.cache) {
+ yield item;
+ }
+
+ for (const item of this.oldCache) {
+ const [key] = item;
+ if (!this.cache.has(key)) {
+ yield item;
+ }
+ }
+ }
+
+ get size() {
+ let oldCacheSize = 0;
+ for (const key of this.oldCache.keys()) {
+ if (!this.cache.has(key)) {
+ oldCacheSize++;
+ }
+ }
+
+ return Math.min(this._size + oldCacheSize, this.maxSize);
+ }
+}
+
+module.exports = QuickLRU;
diff --git a/client/node_modules/quick-lru/license b/client/node_modules/quick-lru/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/client/node_modules/quick-lru/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/quick-lru/package.json b/client/node_modules/quick-lru/package.json
new file mode 100644
index 0000000..ff0dd9a
--- /dev/null
+++ b/client/node_modules/quick-lru/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "quick-lru",
+ "version": "5.1.1",
+ "description": "Simple “Least Recently Used” (LRU) cache",
+ "license": "MIT",
+ "repository": "sindresorhus/quick-lru",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && nyc ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "lru",
+ "quick",
+ "cache",
+ "caching",
+ "least",
+ "recently",
+ "used",
+ "fast",
+ "map",
+ "hash",
+ "buffer"
+ ],
+ "devDependencies": {
+ "ava": "^2.0.0",
+ "coveralls": "^3.0.3",
+ "nyc": "^15.0.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.26.0"
+ }
+}
diff --git a/client/node_modules/quick-lru/readme.md b/client/node_modules/quick-lru/readme.md
new file mode 100644
index 0000000..234294a
--- /dev/null
+++ b/client/node_modules/quick-lru/readme.md
@@ -0,0 +1,111 @@
+# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master)
+
+> Simple [“Least Recently Used” (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)
+
+Useful when you need to cache something and limit memory usage.
+
+Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`.
+
+## Install
+
+```
+$ npm install quick-lru
+```
+
+## Usage
+
+```js
+const QuickLRU = require('quick-lru');
+
+const lru = new QuickLRU({maxSize: 1000});
+
+lru.set('🦄', '🌈');
+
+lru.has('🦄');
+//=> true
+
+lru.get('🦄');
+//=> '🌈'
+```
+
+## API
+
+### new QuickLRU(options?)
+
+Returns a new instance.
+
+### options
+
+Type: `object`
+
+#### maxSize
+
+*Required*\
+Type: `number`
+
+The maximum number of items before evicting the least recently used items.
+
+#### onEviction
+
+*Optional*\
+Type: `(key, value) => void`
+
+Called right before an item is evicted from the cache.
+
+Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
+
+### Instance
+
+The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
+
+Both `key` and `value` can be of any type.
+
+#### .set(key, value)
+
+Set an item. Returns the instance.
+
+#### .get(key)
+
+Get an item.
+
+#### .has(key)
+
+Check if an item exists.
+
+#### .peek(key)
+
+Get an item without marking it as recently used.
+
+#### .delete(key)
+
+Delete an item.
+
+Returns `true` if the item is removed or `false` if the item doesn't exist.
+
+#### .clear()
+
+Delete all items.
+
+#### .keys()
+
+Iterable for all the keys.
+
+#### .values()
+
+Iterable for all the values.
+
+#### .size
+
+The stored item count.
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-quick-lru?utm_source=npm-quick-lru&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/resolve-alpn/LICENSE b/client/node_modules/resolve-alpn/LICENSE
new file mode 100644
index 0000000..f4fe9c4
--- /dev/null
+++ b/client/node_modules/resolve-alpn/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2018 Szymon Marczak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/client/node_modules/resolve-alpn/README.md b/client/node_modules/resolve-alpn/README.md
new file mode 100644
index 0000000..a49950c
--- /dev/null
+++ b/client/node_modules/resolve-alpn/README.md
@@ -0,0 +1,60 @@
+# `resolve-alpn`
+
+[![Node CI](https://github.com/szmarczak/resolve-alpn/workflows/Node%20CI/badge.svg)](https://github.com/szmarczak/resolve-alpn/actions)
+[![codecov](https://codecov.io/gh/szmarczak/resolve-alpn/branch/master/graph/badge.svg)](https://codecov.io/gh/szmarczak/resolve-alpn)
+
+## API
+
+### resolveALPN(options, connect = tls.connect)
+
+Returns an object with an `alpnProtocol` property. The `socket` property may be also present.
+
+```js
+const result = await resolveALPN({
+ host: 'nghttp2.org',
+ port: 443,
+ ALPNProtocols: ['h2', 'http/1.1'],
+ servername: 'nghttp2.org'
+});
+
+console.log(result); // {alpnProtocol: 'h2'}
+```
+
+**Note:** While the `servername` option is not required in this case, many other servers do. It's best practice to set it anyway.
+
+**Note:** If the socket times out, the promise will resolve and `result.timeout` will be set to `true`.
+
+#### options
+
+Same as [TLS options](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback).
+
+##### options.resolveSocket
+
+By default, the socket gets destroyed and the promise resolves.<br>
+If you set this to true, it will return the socket in a `socket` property.
+
+```js
+const result = await resolveALPN({
+ host: 'nghttp2.org',
+ port: 443,
+ ALPNProtocols: ['h2', 'http/1.1'],
+ servername: 'nghttp2.org',
+ resolveSocket: true
+});
+
+console.log(result); // {alpnProtocol: 'h2', socket: tls.TLSSocket}
+
+// Remember to destroy the socket if you don't use it!
+result.socket.destroy();
+```
+
+#### connect
+
+Type: `Function<TLSSocket> | AsyncFunction<TLSSocket>`\
+Default: [`tls.connect`](https://nodejs.org/dist/latest-v16.x/docs/api/tls.html#tls_tls_connect_options_callback)
+
+**Note:** No matter which function is used (synchronous or asynchronous), it **must** accept a `callback` function as a second argument. The `callback` function gets executed when the socket has successfully connected.
+
+## License
+
+MIT
diff --git a/client/node_modules/resolve-alpn/index.js b/client/node_modules/resolve-alpn/index.js
new file mode 100644
index 0000000..2d6c043
--- /dev/null
+++ b/client/node_modules/resolve-alpn/index.js
@@ -0,0 +1,43 @@
+'use strict';
+const tls = require('tls');
+
+module.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => {
+ let timeout = false;
+
+ let socket;
+
+ const callback = async () => {
+ await socketPromise;
+
+ socket.off('timeout', onTimeout);
+ socket.off('error', reject);
+
+ if (options.resolveSocket) {
+ resolve({alpnProtocol: socket.alpnProtocol, socket, timeout});
+
+ if (timeout) {
+ await Promise.resolve();
+ socket.emit('timeout');
+ }
+ } else {
+ socket.destroy();
+ resolve({alpnProtocol: socket.alpnProtocol, timeout});
+ }
+ };
+
+ const onTimeout = async () => {
+ timeout = true;
+ callback();
+ };
+
+ const socketPromise = (async () => {
+ try {
+ socket = await connect(options, callback);
+
+ socket.on('error', reject);
+ socket.once('timeout', onTimeout);
+ } catch (error) {
+ reject(error);
+ }
+ })();
+});
diff --git a/client/node_modules/resolve-alpn/package.json b/client/node_modules/resolve-alpn/package.json
new file mode 100644
index 0000000..73a7756
--- /dev/null
+++ b/client/node_modules/resolve-alpn/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "resolve-alpn",
+ "version": "1.2.1",
+ "description": "Detects the ALPN protocol",
+ "main": "index.js",
+ "scripts": {
+ "test": "xo && nyc --reporter=lcovonly --reporter=text --reporter=html ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/szmarczak/resolve-alpn.git"
+ },
+ "keywords": [
+ "alpn",
+ "tls",
+ "socket",
+ "http2"
+ ],
+ "author": "Szymon Marczak",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/szmarczak/resolve-alpn/issues"
+ },
+ "homepage": "https://github.com/szmarczak/resolve-alpn#readme",
+ "devDependencies": {
+ "ava": "^3.15.0",
+ "nyc": "^15.1.0",
+ "pem": "1.14.3",
+ "xo": "^0.38.2"
+ }
+}
diff --git a/client/node_modules/responselike/LICENSE b/client/node_modules/responselike/LICENSE
new file mode 100644
index 0000000..8829a00
--- /dev/null
+++ b/client/node_modules/responselike/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 Luke Childs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/client/node_modules/responselike/README.md b/client/node_modules/responselike/README.md
new file mode 100644
index 0000000..6361931
--- /dev/null
+++ b/client/node_modules/responselike/README.md
@@ -0,0 +1,77 @@
+# responselike
+
+> A response-like object for mocking a Node.js HTTP response stream
+
+[![Build Status](https://travis-ci.org/lukechilds/responselike.svg?branch=master)](https://travis-ci.org/lukechilds/responselike)
+[![Coverage Status](https://coveralls.io/repos/github/lukechilds/responselike/badge.svg?branch=master)](https://coveralls.io/github/lukechilds/responselike?branch=master)
+[![npm](https://img.shields.io/npm/dm/responselike.svg)](https://www.npmjs.com/package/responselike)
+[![npm](https://img.shields.io/npm/v/responselike.svg)](https://www.npmjs.com/package/responselike)
+
+Returns a streamable response object similar to a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage). Useful for formatting cached responses so they can be consumed by code expecting a real response.
+
+## Install
+
+```shell
+npm install --save responselike
+```
+
+Or if you're just using for testing you'll want:
+
+```shell
+npm install --save-dev responselike
+```
+
+## Usage
+
+```js
+const Response = require('responselike');
+
+const response = new Response(200, { foo: 'bar' }, Buffer.from('Hi!'), 'https://example.com');
+
+response.statusCode;
+// 200
+response.headers;
+// { foo: 'bar' }
+response.body;
+// <Buffer 48 69 21>
+response.url;
+// 'https://example.com'
+
+response.pipe(process.stdout);
+// Hi!
+```
+
+
+## API
+
+### new Response(statusCode, headers, body, url)
+
+Returns a streamable response object similar to a [Node.js HTTP response stream](https://nodejs.org/api/http.html#http_class_http_incomingmessage).
+
+#### statusCode
+
+Type: `number`
+
+HTTP response status code.
+
+#### headers
+
+Type: `object`
+
+HTTP headers object. Keys will be automatically lowercased.
+
+#### body
+
+Type: `buffer`
+
+A Buffer containing the response body. The Buffer contents will be streamable but is also exposed directly as `response.body`.
+
+#### url
+
+Type: `string`
+
+Request URL string.
+
+## License
+
+MIT © Luke Childs
diff --git a/client/node_modules/responselike/package.json b/client/node_modules/responselike/package.json
new file mode 100644
index 0000000..ee885f0
--- /dev/null
+++ b/client/node_modules/responselike/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "responselike",
+ "version": "2.0.1",
+ "description": "A response-like object for mocking a Node.js HTTP response stream",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "main": "src/index.js",
+ "scripts": {
+ "test": "xo && nyc ava",
+ "coverage": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "xo": {
+ "extends": "xo-lukechilds"
+ },
+ "keywords": [
+ "http",
+ "https",
+ "response",
+ "mock",
+ "request",
+ "responselike"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/sindresorhus/responselike.git"
+ },
+ "author": "lukechilds",
+ "license": "MIT",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "coveralls": "^3.0.0",
+ "eslint-config-xo-lukechilds": "^1.0.0",
+ "get-stream": "^3.0.0",
+ "nyc": "^11.8.0",
+ "xo": "^0.19.0"
+ },
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ }
+}
diff --git a/client/node_modules/responselike/src/index.js b/client/node_modules/responselike/src/index.js
new file mode 100644
index 0000000..b17b481
--- /dev/null
+++ b/client/node_modules/responselike/src/index.js
@@ -0,0 +1,34 @@
+'use strict';
+
+const Readable = require('stream').Readable;
+const lowercaseKeys = require('lowercase-keys');
+
+class Response extends Readable {
+ constructor(statusCode, headers, body, url) {
+ if (typeof statusCode !== 'number') {
+ throw new TypeError('Argument `statusCode` should be a number');
+ }
+ if (typeof headers !== 'object') {
+ throw new TypeError('Argument `headers` should be an object');
+ }
+ if (!(body instanceof Buffer)) {
+ throw new TypeError('Argument `body` should be a buffer');
+ }
+ if (typeof url !== 'string') {
+ throw new TypeError('Argument `url` should be a string');
+ }
+
+ super();
+ this.statusCode = statusCode;
+ this.headers = lowercaseKeys(headers);
+ this.body = body;
+ this.url = url;
+ }
+
+ _read() {
+ this.push(this.body);
+ this.push(null);
+ }
+}
+
+module.exports = Response;
diff --git a/client/node_modules/roarr/LICENSE b/client/node_modules/roarr/LICENSE
new file mode 100644
index 0000000..5065086
--- /dev/null
+++ b/client/node_modules/roarr/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2019, Gajus Kuizinas (http://gajus.com/)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the Gajus Kuizinas (http://gajus.com/) nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANUARY BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/roarr/README.md b/client/node_modules/roarr/README.md
new file mode 100644
index 0000000..9f1c267
--- /dev/null
+++ b/client/node_modules/roarr/README.md
@@ -0,0 +1,689 @@
+<a name="roarr"></a>
+# Roarr
+
+[![GitSpo Mentions](https://gitspo.com/badges/mentions/gajus/roarr?style=flat-square)](https://gitspo.com/mentions/gajus/roarr)
+[![Travis build status](http://img.shields.io/travis/gajus/roarr/master.svg?style=flat-square)](https://travis-ci.org/gajus/roarr)
+[![Coveralls](https://img.shields.io/coveralls/gajus/roarr.svg?style=flat-square)](https://coveralls.io/github/gajus/roarr)
+[![NPM version](http://img.shields.io/npm/v/roarr.svg?style=flat-square)](https://www.npmjs.org/package/roarr)
+[![Canonical Code Style](https://img.shields.io/badge/code%20style-canonical-blue.svg?style=flat-square)](https://github.com/gajus/canonical)
+[![Twitter Follow](https://img.shields.io/twitter/follow/kuizinas.svg?style=social&label=Follow)](https://twitter.com/kuizinas)
+
+JSON logger for Node.js and browser.
+
+* [Roarr](#roarr)
+ * [Motivation](#roarr-motivation)
+ * [Usage](#roarr-usage)
+ * [Producing logs](#roarr-usage-producing-logs)
+ * [Consuming logs](#roarr-usage-consuming-logs)
+ * [Filtering logs](#roarr-usage-filtering-logs)
+ * [Log message format](#roarr-log-message-format)
+ * [API](#roarr-api)
+ * [`adopt`](#roarr-api-adopt)
+ * [`child`](#roarr-api-child)
+ * [`getContext`](#roarr-api-getcontext)
+ * [`trace`](#roarr-api-trace)
+ * [`debug`](#roarr-api-debug)
+ * [`info`](#roarr-api-info)
+ * [`warn`](#roarr-api-warn)
+ * [`error`](#roarr-api-error)
+ * [`fatal`](#roarr-api-fatal)
+ * [Middlewares](#roarr-middlewares)
+ * [CLI program](#roarr-cli-program)
+ * [Transports](#roarr-transports)
+ * [Node.js environment variables](#roarr-node-js-environment-variables)
+ * [Conventions](#roarr-conventions)
+ * [Context property names](#roarr-conventions-context-property-names)
+ * [Using Roarr in an application](#roarr-conventions-using-roarr-in-an-application)
+ * [Recipes](#roarr-recipes)
+ * [Logging errors](#roarr-recipes-logging-errors)
+ * [Using with Elasticsearch](#roarr-recipes-using-with-elasticsearch)
+ * [Using with Scalyr](#roarr-recipes-using-with-scalyr)
+ * [Documenting use of Roarr](#roarr-recipes-documenting-use-of-roarr)
+
+
+<a name="roarr-motivation"></a>
+## Motivation
+
+For a long time I have been a big fan of using [`debug`](https://github.com/visionmedia/debug). `debug` is simple to use, works in Node.js and browser, does not require configuration and it is fast. However, problems arise when you need to parse logs. Anything but one-line text messages cannot be parsed in a safe way.
+
+To log structured data, I have been using [Winston](https://github.com/winstonjs/winston) and [Bunyan](https://github.com/trentm/node-bunyan). These packages are great for application-level logging. I have preferred Bunyan because of the [Bunyan CLI program](https://github.com/trentm/node-bunyan#cli-usage) used to pretty-print logs. However, these packages require program-level configuration – when constructing an instance of a logger, you need to define the transport and the log-level. This makes them unsuitable for use in code designed to be consumed by other applications.
+
+Then there is [pino](https://github.com/pinojs/pino). pino is fast JSON logger, it has CLI program equivalent to Bunyan, it decouples transports, and it has sane default configuration. Unfortunately, you still need to instantiate logger instance at the application-level. This makes it more suitable for application-level logging just like Winston and Bunyan.
+
+I needed a logger that:
+
+* Does not block the event cycle (=fast).
+* Does not require initialisation.
+* Produces structured data.
+* [Decouples transports](#transports).
+* Has a [CLI program](#cli-program).
+* Works in Node.js and browser.
+* Configurable using environment variables.
+
+In other words,
+
+* a logger that I can use in an application code and in dependencies.
+* a logger that allows to correlate logs between the main application code and the dependency code.
+* a logger that works well with transports in external processes.
+
+Roarr is this logger.
+
+<a name="roarr-usage"></a>
+## Usage
+
+<a name="roarr-usage-producing-logs"></a>
+### Producing logs
+
+Roarr logger API for producing logs is the same in Node.js and browser.
+
+1. Import `roarr`
+2. Use any of the [API](#api) methods to log messages.
+
+Example:
+
+```js
+import log from 'roarr';
+
+log('foo');
+
+```
+
+<a name="roarr-usage-consuming-logs"></a>
+### Consuming logs
+
+Roarr logs are consumed differently in Node.js and browser.
+
+<a name="roarr-usage-consuming-logs-node-js"></a>
+#### Node.js
+
+In Node.js, Roarr logging is disabled by default. To enable logging, you must start program with an environment variable `ROARR_LOG` set to `true`, e.g.
+
+```bash
+ROARR_LOG=true node ./index.js
+
+```
+
+All logs will be written to stdout.
+
+<a name="roarr-usage-consuming-logs-browser"></a>
+#### Browser
+
+In a browser, you must implement `ROARR.write` method to read logs, e.g.
+
+```js
+import {
+ ROARR,
+} from 'roarr';
+
+ROARR.write = () => {};
+
+```
+
+The API of the `ROARR.write` is:
+
+```js
+(message: string) => void;
+
+```
+
+Example implementation:
+
+```js
+import {
+ ROARR,
+} from 'roarr';
+
+ROARR.write = (message) => {
+ console.log(JSON.parse(message));
+};
+
+```
+
+or if you are initializing `ROARR.write` _before_ `roarr` is loaded:
+
+```js
+// Ensure that `globalThis.ROARR` is configured.
+const ROARR = globalThis.ROARR = globalThis.ROARR || {};
+
+ROARR.write = (message) => {
+ console.log(JSON.parse(message));
+};
+
+```
+
+If your platform does not support [`globalThis`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis), use [`globalthis` polyfill](https://www.npmjs.com/package/globalthis).
+
+<a name="roarr-usage-filtering-logs"></a>
+### Filtering logs
+
+<a name="roarr-usage-filtering-logs-node-js-1"></a>
+#### Node.js
+
+In Node.js, Roarr prints all or none logs (refer to the [`ROARR_LOG` environment variable](#environment-variables) documentation).
+
+Use [`roarr filter` CLI program](#filter-program) to filter the logs that are written to stdout by the program, e.g.
+
+```bash
+ROARR_LOG=true node ./index.js | roarr filter '{"context.logLevel":{gt:30}}'
+
+```
+
+Alternatively, use a JSON processor such as [jq](https://stedolan.github.io/jq/)
+
+<a name="roarr-usage-filtering-logs-browser-1"></a>
+#### Browser
+
+In a browser, Roarr calls `globalThis.ROARR.write` for every log message. Implement your own custom logic to filter logs, e.g.
+
+```js
+globalThis.ROARR.write = (message) => {
+ const payload = JSON.parse(message);
+
+ if (payload.context.logLevel > 30) {
+ console.log(payload);
+ }
+};
+
+```
+
+<a name="roarr-log-message-format"></a>
+## Log message format
+
+|Property name|Contents|
+|---|---|
+|`context`|Arbitrary, user-provided structured data. See [context property names](#context-property-names).|
+|`message`|User-provided message formatted using [printf](https://en.wikipedia.org/wiki/Printf_format_string).|
+|`sequence`|An incremental ID.|
+|`time`|Unix timestamp in milliseconds.|
+|`version`|Roarr log message format version.|
+
+Example:
+
+```js
+{
+ "context": {
+ "application": "task-runner",
+ "hostname": "curiosity.local",
+ "instanceId": "01BVBK4ZJQ182ZWF6FK4EC8FEY",
+ "taskId": 1
+ },
+ "message": "starting task ID 1",
+ "sequence": 0,
+ "time": 1506776210000,
+ "version": "1.0.0"
+}
+
+```
+
+<a name="roarr-api"></a>
+## API
+
+`roarr` package exports a function with the following API:
+
+```js
+export type LoggerType =
+ (
+ context: MessageContextType,
+ message: string,
+ c?: SprintfArgumentType,
+ d?: SprintfArgumentType,
+ e?: SprintfArgumentType,
+ f?: SprintfArgumentType,
+ g?: SprintfArgumentType,
+ h?: SprintfArgumentType,
+ i?: SprintfArgumentType,
+ k?: SprintfArgumentType
+ ) => void |
+ (
+ message: string,
+ b?: SprintfArgumentType,
+ c?: SprintfArgumentType,
+ d?: SprintfArgumentType,
+ e?: SprintfArgumentType,
+ f?: SprintfArgumentType,
+ g?: SprintfArgumentType,
+ h?: SprintfArgumentType,
+ i?: SprintfArgumentType,
+ k?: SprintfArgumentType
+ ) => void;
+
+```
+
+To put it into words:
+
+* First parameter can be either a string (message) or an object.
+ * If first parameter is an object (context), the second parameter must be a string (message).
+* Arguments after the message parameter are used to enable [printf message formatting](https://en.wikipedia.org/wiki/Printf_format_string).
+ * Printf arguments must be of a primitive type (`string | number | boolean | null`).
+ * There can be up to 9 printf arguments (or 8 if the first parameter is the context object).
+
+Refer to the [Usage documentation](#usage) for common usage examples.
+
+<a name="roarr-api-adopt"></a>
+### <code>adopt</code>
+
+```js
+<T>(routine: () => Promise<T>, context: MessageContextType) => Promise<T>,
+
+```
+
+`adopt` function uses Node.js [`domain`](https://nodejs.org/api/domain.html) to pass-down context properties.
+
+When using `adopt`, context properties will be added to all _all_ Roarr messages within the same asynchronous context, e.g.
+
+```js
+await log.adopt(
+ async () => {
+ log('foo 0');
+
+ await log.adopt(
+ () => {
+ log('foo 1');
+ },
+ {
+ baz: 'baz 1',
+ },
+ );
+ },
+ {
+ bar: 'bar 0',
+ },
+);
+
+// {"context":{"bar":"bar 0"},"message":"foo 0","sequence":0,"time":1531914656076,"version":"1.0.0"}
+// {"context":{"bar":"bar 0","baz":"baz 1"},"message":"foo 1","sequence":1,"time":1531914656077,"version":"1.0.0"}]
+
+```
+
+<a name="roarr-api-adopt-requirements"></a>
+#### Requirements
+
+* `adopt` method only works in Node.js.
+* You must shim Node.js using [`domain-parent`](https://github.com/gajus/domain-parent).
+
+<a name="roarr-api-child"></a>
+### <code>child</code>
+
+```js
+(context: TranslateMessageFunctionType | MessageContextType) => LoggerType,
+
+```
+
+The `child` function has two signatures:
+
+1. Accepts an object.
+2. Accepts a function.
+
+<a name="roarr-api-child-object-parameter"></a>
+#### Object parameter
+
+```js
+(context: MessageContextType) => LoggerType;
+
+```
+
+Creates a child logger appending the provided `context` object to the previous logger context.
+
+Example:
+
+```js
+import log from 'roarr';
+
+const childLog = log.child({
+ foo: 'bar'
+});
+
+log.debug('foo 1');
+childLog.debug('foo 2');
+
+// {"context":{"logLevel":20},"message":"foo 1","sequence":0,"time":1531914529921,"version":"1.0.0"}
+// {"context":{"foo":"bar","logLevel":20},"message":"foo 2","sequence":1,"time":1531914529922,"version":"1.0.0"}
+
+```
+
+Refer to [middlewares](#middlewares) documentation for use case examples.
+
+<a name="roarr-api-child-function-parameter"></a>
+#### Function parameter
+
+```js
+(translateMessage: TranslateMessageFunctionType) => LoggerType;
+
+```
+
+Creates a child logger where every message is intercepted.
+
+Example:
+
+```js
+import log from 'roarr';
+
+const childLog = log.child((message) => {
+ return {
+ ...message,
+ message: message.message.replace('foo', 'bar'),
+ }
+});
+
+log.debug('foo 1');
+childLog.debug('foo 2');
+
+// {"context":{"logLevel":20},"message":"foo 1","sequence":0,"time":1531914656076,"version":"1.0.0"}
+// {"context":{"logLevel":20},"message":"bar 2","sequence":1,"time":1531914656077,"version":"1.0.0"}
+
+```
+
+<a name="roarr-api-getcontext"></a>
+### <code>getContext</code>
+
+Returns the current context.
+
+Example:
+
+```js
+import log from 'roarr';
+
+const childLogger = log.child({
+ foo: 'bar'
+});
+
+childLogger.getContext();
+
+// {foo: 'bar'}
+
+```
+
+<a name="roarr-api-trace"></a>
+### <code>trace</code>
+<a name="roarr-api-debug"></a>
+### <code>debug</code>
+<a name="roarr-api-info"></a>
+### <code>info</code>
+<a name="roarr-api-warn"></a>
+### <code>warn</code>
+<a name="roarr-api-error"></a>
+### <code>error</code>
+<a name="roarr-api-fatal"></a>
+### <code>fatal</code>
+
+Convenience methods for logging a message with `logLevel` context property value set to a numeric value representing the [log level](#log-levels), e.g.
+
+```js
+import log from 'roarr';
+
+log.trace('foo');
+log.debug('foo');
+log.info('foo');
+log.warn('foo');
+log.error('foo');
+log.fatal('foo');
+
+```
+
+Produces output:
+
+```
+{"context":{"logLevel":10},"message":"foo","sequence":0,"time":1506776210000,"version":"1.0.0"}
+{"context":{"logLevel":20},"message":"foo","sequence":1,"time":1506776210000,"version":"1.0.0"}
+{"context":{"logLevel":30},"message":"foo","sequence":2,"time":1506776210000,"version":"1.0.0"}
+{"context":{"logLevel":40},"message":"foo","sequence":3,"time":1506776210000,"version":"1.0.0"}
+{"context":{"logLevel":50},"message":"foo","sequence":4,"time":1506776210000,"version":"1.0.0"}
+{"context":{"logLevel":60},"message":"foo","sequence":5,"time":1506776210000,"version":"1.0.0"}
+
+```
+
+<a name="roarr-middlewares"></a>
+## Middlewares
+
+Roarr logger supports middlewares implemented as [`child`](#child) message translate functions, e.g.
+
+```js
+import log from 'roarr';
+import createSerializeErrorMiddleware from '@roarr/middleware-serialize-error';
+
+const childLog = log.child(createSerializeErrorMiddleware());
+
+const error = new Error('foo');
+
+log.debug({error}, 'bar');
+childLog.debug({error}, 'bar');
+
+// {"context":{"logLevel":20,"error":{}},"message":"bar","sequence":0,"time":1531918373676,"version":"1.0.0"}
+// {"context":{"logLevel":20,"error":{"name":"Error","message":"foo","stack":"[REDACTED]"}},"message":"bar","sequence":1,"time":1531918373678,"version":"1.0.0"}
+
+```
+
+Roarr middlwares enable translation of every bit of information that is used to construct a log message.
+
+The following are the official middlewares:
+
+* [`@roarr/middleware-serialize-error`](https://github.com/gajus/roarr-middleware-serialize-error)
+
+Raise an issue to add your middleware of your own creation.
+
+<a name="roarr-cli-program"></a>
+## CLI program
+
+Roarr CLI program provides ability to filter and pretty-print Roarr logs.
+
+![CLI output demo](./.README/cli-output-demo.png)
+
+CLI program has been moved to a separate package [`@roarr/cli`](https://github.com/gajus/roarr-cli).
+
+```bash
+npm install @roarr/cli -g
+
+```
+
+Explore all CLI commands and options using `roarr --help` or refer to [`@roarr/cli`](https://github.com/gajus/roarr-cli) documentation.
+
+<a name="roarr-transports"></a>
+## Transports
+
+A transport in most logging libraries is something that runs in-process to perform some operation with the finalised log line. For example, a transport might send the log line to a standard syslog server after processing the log line and reformatting it.
+
+Roarr does not support in-process transports.
+
+Roarr does not support in-process transports because Node processes are single threaded processes (ignoring some technical details). Given this restriction, Roarr purposefully offloads handling of the logs to external processes so that the threading capabilities of the OS can be used (or other CPUs).
+
+Depending on your configuration, consider one of the following log transports:
+
+* [Beats](https://www.elastic.co/products/beats) for aggregating at a process level (written in Go).
+* [logagent](https://github.com/sematext/logagent-js) for aggregating at a process level (written in JavaScript).
+* [Fluentd](https://www.fluentd.org/) for aggregating logs at a container orchestration level (e.g. Kubernetes) (written in Ruby).
+
+<a name="roarr-node-js-environment-variables"></a>
+## Node.js environment variables
+
+Use environment variables to control `roarr` behaviour.
+
+|Name|Type|Function|Default|
+|---|---|---|---|
+|`ROARR_LOG`|Boolean|Enables/ disables logging.|`false`|
+|`ROARR_STREAM`|`STDOUT`, `STDERR`|Name of the stream where the logs will be written.|`STDOUT`|
+
+When using `ROARR_STREAM=STDERR`, use [`3>&1 1>&2 2>&3 3>&-`](https://stackoverflow.com/a/2381643/368691) to pipe stderr output.
+
+<a name="roarr-conventions"></a>
+## Conventions
+
+<a name="roarr-conventions-context-property-names"></a>
+### Context property names
+
+Roarr does not have reserved context property names. However, I encourage use of the following conventions:
+
+|Context property name|Use case|
+|---|---|
+|`application`|Name of the application (do not use in code intended for distribution; see `package` property instead).|
+|`logLevel`|A numeric value indicating the [log level](#log-levels). See [API](#api) for the build-in loggers with a pre-set log-level.|
+|`namespace`|Namespace within a package, e.g. function name. Treat the same way that you would construct namespaces when using the [`debug`](https://github.com/visionmedia/debug) package.|
+|`package`|Name of the NPM package.|
+
+The `roarr pretty-print` [CLI program](#cli-program) is using the context property names suggested in the conventions to pretty-print the logs for the developer inspection purposes.
+
+<a name="roarr-conventions-context-property-names-log-levels"></a>
+#### Log levels
+
+The `roarr pretty-print` [CLI program](#cli-program) translates `logLevel` values to the following human-readable names:
+
+|`logLevel`|Human-readable name|
+|---|---|
+|10|TRACE|
+|20|DEBUG|
+|30|INFO|
+|40|WARN|
+|50|ERROR|
+|60|FATAL|
+
+<a name="roarr-conventions-using-roarr-in-an-application"></a>
+### Using Roarr in an application
+
+To avoid code duplication, you can use a singleton pattern to export a logger instance with predefined context properties (e.g. describing the application).
+
+I recommend to create a file `Logger.js` in the project directory. Inside this file create and export a child instance of Roarr with context parameters describing the project and the script instance, e.g.
+
+```js
+/**
+ * @file Example contents of a Logger.js file.
+ */
+
+import log from 'roarr';
+
+const Logger = log.child({
+ // .foo property is going to appear only in the logs that are created using
+ // the current instance of a Roarr logger.
+ foo: 'bar'
+});
+
+export default Logger;
+
+```
+
+Roarr does not have reserved context property names. However, I encourage use of the [conventions](#conventions).
+
+<a name="roarr-recipes"></a>
+## Recipes
+
+<a name="roarr-recipes-logging-errors"></a>
+### Logging errors
+
+This is not specific to Roarr – this suggestion applies to any kind of logging.
+
+If you want to include an instance of [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) in the context, you must serialize the error.
+
+The least-error prone way to do this is to use an existing library, e.g. [`serialize-error`](https://www.npmjs.com/package/serialize-error).
+
+```js
+import log from 'roarr';
+import serializeError from 'serialize-error';
+
+// [..]
+
+send((error, result) => {
+ if (error) {
+ log.error({
+ error: serializeError(error)
+ }, 'message not sent due to a remote error');
+
+ return;
+ }
+
+ // [..]
+});
+
+```
+
+Without using serialisation, your errors will be logged without the error name and stack trace.
+
+<a name="roarr-recipes-using-with-elasticsearch"></a>
+### Using with Elasticsearch
+
+If you are using [Elasticsearch](https://www.elastic.co/products/elasticsearch), you will want to create an [index template](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html).
+
+The following serves as the ground work for the index template. It includes the main Roarr log message properties (context, message, time) and the context properties suggested in the [conventions](#conventions).
+
+```json
+{
+ "mappings": {
+ "log_message": {
+ "_source": {
+ "enabled": true
+ },
+ "dynamic": "strict",
+ "properties": {
+ "context": {
+ "dynamic": true,
+ "properties": {
+ "application": {
+ "type": "keyword"
+ },
+ "hostname": {
+ "type": "keyword"
+ },
+ "instanceId": {
+ "type": "keyword"
+ },
+ "logLevel": {
+ "type": "integer"
+ },
+ "namespace": {
+ "type": "text"
+ },
+ "package": {
+ "type": "text"
+ }
+ }
+ },
+ "message": {
+ "type": "text"
+ },
+ "time": {
+ "format": "epoch_millis",
+ "type": "date"
+ }
+ }
+ }
+ },
+ "template": "logstash-*"
+}
+
+```
+
+<a name="roarr-recipes-using-with-scalyr"></a>
+### Using with Scalyr
+
+If you are using [Scalyr](https://www.scalyr.com/), you will want to create a custom parser `RoarrLogger`:
+
+```js
+{
+ patterns: {
+ tsPattern: "\\w{3},\\s\\d{2}\\s\\w{3}\\s\\d{4}\\s[\\d:]+",
+ tsPattern_8601: "\\d{4}-\\d{2}-\\d{2}T[\\d:.]+Z"
+ }
+ formats: [
+ {format: "${parse=json}$"},
+ {format: ".*\"time\":$timestamp=number$,.*"},
+ {format: "$timestamp=tsPattern$ GMT $detail$"},
+ {format: "$timestamp=tsPattern_8601$ $detail$"}
+ ]
+}
+
+```
+
+and configure the individual programs to use `RoarrLogger`. In case of Kubernetes, this means adding a `log.config.scalyr.com/attributes.parser: RoarrLogger` annotation to the associated deployment, pod or container.
+
+<a name="roarr-recipes-documenting-use-of-roarr"></a>
+### Documenting use of Roarr
+
+If your package is using Roarr, include instructions in `README.md` describing how to enable logging, e.g.
+
+```md
+## Logging
+
+This package is using [`roarr`](https://www.npmjs.com/package/roarr) logger to log the program's state.
+
+Export `ROARR_LOG=true` environment variable to enable log printing to stdout.
+
+Use [`roarr-cli`](https://github.com/gajus/roarr-cli) program to pretty-print the logs.
+
+```
diff --git a/client/node_modules/roarr/dist/constants.js b/client/node_modules/roarr/dist/constants.js
new file mode 100644
index 0000000..799cf55
--- /dev/null
+++ b/client/node_modules/roarr/dist/constants.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.logLevels = void 0;
+const logLevels = {
+ debug: 20,
+ error: 50,
+ fatal: 60,
+ info: 30,
+ trace: 10,
+ warn: 40
+};
+exports.logLevels = logLevels;
+//# sourceMappingURL=constants.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/constants.js.flow b/client/node_modules/roarr/dist/constants.js.flow
new file mode 100644
index 0000000..59116ad
--- /dev/null
+++ b/client/node_modules/roarr/dist/constants.js.flow
@@ -0,0 +1,10 @@
+// @flow
+
+export const logLevels = {
+ debug: 20,
+ error: 50,
+ fatal: 60,
+ info: 30,
+ trace: 10,
+ warn: 40,
+};
diff --git a/client/node_modules/roarr/dist/constants.js.map b/client/node_modules/roarr/dist/constants.js.map
new file mode 100644
index 0000000..dc45d21
--- /dev/null
+++ b/client/node_modules/roarr/dist/constants.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/constants.js"],"names":["logLevels","debug","error","fatal","info","trace","warn"],"mappings":";;;;;;AAEO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,EADgB;AAEvBC,EAAAA,KAAK,EAAE,EAFgB;AAGvBC,EAAAA,KAAK,EAAE,EAHgB;AAIvBC,EAAAA,IAAI,EAAE,EAJiB;AAKvBC,EAAAA,KAAK,EAAE,EALgB;AAMvBC,EAAAA,IAAI,EAAE;AANiB,CAAlB","sourcesContent":["// @flow\n\nexport const logLevels = {\n debug: 20,\n error: 50,\n fatal: 60,\n info: 30,\n trace: 10,\n warn: 40,\n};\n"],"file":"constants.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createLogger.js b/client/node_modules/roarr/dist/factories/createLogger.js
new file mode 100644
index 0000000..3936101
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createLogger.js
@@ -0,0 +1,192 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _detectNode = _interopRequireDefault(require("detect-node"));
+
+var _globalthis = _interopRequireDefault(require("globalthis"));
+
+var _jsonStringifySafe = _interopRequireDefault(require("json-stringify-safe"));
+
+var _sprintfJs = require("sprintf-js");
+
+var _constants = require("../constants");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+const globalThis = (0, _globalthis.default)();
+let domain;
+
+if (_detectNode.default) {
+ // eslint-disable-next-line global-require
+ domain = require('domain');
+}
+
+const getParentDomainContext = () => {
+ if (!domain) {
+ return {};
+ }
+
+ const parentRoarrContexts = [];
+ let currentDomain = process.domain; // $FlowFixMe
+
+ if (!currentDomain || !currentDomain.parentDomain) {
+ return {};
+ }
+
+ while (currentDomain && currentDomain.parentDomain) {
+ currentDomain = currentDomain.parentDomain;
+
+ if (currentDomain.roarr && currentDomain.roarr.context) {
+ parentRoarrContexts.push(currentDomain.roarr.context);
+ }
+ }
+
+ let domainContext = {};
+
+ for (const parentRoarrContext of parentRoarrContexts) {
+ domainContext = _objectSpread(_objectSpread({}, domainContext), parentRoarrContext);
+ }
+
+ return domainContext;
+};
+
+const getFirstParentDomainContext = () => {
+ if (!domain) {
+ return {};
+ }
+
+ let currentDomain = process.domain; // $FlowFixMe
+
+ if (currentDomain && currentDomain.roarr && currentDomain.roarr.context) {
+ return currentDomain.roarr.context;
+ } // $FlowFixMe
+
+
+ if (!currentDomain || !currentDomain.parentDomain) {
+ return {};
+ }
+
+ while (currentDomain && currentDomain.parentDomain) {
+ currentDomain = currentDomain.parentDomain;
+
+ if (currentDomain.roarr && currentDomain.roarr.context) {
+ return currentDomain.roarr.context;
+ }
+ }
+
+ return {};
+};
+
+const createLogger = (onMessage, parentContext) => {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ const log = (a, b, c, d, e, f, g, h, i, k) => {
+ const time = Date.now();
+ const sequence = globalThis.ROARR.sequence++;
+ let context;
+ let message;
+
+ if (typeof a === 'string') {
+ context = _objectSpread(_objectSpread({}, getFirstParentDomainContext()), parentContext || {}); // eslint-disable-next-line id-length, object-property-newline
+
+ const args = _extends({}, {
+ a,
+ b,
+ c,
+ d,
+ e,
+ f,
+ g,
+ h,
+ i,
+ k
+ });
+
+ const values = Object.keys(args).map(key => {
+ return args[key];
+ }); // eslint-disable-next-line unicorn/no-reduce
+
+ const hasOnlyOneParameterValued = 1 === values.reduce((accumulator, value) => {
+ // eslint-disable-next-line no-return-assign, no-param-reassign
+ return accumulator += typeof value === 'undefined' ? 0 : 1;
+ }, 0);
+ message = hasOnlyOneParameterValued ? (0, _sprintfJs.sprintf)('%s', a) : (0, _sprintfJs.sprintf)(a, b, c, d, e, f, g, h, i, k);
+ } else {
+ if (typeof b !== 'string') {
+ throw new TypeError('Message must be a string.');
+ }
+
+ context = JSON.parse((0, _jsonStringifySafe.default)(_objectSpread(_objectSpread(_objectSpread({}, getFirstParentDomainContext()), parentContext || {}), a)));
+ message = (0, _sprintfJs.sprintf)(b, c, d, e, f, g, h, i, k);
+ }
+
+ onMessage({
+ context,
+ message,
+ sequence,
+ time,
+ version: '1.0.0'
+ });
+ };
+
+ log.child = context => {
+ if (typeof context === 'function') {
+ return createLogger(message => {
+ if (typeof context !== 'function') {
+ throw new TypeError('Unexpected state.');
+ }
+
+ onMessage(context(message));
+ }, parentContext);
+ }
+
+ return createLogger(onMessage, _objectSpread(_objectSpread(_objectSpread({}, getFirstParentDomainContext()), parentContext), context));
+ };
+
+ log.getContext = () => {
+ return _objectSpread(_objectSpread({}, getFirstParentDomainContext()), parentContext || {});
+ };
+
+ log.adopt = async (routine, context) => {
+ if (!domain) {
+ return routine();
+ }
+
+ const adoptedDomain = domain.create();
+ return adoptedDomain.run(() => {
+ // $FlowFixMe
+ adoptedDomain.roarr = {
+ context: _objectSpread(_objectSpread({}, getParentDomainContext()), context)
+ };
+ return routine();
+ });
+ };
+
+ for (const logLevel of Object.keys(_constants.logLevels)) {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {
+ return log.child({
+ logLevel: _constants.logLevels[logLevel]
+ })(a, b, c, d, e, f, g, h, i, k);
+ };
+ } // @see https://github.com/facebook/flow/issues/6705
+ // $FlowFixMe
+
+
+ return log;
+};
+
+var _default = createLogger;
+exports.default = _default;
+//# sourceMappingURL=createLogger.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createLogger.js.flow b/client/node_modules/roarr/dist/factories/createLogger.js.flow
new file mode 100644
index 0000000..4cd6c27
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createLogger.js.flow
@@ -0,0 +1,197 @@
+// @flow
+
+import environmentIsNode from 'detect-node';
+import createGlobalThis from 'globalthis';
+import stringify from 'json-stringify-safe';
+import {
+ sprintf,
+} from 'sprintf-js';
+import {
+ logLevels,
+} from '../constants';
+import type {
+ LoggerType,
+ MessageContextType,
+ MessageEventHandlerType,
+ TranslateMessageFunctionType,
+} from '../types';
+
+const globalThis = createGlobalThis();
+
+let domain;
+
+if (environmentIsNode) {
+ // eslint-disable-next-line global-require
+ domain = require('domain');
+}
+
+const getParentDomainContext = () => {
+ if (!domain) {
+ return {};
+ }
+
+ const parentRoarrContexts = [];
+
+ let currentDomain = process.domain;
+
+ // $FlowFixMe
+ if (!currentDomain || !currentDomain.parentDomain) {
+ return {};
+ }
+
+ while (currentDomain && currentDomain.parentDomain) {
+ currentDomain = currentDomain.parentDomain;
+
+ if (currentDomain.roarr && currentDomain.roarr.context) {
+ parentRoarrContexts.push(currentDomain.roarr.context);
+ }
+ }
+
+ let domainContext = {};
+
+ for (const parentRoarrContext of parentRoarrContexts) {
+ domainContext = {
+ ...domainContext,
+ ...parentRoarrContext,
+ };
+ }
+
+ return domainContext;
+};
+
+const getFirstParentDomainContext = () => {
+ if (!domain) {
+ return {};
+ }
+
+ let currentDomain = process.domain;
+
+ // $FlowFixMe
+ if (currentDomain && currentDomain.roarr && currentDomain.roarr.context) {
+ return currentDomain.roarr.context;
+ }
+
+ // $FlowFixMe
+ if (!currentDomain || !currentDomain.parentDomain) {
+ return {};
+ }
+
+ while (currentDomain && currentDomain.parentDomain) {
+ currentDomain = currentDomain.parentDomain;
+
+ if (currentDomain.roarr && currentDomain.roarr.context) {
+ return currentDomain.roarr.context;
+ }
+ }
+
+ return {};
+};
+
+const createLogger = (onMessage: MessageEventHandlerType, parentContext?: MessageContextType): LoggerType => {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ const log = (a, b, c, d, e, f, g, h, i, k) => {
+ const time = Date.now();
+ const sequence = globalThis.ROARR.sequence++;
+
+ let context;
+ let message;
+
+ if (typeof a === 'string') {
+ context = {
+ ...getFirstParentDomainContext(),
+ ...parentContext || {},
+ };
+ // eslint-disable-next-line id-length, object-property-newline
+ const {...args} = {a, b, c, d, e, f, g, h, i, k};
+ const values = Object.keys(args).map((key) => {
+ return args[key];
+ });
+ // eslint-disable-next-line unicorn/no-reduce
+ const hasOnlyOneParameterValued = 1 === values.reduce((accumulator, value) => {
+ // eslint-disable-next-line no-return-assign, no-param-reassign
+ return accumulator += typeof value === 'undefined' ? 0 : 1;
+ }, 0);
+ message = hasOnlyOneParameterValued ? sprintf('%s', a) : sprintf(a, b, c, d, e, f, g, h, i, k);
+ } else {
+ if (typeof b !== 'string') {
+ throw new TypeError('Message must be a string.');
+ }
+
+ context = JSON.parse(stringify({
+ ...getFirstParentDomainContext(),
+ ...parentContext || {},
+ ...a,
+ }));
+
+ message = sprintf(b, c, d, e, f, g, h, i, k);
+ }
+
+ onMessage({
+ context,
+ message,
+ sequence,
+ time,
+ version: '1.0.0',
+ });
+ };
+
+ log.child = (context: TranslateMessageFunctionType | MessageContextType): LoggerType => {
+ if (typeof context === 'function') {
+ return createLogger((message) => {
+ if (typeof context !== 'function') {
+ throw new TypeError('Unexpected state.');
+ }
+ onMessage(context(message));
+ }, parentContext);
+ }
+
+ return createLogger(onMessage, {
+ ...getFirstParentDomainContext(),
+ ...parentContext,
+ ...context,
+ });
+ };
+
+ log.getContext = (): MessageContextType => {
+ return {
+ ...getFirstParentDomainContext(),
+ ...parentContext || {},
+ };
+ };
+
+ log.adopt = async (routine, context) => {
+ if (!domain) {
+ return routine();
+ }
+
+ const adoptedDomain = domain.create();
+
+ return adoptedDomain
+ .run(() => {
+ // $FlowFixMe
+ adoptedDomain.roarr = {
+ context: {
+ ...getParentDomainContext(),
+ ...context,
+ },
+ };
+
+ return routine();
+ });
+ };
+
+ for (const logLevel of Object.keys(logLevels)) {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {
+ return log.child({
+ logLevel: logLevels[logLevel],
+ })(a, b, c, d, e, f, g, h, i, k);
+ };
+ }
+
+ // @see https://github.com/facebook/flow/issues/6705
+ // $FlowFixMe
+ return log;
+};
+
+export default createLogger;
diff --git a/client/node_modules/roarr/dist/factories/createLogger.js.map b/client/node_modules/roarr/dist/factories/createLogger.js.map
new file mode 100644
index 0000000..4c8854c
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createLogger.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createLogger.js"],"names":["globalThis","domain","environmentIsNode","require","getParentDomainContext","parentRoarrContexts","currentDomain","process","parentDomain","roarr","context","push","domainContext","parentRoarrContext","getFirstParentDomainContext","createLogger","onMessage","parentContext","log","a","b","c","d","e","f","g","h","i","k","time","Date","now","sequence","ROARR","message","args","values","Object","keys","map","key","hasOnlyOneParameterValued","reduce","accumulator","value","TypeError","JSON","parse","version","child","getContext","adopt","routine","adoptedDomain","create","run","logLevel","logLevels"],"mappings":"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","sourcesContent":["// @flow\n\nimport environmentIsNode from 'detect-node';\nimport createGlobalThis from 'globalthis';\nimport stringify from 'json-stringify-safe';\nimport {\n sprintf,\n} from 'sprintf-js';\nimport {\n logLevels,\n} from '../constants';\nimport type {\n LoggerType,\n MessageContextType,\n MessageEventHandlerType,\n TranslateMessageFunctionType,\n} from '../types';\n\nconst globalThis = createGlobalThis();\n\nlet domain;\n\nif (environmentIsNode) {\n // eslint-disable-next-line global-require\n domain = require('domain');\n}\n\nconst getParentDomainContext = () => {\n if (!domain) {\n return {};\n }\n\n const parentRoarrContexts = [];\n\n let currentDomain = process.domain;\n\n // $FlowFixMe\n if (!currentDomain || !currentDomain.parentDomain) {\n return {};\n }\n\n while (currentDomain && currentDomain.parentDomain) {\n currentDomain = currentDomain.parentDomain;\n\n if (currentDomain.roarr && currentDomain.roarr.context) {\n parentRoarrContexts.push(currentDomain.roarr.context);\n }\n }\n\n let domainContext = {};\n\n for (const parentRoarrContext of parentRoarrContexts) {\n domainContext = {\n ...domainContext,\n ...parentRoarrContext,\n };\n }\n\n return domainContext;\n};\n\nconst getFirstParentDomainContext = () => {\n if (!domain) {\n return {};\n }\n\n let currentDomain = process.domain;\n\n // $FlowFixMe\n if (currentDomain && currentDomain.roarr && currentDomain.roarr.context) {\n return currentDomain.roarr.context;\n }\n\n // $FlowFixMe\n if (!currentDomain || !currentDomain.parentDomain) {\n return {};\n }\n\n while (currentDomain && currentDomain.parentDomain) {\n currentDomain = currentDomain.parentDomain;\n\n if (currentDomain.roarr && currentDomain.roarr.context) {\n return currentDomain.roarr.context;\n }\n }\n\n return {};\n};\n\nconst createLogger = (onMessage: MessageEventHandlerType, parentContext?: MessageContextType): LoggerType => {\n // eslint-disable-next-line id-length, unicorn/prevent-abbreviations\n const log = (a, b, c, d, e, f, g, h, i, k) => {\n const time = Date.now();\n const sequence = globalThis.ROARR.sequence++;\n\n let context;\n let message;\n\n if (typeof a === 'string') {\n context = {\n ...getFirstParentDomainContext(),\n ...parentContext || {},\n };\n // eslint-disable-next-line id-length, object-property-newline\n const {...args} = {a, b, c, d, e, f, g, h, i, k};\n const values = Object.keys(args).map((key) => {\n return args[key];\n });\n // eslint-disable-next-line unicorn/no-reduce\n const hasOnlyOneParameterValued = 1 === values.reduce((accumulator, value) => {\n // eslint-disable-next-line no-return-assign, no-param-reassign\n return accumulator += typeof value === 'undefined' ? 0 : 1;\n }, 0);\n message = hasOnlyOneParameterValued ? sprintf('%s', a) : sprintf(a, b, c, d, e, f, g, h, i, k);\n } else {\n if (typeof b !== 'string') {\n throw new TypeError('Message must be a string.');\n }\n\n context = JSON.parse(stringify({\n ...getFirstParentDomainContext(),\n ...parentContext || {},\n ...a,\n }));\n\n message = sprintf(b, c, d, e, f, g, h, i, k);\n }\n\n onMessage({\n context,\n message,\n sequence,\n time,\n version: '1.0.0',\n });\n };\n\n log.child = (context: TranslateMessageFunctionType | MessageContextType): LoggerType => {\n if (typeof context === 'function') {\n return createLogger((message) => {\n if (typeof context !== 'function') {\n throw new TypeError('Unexpected state.');\n }\n onMessage(context(message));\n }, parentContext);\n }\n\n return createLogger(onMessage, {\n ...getFirstParentDomainContext(),\n ...parentContext,\n ...context,\n });\n };\n\n log.getContext = (): MessageContextType => {\n return {\n ...getFirstParentDomainContext(),\n ...parentContext || {},\n };\n };\n\n log.adopt = async (routine, context) => {\n if (!domain) {\n return routine();\n }\n\n const adoptedDomain = domain.create();\n\n return adoptedDomain\n .run(() => {\n // $FlowFixMe\n adoptedDomain.roarr = {\n context: {\n ...getParentDomainContext(),\n ...context,\n },\n };\n\n return routine();\n });\n };\n\n for (const logLevel of Object.keys(logLevels)) {\n // eslint-disable-next-line id-length, unicorn/prevent-abbreviations\n log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {\n return log.child({\n logLevel: logLevels[logLevel],\n })(a, b, c, d, e, f, g, h, i, k);\n };\n }\n\n // @see https://github.com/facebook/flow/issues/6705\n // $FlowFixMe\n return log;\n};\n\nexport default createLogger;\n"],"file":"createLogger.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createMockLogger.js b/client/node_modules/roarr/dist/factories/createMockLogger.js
new file mode 100644
index 0000000..b25a37b
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createMockLogger.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _constants = require("../constants");
+
+const createMockLogger = (onMessage, parentContext) => {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations, no-unused-vars
+ const log = (a, b, c, d, e, f, g, h, i, k) => {//
+ };
+
+ log.adopt = async routine => {
+ return routine();
+ }; // eslint-disable-next-line no-unused-vars
+
+
+ log.child = context => {
+ return createMockLogger(onMessage, parentContext);
+ };
+
+ log.getContext = () => {
+ return {};
+ };
+
+ for (const logLevel of Object.keys(_constants.logLevels)) {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {
+ return log.child({
+ logLevel: _constants.logLevels[logLevel]
+ })(a, b, c, d, e, f, g, h, i, k);
+ };
+ } // @see https://github.com/facebook/flow/issues/6705
+ // $FlowFixMe
+
+
+ return log;
+};
+
+var _default = createMockLogger;
+exports.default = _default;
+//# sourceMappingURL=createMockLogger.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createMockLogger.js.flow b/client/node_modules/roarr/dist/factories/createMockLogger.js.flow
new file mode 100644
index 0000000..37e0912
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createMockLogger.js.flow
@@ -0,0 +1,46 @@
+// @flow
+
+import {
+ logLevels,
+} from '../constants';
+import type {
+ LoggerType,
+ MessageContextType,
+ MessageEventHandlerType,
+ TranslateMessageFunctionType,
+} from '../types';
+
+const createMockLogger = (onMessage: MessageEventHandlerType, parentContext?: MessageContextType): LoggerType => {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations, no-unused-vars
+ const log = (a, b, c, d, e, f, g, h, i, k) => {
+ //
+ };
+
+ log.adopt = async (routine) => {
+ return routine();
+ };
+
+ // eslint-disable-next-line no-unused-vars
+ log.child = (context: TranslateMessageFunctionType | MessageContextType): LoggerType => {
+ return createMockLogger(onMessage, parentContext);
+ };
+
+ log.getContext = (): MessageContextType => {
+ return {};
+ };
+
+ for (const logLevel of Object.keys(logLevels)) {
+ // eslint-disable-next-line id-length, unicorn/prevent-abbreviations
+ log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {
+ return log.child({
+ logLevel: logLevels[logLevel],
+ })(a, b, c, d, e, f, g, h, i, k);
+ };
+ }
+
+ // @see https://github.com/facebook/flow/issues/6705
+ // $FlowFixMe
+ return log;
+};
+
+export default createMockLogger;
diff --git a/client/node_modules/roarr/dist/factories/createMockLogger.js.map b/client/node_modules/roarr/dist/factories/createMockLogger.js.map
new file mode 100644
index 0000000..a57fe4f
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createMockLogger.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createMockLogger.js"],"names":["createMockLogger","onMessage","parentContext","log","a","b","c","d","e","f","g","h","i","k","adopt","routine","child","context","getContext","logLevel","Object","keys","logLevels"],"mappings":";;;;;;;AAEA;;AAUA,MAAMA,gBAAgB,GAAG,CAACC,SAAD,EAAqCC,aAArC,KAAwF;AAC/G;AACA,QAAMC,GAAG,GAAG,CAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BC,CAA5B,KAAkC,CAC5C;AACD,GAFD;;AAIAV,EAAAA,GAAG,CAACW,KAAJ,GAAY,MAAOC,OAAP,IAAmB;AAC7B,WAAOA,OAAO,EAAd;AACD,GAFD,CAN+G,CAU/G;;;AACAZ,EAAAA,GAAG,CAACa,KAAJ,GAAaC,OAAD,IAA4E;AACtF,WAAOjB,gBAAgB,CAACC,SAAD,EAAYC,aAAZ,CAAvB;AACD,GAFD;;AAIAC,EAAAA,GAAG,CAACe,UAAJ,GAAiB,MAA0B;AACzC,WAAO,EAAP;AACD,GAFD;;AAIA,OAAK,MAAMC,QAAX,IAAuBC,MAAM,CAACC,IAAP,CAAYC,oBAAZ,CAAvB,EAA+C;AAC7C;AACAnB,IAAAA,GAAG,CAACgB,QAAD,CAAH,GAAgB,CAACf,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BC,CAA5B,KAAkC;AAChD,aAAOV,GAAG,CAACa,KAAJ,CAAU;AACfG,QAAAA,QAAQ,EAAEG,qBAAUH,QAAV;AADK,OAAV,EAEJf,CAFI,EAEDC,CAFC,EAEEC,CAFF,EAEKC,CAFL,EAEQC,CAFR,EAEWC,CAFX,EAEcC,CAFd,EAEiBC,CAFjB,EAEoBC,CAFpB,EAEuBC,CAFvB,CAAP;AAGD,KAJD;AAKD,GA1B8G,CA4B/G;AACA;;;AACA,SAAOV,GAAP;AACD,CA/BD;;eAiCeH,gB","sourcesContent":["// @flow\n\nimport {\n logLevels,\n} from '../constants';\nimport type {\n LoggerType,\n MessageContextType,\n MessageEventHandlerType,\n TranslateMessageFunctionType,\n} from '../types';\n\nconst createMockLogger = (onMessage: MessageEventHandlerType, parentContext?: MessageContextType): LoggerType => {\n // eslint-disable-next-line id-length, unicorn/prevent-abbreviations, no-unused-vars\n const log = (a, b, c, d, e, f, g, h, i, k) => {\n //\n };\n\n log.adopt = async (routine) => {\n return routine();\n };\n\n // eslint-disable-next-line no-unused-vars\n log.child = (context: TranslateMessageFunctionType | MessageContextType): LoggerType => {\n return createMockLogger(onMessage, parentContext);\n };\n\n log.getContext = (): MessageContextType => {\n return {};\n };\n\n for (const logLevel of Object.keys(logLevels)) {\n // eslint-disable-next-line id-length, unicorn/prevent-abbreviations\n log[logLevel] = (a, b, c, d, e, f, g, h, i, k) => {\n return log.child({\n logLevel: logLevels[logLevel],\n })(a, b, c, d, e, f, g, h, i, k);\n };\n }\n\n // @see https://github.com/facebook/flow/issues/6705\n // $FlowFixMe\n return log;\n};\n\nexport default createMockLogger;\n"],"file":"createMockLogger.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createNodeWriter.js b/client/node_modules/roarr/dist/factories/createNodeWriter.js
new file mode 100644
index 0000000..731020a
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createNodeWriter.js
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+const createBlockingWriter = stream => {
+ return {
+ write: message => {
+ stream.write(message + '\n');
+ }
+ };
+};
+
+const createNodeWriter = () => {
+ // eslint-disable-next-line no-process-env
+ const targetStream = (process.env.ROARR_STREAM || 'STDOUT').toUpperCase();
+ const stream = targetStream.toUpperCase() === 'STDOUT' ? process.stdout : process.stderr;
+ return createBlockingWriter(stream);
+};
+
+var _default = createNodeWriter;
+exports.default = _default;
+//# sourceMappingURL=createNodeWriter.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createNodeWriter.js.flow b/client/node_modules/roarr/dist/factories/createNodeWriter.js.flow
new file mode 100644
index 0000000..b03d9c3
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createNodeWriter.js.flow
@@ -0,0 +1,22 @@
+// @flow
+
+import type {
+ WriterType,
+} from '../types';
+
+const createBlockingWriter = (stream: stream$Writable): WriterType => {
+ return {
+ write: (message: string) => {
+ stream.write(message + '\n');
+ },
+ };
+};
+
+export default (): WriterType => {
+ // eslint-disable-next-line no-process-env
+ const targetStream = (process.env.ROARR_STREAM || 'STDOUT').toUpperCase();
+
+ const stream = targetStream.toUpperCase() === 'STDOUT' ? process.stdout : process.stderr;
+
+ return createBlockingWriter(stream);
+};
diff --git a/client/node_modules/roarr/dist/factories/createNodeWriter.js.map b/client/node_modules/roarr/dist/factories/createNodeWriter.js.map
new file mode 100644
index 0000000..5f54e92
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createNodeWriter.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createNodeWriter.js"],"names":["createBlockingWriter","stream","write","message","targetStream","process","env","ROARR_STREAM","toUpperCase","stdout","stderr"],"mappings":";;;;;;;AAMA,MAAMA,oBAAoB,GAAIC,MAAD,IAAyC;AACpE,SAAO;AACLC,IAAAA,KAAK,EAAGC,OAAD,IAAqB;AAC1BF,MAAAA,MAAM,CAACC,KAAP,CAAaC,OAAO,GAAG,IAAvB;AACD;AAHI,GAAP;AAKD,CAND;;+BAQiC;AAC/B;AACA,QAAMC,YAAY,GAAG,CAACC,OAAO,CAACC,GAAR,CAAYC,YAAZ,IAA4B,QAA7B,EAAuCC,WAAvC,EAArB;AAEA,QAAMP,MAAM,GAAGG,YAAY,CAACI,WAAb,OAA+B,QAA/B,GAA0CH,OAAO,CAACI,MAAlD,GAA2DJ,OAAO,CAACK,MAAlF;AAEA,SAAOV,oBAAoB,CAACC,MAAD,CAA3B;AACD,C","sourcesContent":["// @flow\n\nimport type {\n WriterType,\n} from '../types';\n\nconst createBlockingWriter = (stream: stream$Writable): WriterType => {\n return {\n write: (message: string) => {\n stream.write(message + '\\n');\n },\n };\n};\n\nexport default (): WriterType => {\n // eslint-disable-next-line no-process-env\n const targetStream = (process.env.ROARR_STREAM || 'STDOUT').toUpperCase();\n\n const stream = targetStream.toUpperCase() === 'STDOUT' ? process.stdout : process.stderr;\n\n return createBlockingWriter(stream);\n};\n"],"file":"createNodeWriter.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js
new file mode 100644
index 0000000..7cc70bd
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _detectNode = _interopRequireDefault(require("detect-node"));
+
+var _semverCompare = _interopRequireDefault(require("semver-compare"));
+
+var _package = require("../../package.json");
+
+var _createNodeWriter = _interopRequireDefault(require("./createNodeWriter"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+// eslint-disable-next-line flowtype/no-weak-types
+const createRoarrInititialGlobalState = currentState => {
+ const versions = (currentState.versions || []).concat();
+ versions.sort(_semverCompare.default);
+ const currentIsLatestVersion = !versions.length || (0, _semverCompare.default)(_package.version, versions[versions.length - 1]) === 1;
+
+ if (!versions.includes(_package.version)) {
+ versions.push(_package.version);
+ }
+
+ versions.sort(_semverCompare.default);
+
+ let newState = _objectSpread(_objectSpread({
+ sequence: 0
+ }, currentState), {}, {
+ versions
+ });
+
+ if (_detectNode.default) {
+ if (currentIsLatestVersion || !newState.write) {
+ newState = _objectSpread(_objectSpread({}, newState), (0, _createNodeWriter.default)());
+ }
+ }
+
+ return newState;
+};
+
+var _default = createRoarrInititialGlobalState;
+exports.default = _default;
+//# sourceMappingURL=createRoarrInititialGlobalState.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.flow b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.flow
new file mode 100644
index 0000000..15a1605
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.flow
@@ -0,0 +1,43 @@
+// @flow
+
+import environmentIsNode from 'detect-node';
+import cmp from 'semver-compare';
+import {
+ version,
+} from '../../package.json';
+import type {
+ RoarrGlobalStateType,
+} from '../types';
+import createNodeWriter from './createNodeWriter';
+
+// eslint-disable-next-line flowtype/no-weak-types
+export default (currentState: Object): RoarrGlobalStateType => {
+ const versions = (currentState.versions || []).concat();
+
+ versions.sort(cmp);
+
+ const currentIsLatestVersion = !versions.length || cmp(version, versions[versions.length - 1]) === 1;
+
+ if (!versions.includes(version)) {
+ versions.push(version);
+ }
+
+ versions.sort(cmp);
+
+ let newState = {
+ sequence: 0,
+ ...currentState,
+ versions,
+ };
+
+ if (environmentIsNode) {
+ if (currentIsLatestVersion || !newState.write) {
+ newState = {
+ ...newState,
+ ...createNodeWriter(),
+ };
+ }
+ }
+
+ return newState;
+};
diff --git a/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.map b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.map
new file mode 100644
index 0000000..7c221b6
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/createRoarrInititialGlobalState.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/createRoarrInititialGlobalState.js"],"names":["currentState","versions","concat","sort","cmp","currentIsLatestVersion","length","version","includes","push","newState","sequence","environmentIsNode","write"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AAMA;;;;;;;;;;AAEA;wCACgBA,Y,IAA+C;AAC7D,QAAMC,QAAQ,GAAG,CAACD,YAAY,CAACC,QAAb,IAAyB,EAA1B,EAA8BC,MAA9B,EAAjB;AAEAD,EAAAA,QAAQ,CAACE,IAAT,CAAcC,sBAAd;AAEA,QAAMC,sBAAsB,GAAG,CAACJ,QAAQ,CAACK,MAAV,IAAoB,4BAAIC,gBAAJ,EAAaN,QAAQ,CAACA,QAAQ,CAACK,MAAT,GAAkB,CAAnB,CAArB,MAAgD,CAAnG;;AAEA,MAAI,CAACL,QAAQ,CAACO,QAAT,CAAkBD,gBAAlB,CAAL,EAAiC;AAC/BN,IAAAA,QAAQ,CAACQ,IAAT,CAAcF,gBAAd;AACD;;AAEDN,EAAAA,QAAQ,CAACE,IAAT,CAAcC,sBAAd;;AAEA,MAAIM,QAAQ;AACVC,IAAAA,QAAQ,EAAE;AADA,KAEPX,YAFO;AAGVC,IAAAA;AAHU,IAAZ;;AAMA,MAAIW,mBAAJ,EAAuB;AACrB,QAAIP,sBAAsB,IAAI,CAACK,QAAQ,CAACG,KAAxC,EAA+C;AAC7CH,MAAAA,QAAQ,mCACHA,QADG,GAEH,gCAFG,CAAR;AAID;AACF;;AAED,SAAOA,QAAP;AACD,C","sourcesContent":["// @flow\n\nimport environmentIsNode from 'detect-node';\nimport cmp from 'semver-compare';\nimport {\n version,\n} from '../../package.json';\nimport type {\n RoarrGlobalStateType,\n} from '../types';\nimport createNodeWriter from './createNodeWriter';\n\n// eslint-disable-next-line flowtype/no-weak-types\nexport default (currentState: Object): RoarrGlobalStateType => {\n const versions = (currentState.versions || []).concat();\n\n versions.sort(cmp);\n\n const currentIsLatestVersion = !versions.length || cmp(version, versions[versions.length - 1]) === 1;\n\n if (!versions.includes(version)) {\n versions.push(version);\n }\n\n versions.sort(cmp);\n\n let newState = {\n sequence: 0,\n ...currentState,\n versions,\n };\n\n if (environmentIsNode) {\n if (currentIsLatestVersion || !newState.write) {\n newState = {\n ...newState,\n ...createNodeWriter(),\n };\n }\n }\n\n return newState;\n};\n"],"file":"createRoarrInititialGlobalState.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/index.js b/client/node_modules/roarr/dist/factories/index.js
new file mode 100644
index 0000000..97e8167
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/index.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "createLogger", {
+ enumerable: true,
+ get: function () {
+ return _createLogger.default;
+ }
+});
+Object.defineProperty(exports, "createMockLogger", {
+ enumerable: true,
+ get: function () {
+ return _createMockLogger.default;
+ }
+});
+Object.defineProperty(exports, "createRoarrInititialGlobalState", {
+ enumerable: true,
+ get: function () {
+ return _createRoarrInititialGlobalState.default;
+ }
+});
+
+var _createLogger = _interopRequireDefault(require("./createLogger"));
+
+var _createMockLogger = _interopRequireDefault(require("./createMockLogger"));
+
+var _createRoarrInititialGlobalState = _interopRequireDefault(require("./createRoarrInititialGlobalState"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/factories/index.js.flow b/client/node_modules/roarr/dist/factories/index.js.flow
new file mode 100644
index 0000000..b4881ce
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/index.js.flow
@@ -0,0 +1,11 @@
+// @flow
+
+export {
+ default as createLogger,
+} from './createLogger';
+export {
+ default as createMockLogger,
+} from './createMockLogger';
+export {
+ default as createRoarrInititialGlobalState,
+} from './createRoarrInititialGlobalState';
diff --git a/client/node_modules/roarr/dist/factories/index.js.map b/client/node_modules/roarr/dist/factories/index.js.map
new file mode 100644
index 0000000..e023a47
--- /dev/null
+++ b/client/node_modules/roarr/dist/factories/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/factories/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAGA;;AAGA","sourcesContent":["// @flow\n\nexport {\n default as createLogger,\n} from './createLogger';\nexport {\n default as createMockLogger,\n} from './createMockLogger';\nexport {\n default as createRoarrInititialGlobalState,\n} from './createRoarrInititialGlobalState';\n"],"file":"index.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/log.js b/client/node_modules/roarr/dist/log.js
new file mode 100644
index 0000000..23036e3
--- /dev/null
+++ b/client/node_modules/roarr/dist/log.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.ROARR = void 0;
+
+var _boolean = require("boolean");
+
+var _detectNode = _interopRequireDefault(require("detect-node"));
+
+var _globalthis = _interopRequireDefault(require("globalthis"));
+
+var _factories = require("./factories");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const globalThis = (0, _globalthis.default)();
+const ROARR = globalThis.ROARR = (0, _factories.createRoarrInititialGlobalState)(globalThis.ROARR || {});
+exports.ROARR = ROARR;
+let logFactory = _factories.createLogger;
+
+if (_detectNode.default) {
+ // eslint-disable-next-line no-process-env
+ const enabled = (0, _boolean.boolean)(process.env.ROARR_LOG || '');
+
+ if (!enabled) {
+ logFactory = _factories.createMockLogger;
+ }
+}
+
+var _default = logFactory(message => {
+ if (ROARR.write) {
+ // Stringify message as soon as it is received to prevent
+ // properties of the context from being modified by reference.
+ const body = JSON.stringify(message);
+ ROARR.write(body);
+ }
+});
+
+exports.default = _default;
+//# sourceMappingURL=log.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/log.js.flow b/client/node_modules/roarr/dist/log.js.flow
new file mode 100644
index 0000000..803ccfc
--- /dev/null
+++ b/client/node_modules/roarr/dist/log.js.flow
@@ -0,0 +1,47 @@
+// @flow
+
+import {
+ boolean,
+} from 'boolean';
+import environmentIsNode from 'detect-node';
+import createGlobalThis from 'globalthis';
+import {
+ createLogger,
+ createMockLogger,
+ createRoarrInititialGlobalState,
+} from './factories';
+
+const globalThis = createGlobalThis();
+
+const ROARR = globalThis.ROARR = createRoarrInititialGlobalState(globalThis.ROARR || {});
+
+let logFactory = createLogger;
+
+if (environmentIsNode) {
+ // eslint-disable-next-line no-process-env
+ const enabled = boolean(process.env.ROARR_LOG || '');
+
+ if (!enabled) {
+ logFactory = createMockLogger;
+ }
+}
+
+export type {
+ LoggerType,
+ MessageType,
+ TranslateMessageFunctionType,
+} from './types';
+
+export {
+ ROARR,
+};
+
+export default logFactory((message) => {
+ if (ROARR.write) {
+ // Stringify message as soon as it is received to prevent
+ // properties of the context from being modified by reference.
+ const body = JSON.stringify(message);
+
+ ROARR.write(body);
+ }
+});
diff --git a/client/node_modules/roarr/dist/log.js.map b/client/node_modules/roarr/dist/log.js.map
new file mode 100644
index 0000000..b72f603
--- /dev/null
+++ b/client/node_modules/roarr/dist/log.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/log.js"],"names":["globalThis","ROARR","logFactory","createLogger","environmentIsNode","enabled","process","env","ROARR_LOG","createMockLogger","message","write","body","JSON","stringify"],"mappings":";;;;;;;AAEA;;AAGA;;AACA;;AACA;;;;AAMA,MAAMA,UAAU,GAAG,0BAAnB;AAEA,MAAMC,KAAK,GAAGD,UAAU,CAACC,KAAX,GAAmB,gDAAgCD,UAAU,CAACC,KAAX,IAAoB,EAApD,CAAjC;;AAEA,IAAIC,UAAU,GAAGC,uBAAjB;;AAEA,IAAIC,mBAAJ,EAAuB;AACrB;AACA,QAAMC,OAAO,GAAG,sBAAQC,OAAO,CAACC,GAAR,CAAYC,SAAZ,IAAyB,EAAjC,CAAhB;;AAEA,MAAI,CAACH,OAAL,EAAc;AACZH,IAAAA,UAAU,GAAGO,2BAAb;AACD;AACF;;eAYcP,UAAU,CAAEQ,OAAD,IAAa;AACrC,MAAIT,KAAK,CAACU,KAAV,EAAiB;AACf;AACA;AACA,UAAMC,IAAI,GAAGC,IAAI,CAACC,SAAL,CAAeJ,OAAf,CAAb;AAEAT,IAAAA,KAAK,CAACU,KAAN,CAAYC,IAAZ;AACD;AACF,CARwB,C","sourcesContent":["// @flow\n\nimport {\n boolean,\n} from 'boolean';\nimport environmentIsNode from 'detect-node';\nimport createGlobalThis from 'globalthis';\nimport {\n createLogger,\n createMockLogger,\n createRoarrInititialGlobalState,\n} from './factories';\n\nconst globalThis = createGlobalThis();\n\nconst ROARR = globalThis.ROARR = createRoarrInititialGlobalState(globalThis.ROARR || {});\n\nlet logFactory = createLogger;\n\nif (environmentIsNode) {\n // eslint-disable-next-line no-process-env\n const enabled = boolean(process.env.ROARR_LOG || '');\n\n if (!enabled) {\n logFactory = createMockLogger;\n }\n}\n\nexport type {\n LoggerType,\n MessageType,\n TranslateMessageFunctionType,\n} from './types';\n\nexport {\n ROARR,\n};\n\nexport default logFactory((message) => {\n if (ROARR.write) {\n // Stringify message as soon as it is received to prevent\n // properties of the context from being modified by reference.\n const body = JSON.stringify(message);\n\n ROARR.write(body);\n }\n});\n"],"file":"log.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/types.js b/client/node_modules/roarr/dist/types.js
new file mode 100644
index 0000000..2f0e414
--- /dev/null
+++ b/client/node_modules/roarr/dist/types.js
@@ -0,0 +1,2 @@
+"use strict";
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/client/node_modules/roarr/dist/types.js.flow b/client/node_modules/roarr/dist/types.js.flow
new file mode 100644
index 0000000..18be149
--- /dev/null
+++ b/client/node_modules/roarr/dist/types.js.flow
@@ -0,0 +1,81 @@
+// @flow
+
+/* eslint-disable import/exports-last, flowtype/require-types-at-top */
+
+export type SerializableValueType = string | number | boolean | null | {+[key: string]: SerializableValueType, ...} | $ReadOnlyArray<SerializableValueType>;
+
+export type SerializableObjectType = {
+ +[key: string]: SerializableValueType,
+ ...
+};
+
+export type WriterType = {|
+ +write: (message: string) => void,
+|};
+
+export type RoarrGlobalStateType = {|
+ sequence: number,
+ versions: $ReadOnlyArray<string>,
+ ...WriterType,
+|};
+
+export type SprintfArgumentType = string | number | boolean | null;
+
+// eslint-disable-next-line flowtype/no-weak-types
+export type MessageContextType = Object;
+
+export type MessageType = {|
+ +context: MessageContextType,
+ +message: string,
+ +sequence: number,
+ +time: number,
+ +version: string,
+|};
+
+export type TranslateMessageFunctionType = (message: MessageType) => MessageType;
+
+declare function Logger (
+ context: MessageContextType,
+ message: string,
+ c?: SprintfArgumentType,
+ d?: SprintfArgumentType,
+ e?: SprintfArgumentType,
+ f?: SprintfArgumentType,
+ g?: SprintfArgumentType,
+ h?: SprintfArgumentType,
+ i?: SprintfArgumentType,
+ k?: SprintfArgumentType
+): void;
+
+// eslint-disable-next-line no-redeclare
+declare function Logger (
+ message: string,
+ b?: SprintfArgumentType,
+ c?: SprintfArgumentType,
+ d?: SprintfArgumentType,
+ e?: SprintfArgumentType,
+ f?: SprintfArgumentType,
+ g?: SprintfArgumentType,
+ h?: SprintfArgumentType,
+ i?: SprintfArgumentType,
+ k?: SprintfArgumentType
+): void;
+
+/**
+ * see https://twitter.com/kuizinas/status/914139352908943360
+ */
+export type LoggerType = {|
+ // eslint-disable-next-line no-undef
+ [[call]]: typeof Logger,
+ +adopt: <T>(routine: () => Promise<T>, context: MessageContextType) => Promise<T>,
+ +child: (context: TranslateMessageFunctionType | MessageContextType) => LoggerType,
+ +debug: typeof Logger,
+ +error: typeof Logger,
+ +fatal: typeof Logger,
+ +getContext: () => MessageContextType,
+ +info: typeof Logger,
+ +trace: typeof Logger,
+ +warn: typeof Logger,
+|};
+
+export type MessageEventHandlerType = (message: MessageType) => void;
diff --git a/client/node_modules/roarr/dist/types.js.map b/client/node_modules/roarr/dist/types.js.map
new file mode 100644
index 0000000..036ac15
--- /dev/null
+++ b/client/node_modules/roarr/dist/types.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"} \ No newline at end of file
diff --git a/client/node_modules/roarr/package.json b/client/node_modules/roarr/package.json
new file mode 100644
index 0000000..0bfd49e
--- /dev/null
+++ b/client/node_modules/roarr/package.json
@@ -0,0 +1,93 @@
+{
+ "author": {
+ "email": "gajus@gajus.com",
+ "name": "Gajus Kuizinas",
+ "url": "http://gajus.com"
+ },
+ "ava": {
+ "babel": {
+ "compileAsTests": [
+ "test/helpers/**/*"
+ ]
+ },
+ "files": [
+ "test/roarr/**/*"
+ ],
+ "require": [
+ "@babel/register"
+ ]
+ },
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "description": "JSON logger for Node.js and browser.",
+ "devDependencies": {
+ "@ava/babel": "^1.0.1",
+ "@babel/cli": "^7.11.6",
+ "@babel/core": "^7.11.6",
+ "@babel/node": "^7.10.5",
+ "@babel/plugin-transform-flow-strip-types": "^7.10.4",
+ "@babel/preset-env": "^7.11.5",
+ "@babel/register": "^7.11.5",
+ "ava": "^3.12.1",
+ "babel-plugin-istanbul": "^6.0.0",
+ "babel-plugin-transform-export-default-name": "^2.0.4",
+ "coveralls": "^3.1.0",
+ "domain-parent": "^1.0.0",
+ "eslint": "^7.9.0",
+ "eslint-config-canonical": "^24.1.1",
+ "flow-bin": "^0.133.0",
+ "flow-copy-source": "^2.0.9",
+ "gitdown": "^3.1.3",
+ "husky": "^4.3.0",
+ "nyc": "^15.1.0",
+ "semantic-release": "^17.1.1"
+ },
+ "engines": {
+ "node": ">=8.0"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "npm run lint && npm run test && npm run build",
+ "pre-push": "gitdown ./.README/README.md --output-file ./README.md --check"
+ }
+ },
+ "keywords": [
+ "log",
+ "logger",
+ "json"
+ ],
+ "main": "./dist/log.js",
+ "name": "roarr",
+ "nyc": {
+ "include": [
+ "src/**/*.js"
+ ],
+ "instrument": false,
+ "reporter": [
+ "text-lcov"
+ ],
+ "require": [
+ "@babel/register"
+ ],
+ "sourceMap": false
+ },
+ "license": "BSD-3-Clause",
+ "repository": {
+ "type": "git",
+ "url": "git@github.com:gajus/roarr.git"
+ },
+ "scripts": {
+ "build": "rm -fr ./dist && NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps && flow-copy-source src dist",
+ "create-readme": "gitdown ./.README/README.md --output-file ./README.md",
+ "dev": "NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps --watch",
+ "lint": "eslint ./src ./test && flow",
+ "test": "NODE_ENV=test ava --serial --verbose"
+ },
+ "version": "2.15.4"
+}
diff --git a/client/node_modules/semver-compare/.travis.yml b/client/node_modules/semver-compare/.travis.yml
new file mode 100644
index 0000000..8d4715c
--- /dev/null
+++ b/client/node_modules/semver-compare/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
+before_install:
+ - npm install -g npm
diff --git a/client/node_modules/semver-compare/LICENSE b/client/node_modules/semver-compare/LICENSE
new file mode 100644
index 0000000..ee27ba4
--- /dev/null
+++ b/client/node_modules/semver-compare/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/semver-compare/example/cmp.js b/client/node_modules/semver-compare/example/cmp.js
new file mode 100644
index 0000000..458eae1
--- /dev/null
+++ b/client/node_modules/semver-compare/example/cmp.js
@@ -0,0 +1,13 @@
+var cmp = require('../');
+var versions = [
+ '1.2.3',
+ '4.11.6',
+ '4.2.0',
+ '1.5.19',
+ '1.5.5',
+ '4.1.3',
+ '2.3.1',
+ '10.5.5',
+ '11.3.0'
+];
+console.log(versions.sort(cmp).join('\n'));
diff --git a/client/node_modules/semver-compare/example/lex.js b/client/node_modules/semver-compare/example/lex.js
new file mode 100644
index 0000000..c04d9f6
--- /dev/null
+++ b/client/node_modules/semver-compare/example/lex.js
@@ -0,0 +1,12 @@
+var versions = [
+ '1.2.3',
+ '4.11.6',
+ '4.2.0',
+ '1.5.19',
+ '1.5.5',
+ '4.1.3',
+ '2.3.1',
+ '10.5.5',
+ '11.3.0'
+];
+console.log(versions.sort().join('\n'));
diff --git a/client/node_modules/semver-compare/index.js b/client/node_modules/semver-compare/index.js
new file mode 100644
index 0000000..cec978d
--- /dev/null
+++ b/client/node_modules/semver-compare/index.js
@@ -0,0 +1,13 @@
+module.exports = function cmp (a, b) {
+ var pa = a.split('.');
+ var pb = b.split('.');
+ for (var i = 0; i < 3; i++) {
+ var na = Number(pa[i]);
+ var nb = Number(pb[i]);
+ if (na > nb) return 1;
+ if (nb > na) return -1;
+ if (!isNaN(na) && isNaN(nb)) return 1;
+ if (isNaN(na) && !isNaN(nb)) return -1;
+ }
+ return 0;
+};
diff --git a/client/node_modules/semver-compare/package.json b/client/node_modules/semver-compare/package.json
new file mode 100644
index 0000000..0b111ff
--- /dev/null
+++ b/client/node_modules/semver-compare/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "semver-compare",
+ "version": "1.0.0",
+ "description": "compare two semver version strings, returning -1, 0, or 1",
+ "main": "index.js",
+ "dependencies": {},
+ "devDependencies": {
+ "tape": "^3.0.0"
+ },
+ "scripts": {
+ "test": "tape test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/semver-compare.git"
+ },
+ "homepage": "https://github.com/substack/semver-compare",
+ "keywords": [
+ "semver",
+ "compare",
+ "cmp",
+ "comparison",
+ "sort"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT"
+}
diff --git a/client/node_modules/semver-compare/readme.markdown b/client/node_modules/semver-compare/readme.markdown
new file mode 100644
index 0000000..927a369
--- /dev/null
+++ b/client/node_modules/semver-compare/readme.markdown
@@ -0,0 +1,77 @@
+# semver-compare
+
+compare two semver version strings, returning -1, 0, or 1
+
+The return value can be fed straight into `[].sort`.
+
+[![build status](https://secure.travis-ci.org/substack/semver-compare.png)](http://travis-ci.org/substack/semver-compare)
+
+# example
+
+``` js
+var cmp = require('semver-compare');
+var versions = [
+ '1.2.3',
+ '4.11.6',
+ '4.2.0',
+ '1.5.19',
+ '1.5.5',
+ '4.1.3',
+ '2.3.1',
+ '10.5.5',
+ '11.3.0'
+];
+console.log(versions.sort(cmp).join('\n'));
+```
+
+prints:
+
+```
+1.2.3
+1.5.5
+1.5.19
+2.3.1
+4.1.3
+4.2.0
+4.11.6
+10.5.5
+11.3.0
+```
+
+whereas the default lexicographic sort (`versions.sort()`) would be:
+
+```
+1.2.3
+1.5.19
+1.5.5
+10.5.5
+11.3.0
+2.3.1
+4.1.3
+4.11.6
+4.2.0
+```
+
+# methods
+
+```
+var cmp = require('semver-compare')
+```
+
+## cmp(a, b)
+
+If the semver string `a` is greater than `b`, return `1`.
+If the semver string `b` is greater than `a`, return `-1`.
+If `a` equals `b`, return 0;
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install semver-compare
+```
+
+# license
+
+MIT
diff --git a/client/node_modules/semver-compare/test/cmp.js b/client/node_modules/semver-compare/test/cmp.js
new file mode 100644
index 0000000..a706234
--- /dev/null
+++ b/client/node_modules/semver-compare/test/cmp.js
@@ -0,0 +1,29 @@
+var cmp = require('../');
+var test = require('tape');
+
+var versions = [
+ '1.2.3',
+ '4.11.6',
+ '4.2.0',
+ '1.5.19',
+ '1.5.5',
+ '4.1.3',
+ '2.3.1',
+ '10.5.5',
+ '11.3.0'
+];
+
+test('cmp', function (t) {
+ t.plan(1);
+ t.deepEqual(versions.sort(cmp), [
+ '1.2.3',
+ '1.5.5',
+ '1.5.19',
+ '2.3.1',
+ '4.1.3',
+ '4.2.0',
+ '4.11.6',
+ '10.5.5',
+ '11.3.0'
+ ]);
+});
diff --git a/client/node_modules/semver/LICENSE b/client/node_modules/semver/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/semver/README.md b/client/node_modules/semver/README.md
new file mode 100644
index 0000000..2293a14
--- /dev/null
+++ b/client/node_modules/semver/README.md
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
diff --git a/client/node_modules/semver/bin/semver.js b/client/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000..666034a
--- /dev/null
+++ b/client/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] <version> [<version> [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range <range>',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment [<level>]',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid <identifier>',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ '--rtl',
+ ' Coerce version strings right to left',
+ '',
+ '--ltr',
+ ' Coerce version strings left to right (default)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/client/node_modules/semver/package.json b/client/node_modules/semver/package.json
new file mode 100644
index 0000000..6b970a6
--- /dev/null
+++ b/client/node_modules/semver/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "semver",
+ "version": "6.3.1",
+ "description": "The semantic version parser used by npm.",
+ "main": "semver.js",
+ "scripts": {
+ "test": "tap test/ --100 --timeout=30",
+ "lint": "echo linting disabled",
+ "postlint": "template-oss-check",
+ "template-oss-apply": "template-oss-apply --force",
+ "lintfix": "npm run lint -- --fix",
+ "snap": "tap test/ --100 --timeout=30",
+ "posttest": "npm run lint"
+ },
+ "devDependencies": {
+ "@npmcli/template-oss": "4.17.0",
+ "tap": "^12.7.0"
+ },
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/node-semver.git"
+ },
+ "bin": {
+ "semver": "./bin/semver.js"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "author": "GitHub Inc.",
+ "templateOSS": {
+ "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
+ "content": "./scripts/template-oss",
+ "version": "4.17.0"
+ }
+}
diff --git a/client/node_modules/semver/range.bnf b/client/node_modules/semver/range.bnf
new file mode 100644
index 0000000..d4c6ae0
--- /dev/null
+++ b/client/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/client/node_modules/semver/semver.js b/client/node_modules/semver/semver.js
new file mode 100644
index 0000000..39319c1
--- /dev/null
+++ b/client/node_modules/semver/semver.js
@@ -0,0 +1,1643 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var safeRe = exports.safeRe = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+ t[n] = R++
+}
+
+var LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+var safeRegexReplacements = [
+ ['\\s', 1],
+ ['\\d', MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
+
+function makeSafeRe (value) {
+ for (var i = 0; i < safeRegexReplacements.length; i++) {
+ var token = safeRegexReplacements[i][0]
+ var max = safeRegexReplacements[i][1]
+ value = value
+ .split(token + '*').join(token + '{0,' + max + '}')
+ .split(token + '+').join(token + '{1,' + max + '}')
+ }
+ return value
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '\\d+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+ '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+ src[t.PRERELEASE] + '?' +
+ src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+ src[t.PRERELEASELOOSE] + '?' +
+ src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[t.PRERELEASE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+ '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+
+ // Replace all greedy whitespace to prevent regex dos issues. These regex are
+ // used internally via the safeRe object since all inputs in this library get
+ // normalized first to trim and collapse all extra whitespace. The original
+ // regexes are exported for userland consumption and lower level usage. A
+ // future breaking change could export the safer regex only with a note that
+ // all input should have extra whitespace removed.
+ safeRe[i] = new RegExp(makeSafeRe(src[i]))
+ }
+}
+
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+
+ var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
+
+SemVer.prototype.toString = function () {
+ return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ var i = 0
+ do {
+ var a = this.build[i]
+ var b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version
+ } catch (er) {
+ return null
+ }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+ var versionA = new SemVer(a, loose)
+ var versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose)
+ })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose)
+ })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
+
+ comp = comp.trim().split(/\s+/).join(' ')
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
+ var m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+}
+
+Comparator.prototype.toString = function () {
+ return this.value
+}
+
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ var rangeTmp
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
+ }
+
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
+
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First reduce all whitespace as much as possible so we do not have to rely
+ // on potentially slow regexes like \s*. This is then stored and used for
+ // future error messages as well.
+ this.raw = range
+ .trim()
+ .split(/\s+/)
+ .join(' ')
+
+ // First, split based on boolean or ||
+ this.set = this.raw.split('||').map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + this.raw)
+ }
+
+ this.format()
+}
+
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
+
+Range.prototype.toString = function () {
+ return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, safeRe[t.COMPARATORTRIM])
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)
+
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
+
+ return set
+}
+
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some(function (thisComparators) {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some(function (rangeComparators) {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+ var result = true
+ var remainingComparators = comparators.slice()
+ var testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+ var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0' + pr
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(safeRe[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
+
+ return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
+
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
+
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator)
+ }
+ })
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ var match = null
+ if (!options.rtl) {
+ match = version.match(safeRe[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next
+ while ((next = safeRe[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ safeRe[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(match[2] +
+ '.' + (match[3] || '0') +
+ '.' + (match[4] || '0'), options)
+}
diff --git a/client/node_modules/serialize-error/index.d.ts b/client/node_modules/serialize-error/index.d.ts
new file mode 100644
index 0000000..714dc9f
--- /dev/null
+++ b/client/node_modules/serialize-error/index.d.ts
@@ -0,0 +1,58 @@
+import {Primitive, JsonObject} from 'type-fest';
+
+export type ErrorObject = {
+ name?: string;
+ stack?: string;
+ message?: string;
+ code?: string;
+} & JsonObject;
+
+/**
+Serialize an `Error` object into a plain object.
+
+Non-error values are passed through.
+Custom properties are preserved.
+Circular references are handled.
+
+@example
+```
+import {serializeError} from 'serialize-error';
+
+const error = new Error('🦄');
+
+console.log(error);
+//=> [Error: 🦄]
+
+console.log(serializeError(error));
+//=> {name: 'Error', message: '🦄', stack: 'Error: 🦄\n at Object.<anonymous> …'}
+```
+*/
+export function serializeError<ErrorType>(error: ErrorType): ErrorType extends Primitive
+ ? ErrorType
+ : ErrorObject;
+
+/**
+Deserialize a plain object or any value into an `Error` object.
+
+`Error` objects are passed through.
+Non-error values are wrapped in a `NonError` error.
+Custom properties are preserved.
+Non-enumerable properties are kept non-enumerable (name, message, stack).
+Enumerable properties are kept enumerable (all properties besides the non-enumerable ones).
+Circular references are handled.
+
+@example
+```
+import {deserializeError} from 'serialize-error';
+
+const error = deserializeError({
+ message: 'aaa',
+ stack: 'at <anonymous>:1:13'
+});
+
+console.log(error);
+// Error: aaa
+// at <anonymous>:1:13
+```
+*/
+export function deserializeError(errorObject: ErrorObject | unknown): Error;
diff --git a/client/node_modules/serialize-error/index.js b/client/node_modules/serialize-error/index.js
new file mode 100644
index 0000000..508c6a2
--- /dev/null
+++ b/client/node_modules/serialize-error/index.js
@@ -0,0 +1,101 @@
+'use strict';
+
+class NonError extends Error {
+ constructor(message) {
+ super(NonError._prepareSuperMessage(message));
+ Object.defineProperty(this, 'name', {
+ value: 'NonError',
+ configurable: true,
+ writable: true
+ });
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, NonError);
+ }
+ }
+
+ static _prepareSuperMessage(message) {
+ try {
+ return JSON.stringify(message);
+ } catch (_) {
+ return String(message);
+ }
+ }
+}
+
+const commonProperties = [
+ {property: 'name', enumerable: false},
+ {property: 'message', enumerable: false},
+ {property: 'stack', enumerable: false},
+ {property: 'code', enumerable: true}
+];
+
+const destroyCircular = ({from, seen, to_, forceEnumerable}) => {
+ const to = to_ || (Array.isArray(from) ? [] : {});
+
+ seen.push(from);
+
+ for (const [key, value] of Object.entries(from)) {
+ if (typeof value === 'function') {
+ continue;
+ }
+
+ if (!value || typeof value !== 'object') {
+ to[key] = value;
+ continue;
+ }
+
+ if (!seen.includes(from[key])) {
+ to[key] = destroyCircular({from: from[key], seen: seen.slice(), forceEnumerable});
+ continue;
+ }
+
+ to[key] = '[Circular]';
+ }
+
+ for (const {property, enumerable} of commonProperties) {
+ if (typeof from[property] === 'string') {
+ Object.defineProperty(to, property, {
+ value: from[property],
+ enumerable: forceEnumerable ? true : enumerable,
+ configurable: true,
+ writable: true
+ });
+ }
+ }
+
+ return to;
+};
+
+const serializeError = value => {
+ if (typeof value === 'object' && value !== null) {
+ return destroyCircular({from: value, seen: [], forceEnumerable: true});
+ }
+
+ // People sometimes throw things besides Error objects…
+ if (typeof value === 'function') {
+ // `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.
+ return `[Function: ${(value.name || 'anonymous')}]`;
+ }
+
+ return value;
+};
+
+const deserializeError = value => {
+ if (value instanceof Error) {
+ return value;
+ }
+
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
+ const newError = new Error();
+ destroyCircular({from: value, seen: [], to_: newError});
+ return newError;
+ }
+
+ return new NonError(value);
+};
+
+module.exports = {
+ serializeError,
+ deserializeError
+};
diff --git a/client/node_modules/serialize-error/license b/client/node_modules/serialize-error/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/client/node_modules/serialize-error/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/serialize-error/package.json b/client/node_modules/serialize-error/package.json
new file mode 100644
index 0000000..8caa8eb
--- /dev/null
+++ b/client/node_modules/serialize-error/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "serialize-error",
+ "version": "7.0.1",
+ "description": "Serialize/deserialize an error into a plain object",
+ "license": "MIT",
+ "repository": "sindresorhus/serialize-error",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "error",
+ "serialize",
+ "stringify",
+ "object",
+ "convert",
+ "process",
+ "send",
+ "deserialize"
+ ],
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "tsd": "^0.11.0",
+ "xo": "^0.30.0"
+ }
+}
diff --git a/client/node_modules/serialize-error/readme.md b/client/node_modules/serialize-error/readme.md
new file mode 100644
index 0000000..d27f004
--- /dev/null
+++ b/client/node_modules/serialize-error/readme.md
@@ -0,0 +1,55 @@
+# serialize-error [![Build Status](https://travis-ci.org/sindresorhus/serialize-error.svg?branch=master)](https://travis-ci.org/sindresorhus/serialize-error)
+
+> Serialize/deserialize an error into a plain object
+
+Useful if you for example need to `JSON.stringify()` or `process.send()` the error.
+
+## Install
+
+```
+$ npm install serialize-error
+```
+
+## Usage
+
+```js
+const {serializeError, deserializeError} = require('serialize-error');
+
+const error = new Error('🦄');
+
+console.log(error);
+//=> [Error: 🦄]
+
+const serialized = serializeError(error)
+
+console.log(serialized);
+//=> {name: 'Error', message: '🦄', stack: 'Error: 🦄\n at Object.<anonymous> …'}
+
+const deserialized = deserializeError(serialized);
+//=> [Error: 🦄]
+```
+
+## API
+
+### serializeError(value)
+
+Type: `Error | unknown`
+
+Serialize an `Error` object into a plain object.
+
+Non-error values are passed through.
+Custom properties are preserved.
+Non-enumerable properties are kept non-enumerable (name, message, stack).
+Enumerable properties are kept enumerable (all properties besides the non-enumerable ones).
+Circular references are handled.
+
+### deserializeError(value)
+
+Type: `{[key: string]: unknown} | unknown`
+
+Deserialize a plain object or any value into an `Error` object.
+
+`Error` objects are passed through.
+Non-error values are wrapped in a `NonError` error.
+Custom properties are preserved.
+Circular references are handled.
diff --git a/client/node_modules/sprintf-js/CONTRIBUTORS.md b/client/node_modules/sprintf-js/CONTRIBUTORS.md
new file mode 100644
index 0000000..a16608e
--- /dev/null
+++ b/client/node_modules/sprintf-js/CONTRIBUTORS.md
@@ -0,0 +1,26 @@
+Alexander Rose [@arose](https://github.com/arose)
+Alexandru Mărășteanu [@alexei](https://github.com/alexei)
+Andras [@andrasq](https://github.com/andrasq)
+Benoit Giannangeli [@giann](https://github.com/giann)
+Branden Visser [@mrvisser](https://github.com/mrvisser)
+David Baird
+daurnimator [@daurnimator](https://github.com/daurnimator)
+Doug Beck [@beck](https://github.com/beck)
+Dzmitry Litskalau [@litmit](https://github.com/litmit)
+Fred Ludlow [@fredludlow](https://github.com/fredludlow)
+Hans Pufal
+Henry [@alograg](https://github.com/alograg)
+Johnny Shields [@johnnyshields](https://github.com/johnnyshields)
+Kamal Abdali
+Matt Simerson [@msimerson](https://github.com/msimerson)
+Maxime Robert [@marob](https://github.com/marob)
+MeriemKhelifi [@MeriemKhelifi](https://github.com/MeriemKhelifi)
+Michael Schramm [@wodka](https://github.com/wodka)
+Nazar Mokrynskyi [@nazar-pc](https://github.com/nazar-pc)
+Oliver Salzburg [@oliversalzburg](https://github.com/oliversalzburg)
+Pablo [@ppollono](https://github.com/ppollono)
+Rabehaja Stevens [@RABEHAJA-STEVENS](https://github.com/RABEHAJA-STEVENS)
+Raphael Pigulla [@pigulla](https://github.com/pigulla)
+rebeccapeltz [@rebeccapeltz](https://github.com/rebeccapeltz)
+Stefan Tingström [@stingstrom](https://github.com/stingstrom)
+Tim Gates [@timgates42](https://github.com/timgates42)
diff --git a/client/node_modules/sprintf-js/LICENSE b/client/node_modules/sprintf-js/LICENSE
new file mode 100644
index 0000000..83f832a
--- /dev/null
+++ b/client/node_modules/sprintf-js/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+* Neither the name of this software nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/sprintf-js/README.md b/client/node_modules/sprintf-js/README.md
new file mode 100644
index 0000000..8ef74f5
--- /dev/null
+++ b/client/node_modules/sprintf-js/README.md
@@ -0,0 +1,143 @@
+# sprintf-js
+
+[![Build Status][travisci-image]][travisci-url] [![NPM Version][npm-image]][npm-url] [![Dependency Status][dependencies-image]][dependencies-url] [![devDependency Status][dev-dependencies-image]][dev-dependencies-url]
+
+[travisci-image]: https://travis-ci.org/alexei/sprintf.js.svg?branch=master
+[travisci-url]: https://travis-ci.org/alexei/sprintf.js
+
+[npm-image]: https://badge.fury.io/js/sprintf-js.svg
+[npm-url]: https://badge.fury.io/js/sprintf-js
+
+[dependencies-image]: https://david-dm.org/alexei/sprintf.js.svg
+[dependencies-url]: https://david-dm.org/alexei/sprintf.js
+
+[dev-dependencies-image]: https://david-dm.org/alexei/sprintf.js/dev-status.svg
+[dev-dependencies-url]: https://david-dm.org/alexei/sprintf.js#info=devDependencies
+
+**sprintf-js** is a complete open source JavaScript `sprintf` implementation for the **browser** and **Node.js**.
+
+**Note: as of v1.1.1 you might need some polyfills for older environments. See [Support](#support) section below.**
+
+## Usage
+
+ var sprintf = require('sprintf-js').sprintf,
+ vsprintf = require('sprintf-js').vsprintf
+
+ sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants')
+ vsprintf('The first 4 letters of the english alphabet are: %s, %s, %s and %s', ['a', 'b', 'c', 'd'])
+
+## Installation
+
+### NPM
+
+ npm install sprintf-js
+
+### Bower
+
+ bower install sprintf
+
+## API
+
+### `sprintf`
+
+Returns a formatted string:
+
+ string sprintf(string format, mixed arg1?, mixed arg2?, ...)
+
+### `vsprintf`
+
+Same as `sprintf` except it takes an array of arguments, rather than a variable number of arguments:
+
+ string vsprintf(string format, array arguments?)
+
+## Format specification
+
+The placeholders in the format string are marked by `%` and are followed by one or more of these elements, in this order:
+
+* An optional number followed by a `$` sign that selects which argument index to use for the value. If not specified, arguments will be placed in the same order as the placeholders in the input string.
+* An optional `+` sign that forces to precede the result with a plus or minus sign on numeric values. By default, only the `-` sign is used on negative numbers.
+* An optional padding specifier that says what character to use for padding (if specified). Possible values are `0` or any other character preceded by a `'` (single quote). The default is to pad with *spaces*.
+* An optional `-` sign, that causes `sprintf` to left-align the result of this placeholder. The default is to right-align the result.
+* An optional number, that says how many characters the result should have. If the value to be returned is shorter than this number, the result will be padded. When used with the `j` (JSON) type specifier, the padding length specifies the tab size used for indentation.
+* An optional precision modifier, consisting of a `.` (dot) followed by a number, that says how many digits should be displayed for floating point numbers. When used with the `g` type specifier, it specifies the number of significant digits. When used on a string, it causes the result to be truncated.
+* A type specifier that can be any of:
+ * `%` — yields a literal `%` character
+ * `b` — yields an integer as a binary number
+ * `c` — yields an integer as the character with that ASCII value
+ * `d` or `i` — yields an integer as a signed decimal number
+ * `e` — yields a float using scientific notation
+ * `u` — yields an integer as an unsigned decimal number
+ * `f` — yields a float as is; see notes on precision above
+ * `g` — yields a float as is; see notes on precision above
+ * `o` — yields an integer as an octal number
+ * `s` — yields a string as is
+ * `t` — yields `true` or `false`
+ * `T` — yields the type of the argument<sup><a href="#fn-1" name="fn-ref-1">1</a></sup>
+ * `v` — yields the primitive value of the specified argument
+ * `x` — yields an integer as a hexadecimal number (lower-case)
+ * `X` — yields an integer as a hexadecimal number (upper-case)
+ * `j` — yields a JavaScript object or array as a JSON encoded string
+
+## Features
+
+### Argument swapping
+
+You can also swap the arguments. That is, the order of the placeholders doesn't have to match the order of the arguments. You can do that by simply indicating in the format string which arguments the placeholders refer to:
+
+ sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants')
+
+And, of course, you can repeat the placeholders without having to increase the number of arguments.
+
+### Named arguments
+
+Format strings may contain replacement fields rather than positional placeholders. Instead of referring to a certain argument, you can now refer to a certain key within an object. Replacement fields are surrounded by rounded parentheses - `(` and `)` - and begin with a keyword that refers to a key:
+
+ var user = {
+ name: 'Dolly',
+ }
+ sprintf('Hello %(name)s', user) // Hello Dolly
+
+Keywords in replacement fields can be optionally followed by any number of keywords or indexes:
+
+ var users = [
+ {name: 'Dolly'},
+ {name: 'Molly'},
+ {name: 'Polly'},
+ ]
+ sprintf('Hello %(users[0].name)s, %(users[1].name)s and %(users[2].name)s', {users: users}) // Hello Dolly, Molly and Polly
+
+Note: mixing positional and named placeholders is not (yet) supported
+
+### Computed values
+
+You can pass in a function as a dynamic value and it will be invoked (with no arguments) in order to compute the value on the fly.
+
+ sprintf('Current date and time: %s', function() { return new Date().toString() })
+
+### AngularJS
+
+You can use `sprintf` and `vsprintf` (also aliased as `fmt` and `vfmt` respectively) in your AngularJS projects. See `demo/`.
+
+## Support
+
+### Node.js
+
+`sprintf-js` runs in all active Node versions (4.x+).
+
+### Browser
+
+`sprintf-js` should work in all modern browsers. As of v1.1.1, you might need polyfills for the following:
+
+ - `String.prototype.repeat()` (any IE)
+ - `Array.isArray()` (IE < 9)
+ - `Object.create()` (IE < 9)
+
+YMMV
+
+## License
+
+**sprintf-js** is licensed under the terms of the BSD 3-Clause License.
+
+## Notes
+
+<small><sup><a href="#fn-ref-1" name="fn-1">1</a></sup> `sprintf` doesn't use the `typeof` operator. As such, the value `null` is a `null`, an array is an `array` (not an `object`), a date value is a `date` etc.</small>
diff --git a/client/node_modules/sprintf-js/dist/.gitattributes b/client/node_modules/sprintf-js/dist/.gitattributes
new file mode 100644
index 0000000..d35bca0
--- /dev/null
+++ b/client/node_modules/sprintf-js/dist/.gitattributes
@@ -0,0 +1,4 @@
+#ignore all generated files from diff
+#also skip line ending check
+*.js -diff -text
+*.map -diff -text
diff --git a/client/node_modules/sprintf-js/dist/angular-sprintf.min.js b/client/node_modules/sprintf-js/dist/angular-sprintf.min.js
new file mode 100644
index 0000000..5dff8c5
--- /dev/null
+++ b/client/node_modules/sprintf-js/dist/angular-sprintf.min.js
@@ -0,0 +1,3 @@
+/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */
+!function(){"use strict";angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(t){return t("sprintf")}]).filter("vsprintf",function(){return function(t,n){return vsprintf(t,n)}}).filter("vfmt",["$filter",function(t){return t("vsprintf")}])}();
+//# sourceMappingURL=angular-sprintf.min.js.map
diff --git a/client/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/client/node_modules/sprintf-js/dist/angular-sprintf.min.js.map
new file mode 100644
index 0000000..d30f1a3
--- /dev/null
+++ b/client/node_modules/sprintf-js/dist/angular-sprintf.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";CAEC,WACG,aAEAA,QACIC,OAAO,UAAW,IAClBC,OAAO,UAAW,WACd,OAAO,WACH,OAAOC,QAAQC,MAAM,KAAMC,cAGnCH,OAAO,MAAO,CAAC,UAAW,SAASI,GAC/B,OAAOA,EAAQ,cAEnBJ,OAAO,WAAY,WACf,OAAO,SAASK,EAAQC,GACpB,OAAOC,SAASF,EAAQC,MAGhCN,OAAO,OAAQ,CAAC,UAAW,SAASI,GAChC,OAAOA,EAAQ,eAnB1B","file":"angular-sprintf.min.js","sourcesContent":["/* global angular, sprintf, vsprintf */\n\n!function() {\n 'use strict'\n\n angular.\n module('sprintf', []).\n filter('sprintf', function() {\n return function() {\n return sprintf.apply(null, arguments)\n }\n }).\n filter('fmt', ['$filter', function($filter) {\n return $filter('sprintf')\n }]).\n filter('vsprintf', function() {\n return function(format, argv) {\n return vsprintf(format, argv)\n }\n }).\n filter('vfmt', ['$filter', function($filter) {\n return $filter('vsprintf')\n }])\n}(); // eslint-disable-line\n"]} \ No newline at end of file
diff --git a/client/node_modules/sprintf-js/dist/sprintf.min.js b/client/node_modules/sprintf-js/dist/sprintf.min.js
new file mode 100644
index 0000000..ed09637
--- /dev/null
+++ b/client/node_modules/sprintf-js/dist/sprintf.min.js
@@ -0,0 +1,3 @@
+/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */
+!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n<f;n++)if("string"==typeof e[n])d+=e[n];else if("object"==typeof e[n]){if((s=e[n]).keys)for(r=t[u],i=0;i<s.keys.length;i++){if(null==r)throw new Error(y('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[i],s.keys[i-1]));r=r[s.keys[i]]}else r=s.param_no?t[s.param_no]:t[u++];if(g.not_type.test(s.type)&&g.not_primitive.test(s.type)&&r instanceof Function&&(r=r()),g.numeric_arg.test(s.type)&&"number"!=typeof r&&isNaN(r))throw new TypeError(y("[sprintf] expecting number but found %T",r));switch(g.number.test(s.type)&&(c=0<=r),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0<p?o.repeat(p):"",d+=s.align?l+r+a:"0"===o?l+a+r:a+l+r)}return d}(function(e){if(p[e])return p[e];var t,r=e,n=[],i=0;for(;r;){if(null!==(t=g.text.exec(r)))n.push(t[0]);else if(null!==(t=g.modulo.exec(r)))n.push("%");else{if(null===(t=g.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var s=[],a=t[2],o=[];if(null===(o=g.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(o[1]);""!==(a=a.substring(o[0].length));)if(null!==(o=g.key_access.exec(a)))s.push(o[1]);else{if(null===(o=g.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(o[1])}t[2]=s}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return p[e]=n}(e),arguments)}function e(e,t){return y.apply(null,[e].concat(t||[]))}var p=Object.create(null);"undefined"!=typeof exports&&(exports.sprintf=y,exports.vsprintf=e),"undefined"!=typeof window&&(window.sprintf=y,window.vsprintf=e,"function"==typeof define&&define.amd&&define(function(){return{sprintf:y,vsprintf:e}}))}();
+//# sourceMappingURL=sprintf.min.js.map
diff --git a/client/node_modules/sprintf-js/dist/sprintf.min.js.map b/client/node_modules/sprintf-js/dist/sprintf.min.js.map
new file mode 100644
index 0000000..cb39322
--- /dev/null
+++ b/client/node_modules/sprintf-js/dist/sprintf.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["sprintf.js"],"names":["re","not_string","not_bool","not_type","not_primitive","number","numeric_arg","json","not_json","text","modulo","placeholder","key","key_access","index_access","sign","sprintf","parse_tree","argv","arg","i","k","ph","pad","pad_character","pad_length","is_positive","cursor","tree_length","length","output","keys","undefined","Error","param_no","test","type","Function","isNaN","TypeError","parseInt","toString","String","fromCharCode","JSON","stringify","width","precision","parseFloat","toExponential","toFixed","Number","toPrecision","substring","Object","prototype","call","slice","toLowerCase","valueOf","toUpperCase","replace","pad_char","charAt","repeat","align","sprintf_format","fmt","sprintf_cache","match","_fmt","arg_names","exec","push","SyntaxError","field_list","replacement_field","field_match","sprintf_parse","arguments","vsprintf","apply","concat","create","exports","window","define"],"mappings":"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","file":"sprintf.min.js","sourcesContent":["/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n"]} \ No newline at end of file
diff --git a/client/node_modules/sprintf-js/package.json b/client/node_modules/sprintf-js/package.json
new file mode 100644
index 0000000..1d3dcf3
--- /dev/null
+++ b/client/node_modules/sprintf-js/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "sprintf-js",
+ "version": "1.1.3",
+ "description": "JavaScript sprintf implementation",
+ "author": "Alexandru Mărășteanu <hello@alexei.ro>",
+ "main": "src/sprintf.js",
+ "scripts": {
+ "test": "mocha test/*.js",
+ "pretest": "npm run lint",
+ "lint": "eslint .",
+ "lint:fix": "eslint --fix ."
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/alexei/sprintf.js.git"
+ },
+ "license": "BSD-3-Clause",
+ "readmeFilename": "README.md",
+ "devDependencies": {
+ "benchmark": "^2.1.4",
+ "eslint": "^5.10.0",
+ "gulp": "^3.9.1",
+ "gulp-benchmark": "^1.1.1",
+ "gulp-eslint": "^5.0.0",
+ "gulp-header": "^2.0.5",
+ "gulp-mocha": "^6.0.0",
+ "gulp-rename": "^1.4.0",
+ "gulp-sourcemaps": "^2.6.4",
+ "gulp-uglify": "^3.0.1",
+ "mocha": "^5.2.0"
+ },
+ "overrides": {
+ "graceful-fs": "^4.2.11"
+ }
+}
diff --git a/client/node_modules/sprintf-js/src/angular-sprintf.js b/client/node_modules/sprintf-js/src/angular-sprintf.js
new file mode 100644
index 0000000..dbfdd65
--- /dev/null
+++ b/client/node_modules/sprintf-js/src/angular-sprintf.js
@@ -0,0 +1,24 @@
+/* global angular, sprintf, vsprintf */
+
+!function() {
+ 'use strict'
+
+ angular.
+ module('sprintf', []).
+ filter('sprintf', function() {
+ return function() {
+ return sprintf.apply(null, arguments)
+ }
+ }).
+ filter('fmt', ['$filter', function($filter) {
+ return $filter('sprintf')
+ }]).
+ filter('vsprintf', function() {
+ return function(format, argv) {
+ return vsprintf(format, argv)
+ }
+ }).
+ filter('vfmt', ['$filter', function($filter) {
+ return $filter('vsprintf')
+ }])
+}(); // eslint-disable-line
diff --git a/client/node_modules/sprintf-js/src/sprintf.js b/client/node_modules/sprintf-js/src/sprintf.js
new file mode 100644
index 0000000..65d6324
--- /dev/null
+++ b/client/node_modules/sprintf-js/src/sprintf.js
@@ -0,0 +1,231 @@
+/* global window, exports, define */
+
+!function() {
+ 'use strict'
+
+ var re = {
+ not_string: /[^s]/,
+ not_bool: /[^t]/,
+ not_type: /[^T]/,
+ not_primitive: /[^v]/,
+ number: /[diefg]/,
+ numeric_arg: /[bcdiefguxX]/,
+ json: /[j]/,
+ not_json: /[^j]/,
+ text: /^[^\x25]+/,
+ modulo: /^\x25{2}/,
+ placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
+ key: /^([a-z_][a-z_\d]*)/i,
+ key_access: /^\.([a-z_][a-z_\d]*)/i,
+ index_access: /^\[(\d+)\]/,
+ sign: /^[+-]/
+ }
+
+ function sprintf(key) {
+ // `arguments` is not an array, but should be fine for this call
+ return sprintf_format(sprintf_parse(key), arguments)
+ }
+
+ function vsprintf(fmt, argv) {
+ return sprintf.apply(null, [fmt].concat(argv || []))
+ }
+
+ function sprintf_format(parse_tree, argv) {
+ var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
+ for (i = 0; i < tree_length; i++) {
+ if (typeof parse_tree[i] === 'string') {
+ output += parse_tree[i]
+ }
+ else if (typeof parse_tree[i] === 'object') {
+ ph = parse_tree[i] // convenience purposes only
+ if (ph.keys) { // keyword argument
+ arg = argv[cursor]
+ for (k = 0; k < ph.keys.length; k++) {
+ if (arg == undefined) {
+ throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
+ }
+ arg = arg[ph.keys[k]]
+ }
+ }
+ else if (ph.param_no) { // positional argument (explicit)
+ arg = argv[ph.param_no]
+ }
+ else { // positional argument (implicit)
+ arg = argv[cursor++]
+ }
+
+ if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {
+ arg = arg()
+ }
+
+ if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {
+ throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
+ }
+
+ if (re.number.test(ph.type)) {
+ is_positive = arg >= 0
+ }
+
+ switch (ph.type) {
+ case 'b':
+ arg = parseInt(arg, 10).toString(2)
+ break
+ case 'c':
+ arg = String.fromCharCode(parseInt(arg, 10))
+ break
+ case 'd':
+ case 'i':
+ arg = parseInt(arg, 10)
+ break
+ case 'j':
+ arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
+ break
+ case 'e':
+ arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
+ break
+ case 'f':
+ arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
+ break
+ case 'g':
+ arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
+ break
+ case 'o':
+ arg = (parseInt(arg, 10) >>> 0).toString(8)
+ break
+ case 's':
+ arg = String(arg)
+ arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
+ break
+ case 't':
+ arg = String(!!arg)
+ arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
+ break
+ case 'T':
+ arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
+ arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
+ break
+ case 'u':
+ arg = parseInt(arg, 10) >>> 0
+ break
+ case 'v':
+ arg = arg.valueOf()
+ arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
+ break
+ case 'x':
+ arg = (parseInt(arg, 10) >>> 0).toString(16)
+ break
+ case 'X':
+ arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()
+ break
+ }
+ if (re.json.test(ph.type)) {
+ output += arg
+ }
+ else {
+ if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
+ sign = is_positive ? '+' : '-'
+ arg = arg.toString().replace(re.sign, '')
+ }
+ else {
+ sign = ''
+ }
+ pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
+ pad_length = ph.width - (sign + arg).length
+ pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''
+ output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
+ }
+ }
+ }
+ return output
+ }
+
+ var sprintf_cache = Object.create(null)
+
+ function sprintf_parse(fmt) {
+ if (sprintf_cache[fmt]) {
+ return sprintf_cache[fmt]
+ }
+
+ var _fmt = fmt, match, parse_tree = [], arg_names = 0
+ while (_fmt) {
+ if ((match = re.text.exec(_fmt)) !== null) {
+ parse_tree.push(match[0])
+ }
+ else if ((match = re.modulo.exec(_fmt)) !== null) {
+ parse_tree.push('%')
+ }
+ else if ((match = re.placeholder.exec(_fmt)) !== null) {
+ if (match[2]) {
+ arg_names |= 1
+ var field_list = [], replacement_field = match[2], field_match = []
+ if ((field_match = re.key.exec(replacement_field)) !== null) {
+ field_list.push(field_match[1])
+ while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
+ if ((field_match = re.key_access.exec(replacement_field)) !== null) {
+ field_list.push(field_match[1])
+ }
+ else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
+ field_list.push(field_match[1])
+ }
+ else {
+ throw new SyntaxError('[sprintf] failed to parse named argument key')
+ }
+ }
+ }
+ else {
+ throw new SyntaxError('[sprintf] failed to parse named argument key')
+ }
+ match[2] = field_list
+ }
+ else {
+ arg_names |= 2
+ }
+ if (arg_names === 3) {
+ throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
+ }
+
+ parse_tree.push(
+ {
+ placeholder: match[0],
+ param_no: match[1],
+ keys: match[2],
+ sign: match[3],
+ pad_char: match[4],
+ align: match[5],
+ width: match[6],
+ precision: match[7],
+ type: match[8]
+ }
+ )
+ }
+ else {
+ throw new SyntaxError('[sprintf] unexpected placeholder')
+ }
+ _fmt = _fmt.substring(match[0].length)
+ }
+ return sprintf_cache[fmt] = parse_tree
+ }
+
+ /**
+ * export to either browser or node.js
+ */
+ /* eslint-disable quote-props */
+ if (typeof exports !== 'undefined') {
+ exports['sprintf'] = sprintf
+ exports['vsprintf'] = vsprintf
+ }
+ if (typeof window !== 'undefined') {
+ window['sprintf'] = sprintf
+ window['vsprintf'] = vsprintf
+
+ if (typeof define === 'function' && define['amd']) {
+ define(function() {
+ return {
+ 'sprintf': sprintf,
+ 'vsprintf': vsprintf
+ }
+ })
+ }
+ }
+ /* eslint-enable quote-props */
+}(); // eslint-disable-line
diff --git a/client/node_modules/sumchecker/.github/FUNDING.yml b/client/node_modules/sumchecker/.github/FUNDING.yml
new file mode 100644
index 0000000..d63c19f
--- /dev/null
+++ b/client/node_modules/sumchecker/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: malept
+tidelift: npm/sumchecker
diff --git a/client/node_modules/sumchecker/.github/workflows/ci.yml b/client/node_modules/sumchecker/.github/workflows/ci.yml
new file mode 100644
index 0000000..73e955a
--- /dev/null
+++ b/client/node_modules/sumchecker/.github/workflows/ci.yml
@@ -0,0 +1,47 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ tags:
+ - v[0-9]+.[0-9]+.[0-9]+*
+ pull_request:
+
+jobs:
+ test:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [windows-latest, macOS-latest, ubuntu-latest]
+ node-version: [8.x, 10.x, 12.x]
+
+ steps:
+ - name: Fix git checkout line endings
+ run: git config --global core.autocrlf input
+ - uses: actions/checkout@v1
+ - name: Setup Node.js
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: Cache node_modules
+ uses: actions/cache@v1
+ with:
+ path: node_modules
+ key: ${{ runner.OS }}-build-${{ hashFiles('**/package.json') }}
+ restore-keys: |
+ ${{ runner.OS }}-build-${{ env.cache-name }}-
+ ${{ runner.OS }}-build-
+ ${{ runner.OS }}-
+ - name: Install
+ run: npm install
+ - name: Lint
+ run: npm run lint
+ - name: Testsuite
+ run: npm run coverage
+ - name: Test TypeScript definition
+ run: npm run tsd
+ - name: Codecov
+ run: npm run codecov
+ env:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
diff --git a/client/node_modules/sumchecker/LICENSE b/client/node_modules/sumchecker/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/client/node_modules/sumchecker/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/client/node_modules/sumchecker/NEWS.md b/client/node_modules/sumchecker/NEWS.md
new file mode 100644
index 0000000..eb7a956
--- /dev/null
+++ b/client/node_modules/sumchecker/NEWS.md
@@ -0,0 +1,77 @@
+# Changes by Version
+
+## Unreleased
+
+## [3.0.1] - 2019-11-25
+
+### Fixed
+
+* Correctly export symbols in TypeScript definition (#26)
+
+## [3.0.0] - 2019-04-30
+
+### Added
+
+* TypeScript typings file (#12)
+
+### Removed
+
+* Support for Node &lt; 8 (#10)
+
+## [2.0.2] - 2017-03-11
+
+### Added
+
+* Node 8 support (#6)
+
+## [2.0.1] - 2017-01-26
+
+### Fixed
+
+* Include `index.js` in the NPM package again
+
+## [2.0.0] - 2017-01-26
+
+### Removed
+
+* Support for Node 0.10 and 0.12 (#4)
+
+## [1.3.1] - 2017-03-11
+
+### Added
+
+* Node 8 support (#6)
+
+## [1.3.0] - 2016-12-05
+
+### Added
+
+* Human-readable messages for Errors (#2)
+
+## [1.2.0] - 2016-09-15
+
+### Added
+
+* Support for Node 0.10 and 0.12 via Babel (#1)
+
+## [1.1.0] - 2016-09-06
+
+### Added
+
+* Optional `defaultTextEncoding` parameter in the `ChecksumValidator` constructor
+* Access to the underlying `ChecksumValidator` class
+
+## [1.0.0] - 2016-09-05
+
+Initial release.
+
+[3.0.1]: https://github.com/malept/sumchecker/compare/v3.0.0...v3.0.1
+[3.0.0]: https://github.com/malept/sumchecker/compare/v2.0.2...v3.0.0
+[2.0.2]: https://github.com/malept/sumchecker/compare/v2.0.1...v2.0.2
+[2.0.1]: https://github.com/malept/sumchecker/compare/v2.0.0...v2.0.1
+[2.0.0]: https://github.com/malept/sumchecker/compare/v1.3.0...v2.0.0
+[1.3.1]: https://github.com/malept/sumchecker/compare/v1.3.0...v1.3.1
+[1.3.0]: https://github.com/malept/sumchecker/compare/v1.2.0...v1.3.0
+[1.2.0]: https://github.com/malept/sumchecker/compare/v1.1.0...v1.2.0
+[1.1.0]: https://github.com/malept/sumchecker/compare/v1.0.0...v1.1.0
+[1.0.0]: https://github.com/malept/sumchecker/releases/tag/v1.0.0
diff --git a/client/node_modules/sumchecker/README.md b/client/node_modules/sumchecker/README.md
new file mode 100644
index 0000000..b031044
--- /dev/null
+++ b/client/node_modules/sumchecker/README.md
@@ -0,0 +1,92 @@
+# Sumchecker
+
+[![Travis CI](https://travis-ci.org/malept/sumchecker.svg?branch=master)](https://travis-ci.org/malept/sumchecker)
+[![AppVeyor CI](https://ci.appveyor.com/api/projects/status/wm4n2r11nlff8ify?svg=true)](https://ci.appveyor.com/project/malept/sumchecker)
+[![Code Coverage](https://codecov.io/gh/malept/sumchecker/branch/master/graph/badge.svg)](https://codecov.io/gh/malept/sumchecker)
+![Dependency Status](https://tidelift.com/badges/github/malept/sumchecker)
+
+
+Sumchecker is a pure Node.js solution to validating files specified in a checksum file, which are
+usually generated by programs such as [`sha256sum`](https://en.wikipedia.org/wiki/Sha256sum).
+
+## Usage
+
+```javascript
+const sumchecker = require('sumchecker');
+
+try {
+ await sumchecker(algorithm, checksumFilename, baseDir, filesToCheck);
+ console.log('All files validate!');
+} catch (error) {
+ console.error('An error occurred', error);
+}
+```
+
+Returns a [`Promise`]. The promise is resolved when all files specified in
+[`filesToCheck`](#filesToCheck) are validated. The promise is rejected otherwise.
+
+### Parameters
+
+#### `algorithm`
+
+`String` - The hash algorithm used in [`checksumFilename`](#checksumFilename). Corresponds to the
+algorithms allowed by [`crypto.createHash()`].
+
+#### `checksumFilename`
+
+`String` - The path to the checksum file.
+
+#### `baseDir`
+
+`String` - The base directory for the files specified in [`filesToCheck`](#filesToCheck).
+
+#### `filesToCheck`
+
+`Array` or `String` - one or more paths of the files that will be validated, relative to
+[`baseDir`](#baseDir).
+
+### Errors
+
+These are `sumchecker`-specific error classes that are passed to the promise's reject callback.
+
+#### `sumchecker.ChecksumMismatchError`
+
+When at least one of the files does not match its expected checksum.
+
+Properties:
+
+* `filename` (`String`) - a path to a file that did not match
+
+#### `sumchecker.ChecksumParseError`
+
+When the checksum file cannot be parsed (as in, it does not match the checksum file format).
+
+Properties:
+
+* `lineNumber` (`Number`) - the line number that could not be parsed
+* `line` (`String`) - the raw line data that could not be parsed, sans newline
+
+#### `sumchecker.NoChecksumFoundError`
+
+When at least one of the files specified to check is not listed in the checksum file.
+
+Properties:
+
+* `filename` (`String`) - a filename from [`filesToCheck`](#filesToCheck)
+
+## Support
+
+[Get supported sumchecker with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-sumchecker?utm_source=npm-sumchecker&utm_medium=referral&utm_campaign=readme).
+
+## Security contact information
+
+To report a security vulnerability, please use the [Tidelift security
+contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+## Legal
+
+This library is copyrighted under the terms of the [Apache 2.0 License].
+
+[`crypto.createHash()`]: https://nodejs.org/dist/latest-v4.x/docs/api/crypto.html#crypto_crypto_createhash_algorithm
+[`Promise`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
+[Apache 2.0 License]: http://www.apache.org/licenses/LICENSE-2.0
diff --git a/client/node_modules/sumchecker/index.d.ts b/client/node_modules/sumchecker/index.d.ts
new file mode 100644
index 0000000..5282de5
--- /dev/null
+++ b/client/node_modules/sumchecker/index.d.ts
@@ -0,0 +1,51 @@
+/*
+Copyright 2019 Mark Lee and contributors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+declare function sumchecker(algorithm: string, checksumFilename: string, baseDir: string, filesToCheck: string[] | string): Promise<void>;
+
+declare namespace sumchecker {
+ type ChecksumOptions = {
+ defaultTextEncoding?: string;
+ };
+
+ class ErrorWithFilename extends Error {
+ constructor(filename: string);
+ }
+
+ class ChecksumMismatchError extends ErrorWithFilename {
+ constructor(filename: string);
+ }
+
+ class ChecksumParseError extends Error {
+ constructor(lineNumber: number, line: string);
+ }
+
+ class NoChecksumFoundError extends ErrorWithFilename {
+ constructor(filename: string);
+ }
+
+ class ChecksumValidator {
+ constructor(algorithm: string, checksumFilename: string, options?: ChecksumOptions);
+ encoding(binary: boolean): string;
+ parseChecksumFile(data: string): void;
+ readFile(filename: string, binary: boolean): Promise<string>;
+ validate(baseDir: string, filesToCheck: string[] | string): Promise<void>;
+ validateFile(baseDir: string, filename: string): Promise<void>;
+ validateFiles(baseDir: string, filesToCheck: string[]): Promise<void>;
+ }
+}
+
+export = sumchecker
diff --git a/client/node_modules/sumchecker/index.js b/client/node_modules/sumchecker/index.js
new file mode 100644
index 0000000..61f5b4e
--- /dev/null
+++ b/client/node_modules/sumchecker/index.js
@@ -0,0 +1,155 @@
+/*
+Copyright 2016, 2017, 2019 Mark Lee and contributors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+const debug = require('debug')('sumchecker')
+const crypto = require('crypto')
+const fs = require('fs')
+const path = require('path')
+const { promisify } = require('util')
+
+const readFile = promisify(fs.readFile)
+
+const CHECKSUM_LINE = /^([\da-fA-F]+) ([ *])(.+)$/
+
+class ErrorWithFilename extends Error {
+ constructor (filename) {
+ super()
+ this.filename = filename
+ }
+}
+
+class ChecksumMismatchError extends ErrorWithFilename {
+ constructor (filename) {
+ super(filename)
+ this.message = `Generated checksum for "${filename}" did not match expected checksum.`
+ }
+}
+
+class ChecksumParseError extends Error {
+ constructor (lineNumber, line) {
+ super()
+ this.lineNumber = lineNumber
+ this.line = line
+ this.message = `Could not parse checksum file at line ${lineNumber}: ${line}`
+ }
+}
+
+class NoChecksumFoundError extends ErrorWithFilename {
+ constructor (filename) {
+ super(filename)
+ this.message = `No checksum found in checksum file for "${filename}".`
+ }
+}
+
+class ChecksumValidator {
+ constructor (algorithm, checksumFilename, options) {
+ this.algorithm = algorithm
+ this.checksumFilename = checksumFilename
+ this.checksums = null
+
+ if (options && options.defaultTextEncoding) {
+ this.defaultTextEncoding = options.defaultTextEncoding
+ } else {
+ this.defaultTextEncoding = 'utf8'
+ }
+ }
+
+ encoding (binary) {
+ return binary ? 'binary' : this.defaultTextEncoding
+ }
+
+ parseChecksumFile (data) {
+ debug('Parsing checksum file')
+ this.checksums = {}
+ let lineNumber = 0
+ for (const line of data.trim().split(/[\r\n]+/)) {
+ lineNumber += 1
+ const result = CHECKSUM_LINE.exec(line)
+ if (result === null) {
+ debug(`Could not parse line number ${lineNumber}`)
+ throw new ChecksumParseError(lineNumber, line)
+ } else {
+ result.shift()
+ const [checksum, binaryMarker, filename] = result
+ const isBinary = binaryMarker === '*'
+
+ this.checksums[filename] = [checksum, isBinary]
+ }
+ }
+ debug('Parsed checksums:', this.checksums)
+ }
+
+ async readFile (filename, binary) {
+ debug(`Reading "${filename} (binary mode: ${binary})"`)
+ return readFile(filename, this.encoding(binary))
+ }
+
+ async validate (baseDir, filesToCheck) {
+ if (typeof filesToCheck === 'string') {
+ filesToCheck = [filesToCheck]
+ }
+
+ const data = await this.readFile(this.checksumFilename, false)
+ this.parseChecksumFile(data)
+ return this.validateFiles(baseDir, filesToCheck)
+ }
+
+ async validateFile (baseDir, filename) {
+ return new Promise((resolve, reject) => {
+ debug(`validateFile: ${filename}`)
+
+ const metadata = this.checksums[filename]
+ if (!metadata) {
+ return reject(new NoChecksumFoundError(filename))
+ }
+
+ const [checksum, binary] = metadata
+ const fullPath = path.resolve(baseDir, filename)
+ debug(`Reading file with "${this.encoding(binary)}" encoding`)
+ const stream = fs.createReadStream(fullPath, { encoding: this.encoding(binary) })
+ const hasher = crypto.createHash(this.algorithm, { defaultEncoding: 'binary' })
+ hasher.on('readable', () => {
+ const data = hasher.read()
+ if (data) {
+ const calculated = data.toString('hex')
+
+ debug(`Expected checksum: ${checksum}; Actual: ${calculated}`)
+ if (calculated === checksum) {
+ resolve()
+ } else {
+ reject(new ChecksumMismatchError(filename))
+ }
+ }
+ })
+ stream.pipe(hasher)
+ })
+ }
+
+ async validateFiles (baseDir, filesToCheck) {
+ return Promise.all(filesToCheck.map(filename => this.validateFile(baseDir, filename)))
+ }
+}
+
+const sumchecker = async function sumchecker (algorithm, checksumFilename, baseDir, filesToCheck) {
+ return new ChecksumValidator(algorithm, checksumFilename).validate(baseDir, filesToCheck)
+}
+
+sumchecker.ChecksumMismatchError = ChecksumMismatchError
+sumchecker.ChecksumParseError = ChecksumParseError
+sumchecker.ChecksumValidator = ChecksumValidator
+sumchecker.NoChecksumFoundError = NoChecksumFoundError
+
+module.exports = sumchecker
diff --git a/client/node_modules/sumchecker/index.test-d.ts b/client/node_modules/sumchecker/index.test-d.ts
new file mode 100644
index 0000000..e923465
--- /dev/null
+++ b/client/node_modules/sumchecker/index.test-d.ts
@@ -0,0 +1,31 @@
+/*
+Copyright 2019 Mark Lee and contributors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import * as sumchecker from '.';
+import { ChecksumParseError, ChecksumValidator } from '.';
+
+await sumchecker('sha256', 'test/fixture/example.sha256sum', 'test/fixture', 'example');
+await sumchecker('sha256', 'test/fixture/example.sha256sum', 'test/fixture', ['example']);
+try {
+ await sumchecker('sha256', 'test/fixture/invalid.sha256sum', 'test/fixture', ['example']);
+} catch (error) {
+ if (!(error instanceof ChecksumParseError)) {
+ throw new Error('Does not throw ChecksumParseError correctly');
+ }
+}
+
+const validator = new ChecksumValidator('sha256', 'test/fixture/example.sha256sum')
+await validator.validate('test/fixture', 'example')
diff --git a/client/node_modules/sumchecker/package.json b/client/node_modules/sumchecker/package.json
new file mode 100644
index 0000000..737a53f
--- /dev/null
+++ b/client/node_modules/sumchecker/package.json
@@ -0,0 +1,79 @@
+{
+ "name": "sumchecker",
+ "version": "3.0.1",
+ "author": "Mark Lee",
+ "license": "Apache-2.0",
+ "description": "Checksum validator",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/malept/sumchecker.git"
+ },
+ "keywords": [
+ "checksum",
+ "hash"
+ ],
+ "bugs": {
+ "url": "https://github.com/malept/sumchecker/issues"
+ },
+ "homepage": "https://github.com/malept/sumchecker#readme",
+ "engines": {
+ "node": ">= 8.0"
+ },
+ "devDependencies": {
+ "ava": "^2.2.0",
+ "codecov": "^3.3.0",
+ "eslint": "^6.1.0",
+ "eslint-config-standard": "^14.0.0",
+ "eslint-plugin-ava": "^9.0.0",
+ "eslint-plugin-import": "^2.18.2",
+ "eslint-plugin-node": "^10.0.0",
+ "eslint-plugin-promise": "^4.0.1",
+ "eslint-plugin-standard": "^4.0.0",
+ "nyc": "^14.0.0",
+ "tsd": "^0.11.0"
+ },
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "scripts": {
+ "ava": "ava test/index.js",
+ "codecov": "nyc report --reporter=text-lcov > coverage.lcov && codecov",
+ "coverage": "nyc ava test/index.js",
+ "lint": "eslint .",
+ "test": "npm run lint && npm run ava && npm run tsd",
+ "tsd": "tsd"
+ },
+ "ava": {
+ "babel": false,
+ "compileEnhancements": false
+ },
+ "eslintConfig": {
+ "extends": [
+ "eslint:recommended",
+ "plugin:ava/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:node/recommended",
+ "plugin:promise/recommended",
+ "standard"
+ ],
+ "plugins": [
+ "ava"
+ ],
+ "rules": {
+ "node/no-unpublished-require": [
+ "error",
+ {
+ "allowModules": [
+ "ava"
+ ]
+ }
+ ],
+ "strict": [
+ "error"
+ ]
+ }
+ }
+}
diff --git a/client/node_modules/sumchecker/yarn.lock b/client/node_modules/sumchecker/yarn.lock
new file mode 100644
index 0000000..660a17d
--- /dev/null
+++ b/client/node_modules/sumchecker/yarn.lock
@@ -0,0 +1,4756 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ava/babel-plugin-throws-helper@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-4.0.0.tgz#8f5b45b7a0a79c6f4032de2101e0c221847efb62"
+ integrity sha512-3diBLIVBPPh3j4+hb5lo0I1D+S/O/VDJPI4Y502apBxmwEqjyXG4gTSPFUlm41sSZeZzMarT/Gzovw9kV7An0w==
+
+"@ava/babel-preset-stage-4@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-4.0.0.tgz#9be5a59ead170062e228bb6ffd2b29f0489424fd"
+ integrity sha512-lZEV1ZANzfzSYBU6WHSErsy7jLPbD1iIgAboASPMcKo7woVni5/5IKWeT0RxC8rY802MFktur3OKEw2JY1Tv2w==
+ dependencies:
+ "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
+ "@babel/plugin-proposal-dynamic-import" "^7.5.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/plugin-transform-modules-commonjs" "^7.5.0"
+
+"@ava/babel-preset-transform-test-files@^6.0.0":
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-6.0.0.tgz#639e8929d2cdc8863c1f16020ce644c525723cd4"
+ integrity sha512-8eKhFzZp7Qcq1VLfoC75ggGT8nQs9q8fIxltU47yCB7Wi7Y8Qf6oqY1Bm0z04fIec24vEgr0ENhDHEOUGVDqnA==
+ dependencies:
+ "@ava/babel-plugin-throws-helper" "^4.0.0"
+ babel-plugin-espower "^3.0.1"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/core@^7.6.0":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab"
+ integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.4"
+ "@babel/helpers" "^7.7.4"
+ "@babel/parser" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369"
+ integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==
+ dependencies:
+ "@babel/types" "^7.7.4"
+ jsesc "^2.5.1"
+ lodash "^4.17.13"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce"
+ integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-create-regexp-features-plugin@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59"
+ integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==
+ dependencies:
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.6.0"
+
+"@babel/helper-function-name@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e"
+ integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-get-function-arity@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0"
+ integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-module-imports@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91"
+ integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-module-transforms@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.4.tgz#8d7cdb1e1f8ea3d8c38b067345924ac4f8e0879a"
+ integrity sha512-ehGBu4mXrhs0FxAqN8tWkzF8GSIGAiEumu4ONZ/hD9M88uHcD+Yu2ttKfOCgwzoesJOJrtQh7trI5YPbRtMmnA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-simple-access" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ lodash "^4.17.13"
+
+"@babel/helper-plugin-utils@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
+ integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
+
+"@babel/helper-regex@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351"
+ integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==
+ dependencies:
+ lodash "^4.17.13"
+
+"@babel/helper-remap-async-to-generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234"
+ integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-wrap-function" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-simple-access@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294"
+ integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==
+ dependencies:
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-split-export-declaration@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8"
+ integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-wrap-function@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace"
+ integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==
+ dependencies:
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helpers@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302"
+ integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==
+ dependencies:
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/highlight@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+ integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.0.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb"
+ integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==
+
+"@babel/plugin-proposal-async-generator-functions@^7.2.0":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d"
+ integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.7.4"
+ "@babel/plugin-syntax-async-generators" "^7.7.4"
+
+"@babel/plugin-proposal-dynamic-import@^7.5.0":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d"
+ integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.7.4"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.2.0":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379"
+ integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.7.4"
+
+"@babel/plugin-syntax-async-generators@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889"
+ integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-dynamic-import@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec"
+ integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6"
+ integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz#f7ccda61118c5b7a2599a72d5e3210884a021e96"
+ integrity sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-commonjs@^7.5.0":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz#bee4386e550446343dd52a571eda47851ff857a3"
+ integrity sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-simple-access" "^7.7.4"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/template@^7.4.0", "@babel/template@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b"
+ integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558"
+ integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.4"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ "@babel/parser" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.13"
+
+"@babel/types@^7.4.0", "@babel/types@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
+ integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.13"
+ to-fast-properties "^2.0.0"
+
+"@concordance/react@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde"
+ integrity sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==
+ dependencies:
+ arrify "^1.0.1"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.scandir@2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
+ integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.3"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
+ integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
+ integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.3"
+ fastq "^1.6.0"
+
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
+"@types/color-name@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
+ integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+
+"@types/events@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+ integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+
+"@types/glob@^7.1.1":
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
+ integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+ dependencies:
+ "@types/events" "*"
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/minimatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
+"@types/node@*":
+ version "12.12.12"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.12.tgz#529bc3e73dbb35dd9e90b0a1c83606a9d3264bdb"
+ integrity sha512-MGuvYJrPU0HUwqF7LqvIj50RZUX23Z+m583KBygKYUZLlZ88n6w28XRNJRJgsHukLEnLz6w6SvxZoLgbr5wLqQ==
+
+acorn-jsx@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
+ integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
+
+acorn@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
+ integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
+
+agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+ajv@^6.10.0, ajv@^6.10.2:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
+ integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
+ansi-align@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
+ integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
+ dependencies:
+ string-width "^3.0.0"
+
+ansi-escapes@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
+ integrity sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=
+
+ansi-escapes@^4.2.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d"
+ integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==
+ dependencies:
+ type-fest "^0.8.1"
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172"
+ integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==
+ dependencies:
+ "@types/color-name" "^1.1.1"
+ color-convert "^2.0.1"
+
+anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+append-transform@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
+ integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==
+ dependencies:
+ default-require-extensions "^2.0.0"
+
+archy@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
+ integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argv@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab"
+ integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+array-union@^1.0.1, array-union@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-uniq@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.1.0.tgz#46603d5e28e79bfd02b046fcc1d77c6820bd8e98"
+ integrity sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+ava@^2.2.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/ava/-/ava-2.4.0.tgz#a3bd8b0e01d8826004c91de375eb2313ba5237c3"
+ integrity sha512-CQWtzZZZeU2g4StojRv6MO9RIRi4sLxGSB9+3C3hv0ttUEG1tkJLTLyrBQeFS4WEeK12Z4ovE3f2iPVhSy8elA==
+ dependencies:
+ "@ava/babel-preset-stage-4" "^4.0.0"
+ "@ava/babel-preset-transform-test-files" "^6.0.0"
+ "@babel/core" "^7.6.0"
+ "@babel/generator" "^7.6.0"
+ "@concordance/react" "^2.0.0"
+ ansi-escapes "^4.2.1"
+ ansi-styles "^4.1.0"
+ arr-flatten "^1.1.0"
+ array-union "^2.1.0"
+ array-uniq "^2.1.0"
+ arrify "^2.0.1"
+ bluebird "^3.5.5"
+ chalk "^2.4.2"
+ chokidar "^3.0.2"
+ chunkd "^1.0.0"
+ ci-parallel-vars "^1.0.0"
+ clean-stack "^2.2.0"
+ clean-yaml-object "^0.1.0"
+ cli-cursor "^3.1.0"
+ cli-truncate "^2.0.0"
+ code-excerpt "^2.1.1"
+ common-path-prefix "^1.0.0"
+ concordance "^4.0.0"
+ convert-source-map "^1.6.0"
+ currently-unhandled "^0.4.1"
+ debug "^4.1.1"
+ del "^4.1.1"
+ dot-prop "^5.1.0"
+ emittery "^0.4.1"
+ empower-core "^1.2.0"
+ equal-length "^1.0.0"
+ escape-string-regexp "^2.0.0"
+ esm "^3.2.25"
+ figures "^3.0.0"
+ find-up "^4.1.0"
+ get-port "^5.0.0"
+ globby "^10.0.1"
+ ignore-by-default "^1.0.0"
+ import-local "^3.0.2"
+ indent-string "^4.0.0"
+ is-ci "^2.0.0"
+ is-error "^2.2.2"
+ is-observable "^2.0.0"
+ is-plain-object "^3.0.0"
+ is-promise "^2.1.0"
+ lodash "^4.17.15"
+ loud-rejection "^2.1.0"
+ make-dir "^3.0.0"
+ matcher "^2.0.0"
+ md5-hex "^3.0.1"
+ meow "^5.0.0"
+ micromatch "^4.0.2"
+ ms "^2.1.2"
+ observable-to-promise "^1.0.0"
+ ora "^3.4.0"
+ package-hash "^4.0.0"
+ pkg-conf "^3.1.0"
+ plur "^3.1.1"
+ pretty-ms "^5.0.0"
+ require-precompiled "^0.1.0"
+ resolve-cwd "^3.0.0"
+ slash "^3.0.0"
+ source-map-support "^0.5.13"
+ stack-utils "^1.0.2"
+ strip-ansi "^5.2.0"
+ strip-bom-buf "^2.0.0"
+ supertap "^1.0.0"
+ supports-color "^7.0.0"
+ trim-off-newlines "^1.0.1"
+ trim-right "^1.0.1"
+ unique-temp-dir "^1.0.0"
+ update-notifier "^3.0.1"
+ write-file-atomic "^3.0.0"
+
+babel-plugin-dynamic-import-node@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-espower@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e"
+ integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==
+ dependencies:
+ "@babel/generator" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ call-matcher "^1.0.0"
+ core-js "^2.0.0"
+ espower-location-detector "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.1.1"
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+binary-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
+ integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
+
+bluebird@^3.5.5:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
+ integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
+
+blueimp-md5@^2.10.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.12.0.tgz#be7367938a889dec3ffbb71138617c117e9c130a"
+ integrity sha512-zo+HIdIhzojv6F1siQPqPFROyVy7C50KzHv/k/Iz+BtvtVzSHXiMXOpq2wCfNkeBqdCv+V8XOV96tsEt2W/3rQ==
+
+boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
+boxen@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb"
+ integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^5.3.1"
+ chalk "^2.4.2"
+ cli-boxes "^2.2.0"
+ string-width "^3.0.0"
+ term-size "^1.2.0"
+ type-fest "^0.3.0"
+ widest-line "^2.0.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+buf-compare@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a"
+ integrity sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
+caching-transform@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70"
+ integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==
+ dependencies:
+ hasha "^3.0.0"
+ make-dir "^2.0.0"
+ package-hash "^3.0.0"
+ write-file-atomic "^2.4.2"
+
+call-matcher@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432"
+ integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==
+ dependencies:
+ core-js "^2.0.0"
+ deep-equal "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.0.0"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+call-signature@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
+ integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
+ integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=
+ dependencies:
+ camelcase "^4.1.0"
+ map-obj "^2.0.0"
+ quick-lru "^1.0.0"
+
+camelcase@^4.0.0, camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ 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"
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+chokidar@^3.0.2:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6"
+ integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.2.0"
+ optionalDependencies:
+ fsevents "~2.1.1"
+
+chunkd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-1.0.0.tgz#4ead4a3704bcce510c4bb4d4a8be30c557836dd1"
+ integrity sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg==
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+ci-parallel-vars@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.0.tgz#af97729ed1c7381911ca37bcea263d62638701b3"
+ integrity sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-stack@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+clean-yaml-object@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68"
+ integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=
+
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
+cli-boxes@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d"
+ integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-spinners@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77"
+ integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==
+
+cli-truncate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.0.0.tgz#68ff6aaa53b203b52ad89b8b1a80f1f61ad1e1d5"
+ integrity sha512-C4hp+8GCIFVsUUiXcw+ce+7wexVWImw8rQrgMBFsqerx9LvvcGlwm6sMjQYAEmV/Xb87xc1b5Ttx505MSpZVqg==
+ dependencies:
+ slice-ansi "^2.1.0"
+ string-width "^4.1.0"
+
+cli-width@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+ integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+clone-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ dependencies:
+ mimic-response "^1.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+code-excerpt@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.1.tgz#5fe3057bfbb71a5f300f659ef2cc0a47651ba77c"
+ integrity sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==
+ dependencies:
+ convert-to-spaces "^1.0.1"
+
+codecov@^3.3.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.6.1.tgz#f39fc49413445555f81f8e3ca5730992843b4517"
+ integrity sha512-IUJB6WG47nWK7o50etF8jBadxdMw7DmoQg05yIljstXFBGB6clOZsIj6iD4P82T2YaIU3qq+FFu8K9pxgkCJDQ==
+ dependencies:
+ argv "^0.0.2"
+ ignore-walk "^3.0.1"
+ js-yaml "^3.13.1"
+ teeny-request "^3.11.3"
+ urlgrey "^0.4.4"
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+commander@~2.20.3:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+common-path-prefix@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0"
+ integrity sha1-zVL28HEuC6q5fW+XModPIvR3UsA=
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concordance@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/concordance/-/concordance-4.0.0.tgz#5932fdee397d129bdbc3a1885fbe69839b1b7e15"
+ integrity sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ==
+ dependencies:
+ date-time "^2.1.0"
+ esutils "^2.0.2"
+ fast-diff "^1.1.2"
+ js-string-escape "^1.0.1"
+ lodash.clonedeep "^4.5.0"
+ lodash.flattendeep "^4.4.0"
+ lodash.islength "^4.0.1"
+ lodash.merge "^4.6.1"
+ md5-hex "^2.0.0"
+ semver "^5.5.1"
+ well-known-symbols "^2.0.0"
+
+configstore@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f"
+ integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==
+ dependencies:
+ dot-prop "^4.1.0"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+configstore@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7"
+ integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==
+ dependencies:
+ dot-prop "^4.1.0"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+convert-to-spaces@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715"
+ integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-assert@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f"
+ integrity sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=
+ dependencies:
+ buf-compare "^1.0.0"
+ is-error "^2.2.0"
+
+core-js@^2.0.0:
+ version "2.6.10"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
+ integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
+
+cp-file@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d"
+ integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ make-dir "^2.0.0"
+ nested-error-stacks "^2.0.0"
+ pify "^4.0.1"
+ safe-buffer "^5.0.1"
+
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+cross-spawn@^4:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
+ integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=
+ dependencies:
+ lru-cache "^4.0.1"
+ which "^1.2.9"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+date-time@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2"
+ integrity sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==
+ dependencies:
+ time-zone "^1.0.0"
+
+debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize-keys@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
+ integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ dependencies:
+ mimic-response "^1.0.0"
+
+deep-equal@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deep-strict-equal@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4"
+ integrity sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=
+ dependencies:
+ core-assert "^0.2.0"
+
+default-require-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
+ integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=
+ dependencies:
+ strip-bom "^3.0.0"
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+defer-to-connect@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd"
+ integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==
+
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ globby "^6.1.0"
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
+
+dir-glob@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
+ integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+ dependencies:
+ path-type "^3.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dot-prop@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dot-prop@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb"
+ integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==
+ dependencies:
+ is-obj "^2.0.0"
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+emittery@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d"
+ integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+empower-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c"
+ integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==
+ dependencies:
+ call-signature "0.0.2"
+ core-js "^2.0.0"
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhance-visitors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a"
+ integrity sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=
+ dependencies:
+ lodash "^4.13.1"
+
+equal-length@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c"
+ integrity sha1-IcoRLUirJLTh5//A5TOdMf38J0w=
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.12.0, es-abstract@^1.7.0:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
+ integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-error@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+ integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
+es6-promise@^4.0.3:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
+ dependencies:
+ es6-promise "^4.0.3"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+eslint-config-standard@^14.0.0:
+ version "14.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4"
+ integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==
+
+eslint-formatter-pretty@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-1.3.0.tgz#985d9e41c1f8475f4a090c5dbd2dfcf2821d607e"
+ integrity sha512-5DY64Y1rYCm7cfFDHEGUn54bvCnK+wSUVF07N8oXeqUJFSd+gnYOTXbzelQ1HurESluY6gnEQPmXOIkB4Wa+gA==
+ dependencies:
+ ansi-escapes "^2.0.0"
+ chalk "^2.1.0"
+ log-symbols "^2.0.0"
+ plur "^2.1.2"
+ string-width "^2.0.0"
+
+eslint-import-resolver-node@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
+ integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.5.0"
+
+eslint-module-utils@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c"
+ integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==
+ dependencies:
+ debug "^2.6.8"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-ava@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-ava/-/eslint-plugin-ava-9.0.0.tgz#a8d569ae7127aa640e344c46d1f288976543b1bd"
+ integrity sha512-mJqQ1wQ9pxBi5Pu+grrqjfuSLxiSSgnpa5p5vMdEpBqA9n9cUzSCv0xMZ/NkTMAj5ieOB3TWF8j+7C30Yiv4RA==
+ dependencies:
+ deep-strict-equal "^0.2.0"
+ enhance-visitors "^1.0.0"
+ espree "^6.0.0"
+ espurify "^2.0.0"
+ import-modules "^1.1.0"
+ pkg-dir "^4.2.0"
+ resolve-from "^5.0.0"
+
+eslint-plugin-es@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976"
+ integrity sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==
+ dependencies:
+ eslint-utils "^1.4.2"
+ regexpp "^3.0.0"
+
+eslint-plugin-import@^2.18.2:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
+ dependencies:
+ array-includes "^3.0.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.2"
+ eslint-module-utils "^2.4.0"
+ has "^1.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.0"
+ read-pkg-up "^2.0.0"
+ resolve "^1.11.0"
+
+eslint-plugin-node@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6"
+ integrity sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==
+ dependencies:
+ eslint-plugin-es "^2.0.0"
+ eslint-utils "^1.4.2"
+ ignore "^5.1.1"
+ minimatch "^3.0.4"
+ resolve "^1.10.1"
+ semver "^6.1.0"
+
+eslint-plugin-promise@^4.0.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
+ integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
+
+eslint-plugin-standard@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4"
+ integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==
+
+eslint-scope@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
+ integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.4.2, eslint-utils@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
+ integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
+ integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
+
+eslint@^6.1.0:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.1.tgz#269ccccec3ef60ab32358a44d147ac209154b919"
+ integrity sha512-UWzBS79pNcsDSxgxbdjkmzn/B6BhsXMfUaOHnNwyE8nD+Q6pyT96ow2MccVayUTV4yMid4qLhMiQaywctRkBLA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^1.4.3"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.1.2"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^7.0.0"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.3"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^6.1.2"
+ strip-ansi "^5.2.0"
+ strip-json-comments "^3.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+esm@^3.2.25:
+ version "3.2.25"
+ resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
+ integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
+
+espower-location-detector@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5"
+ integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=
+ dependencies:
+ is-url "^1.2.1"
+ path-is-absolute "^1.0.0"
+ source-map "^0.5.0"
+ xtend "^4.0.0"
+
+espree@^6.0.0, espree@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
+ integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
+ dependencies:
+ acorn "^7.1.0"
+ acorn-jsx "^5.1.0"
+ eslint-visitor-keys "^1.1.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+espurify@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056"
+ integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==
+ dependencies:
+ core-js "^2.0.0"
+
+espurify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.0.1.tgz#c25b3bb613863daa142edcca052370a1a459f41d"
+ integrity sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==
+
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
+fast-glob@^2.2.6:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-glob@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae"
+ integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastq@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
+ integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==
+ dependencies:
+ reusify "^1.0.0"
+
+figures@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec"
+ integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+foreground-child@^1.5.6:
+ version "1.5.6"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9"
+ integrity sha1-T9ca0t/elnibmApcCilZN8svXOk=
+ dependencies:
+ cross-spawn "^4"
+ signal-exit "^3.0.0"
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
+ integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-port@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.0.0.tgz#aa22b6b86fd926dd7884de3e23332c9f70c031a6"
+ integrity sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ==
+ dependencies:
+ type-fest "^0.3.0"
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
+ integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
+ integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@^7.0.3, glob@^7.1.3:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
+ dependencies:
+ ini "^1.3.4"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.3.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13"
+ integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22"
+ integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^9.1.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
+ integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^1.0.2"
+ dir-glob "^2.2.2"
+ fast-glob "^2.2.6"
+ glob "^7.1.3"
+ ignore "^4.0.3"
+ pify "^4.0.1"
+ slash "^2.0.0"
+
+got@^6.7.1:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+got@^9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
+
+handlebars@^4.1.2:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482"
+ integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==
+ dependencies:
+ neo-async "^2.6.0"
+ optimist "^0.6.1"
+ source-map "^0.6.1"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has-yarn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
+ integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hasha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39"
+ integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=
+ dependencies:
+ is-stream "^1.0.1"
+
+hasha@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca"
+ integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==
+ dependencies:
+ is-stream "^2.0.0"
+ type-fest "^0.8.0"
+
+hosted-git-info@^2.1.4:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
+ integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
+
+http-cache-semantics@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5"
+ integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==
+
+https-proxy-agent@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
+ integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
+iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ignore-by-default@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
+ integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk=
+
+ignore-walk@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
+ integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^4.0.3, ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.1:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf"
+ integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==
+
+import-fresh@^3.0.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
+ integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+
+import-local@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
+ dependencies:
+ pkg-dir "^4.2.0"
+ resolve-cwd "^3.0.0"
+
+import-modules@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-1.1.0.tgz#748db79c5cc42bb9701efab424f894e72600e9dc"
+ integrity sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^3.0.0, indent-string@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@^1.3.4, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+inquirer@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a"
+ integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^2.4.2"
+ cli-cursor "^3.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.15"
+ mute-stream "0.0.8"
+ run-async "^2.2.0"
+ rxjs "^6.4.0"
+ string-width "^4.1.0"
+ strip-ansi "^5.1.0"
+ through "^2.3.6"
+
+irregular-plurals@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766"
+ integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=
+
+irregular-plurals@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872"
+ integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arguments@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
+ integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-error@^2.2.0, is-error@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843"
+ integrity sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
+is-npm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+ integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
+
+is-npm@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053"
+ integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-observable@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-2.0.0.tgz#327af1e8cdea9cd717f95911b87c5d34301721a6"
+ integrity sha512-fhBZv3eFKUbyHXZ1oHujdo2tZ+CNbdpdzzlENgCGZUC8keoGxUew2jYFLYcUB4qo7LDD03o4KK11m/QYD7kEjg==
+
+is-path-cwd@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
+ dependencies:
+ is-path-inside "^2.1.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
+ dependencies:
+ path-is-inside "^1.0.2"
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928"
+ integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==
+ dependencies:
+ isobject "^4.0.0"
+
+is-promise@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+ integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-retry-allowed@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+
+is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-symbol@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-typedarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-url@^1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
+ integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
+
+is-utf8@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-yarn-global@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
+ integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
+
+isarray@1.0.0, isarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isobject@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0"
+ integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==
+
+istanbul-lib-coverage@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
+ integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
+
+istanbul-lib-hook@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133"
+ integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==
+ dependencies:
+ append-transform "^1.0.0"
+
+istanbul-lib-instrument@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
+ integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
+ dependencies:
+ "@babel/generator" "^7.4.0"
+ "@babel/parser" "^7.4.3"
+ "@babel/template" "^7.4.0"
+ "@babel/traverse" "^7.4.3"
+ "@babel/types" "^7.4.0"
+ istanbul-lib-coverage "^2.0.5"
+ semver "^6.0.0"
+
+istanbul-lib-report@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
+ integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
+ dependencies:
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ supports-color "^6.1.0"
+
+istanbul-lib-source-maps@^3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
+ integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ rimraf "^2.6.3"
+ source-map "^0.6.1"
+
+istanbul-reports@^2.2.4:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
+ integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
+ dependencies:
+ handlebars "^4.1.2"
+
+js-string-escape@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
+ integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.10.0, js-yaml@^3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json5@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6"
+ integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==
+ dependencies:
+ minimist "^1.2.0"
+
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+ integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
+ dependencies:
+ package-json "^4.0.0"
+
+latest-version@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
+ integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
+ dependencies:
+ package-json "^6.3.0"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3"
+ integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==
+ dependencies:
+ graceful-fs "^4.1.15"
+ parse-json "^4.0.0"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+ type-fest "^0.3.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.flattendeep@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+ integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
+
+lodash.islength@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.islength/-/lodash.islength-4.0.1.tgz#4e9868d452575d750affd358c979543dc20ed577"
+ integrity sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc=
+
+lodash.merge@^4.6.1:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.13.1, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
+log-symbols@^2.0.0, log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+loud-rejection@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c"
+ integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.2"
+
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801"
+ integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==
+ dependencies:
+ semver "^6.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
+ integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+matcher@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-2.1.0.tgz#64e1041c15b993e23b786f93320a7474bf833c28"
+ integrity sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
+md5-hex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33"
+ integrity sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=
+ dependencies:
+ md5-o-matic "^0.1.1"
+
+md5-hex@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c"
+ integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==
+ dependencies:
+ blueimp-md5 "^2.10.0"
+
+md5-o-matic@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
+ integrity sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=
+
+meow@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4"
+ integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==
+ dependencies:
+ camelcase-keys "^4.0.0"
+ decamelize-keys "^1.0.0"
+ loud-rejection "^1.0.0"
+ minimist-options "^3.0.1"
+ normalize-package-data "^2.3.4"
+ read-pkg-up "^3.0.0"
+ redent "^2.0.0"
+ trim-newlines "^2.0.0"
+ yargs-parser "^10.0.0"
+
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
+ integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
+
+micromatch@^3.1.10:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-response@^1.0.0, mimic-response@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist-options@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954"
+ integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+ integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1, ms@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+neo-async@^2.6.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
+nested-error-stacks@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
+ integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-fetch@^2.2.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
+ integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-url@^4.1.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
+ integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+nyc@^14.0.0:
+ version "14.1.1"
+ resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb"
+ integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==
+ dependencies:
+ archy "^1.0.0"
+ caching-transform "^3.0.2"
+ convert-source-map "^1.6.0"
+ cp-file "^6.2.0"
+ find-cache-dir "^2.1.0"
+ find-up "^3.0.0"
+ foreground-child "^1.5.6"
+ glob "^7.1.3"
+ istanbul-lib-coverage "^2.0.5"
+ istanbul-lib-hook "^2.0.7"
+ istanbul-lib-instrument "^3.3.0"
+ istanbul-lib-report "^2.0.8"
+ istanbul-lib-source-maps "^3.0.6"
+ istanbul-reports "^2.2.4"
+ js-yaml "^3.13.1"
+ make-dir "^2.1.0"
+ merge-source-map "^1.1.0"
+ resolve-from "^4.0.0"
+ rimraf "^2.6.3"
+ signal-exit "^3.0.2"
+ spawn-wrap "^1.4.2"
+ test-exclude "^5.2.3"
+ uuid "^3.3.2"
+ yargs "^13.2.2"
+ yargs-parser "^13.0.0"
+
+object-assign@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+ integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+object-is@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
+ integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
+observable-to-promise@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-1.0.0.tgz#37e136f16a15385ac063411ada0e1202bfff58f4"
+ integrity sha512-cqnGUrNsE6vdVDTPAX9/WeVzwy/z37vdxupdQXU8vgTXRFH72KCZiZga8aca2ulRPIeem8W3vW9rQHBwfIl2WA==
+ dependencies:
+ is-observable "^2.0.0"
+ symbol-observable "^1.0.4"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+ integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+optimist@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+optionator@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+ora@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+os-homedir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
+ integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+package-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e"
+ integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==
+ dependencies:
+ graceful-fs "^4.1.15"
+ hasha "^3.0.0"
+ lodash.flattendeep "^4.4.0"
+ release-zalgo "^1.0.0"
+
+package-hash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506"
+ integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==
+ dependencies:
+ graceful-fs "^4.1.15"
+ hasha "^5.0.0"
+ lodash.flattendeep "^4.4.0"
+ release-zalgo "^1.0.0"
+
+package-json@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+ integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
+ dependencies:
+ got "^6.7.1"
+ registry-auth-token "^3.0.1"
+ registry-url "^3.0.3"
+ semver "^5.1.0"
+
+package-json@^6.3.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
+ integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
+ dependencies:
+ got "^9.6.0"
+ registry-auth-token "^4.0.0"
+ registry-url "^5.0.0"
+ semver "^6.2.0"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-ms@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
+ integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picomatch@^2.0.4, picomatch@^2.0.5:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5"
+ integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-conf@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae"
+ integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==
+ dependencies:
+ find-up "^3.0.0"
+ load-json-file "^5.2.0"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+plur@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a"
+ integrity sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=
+ dependencies:
+ irregular-plurals "^1.0.0"
+
+plur@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b"
+ integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==
+ dependencies:
+ irregular-plurals "^2.0.0"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
+pretty-ms@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.1.0.tgz#b906bdd1ec9e9799995c372e2b1c34f073f95384"
+ integrity sha512-4gaK1skD2gwscCfkswYQRmddUb2GJZtzDGRjHWadVHtK/DIKFufa12MvES6/xu1tVbUYeia5bmLcwJtZJQUqnw==
+ dependencies:
+ parse-ms "^2.1.0"
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+quick-lru@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
+ integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
+
+rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
+ integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg-up@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
+ integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
+ dependencies:
+ find-up "^3.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+readdirp@~3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839"
+ integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==
+ dependencies:
+ picomatch "^2.0.4"
+
+redent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
+ integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=
+ dependencies:
+ indent-string "^3.0.0"
+ strip-indent "^2.0.0"
+
+regenerate-unicode-properties@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+ integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
+ dependencies:
+ regenerate "^1.4.0"
+
+regenerate@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
+ integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexp.prototype.flags@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
+ integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==
+ dependencies:
+ define-properties "^1.1.2"
+
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpp@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
+ integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+
+regexpu-core@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6"
+ integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.1.0"
+ regjsgen "^0.5.0"
+ regjsparser "^0.6.0"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.1.0"
+
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-auth-token@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be"
+ integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==
+ dependencies:
+ rc "^1.2.8"
+ safe-buffer "^5.0.1"
+
+registry-url@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+ integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
+ dependencies:
+ rc "^1.0.1"
+
+registry-url@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
+ integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
+ dependencies:
+ rc "^1.2.8"
+
+regjsgen@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c"
+ integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==
+
+regjsparser@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
+ integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+release-zalgo@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
+ integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=
+ dependencies:
+ es6-error "^4.0.1"
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+require-precompiled@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa"
+ integrity sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=
+
+resolve-cwd@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0:
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.2.tgz#08b12496d9aa8659c75f534a8f05f0d892fff594"
+ integrity sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw==
+ dependencies:
+ path-parse "^1.0.6"
+
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ dependencies:
+ lowercase-keys "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+reusify@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^2.6.2, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
+ dependencies:
+ is-promise "^2.1.0"
+
+run-parallel@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
+rxjs@^6.4.0:
+ version "6.5.3"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a"
+ integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@^5.0.1:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+semver-diff@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+ integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
+ dependencies:
+ semver "^5.0.3"
+
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+serialize-error@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a"
+ integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.13:
+ version "0.5.16"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
+ integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.0, source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spawn-wrap@^1.4.2:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848"
+ integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==
+ dependencies:
+ foreground-child "^1.5.6"
+ mkdirp "^0.5.0"
+ os-homedir "^1.0.1"
+ rimraf "^2.6.2"
+ signal-exit "^3.0.2"
+ which "^1.3.0"
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+stack-utils@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
+ integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.trimleft@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-bom-buf@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz#ff9c223937f8e7154b77e9de9bde094186885c15"
+ integrity sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==
+ dependencies:
+ is-utf8 "^0.2.1"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+ integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
+
+strip-json-comments@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
+ integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+supertap@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supertap/-/supertap-1.0.0.tgz#bd9751c7fafd68c68cf8222a29892206a119fa9e"
+ integrity sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==
+ dependencies:
+ arrify "^1.0.1"
+ indent-string "^3.2.0"
+ js-yaml "^3.10.0"
+ serialize-error "^2.1.0"
+ strip-ansi "^4.0.0"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
+ integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
+ dependencies:
+ has-flag "^4.0.0"
+
+symbol-observable@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+table@^5.2.3:
+ version "5.4.6"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
+ integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+teeny-request@^3.11.3:
+ version "3.11.3"
+ resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55"
+ integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==
+ dependencies:
+ https-proxy-agent "^2.2.1"
+ node-fetch "^2.2.0"
+ uuid "^3.3.2"
+
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
+test-exclude@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
+ integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==
+ dependencies:
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ read-pkg-up "^4.0.0"
+ require-main-filename "^2.0.0"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+time-zone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d"
+ integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=
+
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+trim-newlines@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
+ integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
+
+trim-off-newlines@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
+ integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+ integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
+
+tsd@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/tsd/-/tsd-0.11.0.tgz#ede8b8e85850845b753fff7eaaf68dbd3673700b"
+ integrity sha512-klKMNC0KRzUIaLJG8XqkvH/9rKwYX74xpqJBN8spWjYUDojAesd6AfDCT5dray+yhLfTGkem7O3nU6i4KwzNDw==
+ dependencies:
+ eslint-formatter-pretty "^1.3.0"
+ globby "^9.1.0"
+ meow "^5.0.0"
+ path-exists "^3.0.0"
+ read-pkg-up "^4.0.0"
+ update-notifier "^2.5.0"
+
+tslib@^1.9.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-fest@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
+ integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
+
+type-fest@^0.8.0, type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+uglify-js@^3.1.4:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.0.tgz#14b854003386b7a7c045910f43afbc96d2aa5307"
+ integrity sha512-PC/ee458NEMITe1OufAjal65i6lB58R1HWMRcxwvdz1UopW0DYqlRL3xdu3IcTvTXsB02CRHykidkTRL+A3hQA==
+ dependencies:
+ commander "~2.20.3"
+ source-map "~0.6.1"
+
+uid2@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"
+ integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=
+
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+ integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+ integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
+ dependencies:
+ crypto-random-string "^1.0.0"
+
+unique-temp-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385"
+ integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=
+ dependencies:
+ mkdirp "^0.5.1"
+ os-tmpdir "^1.0.1"
+ uid2 "0.0.3"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
+update-notifier@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
+ integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
+ dependencies:
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-ci "^1.0.10"
+ is-installed-globally "^0.1.0"
+ is-npm "^1.0.0"
+ latest-version "^3.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+update-notifier@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250"
+ integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==
+ dependencies:
+ boxen "^3.0.0"
+ chalk "^2.0.1"
+ configstore "^4.0.0"
+ has-yarn "^2.1.0"
+ import-lazy "^2.1.0"
+ is-ci "^2.0.0"
+ is-installed-globally "^0.1.0"
+ is-npm "^3.0.0"
+ is-yarn-global "^0.3.0"
+ latest-version "^5.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ dependencies:
+ prepend-http "^2.0.0"
+
+urlgrey@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
+ integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+uuid@^3.3.2:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
+ integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
+
+v8-compile-cache@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
+ integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+well-known-symbols@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5"
+ integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.9, which@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
+word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^2.0.0, write-file-atomic@^2.4.2:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
+write-file-atomic@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b"
+ integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+ integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
+
+xtend@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yargs-parser@^10.0.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
+ integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
+ dependencies:
+ camelcase "^4.1.0"
+
+yargs-parser@^13.0.0, yargs-parser@^13.1.1:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^13.2.2:
+ version "13.3.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
+ integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.1"
diff --git a/client/node_modules/tldts-core/LICENSE b/client/node_modules/tldts-core/LICENSE
new file mode 100644
index 0000000..41be2c4
--- /dev/null
+++ b/client/node_modules/tldts-core/LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/tldts-core/README.md b/client/node_modules/tldts-core/README.md
new file mode 100644
index 0000000..20ee4b9
--- /dev/null
+++ b/client/node_modules/tldts-core/README.md
@@ -0,0 +1,3 @@
+# `tldts-core`
+
+> core building blocks of tldts, used by both `tldts` and `tldts-experimental` packages.
diff --git a/client/node_modules/tldts-core/dist/cjs/index.js b/client/node_modules/tldts-core/dist/cjs/index.js
new file mode 100644
index 0000000..5c291be
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/index.js
@@ -0,0 +1,561 @@
+'use strict';
+
+/**
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
+ *
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
+ * make sure that: either they are equal, or the character preceding `vhost` in
+ * `hostname` is a '.' (it should not be a partial label).
+ *
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
+ */
+function shareSameDomainSuffix(hostname, vhost) {
+ if (hostname.endsWith(vhost)) {
+ return (hostname.length === vhost.length ||
+ hostname[hostname.length - vhost.length - 1] === '.');
+ }
+ return false;
+}
+/**
+ * Given a hostname and its public suffix, extract the general domain.
+ */
+function extractDomainWithSuffix(hostname, publicSuffix) {
+ // Locate the index of the last '.' in the part of the `hostname` preceding
+ // the public suffix.
+ //
+ // examples:
+ // 1. not.evil.co.uk => evil.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // | index of the last dot
+ //
+ // 2. example.co.uk => example.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // |
+ // | (-1) no dot found before the public suffix
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
+ if (lastDotBeforeSuffixIndex === -1) {
+ return hostname;
+ }
+ // Extract the part between the last '.'
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
+}
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+function getDomain(suffix, hostname, options) {
+ // Check if `hostname` ends with a member of `validHosts`.
+ if (options.validHosts !== null) {
+ const validHosts = options.validHosts;
+ for (const vhost of validHosts) {
+ if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {
+ return vhost;
+ }
+ }
+ }
+ let numberOfLeadingDots = 0;
+ if (hostname.startsWith('.')) {
+ while (numberOfLeadingDots < hostname.length &&
+ hostname[numberOfLeadingDots] === '.') {
+ numberOfLeadingDots += 1;
+ }
+ }
+ // If `hostname` is a valid public suffix, then there is no domain to return.
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
+ // there is no need to perform a string comparison and we only compare the
+ // size.
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
+ return null;
+ }
+ // To extract the general domain, we start by identifying the public suffix
+ // (if any), then consider the domain to be the public suffix with one added
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
+ // `evil.co.uk`).
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
+}
+
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+function getDomainWithoutSuffix(domain, suffix) {
+ // Note: here `domain` and `suffix` cannot have the same length because in
+ // this case we set `domain` to `null` instead. It is thus safe to assume
+ // that `suffix` is shorter than `domain`.
+ return domain.slice(0, -suffix.length - 1);
+}
+
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+function extractHostname(url, urlIsValidHostname) {
+ let start = 0;
+ let end = url.length;
+ let hasUpper = false;
+ // If url is not already a valid hostname, then try to extract hostname.
+ if (!urlIsValidHostname) {
+ // Special handling of data URLs
+ if (url.startsWith('data:')) {
+ return null;
+ }
+ // Trim leading spaces
+ while (start < url.length && url.charCodeAt(start) <= 32) {
+ start += 1;
+ }
+ // Trim trailing spaces
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
+ end -= 1;
+ }
+ // Skip scheme.
+ if (url.charCodeAt(start) === 47 /* '/' */ &&
+ url.charCodeAt(start + 1) === 47 /* '/' */) {
+ start += 2;
+ }
+ else {
+ const indexOfProtocol = url.indexOf(':/', start);
+ if (indexOfProtocol !== -1) {
+ // Implement fast-path for common protocols. We expect most protocols
+ // should be one of these 4 and thus we will not need to perform the
+ // more expansive validity check most of the time.
+ const protocolSize = indexOfProtocol - start;
+ const c0 = url.charCodeAt(start);
+ const c1 = url.charCodeAt(start + 1);
+ const c2 = url.charCodeAt(start + 2);
+ const c3 = url.charCodeAt(start + 3);
+ const c4 = url.charCodeAt(start + 4);
+ if (protocolSize === 5 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */ &&
+ c4 === 115 /* 's' */) ;
+ else if (protocolSize === 4 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */) ;
+ else if (protocolSize === 3 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */ &&
+ c2 === 115 /* 's' */) ;
+ else if (protocolSize === 2 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */) ;
+ else {
+ // Check that scheme is valid
+ for (let i = start; i < indexOfProtocol; i += 1) {
+ const lowerCaseCode = url.charCodeAt(i) | 32;
+ if (!(((lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]
+ (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]
+ lowerCaseCode === 46 || // '.'
+ lowerCaseCode === 45 || // '-'
+ lowerCaseCode === 43) // '+'
+ )) {
+ return null;
+ }
+ }
+ }
+ // Skip 0, 1 or more '/' after ':/'
+ start = indexOfProtocol + 2;
+ while (url.charCodeAt(start) === 47 /* '/' */) {
+ start += 1;
+ }
+ }
+ }
+ // Detect first occurrence of '/', '?' or '#'. We also keep track of the
+ // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of
+ // (respectively), identifier, ipv6 or port.
+ let indexOfIdentifier = -1;
+ let indexOfClosingBracket = -1;
+ let indexOfPort = -1;
+ for (let i = start; i < end; i += 1) {
+ const code = url.charCodeAt(i);
+ if (code === 35 || // '#'
+ code === 47 || // '/'
+ code === 63 // '?'
+ ) {
+ end = i;
+ break;
+ }
+ else if (code === 64) {
+ // '@'
+ indexOfIdentifier = i;
+ }
+ else if (code === 93) {
+ // ']'
+ indexOfClosingBracket = i;
+ }
+ else if (code === 58) {
+ // ':'
+ indexOfPort = i;
+ }
+ else if (code >= 65 && code <= 90) {
+ hasUpper = true;
+ }
+ }
+ // Detect identifier: '@'
+ if (indexOfIdentifier !== -1 &&
+ indexOfIdentifier > start &&
+ indexOfIdentifier < end) {
+ start = indexOfIdentifier + 1;
+ }
+ // Handle ipv6 addresses
+ if (url.charCodeAt(start) === 91 /* '[' */) {
+ if (indexOfClosingBracket !== -1) {
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
+ }
+ return null;
+ }
+ else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
+ // Detect port: ':'
+ end = indexOfPort;
+ }
+ }
+ // Trim trailing dots
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
+ end -= 1;
+ }
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
+ if (hasUpper) {
+ return hostname.toLowerCase();
+ }
+ return hostname;
+}
+
+/**
+ * Check if a hostname is an IP. You should be aware that this only works
+ * because `hostname` is already garanteed to be a valid hostname!
+ */
+function isProbablyIpv4(hostname) {
+ // Cannot be shorted than 1.1.1.1
+ if (hostname.length < 7) {
+ return false;
+ }
+ // Cannot be longer than: 255.255.255.255
+ if (hostname.length > 15) {
+ return false;
+ }
+ let numberOfDots = 0;
+ for (let i = 0; i < hostname.length; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ numberOfDots += 1;
+ }
+ else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
+ return false;
+ }
+ }
+ return (numberOfDots === 3 &&
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);
+}
+/**
+ * Similar to isProbablyIpv4.
+ */
+function isProbablyIpv6(hostname) {
+ if (hostname.length < 3) {
+ return false;
+ }
+ let start = hostname.startsWith('[') ? 1 : 0;
+ let end = hostname.length;
+ if (hostname[end - 1] === ']') {
+ end -= 1;
+ }
+ // We only consider the maximum size of a normal IPV6. Note that this will
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
+ // and a proper validation library should be used for these.
+ if (end - start > 39) {
+ return false;
+ }
+ let hasColon = false;
+ for (; start < end; start += 1) {
+ const code = hostname.charCodeAt(start);
+ if (code === 58 /* ':' */) {
+ hasColon = true;
+ }
+ else if (!(((code >= 48 && code <= 57) || // 0-9
+ (code >= 97 && code <= 102) || // a-f
+ (code >= 65 && code <= 90)) // A-F
+ )) {
+ return false;
+ }
+ }
+ return hasColon;
+}
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+function isIp(hostname) {
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
+}
+
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+function isValidAscii(code) {
+ return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);
+}
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+function isValidHostname (hostname) {
+ if (hostname.length > 255) {
+ return false;
+ }
+ if (hostname.length === 0) {
+ return false;
+ }
+ if (
+ /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&
+ hostname.charCodeAt(0) !== 46 && // '.' (dot)
+ hostname.charCodeAt(0) !== 95 // '_' (underscore)
+ ) {
+ return false;
+ }
+ // Validate hostname according to RFC
+ let lastDotIndex = -1;
+ let lastCharCode = -1;
+ const len = hostname.length;
+ for (let i = 0; i < len; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95) {
+ return false;
+ }
+ lastDotIndex = i;
+ }
+ else if (!( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95))) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+ lastCharCode = code;
+ }
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45);
+}
+
+function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {
+ return {
+ allowIcannDomains,
+ allowPrivateDomains,
+ detectIp,
+ extractHostname,
+ mixedInputs,
+ validHosts,
+ validateHostname,
+ };
+}
+const DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});
+function setDefaults(options) {
+ if (options === undefined) {
+ return DEFAULT_OPTIONS;
+ }
+ return /*@__INLINE__*/ setDefaultsImpl(options);
+}
+
+/**
+ * Returns the subdomain of a hostname string
+ */
+function getSubdomain(hostname, domain) {
+ // If `hostname` and `domain` are the same, then there is no sub-domain
+ if (domain.length === hostname.length) {
+ return '';
+ }
+ return hostname.slice(0, -domain.length - 1);
+}
+
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+function getEmptyResult() {
+ return {
+ domain: null,
+ domainWithoutSuffix: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null,
+ };
+}
+function resetResult(result) {
+ result.domain = null;
+ result.domainWithoutSuffix = null;
+ result.hostname = null;
+ result.isIcann = null;
+ result.isIp = null;
+ result.isPrivate = null;
+ result.publicSuffix = null;
+ result.subdomain = null;
+}
+function parseImpl(url, step, suffixLookup, partialOptions, result) {
+ const options = /*@__INLINE__*/ setDefaults(partialOptions);
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (!options.extractHostname) {
+ result.hostname = url;
+ }
+ else if (options.mixedInputs) {
+ result.hostname = extractHostname(url, isValidHostname(url));
+ }
+ else {
+ result.hostname = extractHostname(url, false);
+ }
+ if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {
+ return result;
+ }
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp) {
+ result.isIp = isIp(result.hostname);
+ if (result.isIp) {
+ return result;
+ }
+ }
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (options.validateHostname &&
+ options.extractHostname &&
+ !isValidHostname(result.hostname)) {
+ result.hostname = null;
+ return result;
+ }
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {
+ return result;
+ }
+ // Extract domain
+ result.domain = getDomain(result.publicSuffix, result.hostname, options);
+ if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {
+ return result;
+ }
+ // Extract subdomain
+ result.subdomain = getSubdomain(result.hostname, result.domain);
+ if (step === 4 /* FLAG.SUB_DOMAIN */) {
+ return result;
+ }
+ // Extract domain without suffix
+ result.domainWithoutSuffix = getDomainWithoutSuffix(result.domain, result.publicSuffix);
+ return result;
+}
+
+function fastPath (hostname, options, out) {
+ // Fast path for very popular suffixes; this allows to by-pass lookup
+ // completely as well as any extra allocation or string manipulation.
+ if (!options.allowPrivateDomains && hostname.length > 3) {
+ const last = hostname.length - 1;
+ const c3 = hostname.charCodeAt(last);
+ const c2 = hostname.charCodeAt(last - 1);
+ const c1 = hostname.charCodeAt(last - 2);
+ const c0 = hostname.charCodeAt(last - 3);
+ if (c3 === 109 /* 'm' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 99 /* 'c' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'com';
+ return true;
+ }
+ else if (c3 === 103 /* 'g' */ &&
+ c2 === 114 /* 'r' */ &&
+ c1 === 111 /* 'o' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'org';
+ return true;
+ }
+ else if (c3 === 117 /* 'u' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 101 /* 'e' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'edu';
+ return true;
+ }
+ else if (c3 === 118 /* 'v' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 103 /* 'g' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'gov';
+ return true;
+ }
+ else if (c3 === 116 /* 't' */ &&
+ c2 === 101 /* 'e' */ &&
+ c1 === 110 /* 'n' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'net';
+ return true;
+ }
+ else if (c3 === 101 /* 'e' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'de';
+ return true;
+ }
+ }
+ return false;
+}
+
+exports.fastPathLookup = fastPath;
+exports.getEmptyResult = getEmptyResult;
+exports.parseImpl = parseImpl;
+exports.resetResult = resetResult;
+exports.setDefaults = setDefaults;
+//# sourceMappingURL=index.js.map
diff --git a/client/node_modules/tldts-core/dist/cjs/index.js.map b/client/node_modules/tldts-core/dist/cjs/index.js.map
new file mode 100644
index 0000000..c8407a2
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../../src/domain.ts","../../src/domain-without-suffix.ts","../../src/extract-hostname.ts","../../src/is-ip.ts","../../src/is-valid.ts","../../src/options.ts","../../src/subdomain.ts","../../src/factory.ts","../../src/lookup/fast-path.ts"],"sourcesContent":["import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js b/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js
new file mode 100644
index 0000000..ab010c2
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+function getDomainWithoutSuffix(domain, suffix) {
+ // Note: here `domain` and `suffix` cannot have the same length because in
+ // this case we set `domain` to `null` instead. It is thus safe to assume
+ // that `suffix` is shorter than `domain`.
+ return domain.slice(0, -suffix.length - 1);
+}
+exports.default = getDomainWithoutSuffix;
+//# sourceMappingURL=domain-without-suffix.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map b/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map
new file mode 100644
index 0000000..4ecdd88
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"domain-without-suffix.js","sourceRoot":"","sources":["../../../src/domain-without-suffix.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,SAAwB,sBAAsB,CAC5C,MAAc,EACd,MAAc;IAEd,0EAA0E;IAC1E,yEAAyE;IACzE,0CAA0C;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AARD,yCAQC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/domain.js b/client/node_modules/tldts-core/dist/cjs/src/domain.js
new file mode 100644
index 0000000..4bac8cd
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/domain.js
@@ -0,0 +1,83 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
+ *
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
+ * make sure that: either they are equal, or the character preceding `vhost` in
+ * `hostname` is a '.' (it should not be a partial label).
+ *
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
+ */
+function shareSameDomainSuffix(hostname, vhost) {
+ if (hostname.endsWith(vhost)) {
+ return (hostname.length === vhost.length ||
+ hostname[hostname.length - vhost.length - 1] === '.');
+ }
+ return false;
+}
+/**
+ * Given a hostname and its public suffix, extract the general domain.
+ */
+function extractDomainWithSuffix(hostname, publicSuffix) {
+ // Locate the index of the last '.' in the part of the `hostname` preceding
+ // the public suffix.
+ //
+ // examples:
+ // 1. not.evil.co.uk => evil.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // | index of the last dot
+ //
+ // 2. example.co.uk => example.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // |
+ // | (-1) no dot found before the public suffix
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
+ if (lastDotBeforeSuffixIndex === -1) {
+ return hostname;
+ }
+ // Extract the part between the last '.'
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
+}
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+function getDomain(suffix, hostname, options) {
+ // Check if `hostname` ends with a member of `validHosts`.
+ if (options.validHosts !== null) {
+ const validHosts = options.validHosts;
+ for (const vhost of validHosts) {
+ if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {
+ return vhost;
+ }
+ }
+ }
+ let numberOfLeadingDots = 0;
+ if (hostname.startsWith('.')) {
+ while (numberOfLeadingDots < hostname.length &&
+ hostname[numberOfLeadingDots] === '.') {
+ numberOfLeadingDots += 1;
+ }
+ }
+ // If `hostname` is a valid public suffix, then there is no domain to return.
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
+ // there is no need to perform a string comparison and we only compare the
+ // size.
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
+ return null;
+ }
+ // To extract the general domain, we start by identifying the public suffix
+ // (if any), then consider the domain to be the public suffix with one added
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
+ // `evil.co.uk`).
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
+}
+exports.default = getDomain;
+//# sourceMappingURL=domain.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/domain.js.map b/client/node_modules/tldts-core/dist/cjs/src/domain.js.map
new file mode 100644
index 0000000..40e7caa
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/domain.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/domain.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,QAAgB,EAAE,KAAa;IAC5D,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC5B,OAAO,CACL,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAChC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CACrD,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,QAAgB,EAChB,YAAoB;IAEpB,2EAA2E;IAC3E,qBAAqB;IACrB,EAAE;IACF,YAAY;IACZ,qCAAqC;IACrC,iBAAiB;IACjB,wCAAwC;IACxC,kCAAkC;IAClC,EAAE;IACF,wCAAwC;IACxC,gBAAgB;IAChB,uCAAuC;IACvC,QAAQ;IACR,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,MAAM,wBAAwB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAE9E,sEAAsE;IACtE,IAAI,wBAAwB,KAAK,CAAC,CAAC,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IAED,wCAAwC;IACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAwB,SAAS,CAC/B,MAAc,EACd,QAAgB,EAChB,OAAiB;IAEjB,0DAA0D;IAC1D,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;YAC9B,KAAI,eAAgB,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAC1D,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC5B,OACE,mBAAmB,GAAG,QAAQ,CAAC,MAAM;YACrC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,GAAG,EACrC;YACA,mBAAmB,IAAI,CAAC,CAAC;SAC1B;KACF;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,QAAQ;IACR,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE;QAC3D,OAAO,IAAI,CAAC;KACb;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,iBAAiB;IACjB,OAAO,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAvCD,4BAuCC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js b/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js
new file mode 100644
index 0000000..46c8aa6
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js
@@ -0,0 +1,149 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+function extractHostname(url, urlIsValidHostname) {
+ let start = 0;
+ let end = url.length;
+ let hasUpper = false;
+ // If url is not already a valid hostname, then try to extract hostname.
+ if (!urlIsValidHostname) {
+ // Special handling of data URLs
+ if (url.startsWith('data:')) {
+ return null;
+ }
+ // Trim leading spaces
+ while (start < url.length && url.charCodeAt(start) <= 32) {
+ start += 1;
+ }
+ // Trim trailing spaces
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
+ end -= 1;
+ }
+ // Skip scheme.
+ if (url.charCodeAt(start) === 47 /* '/' */ &&
+ url.charCodeAt(start + 1) === 47 /* '/' */) {
+ start += 2;
+ }
+ else {
+ const indexOfProtocol = url.indexOf(':/', start);
+ if (indexOfProtocol !== -1) {
+ // Implement fast-path for common protocols. We expect most protocols
+ // should be one of these 4 and thus we will not need to perform the
+ // more expansive validity check most of the time.
+ const protocolSize = indexOfProtocol - start;
+ const c0 = url.charCodeAt(start);
+ const c1 = url.charCodeAt(start + 1);
+ const c2 = url.charCodeAt(start + 2);
+ const c3 = url.charCodeAt(start + 3);
+ const c4 = url.charCodeAt(start + 4);
+ if (protocolSize === 5 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */ &&
+ c4 === 115 /* 's' */) {
+ // https
+ }
+ else if (protocolSize === 4 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */) {
+ // http
+ }
+ else if (protocolSize === 3 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */ &&
+ c2 === 115 /* 's' */) {
+ // wss
+ }
+ else if (protocolSize === 2 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */) {
+ // ws
+ }
+ else {
+ // Check that scheme is valid
+ for (let i = start; i < indexOfProtocol; i += 1) {
+ const lowerCaseCode = url.charCodeAt(i) | 32;
+ if (!(((lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]
+ (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]
+ lowerCaseCode === 46 || // '.'
+ lowerCaseCode === 45 || // '-'
+ lowerCaseCode === 43) // '+'
+ )) {
+ return null;
+ }
+ }
+ }
+ // Skip 0, 1 or more '/' after ':/'
+ start = indexOfProtocol + 2;
+ while (url.charCodeAt(start) === 47 /* '/' */) {
+ start += 1;
+ }
+ }
+ }
+ // Detect first occurrence of '/', '?' or '#'. We also keep track of the
+ // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of
+ // (respectively), identifier, ipv6 or port.
+ let indexOfIdentifier = -1;
+ let indexOfClosingBracket = -1;
+ let indexOfPort = -1;
+ for (let i = start; i < end; i += 1) {
+ const code = url.charCodeAt(i);
+ if (code === 35 || // '#'
+ code === 47 || // '/'
+ code === 63 // '?'
+ ) {
+ end = i;
+ break;
+ }
+ else if (code === 64) {
+ // '@'
+ indexOfIdentifier = i;
+ }
+ else if (code === 93) {
+ // ']'
+ indexOfClosingBracket = i;
+ }
+ else if (code === 58) {
+ // ':'
+ indexOfPort = i;
+ }
+ else if (code >= 65 && code <= 90) {
+ hasUpper = true;
+ }
+ }
+ // Detect identifier: '@'
+ if (indexOfIdentifier !== -1 &&
+ indexOfIdentifier > start &&
+ indexOfIdentifier < end) {
+ start = indexOfIdentifier + 1;
+ }
+ // Handle ipv6 addresses
+ if (url.charCodeAt(start) === 91 /* '[' */) {
+ if (indexOfClosingBracket !== -1) {
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
+ }
+ return null;
+ }
+ else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
+ // Detect port: ':'
+ end = indexOfPort;
+ }
+ }
+ // Trim trailing dots
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
+ end -= 1;
+ }
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
+ if (hasUpper) {
+ return hostname.toLowerCase();
+ }
+ return hostname;
+}
+exports.default = extractHostname;
+//# sourceMappingURL=extract-hostname.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map b/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map
new file mode 100644
index 0000000..ee30ecb
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extract-hostname.js","sourceRoot":"","sources":["../../../src/extract-hostname.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/factory.js b/client/node_modules/tldts-core/dist/cjs/src/factory.js
new file mode 100644
index 0000000..4949ad3
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/factory.js
@@ -0,0 +1,105 @@
+"use strict";
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parseImpl = exports.resetResult = exports.getEmptyResult = void 0;
+const domain_1 = require("./domain");
+const domain_without_suffix_1 = require("./domain-without-suffix");
+const extract_hostname_1 = require("./extract-hostname");
+const is_ip_1 = require("./is-ip");
+const is_valid_1 = require("./is-valid");
+const options_1 = require("./options");
+const subdomain_1 = require("./subdomain");
+function getEmptyResult() {
+ return {
+ domain: null,
+ domainWithoutSuffix: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null,
+ };
+}
+exports.getEmptyResult = getEmptyResult;
+function resetResult(result) {
+ result.domain = null;
+ result.domainWithoutSuffix = null;
+ result.hostname = null;
+ result.isIcann = null;
+ result.isIp = null;
+ result.isPrivate = null;
+ result.publicSuffix = null;
+ result.subdomain = null;
+}
+exports.resetResult = resetResult;
+function parseImpl(url, step, suffixLookup, partialOptions, result) {
+ const options = /*@__INLINE__*/ (0, options_1.setDefaults)(partialOptions);
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (!options.extractHostname) {
+ result.hostname = url;
+ }
+ else if (options.mixedInputs) {
+ result.hostname = (0, extract_hostname_1.default)(url, (0, is_valid_1.default)(url));
+ }
+ else {
+ result.hostname = (0, extract_hostname_1.default)(url, false);
+ }
+ if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {
+ return result;
+ }
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp) {
+ result.isIp = (0, is_ip_1.default)(result.hostname);
+ if (result.isIp) {
+ return result;
+ }
+ }
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (options.validateHostname &&
+ options.extractHostname &&
+ !(0, is_valid_1.default)(result.hostname)) {
+ result.hostname = null;
+ return result;
+ }
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {
+ return result;
+ }
+ // Extract domain
+ result.domain = (0, domain_1.default)(result.publicSuffix, result.hostname, options);
+ if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {
+ return result;
+ }
+ // Extract subdomain
+ result.subdomain = (0, subdomain_1.default)(result.hostname, result.domain);
+ if (step === 4 /* FLAG.SUB_DOMAIN */) {
+ return result;
+ }
+ // Extract domain without suffix
+ result.domainWithoutSuffix = (0, domain_without_suffix_1.default)(result.domain, result.publicSuffix);
+ return result;
+}
+exports.parseImpl = parseImpl;
+//# sourceMappingURL=factory.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/factory.js.map b/client/node_modules/tldts-core/dist/cjs/src/factory.js.map
new file mode 100644
index 0000000..495cc1c
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/factory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/factory.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/is-ip.js b/client/node_modules/tldts-core/dist/cjs/src/is-ip.js
new file mode 100644
index 0000000..37f85f5
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/is-ip.js
@@ -0,0 +1,72 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Check if a hostname is an IP. You should be aware that this only works
+ * because `hostname` is already garanteed to be a valid hostname!
+ */
+function isProbablyIpv4(hostname) {
+ // Cannot be shorted than 1.1.1.1
+ if (hostname.length < 7) {
+ return false;
+ }
+ // Cannot be longer than: 255.255.255.255
+ if (hostname.length > 15) {
+ return false;
+ }
+ let numberOfDots = 0;
+ for (let i = 0; i < hostname.length; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ numberOfDots += 1;
+ }
+ else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
+ return false;
+ }
+ }
+ return (numberOfDots === 3 &&
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);
+}
+/**
+ * Similar to isProbablyIpv4.
+ */
+function isProbablyIpv6(hostname) {
+ if (hostname.length < 3) {
+ return false;
+ }
+ let start = hostname.startsWith('[') ? 1 : 0;
+ let end = hostname.length;
+ if (hostname[end - 1] === ']') {
+ end -= 1;
+ }
+ // We only consider the maximum size of a normal IPV6. Note that this will
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
+ // and a proper validation library should be used for these.
+ if (end - start > 39) {
+ return false;
+ }
+ let hasColon = false;
+ for (; start < end; start += 1) {
+ const code = hostname.charCodeAt(start);
+ if (code === 58 /* ':' */) {
+ hasColon = true;
+ }
+ else if (!(((code >= 48 && code <= 57) || // 0-9
+ (code >= 97 && code <= 102) || // a-f
+ (code >= 65 && code <= 90)) // A-F
+ )) {
+ return false;
+ }
+ }
+ return hasColon;
+}
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+function isIp(hostname) {
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
+}
+exports.default = isIp;
+//# sourceMappingURL=is-ip.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/is-ip.js.map b/client/node_modules/tldts-core/dist/cjs/src/is-ip.js.map
new file mode 100644
index 0000000..dd42212
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/is-ip.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"is-ip.js","sourceRoot":"","sources":["../../../src/is-ip.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,iCAAiC;IACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,yCAAyC;IACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB,YAAY,IAAI,CAAC,CAAC;SACnB;aAAM,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,EAAE;YACrD,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,CACL,YAAY,KAAK,CAAC;QAClB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;QACvC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE1B,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC7B,GAAG,IAAI,CAAC,CAAC;KACV;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,4DAA4D;IAC5D,IAAI,GAAG,GAAG,KAAK,GAAG,EAAE,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB,QAAQ,GAAG,IAAI,CAAC;SACjB;aAAM,IACL,CAAC,CACC,CACE,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM;YACpC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM;YACrC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAC3B,CAAC,MAAM;SACT,EACD;YACA,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAwB,IAAI,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAFD,uBAEC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/is-valid.js b/client/node_modules/tldts-core/dist/cjs/src/is-valid.js
new file mode 100644
index 0000000..36670c9
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/is-valid.js
@@ -0,0 +1,69 @@
+"use strict";
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+function isValidAscii(code) {
+ return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);
+}
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+function default_1(hostname) {
+ if (hostname.length > 255) {
+ return false;
+ }
+ if (hostname.length === 0) {
+ return false;
+ }
+ if (
+ /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&
+ hostname.charCodeAt(0) !== 46 && // '.' (dot)
+ hostname.charCodeAt(0) !== 95 // '_' (underscore)
+ ) {
+ return false;
+ }
+ // Validate hostname according to RFC
+ let lastDotIndex = -1;
+ let lastCharCode = -1;
+ const len = hostname.length;
+ for (let i = 0; i < len; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95) {
+ return false;
+ }
+ lastDotIndex = i;
+ }
+ else if (!( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95))) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+ lastCharCode = code;
+ }
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45);
+}
+exports.default = default_1;
+//# sourceMappingURL=is-valid.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/is-valid.js.map b/client/node_modules/tldts-core/dist/cjs/src/is-valid.js.map
new file mode 100644
index 0000000..5721f60
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/is-valid.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"is-valid.js","sourceRoot":"","sources":["../../../src/is-valid.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAEH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,CACL,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,GAAG,GAAG,CACxE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,mBAAyB,QAAgB;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IAED;IACE,eAAe,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,YAAY;QAC7C,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,mBAAmB;MACjD;QACA,OAAO,KAAK,CAAC;KACd;IAED,qCAAqC;IACrC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB;YACE,+DAA+D;YAC/D,CAAC,GAAG,YAAY,GAAG,EAAE;gBACrB,sDAAsD;gBACtD,YAAY,KAAK,EAAE;gBACnB,+DAA+D;gBAC/D,YAAY,KAAK,EAAE;gBACnB,qEAAqE;gBACrE,YAAY,KAAK,EAAE,EACnB;gBACA,OAAO,KAAK,CAAC;aACd;YAED,YAAY,GAAG,CAAC,CAAC;SAClB;aAAM,IACL,CAAC,EAAC,eAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,EACrE;YACA,uDAAuD;YACvD,OAAO,KAAK,CAAC;SACd;QAED,YAAY,GAAG,IAAI,CAAC;KACrB;IAED,OAAO;IACL,iDAAiD;IACjD,GAAG,GAAG,YAAY,GAAG,CAAC,IAAI,EAAE;QAC5B,wEAAwE;QACxE,wEAAwE;QACxE,sDAAsD;QACtD,YAAY,KAAK,EAAE,CACpB,CAAC;AACJ,CAAC;AAzDD,4BAyDC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js b/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js
new file mode 100644
index 0000000..3d14622
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js
@@ -0,0 +1,69 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function default_1(hostname, options, out) {
+ // Fast path for very popular suffixes; this allows to by-pass lookup
+ // completely as well as any extra allocation or string manipulation.
+ if (!options.allowPrivateDomains && hostname.length > 3) {
+ const last = hostname.length - 1;
+ const c3 = hostname.charCodeAt(last);
+ const c2 = hostname.charCodeAt(last - 1);
+ const c1 = hostname.charCodeAt(last - 2);
+ const c0 = hostname.charCodeAt(last - 3);
+ if (c3 === 109 /* 'm' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 99 /* 'c' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'com';
+ return true;
+ }
+ else if (c3 === 103 /* 'g' */ &&
+ c2 === 114 /* 'r' */ &&
+ c1 === 111 /* 'o' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'org';
+ return true;
+ }
+ else if (c3 === 117 /* 'u' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 101 /* 'e' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'edu';
+ return true;
+ }
+ else if (c3 === 118 /* 'v' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 103 /* 'g' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'gov';
+ return true;
+ }
+ else if (c3 === 116 /* 't' */ &&
+ c2 === 101 /* 'e' */ &&
+ c1 === 110 /* 'n' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'net';
+ return true;
+ }
+ else if (c3 === 101 /* 'e' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'de';
+ return true;
+ }
+ }
+ return false;
+}
+exports.default = default_1;
+//# sourceMappingURL=fast-path.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map b/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map
new file mode 100644
index 0000000..4c808b8
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fast-path.js","sourceRoot":"","sources":["../../../../src/lookup/fast-path.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js b/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js
new file mode 100644
index 0000000..d549d1f
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=interface.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map b/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map
new file mode 100644
index 0000000..c5e1058
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/lookup/interface.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/options.js b/client/node_modules/tldts-core/dist/cjs/src/options.js
new file mode 100644
index 0000000..7a19039
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/options.js
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setDefaults = void 0;
+function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {
+ return {
+ allowIcannDomains,
+ allowPrivateDomains,
+ detectIp,
+ extractHostname,
+ mixedInputs,
+ validHosts,
+ validateHostname,
+ };
+}
+const DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});
+function setDefaults(options) {
+ if (options === undefined) {
+ return DEFAULT_OPTIONS;
+ }
+ return /*@__INLINE__*/ setDefaultsImpl(options);
+}
+exports.setDefaults = setDefaults;
+//# sourceMappingURL=options.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/options.js.map b/client/node_modules/tldts-core/dist/cjs/src/options.js.map
new file mode 100644
index 0000000..c9d0208
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/options.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/options.ts"],"names":[],"mappings":";;;AAUA,SAAS,eAAe,CAAC,EACvB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,KAAK,EAC3B,QAAQ,GAAG,IAAI,EACf,eAAe,GAAG,IAAI,EACtB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,IAAI,EACjB,gBAAgB,GAAG,IAAI,GACL;IAClB,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,QAAQ;QACR,eAAe;QACf,WAAW;QACX,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAE5D,SAAgB,WAAW,CAAC,OAA2B;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,eAAe,CAAC;KACxB;IAED,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAND,kCAMC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/subdomain.js b/client/node_modules/tldts-core/dist/cjs/src/subdomain.js
new file mode 100644
index 0000000..0475823
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/subdomain.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Returns the subdomain of a hostname string
+ */
+function getSubdomain(hostname, domain) {
+ // If `hostname` and `domain` are the same, then there is no sub-domain
+ if (domain.length === hostname.length) {
+ return '';
+ }
+ return hostname.slice(0, -domain.length - 1);
+}
+exports.default = getSubdomain;
+//# sourceMappingURL=subdomain.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/src/subdomain.js.map b/client/node_modules/tldts-core/dist/cjs/src/subdomain.js.map
new file mode 100644
index 0000000..1c23077
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/src/subdomain.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"subdomain.js","sourceRoot":"","sources":["../../../src/subdomain.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,SAAwB,YAAY,CAAC,QAAgB,EAAE,MAAc;IACnE,uEAAuE;IACvE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAPD,+BAOC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..8a5d295
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../src/domain-without-suffix.ts","../../src/options.ts","../../src/domain.ts","../../src/extract-hostname.ts","../../src/is-ip.ts","../../src/is-valid.ts","../../src/lookup/interface.ts","../../src/subdomain.ts","../../src/factory.ts","../../src/lookup/fast-path.ts","../../index.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900",{"version":"5c875363227e1151e0927c969e844d509e9cf2d0ec49675e8cc8e756fea657b2","signature":"e4b94e1cab43978c2cb360210076dc0ddc24127f899b26ecd1d08ad3e69a8bfb"},{"version":"0d7b6b51639fa0bc0ff2488a9d23b8c575f08233f9713ebcfebe7c80413a6c59","signature":"4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a"},{"version":"68c0b48ca6aa01158d632d75e3b0c7512b7241453134b0e6f9b5fd85568170e8","signature":"728ead54363374ff91f50d97f4e4cb016cf7d98b5776e4a275561465e9b55644"},{"version":"ae4f2bc40749ddefbd7968510afd5f4225ee21d3adb0b7f08a001ac74448aa5b","signature":"1c2cd22324309770f5f95d5b545b8abfaa2f10012a495f7450cf5919efa5f1d0"},{"version":"7d228f7992334d9fa1dfa53e9eedeb165999e53eebfa8997114ef8199ba27b74","signature":"0070d0b5eac342c134ec352d2df82c2b44a89313c911a9a2c4192846b6670f47"},{"version":"c5dc32ae7ae379cc85b2ea15173a78732d3a2569ed9fbc22e75e111218cecc62","signature":"a4a9a883a79a43efcf8329429655b80c252e56c3e9dc838aed79e2b57cc7a301"},{"version":"58eb284519a37bcad186960e7e5e7090193ef4397d74fd121ac964115c60ddb8","signature":"863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc"},{"version":"b9d4b43460d9f3f3e3d0a78a8f27fe95dc9442fefb4264107f7e66dab1a723c0","signature":"570e79005c2a54cb13c7f8c04d072b96fb65209c977a6f2d06220b7972ec63fd"},{"version":"7045b11977c424a43d7ea8e8425cc4880c60f3166095935113283c5273bc622d","signature":"45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7"},{"version":"b9bef413fdb659ff3f25595b9d2d71c741daad836c26b8b1579ed8e82daf120b","signature":"899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941"},{"version":"b9bfec8044371ad6527dc0c554ebe549c1117d426032f0551d25f54e69d11f6b","signature":"5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d"},{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},"629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"0b3868d3f87c95ea73bdfab380e536843ec3573aa76233b97aac40518494ea24","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","84b8cc86ad19115f2637401cdd220460a25542df478c966a5ffc5eeaf3825299",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab"],"root":[[51,61]],"options":{"composite":true,"declaration":true,"declarationDir":"../types","emitDeclarationOnly":false,"importHelpers":true,"module":99,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":4},"fileIdsList":[[149],[70,149],[106,149],[107,112,140,149],[108,119,120,127,137,148,149],[108,109,119,127,149],[110,149],[111,112,120,128,149],[112,137,145,149],[113,115,119,127,149],[114,149],[115,116,149],[119,149],[117,119,149],[106,119,149],[119,120,121,137,148,149],[119,120,121,134,137,140,149],[104,149,153],[115,119,122,127,137,148,149],[119,120,122,123,127,137,145,148,149],[122,124,137,145,148,149],[70,71,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155],[119,125,149],[126,148,149,153],[115,119,127,137,149],[128,149],[129,149],[106,130,149],[131,147,149,153],[132,149],[133,149],[119,134,135,149],[134,136,149,151],[107,119,137,138,139,140,149],[107,137,139,149],[137,138,149],[140,149],[141,149],[106,137,149],[119,143,144,149],[143,144,149],[112,127,137,145,149],[146,149],[127,147,149],[107,122,133,148,149],[112,149],[137,149,150],[126,149,151],[149,152],[107,112,119,121,130,137,148,149,151,153],[137,149,154],[149,160,199],[149,160,184,199],[149,199],[149,160],[149,160,185,199],[149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],[149,185,199],[81,85,148,149],[81,137,148,149],[76,149],[78,81,145,148,149],[127,145,149],[149,156],[76,149,156],[78,81,127,148,149],[73,74,77,80,107,119,137,148,149],[73,79,149],[77,81,107,140,148,149,156],[107,149,156],[97,107,149,156],[75,76,149,156],[81,149],[75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,149],[81,88,89,149],[79,81,89,90,149],[80,149],[73,76,81,149],[81,85,89,90,149],[85,149],[79,81,84,148,149],[73,78,79,81,85,88,149],[107,137,149],[76,81,97,107,149,153,156],[50,52,57,59,60,149],[50,149],[50,52,149],[50,51,52,53,54,55,56,57,58,149],[50,57,149],[52,57,59,60],[52],[52,57],[57]],"referencedMap":[[62,1],[63,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,1],[70,2],[71,2],[106,3],[107,4],[108,5],[109,6],[110,7],[111,8],[112,9],[113,10],[114,11],[115,12],[116,12],[118,13],[117,14],[119,15],[120,16],[121,17],[105,18],[155,1],[122,19],[123,20],[124,21],[156,22],[125,23],[126,24],[127,25],[128,26],[129,27],[130,28],[131,29],[132,30],[133,31],[134,32],[135,32],[136,33],[137,34],[139,35],[138,36],[140,37],[141,38],[142,39],[143,40],[144,41],[145,42],[146,43],[147,44],[148,45],[149,46],[150,47],[151,48],[152,49],[153,50],[154,51],[157,1],[158,1],[159,1],[184,52],[185,53],[160,54],[163,54],[182,52],[183,52],[173,52],[172,55],[170,52],[165,52],[178,52],[176,52],[180,52],[164,52],[177,52],[181,52],[166,52],[167,52],[179,52],[161,52],[168,52],[169,52],[171,52],[175,52],[186,56],[174,52],[162,52],[199,57],[198,1],[193,56],[195,58],[194,56],[187,56],[188,56],[190,56],[192,56],[196,58],[197,58],[189,58],[191,58],[72,1],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[88,59],[95,60],[87,59],[102,61],[79,62],[78,63],[101,64],[96,65],[99,66],[81,67],[80,68],[76,69],[75,70],[98,71],[77,72],[82,73],[83,1],[86,73],[73,1],[104,74],[103,73],[90,75],[91,76],[93,77],[89,78],[92,79],[97,64],[84,80],[85,81],[94,82],[74,83],[100,84],[61,85],[51,86],[53,87],[54,86],[59,88],[55,86],[56,86],[60,89],[57,86],[52,86],[58,86]],"exportedModulesMap":[[62,1],[63,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,1],[70,2],[71,2],[106,3],[107,4],[108,5],[109,6],[110,7],[111,8],[112,9],[113,10],[114,11],[115,12],[116,12],[118,13],[117,14],[119,15],[120,16],[121,17],[105,18],[155,1],[122,19],[123,20],[124,21],[156,22],[125,23],[126,24],[127,25],[128,26],[129,27],[130,28],[131,29],[132,30],[133,31],[134,32],[135,32],[136,33],[137,34],[139,35],[138,36],[140,37],[141,38],[142,39],[143,40],[144,41],[145,42],[146,43],[147,44],[148,45],[149,46],[150,47],[151,48],[152,49],[153,50],[154,51],[157,1],[158,1],[159,1],[184,52],[185,53],[160,54],[163,54],[182,52],[183,52],[173,52],[172,55],[170,52],[165,52],[178,52],[176,52],[180,52],[164,52],[177,52],[181,52],[166,52],[167,52],[179,52],[161,52],[168,52],[169,52],[171,52],[175,52],[186,56],[174,52],[162,52],[199,57],[198,1],[193,56],[195,58],[194,56],[187,56],[188,56],[190,56],[192,56],[196,58],[197,58],[189,58],[191,58],[72,1],[50,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[88,59],[95,60],[87,59],[102,61],[79,62],[78,63],[101,64],[96,65],[99,66],[81,67],[80,68],[76,69],[75,70],[98,71],[77,72],[82,73],[83,1],[86,73],[73,1],[104,74],[103,73],[90,75],[91,76],[93,77],[89,78],[92,79],[97,64],[84,80],[85,81],[94,82],[74,83],[100,84],[61,90],[53,91],[59,92],[60,93]],"semanticDiagnosticsPerFile":[62,63,64,65,66,67,68,69,70,71,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,105,155,122,123,124,156,125,126,127,128,129,130,131,132,133,134,135,136,137,139,138,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,157,158,159,184,185,160,163,182,183,173,172,170,165,178,176,180,164,177,181,166,167,179,161,168,169,171,175,186,174,162,199,198,193,195,194,187,188,190,192,196,197,189,191,72,50,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,88,95,87,102,79,78,101,96,99,81,80,76,75,98,77,82,83,86,73,104,103,90,91,93,89,92,97,84,85,94,74,100,61,51,53,54,59,55,56,60,57,52,58],"latestChangedDtsFile":"../types/index.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/index.js b/client/node_modules/tldts-core/dist/es6/index.js
new file mode 100644
index 0000000..7e1cd82
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/index.js
@@ -0,0 +1,4 @@
+export { parseImpl, getEmptyResult, resetResult, } from './src/factory';
+export { default as fastPathLookup } from './src/lookup/fast-path';
+export { setDefaults } from './src/options';
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/index.js.map b/client/node_modules/tldts-core/dist/es6/index.js.map
new file mode 100644
index 0000000..b19f42a
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAY,WAAW,EAAE,MAAM,eAAe,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js b/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js
new file mode 100644
index 0000000..0f93266
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js
@@ -0,0 +1,12 @@
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+export default function getDomainWithoutSuffix(domain, suffix) {
+ // Note: here `domain` and `suffix` cannot have the same length because in
+ // this case we set `domain` to `null` instead. It is thus safe to assume
+ // that `suffix` is shorter than `domain`.
+ return domain.slice(0, -suffix.length - 1);
+}
+//# sourceMappingURL=domain-without-suffix.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map b/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map
new file mode 100644
index 0000000..8bc941f
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"domain-without-suffix.js","sourceRoot":"","sources":["../../../src/domain-without-suffix.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,MAAc,EACd,MAAc;IAEd,0EAA0E;IAC1E,yEAAyE;IACzE,0CAA0C;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/domain.js b/client/node_modules/tldts-core/dist/es6/src/domain.js
new file mode 100644
index 0000000..0e23f78
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/domain.js
@@ -0,0 +1,80 @@
+/**
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
+ *
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
+ * make sure that: either they are equal, or the character preceding `vhost` in
+ * `hostname` is a '.' (it should not be a partial label).
+ *
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
+ */
+function shareSameDomainSuffix(hostname, vhost) {
+ if (hostname.endsWith(vhost)) {
+ return (hostname.length === vhost.length ||
+ hostname[hostname.length - vhost.length - 1] === '.');
+ }
+ return false;
+}
+/**
+ * Given a hostname and its public suffix, extract the general domain.
+ */
+function extractDomainWithSuffix(hostname, publicSuffix) {
+ // Locate the index of the last '.' in the part of the `hostname` preceding
+ // the public suffix.
+ //
+ // examples:
+ // 1. not.evil.co.uk => evil.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // | index of the last dot
+ //
+ // 2. example.co.uk => example.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // |
+ // | (-1) no dot found before the public suffix
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
+ if (lastDotBeforeSuffixIndex === -1) {
+ return hostname;
+ }
+ // Extract the part between the last '.'
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
+}
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+export default function getDomain(suffix, hostname, options) {
+ // Check if `hostname` ends with a member of `validHosts`.
+ if (options.validHosts !== null) {
+ const validHosts = options.validHosts;
+ for (const vhost of validHosts) {
+ if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {
+ return vhost;
+ }
+ }
+ }
+ let numberOfLeadingDots = 0;
+ if (hostname.startsWith('.')) {
+ while (numberOfLeadingDots < hostname.length &&
+ hostname[numberOfLeadingDots] === '.') {
+ numberOfLeadingDots += 1;
+ }
+ }
+ // If `hostname` is a valid public suffix, then there is no domain to return.
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
+ // there is no need to perform a string comparison and we only compare the
+ // size.
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
+ return null;
+ }
+ // To extract the general domain, we start by identifying the public suffix
+ // (if any), then consider the domain to be the public suffix with one added
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
+ // `evil.co.uk`).
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
+}
+//# sourceMappingURL=domain.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/domain.js.map b/client/node_modules/tldts-core/dist/es6/src/domain.js.map
new file mode 100644
index 0000000..f332f28
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/domain.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/domain.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,QAAgB,EAAE,KAAa;IAC5D,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC5B,OAAO,CACL,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAChC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CACrD,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,QAAgB,EAChB,YAAoB;IAEpB,2EAA2E;IAC3E,qBAAqB;IACrB,EAAE;IACF,YAAY;IACZ,qCAAqC;IACrC,iBAAiB;IACjB,wCAAwC;IACxC,kCAAkC;IAClC,EAAE;IACF,wCAAwC;IACxC,gBAAgB;IAChB,uCAAuC;IACvC,QAAQ;IACR,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,MAAM,wBAAwB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAE9E,sEAAsE;IACtE,IAAI,wBAAwB,KAAK,CAAC,CAAC,EAAE;QACnC,OAAO,QAAQ,CAAC;KACjB;IAED,wCAAwC;IACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,MAAc,EACd,QAAgB,EAChB,OAAiB;IAEjB,0DAA0D;IAC1D,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;YAC9B,KAAI,eAAgB,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAC1D,OAAO,KAAK,CAAC;aACd;SACF;KACF;IAED,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC5B,OACE,mBAAmB,GAAG,QAAQ,CAAC,MAAM;YACrC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,GAAG,EACrC;YACA,mBAAmB,IAAI,CAAC,CAAC;SAC1B;KACF;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,QAAQ;IACR,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE;QAC3D,OAAO,IAAI,CAAC;KACb;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,iBAAiB;IACjB,OAAO,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js b/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js
new file mode 100644
index 0000000..2267976
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js
@@ -0,0 +1,146 @@
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+export default function extractHostname(url, urlIsValidHostname) {
+ let start = 0;
+ let end = url.length;
+ let hasUpper = false;
+ // If url is not already a valid hostname, then try to extract hostname.
+ if (!urlIsValidHostname) {
+ // Special handling of data URLs
+ if (url.startsWith('data:')) {
+ return null;
+ }
+ // Trim leading spaces
+ while (start < url.length && url.charCodeAt(start) <= 32) {
+ start += 1;
+ }
+ // Trim trailing spaces
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
+ end -= 1;
+ }
+ // Skip scheme.
+ if (url.charCodeAt(start) === 47 /* '/' */ &&
+ url.charCodeAt(start + 1) === 47 /* '/' */) {
+ start += 2;
+ }
+ else {
+ const indexOfProtocol = url.indexOf(':/', start);
+ if (indexOfProtocol !== -1) {
+ // Implement fast-path for common protocols. We expect most protocols
+ // should be one of these 4 and thus we will not need to perform the
+ // more expansive validity check most of the time.
+ const protocolSize = indexOfProtocol - start;
+ const c0 = url.charCodeAt(start);
+ const c1 = url.charCodeAt(start + 1);
+ const c2 = url.charCodeAt(start + 2);
+ const c3 = url.charCodeAt(start + 3);
+ const c4 = url.charCodeAt(start + 4);
+ if (protocolSize === 5 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */ &&
+ c4 === 115 /* 's' */) {
+ // https
+ }
+ else if (protocolSize === 4 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */) {
+ // http
+ }
+ else if (protocolSize === 3 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */ &&
+ c2 === 115 /* 's' */) {
+ // wss
+ }
+ else if (protocolSize === 2 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */) {
+ // ws
+ }
+ else {
+ // Check that scheme is valid
+ for (let i = start; i < indexOfProtocol; i += 1) {
+ const lowerCaseCode = url.charCodeAt(i) | 32;
+ if (!(((lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]
+ (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]
+ lowerCaseCode === 46 || // '.'
+ lowerCaseCode === 45 || // '-'
+ lowerCaseCode === 43) // '+'
+ )) {
+ return null;
+ }
+ }
+ }
+ // Skip 0, 1 or more '/' after ':/'
+ start = indexOfProtocol + 2;
+ while (url.charCodeAt(start) === 47 /* '/' */) {
+ start += 1;
+ }
+ }
+ }
+ // Detect first occurrence of '/', '?' or '#'. We also keep track of the
+ // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of
+ // (respectively), identifier, ipv6 or port.
+ let indexOfIdentifier = -1;
+ let indexOfClosingBracket = -1;
+ let indexOfPort = -1;
+ for (let i = start; i < end; i += 1) {
+ const code = url.charCodeAt(i);
+ if (code === 35 || // '#'
+ code === 47 || // '/'
+ code === 63 // '?'
+ ) {
+ end = i;
+ break;
+ }
+ else if (code === 64) {
+ // '@'
+ indexOfIdentifier = i;
+ }
+ else if (code === 93) {
+ // ']'
+ indexOfClosingBracket = i;
+ }
+ else if (code === 58) {
+ // ':'
+ indexOfPort = i;
+ }
+ else if (code >= 65 && code <= 90) {
+ hasUpper = true;
+ }
+ }
+ // Detect identifier: '@'
+ if (indexOfIdentifier !== -1 &&
+ indexOfIdentifier > start &&
+ indexOfIdentifier < end) {
+ start = indexOfIdentifier + 1;
+ }
+ // Handle ipv6 addresses
+ if (url.charCodeAt(start) === 91 /* '[' */) {
+ if (indexOfClosingBracket !== -1) {
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
+ }
+ return null;
+ }
+ else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
+ // Detect port: ':'
+ end = indexOfPort;
+ }
+ }
+ // Trim trailing dots
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
+ end -= 1;
+ }
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
+ if (hasUpper) {
+ return hostname.toLowerCase();
+ }
+ return hostname;
+}
+//# sourceMappingURL=extract-hostname.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map b/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map
new file mode 100644
index 0000000..a75415e
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extract-hostname.js","sourceRoot":"","sources":["../../../src/extract-hostname.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,GAAW,EACX,kBAA2B;IAE3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAW,GAAG,CAAC,MAAM,CAAC;IAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,wEAAwE;IACxE,IAAI,CAAC,kBAAkB,EAAE;QACvB,gCAAgC;QAChC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QAED,sBAAsB;QACtB,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;YACxD,KAAK,IAAI,CAAC,CAAC;SACZ;QAED,uBAAuB;QACvB,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvD,GAAG,IAAI,CAAC,CAAC;SACV;QAED,eAAe;QACf,IACE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS;YACtC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAC1C;YACA,KAAK,IAAI,CAAC,CAAC;SACZ;aAAM;YACL,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;gBAC1B,qEAAqE;gBACrE,oEAAoE;gBACpE,kDAAkD;gBAClD,MAAM,YAAY,GAAG,eAAe,GAAG,KAAK,CAAC;gBAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAErC,IACE,YAAY,KAAK,CAAC;oBAClB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS,EACpB;oBACA,QAAQ;iBACT;qBAAM,IACL,YAAY,KAAK,CAAC;oBAClB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS,EACpB;oBACA,OAAO;iBACR;qBAAM,IACL,YAAY,KAAK,CAAC;oBAClB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS,EACpB;oBACA,MAAM;iBACP;qBAAM,IACL,YAAY,KAAK,CAAC;oBAClB,EAAE,KAAK,GAAG,CAAC,SAAS;oBACpB,EAAE,KAAK,GAAG,CAAC,SAAS,EACpB;oBACA,KAAK;iBACN;qBAAM;oBACL,6BAA6B;oBAC7B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBAC7C,IACE,CAAC,CACC,CACE,CAAC,aAAa,IAAI,EAAE,IAAI,aAAa,IAAI,GAAG,CAAC,IAAI,SAAS;4BAC1D,CAAC,aAAa,IAAI,EAAE,IAAI,aAAa,IAAI,EAAE,CAAC,IAAI,SAAS;4BACzD,aAAa,KAAK,EAAE,IAAI,MAAM;4BAC9B,aAAa,KAAK,EAAE,IAAI,MAAM;4BAC9B,aAAa,KAAK,EAAE,CACrB,CAAC,MAAM;yBACT,EACD;4BACA,OAAO,IAAI,CAAC;yBACb;qBACF;iBACF;gBAED,mCAAmC;gBACnC,KAAK,GAAG,eAAe,GAAG,CAAC,CAAC;gBAC5B,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;oBAC7C,KAAK,IAAI,CAAC,CAAC;iBACZ;aACF;SACF;QAED,wEAAwE;QACxE,uEAAuE;QACvE,4CAA4C;QAC5C,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,qBAAqB,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YACnC,MAAM,IAAI,GAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvC,IACE,IAAI,KAAK,EAAE,IAAI,MAAM;gBACrB,IAAI,KAAK,EAAE,IAAI,MAAM;gBACrB,IAAI,KAAK,EAAE,CAAC,MAAM;cAClB;gBACA,GAAG,GAAG,CAAC,CAAC;gBACR,MAAM;aACP;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE;gBACtB,MAAM;gBACN,iBAAiB,GAAG,CAAC,CAAC;aACvB;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE;gBACtB,MAAM;gBACN,qBAAqB,GAAG,CAAC,CAAC;aAC3B;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE;gBACtB,MAAM;gBACN,WAAW,GAAG,CAAC,CAAC;aACjB;iBAAM,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE;gBACnC,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;QAED,yBAAyB;QACzB,IACE,iBAAiB,KAAK,CAAC,CAAC;YACxB,iBAAiB,GAAG,KAAK;YACzB,iBAAiB,GAAG,GAAG,EACvB;YACA,KAAK,GAAG,iBAAiB,GAAG,CAAC,CAAC;SAC/B;QAED,wBAAwB;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;YAC1C,IAAI,qBAAqB,KAAK,CAAC,CAAC,EAAE;gBAChC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;aAClE;YACD,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,WAAW,GAAG,KAAK,IAAI,WAAW,GAAG,GAAG,EAAE;YACzE,mBAAmB;YACnB,GAAG,GAAG,WAAW,CAAC;SACnB;KACF;IAED,qBAAqB;IACrB,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;QAClE,GAAG,IAAI,CAAC,CAAC;KACV;IAED,MAAM,QAAQ,GACZ,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAElE,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/factory.js b/client/node_modules/tldts-core/dist/es6/src/factory.js
new file mode 100644
index 0000000..a1a462f
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/factory.js
@@ -0,0 +1,99 @@
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+import getDomain from './domain';
+import getDomainWithoutSuffix from './domain-without-suffix';
+import extractHostname from './extract-hostname';
+import isIp from './is-ip';
+import isValidHostname from './is-valid';
+import { setDefaults } from './options';
+import getSubdomain from './subdomain';
+export function getEmptyResult() {
+ return {
+ domain: null,
+ domainWithoutSuffix: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null,
+ };
+}
+export function resetResult(result) {
+ result.domain = null;
+ result.domainWithoutSuffix = null;
+ result.hostname = null;
+ result.isIcann = null;
+ result.isIp = null;
+ result.isPrivate = null;
+ result.publicSuffix = null;
+ result.subdomain = null;
+}
+export function parseImpl(url, step, suffixLookup, partialOptions, result) {
+ const options = /*@__INLINE__*/ setDefaults(partialOptions);
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (!options.extractHostname) {
+ result.hostname = url;
+ }
+ else if (options.mixedInputs) {
+ result.hostname = extractHostname(url, isValidHostname(url));
+ }
+ else {
+ result.hostname = extractHostname(url, false);
+ }
+ if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {
+ return result;
+ }
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp) {
+ result.isIp = isIp(result.hostname);
+ if (result.isIp) {
+ return result;
+ }
+ }
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (options.validateHostname &&
+ options.extractHostname &&
+ !isValidHostname(result.hostname)) {
+ result.hostname = null;
+ return result;
+ }
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {
+ return result;
+ }
+ // Extract domain
+ result.domain = getDomain(result.publicSuffix, result.hostname, options);
+ if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {
+ return result;
+ }
+ // Extract subdomain
+ result.subdomain = getSubdomain(result.hostname, result.domain);
+ if (step === 4 /* FLAG.SUB_DOMAIN */) {
+ return result;
+ }
+ // Extract domain without suffix
+ result.domainWithoutSuffix = getDomainWithoutSuffix(result.domain, result.publicSuffix);
+ return result;
+}
+//# sourceMappingURL=factory.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/factory.js.map b/client/node_modules/tldts-core/dist/es6/src/factory.js.map
new file mode 100644
index 0000000..058315f
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/factory.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAS,MAAM,UAAU,CAAC;AACjC,OAAO,sBAAsB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,eAAe,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAY,WAAW,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,YAAY,MAAM,aAAa,CAAC;AAuBvC,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,mBAAmB,EAAE,IAAI;QACzB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAe;IACzC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,CAAC;AAeD,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,IAAU,EACV,YAIS,EACT,cAAiC,EACjC,MAAe;IAEf,MAAM,OAAO,GAAa,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAEtE,6EAA6E;IAC7E,wEAAwE;IACxE,wDAAwD;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,MAAM,CAAC;KACf;IAED,wEAAwE;IACxE,sEAAsE;IACtE,2EAA2E;IAC3E,kBAAkB;IAClB,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,qEAAqE;IACrE,wEAAwE;IACxE,mDAAmD;IACnD,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QAC5B,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;SAAM,IAAI,OAAO,CAAC,WAAW,EAAE;QAC9B,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9D;SAAM;QACL,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC/C;IAED,IAAI,IAAI,0BAAkB,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE;QACtD,OAAO,MAAM,CAAC;KACf;IAED,4CAA4C;IAC5C,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,OAAO,MAAM,CAAC;SACf;KACF;IAED,6EAA6E;IAC7E,6DAA6D;IAC7D,IACE,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,eAAe;QACvB,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EACjC;QACA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,OAAO,MAAM,CAAC;KACf;IAED,wBAAwB;IACxB,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI,+BAAuB,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;QAC/D,OAAO,MAAM,CAAC;KACf;IAED,iBAAiB;IACjB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,IAAI,wBAAgB,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;QAClD,OAAO,MAAM,CAAC;KACf;IAED,oBAAoB;IACpB,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,IAAI,4BAAoB,EAAE;QAC5B,OAAO,MAAM,CAAC;KACf;IAED,gCAAgC;IAChC,MAAM,CAAC,mBAAmB,GAAG,sBAAsB,CACjD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/is-ip.js b/client/node_modules/tldts-core/dist/es6/src/is-ip.js
new file mode 100644
index 0000000..715f930
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/is-ip.js
@@ -0,0 +1,69 @@
+/**
+ * Check if a hostname is an IP. You should be aware that this only works
+ * because `hostname` is already garanteed to be a valid hostname!
+ */
+function isProbablyIpv4(hostname) {
+ // Cannot be shorted than 1.1.1.1
+ if (hostname.length < 7) {
+ return false;
+ }
+ // Cannot be longer than: 255.255.255.255
+ if (hostname.length > 15) {
+ return false;
+ }
+ let numberOfDots = 0;
+ for (let i = 0; i < hostname.length; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ numberOfDots += 1;
+ }
+ else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
+ return false;
+ }
+ }
+ return (numberOfDots === 3 &&
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);
+}
+/**
+ * Similar to isProbablyIpv4.
+ */
+function isProbablyIpv6(hostname) {
+ if (hostname.length < 3) {
+ return false;
+ }
+ let start = hostname.startsWith('[') ? 1 : 0;
+ let end = hostname.length;
+ if (hostname[end - 1] === ']') {
+ end -= 1;
+ }
+ // We only consider the maximum size of a normal IPV6. Note that this will
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
+ // and a proper validation library should be used for these.
+ if (end - start > 39) {
+ return false;
+ }
+ let hasColon = false;
+ for (; start < end; start += 1) {
+ const code = hostname.charCodeAt(start);
+ if (code === 58 /* ':' */) {
+ hasColon = true;
+ }
+ else if (!(((code >= 48 && code <= 57) || // 0-9
+ (code >= 97 && code <= 102) || // a-f
+ (code >= 65 && code <= 90)) // A-F
+ )) {
+ return false;
+ }
+ }
+ return hasColon;
+}
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+export default function isIp(hostname) {
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
+}
+//# sourceMappingURL=is-ip.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/is-ip.js.map b/client/node_modules/tldts-core/dist/es6/src/is-ip.js.map
new file mode 100644
index 0000000..576f714
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/is-ip.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"is-ip.js","sourceRoot":"","sources":["../../../src/is-ip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,iCAAiC;IACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,yCAAyC;IACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB,YAAY,IAAI,CAAC,CAAC;SACnB;aAAM,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,SAAS,EAAE;YACrD,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,CACL,YAAY,KAAK,CAAC;QAClB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;QACvC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE1B,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC7B,GAAG,IAAI,CAAC,CAAC;KACV;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,4DAA4D;IAC5D,IAAI,GAAG,GAAG,KAAK,GAAG,EAAE,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB,QAAQ,GAAG,IAAI,CAAC;SACjB;aAAM,IACL,CAAC,CACC,CACE,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM;YACpC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM;YACrC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAC3B,CAAC,MAAM;SACT,EACD;YACA,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/is-valid.js b/client/node_modules/tldts-core/dist/es6/src/is-valid.js
new file mode 100644
index 0000000..02d3ffc
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/is-valid.js
@@ -0,0 +1,66 @@
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+function isValidAscii(code) {
+ return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);
+}
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+export default function (hostname) {
+ if (hostname.length > 255) {
+ return false;
+ }
+ if (hostname.length === 0) {
+ return false;
+ }
+ if (
+ /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&
+ hostname.charCodeAt(0) !== 46 && // '.' (dot)
+ hostname.charCodeAt(0) !== 95 // '_' (underscore)
+ ) {
+ return false;
+ }
+ // Validate hostname according to RFC
+ let lastDotIndex = -1;
+ let lastCharCode = -1;
+ const len = hostname.length;
+ for (let i = 0; i < len; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95) {
+ return false;
+ }
+ lastDotIndex = i;
+ }
+ else if (!( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95))) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+ lastCharCode = code;
+ }
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45);
+}
+//# sourceMappingURL=is-valid.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/is-valid.js.map b/client/node_modules/tldts-core/dist/es6/src/is-valid.js.map
new file mode 100644
index 0000000..965acc6
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/is-valid.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"is-valid.js","sourceRoot":"","sources":["../../../src/is-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,CACL,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,GAAG,GAAG,CACxE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,WAAW,QAAgB;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IAED;IACE,eAAe,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,YAAY;QAC7C,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,mBAAmB;MACjD;QACA,OAAO,KAAK,CAAC;KACd;IAED,qCAAqC;IACrC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,EAAE;YACzB;YACE,+DAA+D;YAC/D,CAAC,GAAG,YAAY,GAAG,EAAE;gBACrB,sDAAsD;gBACtD,YAAY,KAAK,EAAE;gBACnB,+DAA+D;gBAC/D,YAAY,KAAK,EAAE;gBACnB,qEAAqE;gBACrE,YAAY,KAAK,EAAE,EACnB;gBACA,OAAO,KAAK,CAAC;aACd;YAED,YAAY,GAAG,CAAC,CAAC;SAClB;aAAM,IACL,CAAC,EAAC,eAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,EACrE;YACA,uDAAuD;YACvD,OAAO,KAAK,CAAC;SACd;QAED,YAAY,GAAG,IAAI,CAAC;KACrB;IAED,OAAO;IACL,iDAAiD;IACjD,GAAG,GAAG,YAAY,GAAG,CAAC,IAAI,EAAE;QAC5B,wEAAwE;QACxE,wEAAwE;QACxE,sDAAsD;QACtD,YAAY,KAAK,EAAE,CACpB,CAAC;AACJ,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js b/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js
new file mode 100644
index 0000000..419c929
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js
@@ -0,0 +1,66 @@
+export default function (hostname, options, out) {
+ // Fast path for very popular suffixes; this allows to by-pass lookup
+ // completely as well as any extra allocation or string manipulation.
+ if (!options.allowPrivateDomains && hostname.length > 3) {
+ const last = hostname.length - 1;
+ const c3 = hostname.charCodeAt(last);
+ const c2 = hostname.charCodeAt(last - 1);
+ const c1 = hostname.charCodeAt(last - 2);
+ const c0 = hostname.charCodeAt(last - 3);
+ if (c3 === 109 /* 'm' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 99 /* 'c' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'com';
+ return true;
+ }
+ else if (c3 === 103 /* 'g' */ &&
+ c2 === 114 /* 'r' */ &&
+ c1 === 111 /* 'o' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'org';
+ return true;
+ }
+ else if (c3 === 117 /* 'u' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 101 /* 'e' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'edu';
+ return true;
+ }
+ else if (c3 === 118 /* 'v' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 103 /* 'g' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'gov';
+ return true;
+ }
+ else if (c3 === 116 /* 't' */ &&
+ c2 === 101 /* 'e' */ &&
+ c1 === 110 /* 'n' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'net';
+ return true;
+ }
+ else if (c3 === 101 /* 'e' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'de';
+ return true;
+ }
+ }
+ return false;
+}
+//# sourceMappingURL=fast-path.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map b/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map
new file mode 100644
index 0000000..9d2fded
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"fast-path.js","sourceRoot":"","sources":["../../../../src/lookup/fast-path.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js b/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js
new file mode 100644
index 0000000..95423ac
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=interface.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map b/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map
new file mode 100644
index 0000000..c5e1058
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/lookup/interface.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/options.js b/client/node_modules/tldts-core/dist/es6/src/options.js
new file mode 100644
index 0000000..8ff002e
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/options.js
@@ -0,0 +1,19 @@
+function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {
+ return {
+ allowIcannDomains,
+ allowPrivateDomains,
+ detectIp,
+ extractHostname,
+ mixedInputs,
+ validHosts,
+ validateHostname,
+ };
+}
+const DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});
+export function setDefaults(options) {
+ if (options === undefined) {
+ return DEFAULT_OPTIONS;
+ }
+ return /*@__INLINE__*/ setDefaultsImpl(options);
+}
+//# sourceMappingURL=options.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/options.js.map b/client/node_modules/tldts-core/dist/es6/src/options.js.map
new file mode 100644
index 0000000..e5eabed
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/options.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/options.ts"],"names":[],"mappings":"AAUA,SAAS,eAAe,CAAC,EACvB,iBAAiB,GAAG,IAAI,EACxB,mBAAmB,GAAG,KAAK,EAC3B,QAAQ,GAAG,IAAI,EACf,eAAe,GAAG,IAAI,EACtB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,IAAI,EACjB,gBAAgB,GAAG,IAAI,GACL;IAClB,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,QAAQ;QACR,eAAe;QACf,WAAW;QACX,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAE5D,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,eAAe,CAAC;KACxB;IAED,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/subdomain.js b/client/node_modules/tldts-core/dist/es6/src/subdomain.js
new file mode 100644
index 0000000..43a0856
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/subdomain.js
@@ -0,0 +1,11 @@
+/**
+ * Returns the subdomain of a hostname string
+ */
+export default function getSubdomain(hostname, domain) {
+ // If `hostname` and `domain` are the same, then there is no sub-domain
+ if (domain.length === hostname.length) {
+ return '';
+ }
+ return hostname.slice(0, -domain.length - 1);
+}
+//# sourceMappingURL=subdomain.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/src/subdomain.js.map b/client/node_modules/tldts-core/dist/es6/src/subdomain.js.map
new file mode 100644
index 0000000..882d82a
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/src/subdomain.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"subdomain.js","sourceRoot":"","sources":["../../../src/subdomain.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc;IACnE,uEAAuE;IACvE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;QACrC,OAAO,EAAE,CAAC;KACX;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..b291930
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../src/domain-without-suffix.ts","../../src/options.ts","../../src/domain.ts","../../src/extract-hostname.ts","../../src/is-ip.ts","../../src/is-valid.ts","../../src/lookup/interface.ts","../../src/subdomain.ts","../../src/factory.ts","../../src/lookup/fast-path.ts","../../index.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","5c875363227e1151e0927c969e844d509e9cf2d0ec49675e8cc8e756fea657b2","0d7b6b51639fa0bc0ff2488a9d23b8c575f08233f9713ebcfebe7c80413a6c59","68c0b48ca6aa01158d632d75e3b0c7512b7241453134b0e6f9b5fd85568170e8","ae4f2bc40749ddefbd7968510afd5f4225ee21d3adb0b7f08a001ac74448aa5b","7d228f7992334d9fa1dfa53e9eedeb165999e53eebfa8997114ef8199ba27b74","c5dc32ae7ae379cc85b2ea15173a78732d3a2569ed9fbc22e75e111218cecc62","58eb284519a37bcad186960e7e5e7090193ef4397d74fd121ac964115c60ddb8","b9d4b43460d9f3f3e3d0a78a8f27fe95dc9442fefb4264107f7e66dab1a723c0","7045b11977c424a43d7ea8e8425cc4880c60f3166095935113283c5273bc622d","b9bef413fdb659ff3f25595b9d2d71c741daad836c26b8b1579ed8e82daf120b","b9bfec8044371ad6527dc0c554ebe549c1117d426032f0551d25f54e69d11f6b",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},"629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"0b3868d3f87c95ea73bdfab380e536843ec3573aa76233b97aac40518494ea24","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","84b8cc86ad19115f2637401cdd220460a25542df478c966a5ffc5eeaf3825299",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab"],"root":[[50,60]],"options":{"composite":false,"declaration":false,"declarationDir":"../..","declarationMap":false,"module":5,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"target":4},"fileIdsList":[[148],[69,148],[105,148],[106,111,139,148],[107,118,119,126,136,147,148],[107,108,118,126,148],[109,148],[110,111,119,127,148],[111,136,144,148],[112,114,118,126,148],[113,148],[114,115,148],[118,148],[116,118,148],[105,118,148],[118,119,120,136,147,148],[118,119,120,133,136,139,148],[103,148,152],[114,118,121,126,136,147,148],[118,119,121,122,126,136,144,147,148],[121,123,136,144,147,148],[69,70,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],[118,124,148],[125,147,148,152],[114,118,126,136,148],[127,148],[128,148],[105,129,148],[130,146,148,152],[131,148],[132,148],[118,133,134,148],[133,135,148,150],[106,118,136,137,138,139,148],[106,136,138,148],[136,137,148],[139,148],[140,148],[105,136,148],[118,142,143,148],[142,143,148],[111,126,136,144,148],[145,148],[126,146,148],[106,121,132,147,148],[111,148],[136,148,149],[125,148,150],[148,151],[106,111,118,120,129,136,147,148,150,152],[136,148,153],[148,159,198],[148,159,183,198],[148,198],[148,159],[148,159,184,198],[148,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[148,184,198],[80,84,147,148],[80,136,147,148],[75,148],[77,80,144,147,148],[126,144,148],[148,155],[75,148,155],[77,80,126,147,148],[72,73,76,79,106,118,136,147,148],[72,78,148],[76,80,106,139,147,148,155],[106,148,155],[96,106,148,155],[74,75,148,155],[80,148],[74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90,91,92,93,94,95,97,98,99,100,101,102,148],[80,87,88,148],[78,80,88,89,148],[79,148],[72,75,80,148],[80,84,88,89,148],[84,148],[78,80,83,147,148],[72,77,78,80,84,87,148],[106,136,148],[75,80,96,106,148,152,155],[51,56,58,59,148],[51,148],[50,51,52,53,54,55,56,57,148],[56,148]],"referencedMap":[[61,1],[62,1],[63,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,2],[70,2],[105,3],[106,4],[107,5],[108,6],[109,7],[110,8],[111,9],[112,10],[113,11],[114,12],[115,12],[117,13],[116,14],[118,15],[119,16],[120,17],[104,18],[154,1],[121,19],[122,20],[123,21],[155,22],[124,23],[125,24],[126,25],[127,26],[128,27],[129,28],[130,29],[131,30],[132,31],[133,32],[134,32],[135,33],[136,34],[138,35],[137,36],[139,37],[140,38],[141,39],[142,40],[143,41],[144,42],[145,43],[146,44],[147,45],[148,46],[149,47],[150,48],[151,49],[152,50],[153,51],[156,1],[157,1],[158,1],[183,52],[184,53],[159,54],[162,54],[181,52],[182,52],[172,52],[171,55],[169,52],[164,52],[177,52],[175,52],[179,52],[163,52],[176,52],[180,52],[165,52],[166,52],[178,52],[160,52],[167,52],[168,52],[170,52],[174,52],[185,56],[173,52],[161,52],[198,57],[197,1],[192,56],[194,58],[193,56],[186,56],[187,56],[189,56],[191,56],[195,58],[196,58],[188,58],[190,58],[71,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[87,59],[94,60],[86,59],[101,61],[78,62],[77,63],[100,64],[95,65],[98,66],[80,67],[79,68],[75,69],[74,70],[97,71],[76,72],[81,73],[82,1],[85,73],[72,1],[103,74],[102,73],[89,75],[90,76],[92,77],[88,78],[91,79],[96,64],[83,80],[84,81],[93,82],[73,83],[99,84],[60,85],[50,1],[52,86],[53,1],[58,87],[54,1],[55,1],[59,88],[56,1],[51,1],[57,1]],"exportedModulesMap":[[61,1],[62,1],[63,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,2],[70,2],[105,3],[106,4],[107,5],[108,6],[109,7],[110,8],[111,9],[112,10],[113,11],[114,12],[115,12],[117,13],[116,14],[118,15],[119,16],[120,17],[104,18],[154,1],[121,19],[122,20],[123,21],[155,22],[124,23],[125,24],[126,25],[127,26],[128,27],[129,28],[130,29],[131,30],[132,31],[133,32],[134,32],[135,33],[136,34],[138,35],[137,36],[139,37],[140,38],[141,39],[142,40],[143,41],[144,42],[145,43],[146,44],[147,45],[148,46],[149,47],[150,48],[151,49],[152,50],[153,51],[156,1],[157,1],[158,1],[183,52],[184,53],[159,54],[162,54],[181,52],[182,52],[172,52],[171,55],[169,52],[164,52],[177,52],[175,52],[179,52],[163,52],[176,52],[180,52],[165,52],[166,52],[178,52],[160,52],[167,52],[168,52],[170,52],[174,52],[185,56],[173,52],[161,52],[198,57],[197,1],[192,56],[194,58],[193,56],[186,56],[187,56],[189,56],[191,56],[195,58],[196,58],[188,58],[190,58],[71,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[87,59],[94,60],[86,59],[101,61],[78,62],[77,63],[100,64],[95,65],[98,66],[80,67],[79,68],[75,69],[74,70],[97,71],[76,72],[81,73],[82,1],[85,73],[72,1],[103,74],[102,73],[89,75],[90,76],[92,77],[88,78],[91,79],[96,64],[83,80],[84,81],[93,82],[73,83],[99,84],[60,85],[50,1],[52,86],[53,1],[58,87],[54,1],[55,1],[59,88],[56,1],[51,1],[57,1]],"semanticDiagnosticsPerFile":[61,62,63,64,65,66,67,68,69,70,105,106,107,108,109,110,111,112,113,114,115,117,116,118,119,120,104,154,121,122,123,155,124,125,126,127,128,129,130,131,132,133,134,135,136,138,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,156,157,158,183,184,159,162,181,182,172,171,169,164,177,175,179,163,176,180,165,166,178,160,167,168,170,174,185,173,161,198,197,192,194,193,186,187,189,191,195,196,188,190,71,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,87,94,86,101,78,77,100,95,98,80,79,75,74,97,76,81,82,85,72,103,102,89,90,92,88,91,96,83,84,93,73,99,60,50,52,53,58,54,55,59,56,51,57]},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/tldts-core/dist/types/index.d.ts b/client/node_modules/tldts-core/dist/types/index.d.ts
new file mode 100644
index 0000000..00613b8
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/index.d.ts
@@ -0,0 +1,4 @@
+export { FLAG, parseImpl, IResult, getEmptyResult, resetResult, } from './src/factory';
+export { IPublicSuffix, ISuffixLookupOptions } from './src/lookup/interface';
+export { default as fastPathLookup } from './src/lookup/fast-path';
+export { IOptions, setDefaults } from './src/options';
diff --git a/client/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts b/client/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts
new file mode 100644
index 0000000..f105424
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+export default function getDomainWithoutSuffix(domain: string, suffix: string): string;
diff --git a/client/node_modules/tldts-core/dist/types/src/domain.d.ts b/client/node_modules/tldts-core/dist/types/src/domain.d.ts
new file mode 100644
index 0000000..4982c29
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/domain.d.ts
@@ -0,0 +1,5 @@
+import { IOptions } from './options';
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+export default function getDomain(suffix: string, hostname: string, options: IOptions): string | null;
diff --git a/client/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts b/client/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts
new file mode 100644
index 0000000..175c251
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts
@@ -0,0 +1,5 @@
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+export default function extractHostname(url: string, urlIsValidHostname: boolean): string | null;
diff --git a/client/node_modules/tldts-core/dist/types/src/factory.d.ts b/client/node_modules/tldts-core/dist/types/src/factory.d.ts
new file mode 100644
index 0000000..b5ce878
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/factory.d.ts
@@ -0,0 +1,28 @@
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+import { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';
+import { IOptions } from './options';
+export interface IResult {
+ hostname: string | null;
+ isIp: boolean | null;
+ subdomain: string | null;
+ domain: string | null;
+ publicSuffix: string | null;
+ domainWithoutSuffix: string | null;
+ isIcann: boolean | null;
+ isPrivate: boolean | null;
+}
+export declare function getEmptyResult(): IResult;
+export declare function resetResult(result: IResult): void;
+export declare const enum FLAG {
+ HOSTNAME = 0,
+ IS_VALID = 1,
+ PUBLIC_SUFFIX = 2,
+ DOMAIN = 3,
+ SUB_DOMAIN = 4,
+ ALL = 5
+}
+export declare function parseImpl(url: string, step: FLAG, suffixLookup: (_1: string, _2: ISuffixLookupOptions, _3: IPublicSuffix) => void, partialOptions: Partial<IOptions>, result: IResult): IResult;
diff --git a/client/node_modules/tldts-core/dist/types/src/is-ip.d.ts b/client/node_modules/tldts-core/dist/types/src/is-ip.d.ts
new file mode 100644
index 0000000..f0cc2ec
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/is-ip.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+export default function isIp(hostname: string): boolean;
diff --git a/client/node_modules/tldts-core/dist/types/src/is-valid.d.ts b/client/node_modules/tldts-core/dist/types/src/is-valid.d.ts
new file mode 100644
index 0000000..1a76faf
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/is-valid.d.ts
@@ -0,0 +1,15 @@
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+export default function (hostname: string): boolean;
diff --git a/client/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts b/client/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts
new file mode 100644
index 0000000..e04cec5
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts
@@ -0,0 +1,2 @@
+import { IPublicSuffix, ISuffixLookupOptions } from './interface';
+export default function (hostname: string, options: ISuffixLookupOptions, out: IPublicSuffix): boolean;
diff --git a/client/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts b/client/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts
new file mode 100644
index 0000000..09179a5
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts
@@ -0,0 +1,9 @@
+export interface IPublicSuffix {
+ isIcann: boolean | null;
+ isPrivate: boolean | null;
+ publicSuffix: string | null;
+}
+export interface ISuffixLookupOptions {
+ allowIcannDomains: boolean;
+ allowPrivateDomains: boolean;
+}
diff --git a/client/node_modules/tldts-core/dist/types/src/options.d.ts b/client/node_modules/tldts-core/dist/types/src/options.d.ts
new file mode 100644
index 0000000..fffdfab
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/options.d.ts
@@ -0,0 +1,10 @@
+export interface IOptions {
+ allowIcannDomains: boolean;
+ allowPrivateDomains: boolean;
+ detectIp: boolean;
+ extractHostname: boolean;
+ mixedInputs: boolean;
+ validHosts: string[] | null;
+ validateHostname: boolean;
+}
+export declare function setDefaults(options?: Partial<IOptions>): IOptions;
diff --git a/client/node_modules/tldts-core/dist/types/src/subdomain.d.ts b/client/node_modules/tldts-core/dist/types/src/subdomain.d.ts
new file mode 100644
index 0000000..8d103d5
--- /dev/null
+++ b/client/node_modules/tldts-core/dist/types/src/subdomain.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Returns the subdomain of a hostname string
+ */
+export default function getSubdomain(hostname: string, domain: string): string;
diff --git a/client/node_modules/tldts-core/index.ts b/client/node_modules/tldts-core/index.ts
new file mode 100644
index 0000000..d98e9de
--- /dev/null
+++ b/client/node_modules/tldts-core/index.ts
@@ -0,0 +1,10 @@
+export {
+ FLAG,
+ parseImpl,
+ IResult,
+ getEmptyResult,
+ resetResult,
+} from './src/factory';
+export { IPublicSuffix, ISuffixLookupOptions } from './src/lookup/interface';
+export { default as fastPathLookup } from './src/lookup/fast-path';
+export { IOptions, setDefaults } from './src/options';
diff --git a/client/node_modules/tldts-core/package.json b/client/node_modules/tldts-core/package.json
new file mode 100644
index 0000000..8e7fbba
--- /dev/null
+++ b/client/node_modules/tldts-core/package.json
@@ -0,0 +1,68 @@
+{
+ "name": "tldts-core",
+ "version": "6.0.21",
+ "description": "tldts core primitives (internal module)",
+ "author": {
+ "name": "Rémi Berson"
+ },
+ "contributors": [
+ "Alexei <alexeiatyahoodotcom@gmail.com>",
+ "Alexey <kureev-mail@ya.ru>",
+ "Andrew <chefandrew@seomoz.org>",
+ "Johannes Ewald <johannes.ewald@peerigon.com>",
+ "Jérôme Desboeufs <jerome.desboeufs@gmail.com>",
+ "Kelly Campbell <kelly.a.campbell@gmail.com>",
+ "Kiko Beats <josefrancisco.verdu@gmail.com>",
+ "Kris Reeves <krisreeves@searchfanatics.com>",
+ "Krzysztof Jan Modras <chrmod@chrmod.net>",
+ "Olivier Melcher <olivier.melcher@gmail.com>",
+ "Rémi Berson <remi.berson@pm.me>",
+ "Saad Rashid <srashid@lendinghome.com>",
+ "Thomas Parisot <hi@oncletom.io>",
+ "Timo Tijhof <krinklemail@gmail.com>",
+ "Xavier Damman <xdamman@gmail.com>",
+ "Yehezkiel Syamsuhadi <yehezkielbs@gmail.com>"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "license": "MIT",
+ "homepage": "https://github.com/remusao/tldts#readme",
+ "bugs": {
+ "url": "https://github.com/remusao/tldts/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/remusao/tldts.git"
+ },
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist",
+ "src",
+ "index.ts"
+ ],
+ "scripts": {
+ "clean": "rimraf dist",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json && rollup --config ./rollup.config.ts --configPlugin typescript",
+ "prepack": "yarn run bundle",
+ "test": "nyc mocha --config ../../.mocharc.js"
+ },
+ "devDependencies": {
+ "@rollup/plugin-node-resolve": "^15.0.1",
+ "@rollup/plugin-typescript": "^11.0.0",
+ "@types/chai": "^4.2.18",
+ "@types/mocha": "^10.0.0",
+ "@types/node": "^20.2.3",
+ "chai": "^4.2.0",
+ "mocha": "^10.1.0",
+ "nyc": "^15.0.1",
+ "rimraf": "^5.0.1",
+ "rollup": "^4.1.0",
+ "rollup-plugin-sourcemaps": "^0.6.1",
+ "typescript": "^5.0.4"
+ },
+ "gitHead": "e750d0dbfc0539a7a0cce4614b25718204a5c529"
+}
diff --git a/client/node_modules/tldts-core/src/domain-without-suffix.ts b/client/node_modules/tldts-core/src/domain-without-suffix.ts
new file mode 100644
index 0000000..9607d4b
--- /dev/null
+++ b/client/node_modules/tldts-core/src/domain-without-suffix.ts
@@ -0,0 +1,14 @@
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+export default function getDomainWithoutSuffix(
+ domain: string,
+ suffix: string,
+): string {
+ // Note: here `domain` and `suffix` cannot have the same length because in
+ // this case we set `domain` to `null` instead. It is thus safe to assume
+ // that `suffix` is shorter than `domain`.
+ return domain.slice(0, -suffix.length - 1);
+}
diff --git a/client/node_modules/tldts-core/src/domain.ts b/client/node_modules/tldts-core/src/domain.ts
new file mode 100644
index 0000000..640d33e
--- /dev/null
+++ b/client/node_modules/tldts-core/src/domain.ts
@@ -0,0 +1,100 @@
+import { IOptions } from './options';
+
+/**
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
+ *
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
+ * make sure that: either they are equal, or the character preceding `vhost` in
+ * `hostname` is a '.' (it should not be a partial label).
+ *
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
+ */
+function shareSameDomainSuffix(hostname: string, vhost: string): boolean {
+ if (hostname.endsWith(vhost)) {
+ return (
+ hostname.length === vhost.length ||
+ hostname[hostname.length - vhost.length - 1] === '.'
+ );
+ }
+
+ return false;
+}
+
+/**
+ * Given a hostname and its public suffix, extract the general domain.
+ */
+function extractDomainWithSuffix(
+ hostname: string,
+ publicSuffix: string,
+): string {
+ // Locate the index of the last '.' in the part of the `hostname` preceding
+ // the public suffix.
+ //
+ // examples:
+ // 1. not.evil.co.uk => evil.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // | index of the last dot
+ //
+ // 2. example.co.uk => example.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // |
+ // | (-1) no dot found before the public suffix
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
+
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
+ if (lastDotBeforeSuffixIndex === -1) {
+ return hostname;
+ }
+
+ // Extract the part between the last '.'
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
+}
+
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+export default function getDomain(
+ suffix: string,
+ hostname: string,
+ options: IOptions,
+): string | null {
+ // Check if `hostname` ends with a member of `validHosts`.
+ if (options.validHosts !== null) {
+ const validHosts = options.validHosts;
+ for (const vhost of validHosts) {
+ if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {
+ return vhost;
+ }
+ }
+ }
+
+ let numberOfLeadingDots = 0;
+ if (hostname.startsWith('.')) {
+ while (
+ numberOfLeadingDots < hostname.length &&
+ hostname[numberOfLeadingDots] === '.'
+ ) {
+ numberOfLeadingDots += 1;
+ }
+ }
+
+ // If `hostname` is a valid public suffix, then there is no domain to return.
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
+ // there is no need to perform a string comparison and we only compare the
+ // size.
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
+ return null;
+ }
+
+ // To extract the general domain, we start by identifying the public suffix
+ // (if any), then consider the domain to be the public suffix with one added
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
+ // `evil.co.uk`).
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
+}
diff --git a/client/node_modules/tldts-core/src/extract-hostname.ts b/client/node_modules/tldts-core/src/extract-hostname.ts
new file mode 100644
index 0000000..8211ff4
--- /dev/null
+++ b/client/node_modules/tldts-core/src/extract-hostname.ts
@@ -0,0 +1,170 @@
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+export default function extractHostname(
+ url: string,
+ urlIsValidHostname: boolean,
+): string | null {
+ let start = 0;
+ let end: number = url.length;
+ let hasUpper = false;
+
+ // If url is not already a valid hostname, then try to extract hostname.
+ if (!urlIsValidHostname) {
+ // Special handling of data URLs
+ if (url.startsWith('data:')) {
+ return null;
+ }
+
+ // Trim leading spaces
+ while (start < url.length && url.charCodeAt(start) <= 32) {
+ start += 1;
+ }
+
+ // Trim trailing spaces
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
+ end -= 1;
+ }
+
+ // Skip scheme.
+ if (
+ url.charCodeAt(start) === 47 /* '/' */ &&
+ url.charCodeAt(start + 1) === 47 /* '/' */
+ ) {
+ start += 2;
+ } else {
+ const indexOfProtocol = url.indexOf(':/', start);
+ if (indexOfProtocol !== -1) {
+ // Implement fast-path for common protocols. We expect most protocols
+ // should be one of these 4 and thus we will not need to perform the
+ // more expansive validity check most of the time.
+ const protocolSize = indexOfProtocol - start;
+ const c0 = url.charCodeAt(start);
+ const c1 = url.charCodeAt(start + 1);
+ const c2 = url.charCodeAt(start + 2);
+ const c3 = url.charCodeAt(start + 3);
+ const c4 = url.charCodeAt(start + 4);
+
+ if (
+ protocolSize === 5 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */ &&
+ c4 === 115 /* 's' */
+ ) {
+ // https
+ } else if (
+ protocolSize === 4 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */
+ ) {
+ // http
+ } else if (
+ protocolSize === 3 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */ &&
+ c2 === 115 /* 's' */
+ ) {
+ // wss
+ } else if (
+ protocolSize === 2 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */
+ ) {
+ // ws
+ } else {
+ // Check that scheme is valid
+ for (let i = start; i < indexOfProtocol; i += 1) {
+ const lowerCaseCode = url.charCodeAt(i) | 32;
+ if (
+ !(
+ (
+ (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]
+ (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]
+ lowerCaseCode === 46 || // '.'
+ lowerCaseCode === 45 || // '-'
+ lowerCaseCode === 43
+ ) // '+'
+ )
+ ) {
+ return null;
+ }
+ }
+ }
+
+ // Skip 0, 1 or more '/' after ':/'
+ start = indexOfProtocol + 2;
+ while (url.charCodeAt(start) === 47 /* '/' */) {
+ start += 1;
+ }
+ }
+ }
+
+ // Detect first occurrence of '/', '?' or '#'. We also keep track of the
+ // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of
+ // (respectively), identifier, ipv6 or port.
+ let indexOfIdentifier = -1;
+ let indexOfClosingBracket = -1;
+ let indexOfPort = -1;
+ for (let i = start; i < end; i += 1) {
+ const code: number = url.charCodeAt(i);
+ if (
+ code === 35 || // '#'
+ code === 47 || // '/'
+ code === 63 // '?'
+ ) {
+ end = i;
+ break;
+ } else if (code === 64) {
+ // '@'
+ indexOfIdentifier = i;
+ } else if (code === 93) {
+ // ']'
+ indexOfClosingBracket = i;
+ } else if (code === 58) {
+ // ':'
+ indexOfPort = i;
+ } else if (code >= 65 && code <= 90) {
+ hasUpper = true;
+ }
+ }
+
+ // Detect identifier: '@'
+ if (
+ indexOfIdentifier !== -1 &&
+ indexOfIdentifier > start &&
+ indexOfIdentifier < end
+ ) {
+ start = indexOfIdentifier + 1;
+ }
+
+ // Handle ipv6 addresses
+ if (url.charCodeAt(start) === 91 /* '[' */) {
+ if (indexOfClosingBracket !== -1) {
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
+ }
+ return null;
+ } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
+ // Detect port: ':'
+ end = indexOfPort;
+ }
+ }
+
+ // Trim trailing dots
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
+ end -= 1;
+ }
+
+ const hostname: string =
+ start !== 0 || end !== url.length ? url.slice(start, end) : url;
+
+ if (hasUpper) {
+ return hostname.toLowerCase();
+ }
+
+ return hostname;
+}
diff --git a/client/node_modules/tldts-core/src/factory.ts b/client/node_modules/tldts-core/src/factory.ts
new file mode 100644
index 0000000..554ba70
--- /dev/null
+++ b/client/node_modules/tldts-core/src/factory.ts
@@ -0,0 +1,160 @@
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+
+import getDomain from './domain';
+import getDomainWithoutSuffix from './domain-without-suffix';
+import extractHostname from './extract-hostname';
+import isIp from './is-ip';
+import isValidHostname from './is-valid';
+import { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';
+import { IOptions, setDefaults } from './options';
+import getSubdomain from './subdomain';
+
+export interface IResult {
+ // `hostname` is either a registered name (including but not limited to a
+ // hostname), or an IP address. IPv4 addresses must be in dot-decimal
+ // notation, and IPv6 addresses must be enclosed in brackets ([]). This is
+ // directly extracted from the input URL.
+ hostname: string | null;
+
+ // Is `hostname` an IP? (IPv4 or IPv6)
+ isIp: boolean | null;
+
+ // `hostname` split between subdomain, domain and its public suffix (if any)
+ subdomain: string | null;
+ domain: string | null;
+ publicSuffix: string | null;
+ domainWithoutSuffix: string | null;
+
+ // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list
+ isIcann: boolean | null;
+ isPrivate: boolean | null;
+}
+
+export function getEmptyResult(): IResult {
+ return {
+ domain: null,
+ domainWithoutSuffix: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null,
+ };
+}
+
+export function resetResult(result: IResult): void {
+ result.domain = null;
+ result.domainWithoutSuffix = null;
+ result.hostname = null;
+ result.isIcann = null;
+ result.isIp = null;
+ result.isPrivate = null;
+ result.publicSuffix = null;
+ result.subdomain = null;
+}
+
+// Flags representing steps in the `parse` function. They are used to implement
+// an early stop mechanism (simulating some form of laziness) to avoid doing
+// more work than necessary to perform a given action (e.g.: we don't need to
+// extract the domain and subdomain if we are only interested in public suffix).
+export const enum FLAG {
+ HOSTNAME,
+ IS_VALID,
+ PUBLIC_SUFFIX,
+ DOMAIN,
+ SUB_DOMAIN,
+ ALL,
+}
+
+export function parseImpl(
+ url: string,
+ step: FLAG,
+ suffixLookup: (
+ _1: string,
+ _2: ISuffixLookupOptions,
+ _3: IPublicSuffix,
+ ) => void,
+ partialOptions: Partial<IOptions>,
+ result: IResult,
+): IResult {
+ const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);
+
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (!options.extractHostname) {
+ result.hostname = url;
+ } else if (options.mixedInputs) {
+ result.hostname = extractHostname(url, isValidHostname(url));
+ } else {
+ result.hostname = extractHostname(url, false);
+ }
+
+ if (step === FLAG.HOSTNAME || result.hostname === null) {
+ return result;
+ }
+
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp) {
+ result.isIp = isIp(result.hostname);
+ if (result.isIp) {
+ return result;
+ }
+ }
+
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (
+ options.validateHostname &&
+ options.extractHostname &&
+ !isValidHostname(result.hostname)
+ ) {
+ result.hostname = null;
+ return result;
+ }
+
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {
+ return result;
+ }
+
+ // Extract domain
+ result.domain = getDomain(result.publicSuffix, result.hostname, options);
+ if (step === FLAG.DOMAIN || result.domain === null) {
+ return result;
+ }
+
+ // Extract subdomain
+ result.subdomain = getSubdomain(result.hostname, result.domain);
+ if (step === FLAG.SUB_DOMAIN) {
+ return result;
+ }
+
+ // Extract domain without suffix
+ result.domainWithoutSuffix = getDomainWithoutSuffix(
+ result.domain,
+ result.publicSuffix,
+ );
+
+ return result;
+}
diff --git a/client/node_modules/tldts-core/src/is-ip.ts b/client/node_modules/tldts-core/src/is-ip.ts
new file mode 100644
index 0000000..33151c1
--- /dev/null
+++ b/client/node_modules/tldts-core/src/is-ip.ts
@@ -0,0 +1,87 @@
+/**
+ * Check if a hostname is an IP. You should be aware that this only works
+ * because `hostname` is already garanteed to be a valid hostname!
+ */
+function isProbablyIpv4(hostname: string): boolean {
+ // Cannot be shorted than 1.1.1.1
+ if (hostname.length < 7) {
+ return false;
+ }
+
+ // Cannot be longer than: 255.255.255.255
+ if (hostname.length > 15) {
+ return false;
+ }
+
+ let numberOfDots = 0;
+
+ for (let i = 0; i < hostname.length; i += 1) {
+ const code = hostname.charCodeAt(i);
+
+ if (code === 46 /* '.' */) {
+ numberOfDots += 1;
+ } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
+ return false;
+ }
+ }
+
+ return (
+ numberOfDots === 3 &&
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */
+ );
+}
+
+/**
+ * Similar to isProbablyIpv4.
+ */
+function isProbablyIpv6(hostname: string): boolean {
+ if (hostname.length < 3) {
+ return false;
+ }
+
+ let start = hostname.startsWith('[') ? 1 : 0;
+ let end = hostname.length;
+
+ if (hostname[end - 1] === ']') {
+ end -= 1;
+ }
+
+ // We only consider the maximum size of a normal IPV6. Note that this will
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
+ // and a proper validation library should be used for these.
+ if (end - start > 39) {
+ return false;
+ }
+
+ let hasColon = false;
+
+ for (; start < end; start += 1) {
+ const code = hostname.charCodeAt(start);
+
+ if (code === 58 /* ':' */) {
+ hasColon = true;
+ } else if (
+ !(
+ (
+ (code >= 48 && code <= 57) || // 0-9
+ (code >= 97 && code <= 102) || // a-f
+ (code >= 65 && code <= 90)
+ ) // A-F
+ )
+ ) {
+ return false;
+ }
+ }
+
+ return hasColon;
+}
+
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+export default function isIp(hostname: string): boolean {
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
+}
diff --git a/client/node_modules/tldts-core/src/is-valid.ts b/client/node_modules/tldts-core/src/is-valid.ts
new file mode 100644
index 0000000..03cc384
--- /dev/null
+++ b/client/node_modules/tldts-core/src/is-valid.ts
@@ -0,0 +1,79 @@
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+
+function isValidAscii(code: number): boolean {
+ return (
+ (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127
+ );
+}
+
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+export default function (hostname: string): boolean {
+ if (hostname.length > 255) {
+ return false;
+ }
+
+ if (hostname.length === 0) {
+ return false;
+ }
+
+ if (
+ /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&
+ hostname.charCodeAt(0) !== 46 && // '.' (dot)
+ hostname.charCodeAt(0) !== 95 // '_' (underscore)
+ ) {
+ return false;
+ }
+
+ // Validate hostname according to RFC
+ let lastDotIndex = -1;
+ let lastCharCode = -1;
+ const len = hostname.length;
+
+ for (let i = 0; i < len; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95
+ ) {
+ return false;
+ }
+
+ lastDotIndex = i;
+ } else if (
+ !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))
+ ) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+
+ lastCharCode = code;
+ }
+
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45
+ );
+}
diff --git a/client/node_modules/tldts-core/src/lookup/fast-path.ts b/client/node_modules/tldts-core/src/lookup/fast-path.ts
new file mode 100644
index 0000000..f80898f
--- /dev/null
+++ b/client/node_modules/tldts-core/src/lookup/fast-path.ts
@@ -0,0 +1,80 @@
+import { IPublicSuffix, ISuffixLookupOptions } from './interface';
+
+export default function (
+ hostname: string,
+ options: ISuffixLookupOptions,
+ out: IPublicSuffix,
+): boolean {
+ // Fast path for very popular suffixes; this allows to by-pass lookup
+ // completely as well as any extra allocation or string manipulation.
+ if (!options.allowPrivateDomains && hostname.length > 3) {
+ const last: number = hostname.length - 1;
+ const c3: number = hostname.charCodeAt(last);
+ const c2: number = hostname.charCodeAt(last - 1);
+ const c1: number = hostname.charCodeAt(last - 2);
+ const c0: number = hostname.charCodeAt(last - 3);
+
+ if (
+ c3 === 109 /* 'm' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 99 /* 'c' */ &&
+ c0 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'com';
+ return true;
+ } else if (
+ c3 === 103 /* 'g' */ &&
+ c2 === 114 /* 'r' */ &&
+ c1 === 111 /* 'o' */ &&
+ c0 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'org';
+ return true;
+ } else if (
+ c3 === 117 /* 'u' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 101 /* 'e' */ &&
+ c0 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'edu';
+ return true;
+ } else if (
+ c3 === 118 /* 'v' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 103 /* 'g' */ &&
+ c0 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'gov';
+ return true;
+ } else if (
+ c3 === 116 /* 't' */ &&
+ c2 === 101 /* 'e' */ &&
+ c1 === 110 /* 'n' */ &&
+ c0 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'net';
+ return true;
+ } else if (
+ c3 === 101 /* 'e' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 46 /* '.' */
+ ) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'de';
+ return true;
+ }
+ }
+
+ return false;
+}
diff --git a/client/node_modules/tldts-core/src/lookup/interface.ts b/client/node_modules/tldts-core/src/lookup/interface.ts
new file mode 100644
index 0000000..495a642
--- /dev/null
+++ b/client/node_modules/tldts-core/src/lookup/interface.ts
@@ -0,0 +1,10 @@
+export interface IPublicSuffix {
+ isIcann: boolean | null;
+ isPrivate: boolean | null;
+ publicSuffix: string | null;
+}
+
+export interface ISuffixLookupOptions {
+ allowIcannDomains: boolean;
+ allowPrivateDomains: boolean;
+}
diff --git a/client/node_modules/tldts-core/src/options.ts b/client/node_modules/tldts-core/src/options.ts
new file mode 100644
index 0000000..520e21c
--- /dev/null
+++ b/client/node_modules/tldts-core/src/options.ts
@@ -0,0 +1,39 @@
+export interface IOptions {
+ allowIcannDomains: boolean;
+ allowPrivateDomains: boolean;
+ detectIp: boolean;
+ extractHostname: boolean;
+ mixedInputs: boolean;
+ validHosts: string[] | null;
+ validateHostname: boolean;
+}
+
+function setDefaultsImpl({
+ allowIcannDomains = true,
+ allowPrivateDomains = false,
+ detectIp = true,
+ extractHostname = true,
+ mixedInputs = true,
+ validHosts = null,
+ validateHostname = true,
+}: Partial<IOptions>): IOptions {
+ return {
+ allowIcannDomains,
+ allowPrivateDomains,
+ detectIp,
+ extractHostname,
+ mixedInputs,
+ validHosts,
+ validateHostname,
+ };
+}
+
+const DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});
+
+export function setDefaults(options?: Partial<IOptions>): IOptions {
+ if (options === undefined) {
+ return DEFAULT_OPTIONS;
+ }
+
+ return /*@__INLINE__*/ setDefaultsImpl(options);
+}
diff --git a/client/node_modules/tldts-core/src/subdomain.ts b/client/node_modules/tldts-core/src/subdomain.ts
new file mode 100644
index 0000000..bbb9c97
--- /dev/null
+++ b/client/node_modules/tldts-core/src/subdomain.ts
@@ -0,0 +1,11 @@
+/**
+ * Returns the subdomain of a hostname string
+ */
+export default function getSubdomain(hostname: string, domain: string): string {
+ // If `hostname` and `domain` are the same, then there is no sub-domain
+ if (domain.length === hostname.length) {
+ return '';
+ }
+
+ return hostname.slice(0, -domain.length - 1);
+}
diff --git a/client/node_modules/tldts-experimental/LICENSE b/client/node_modules/tldts-experimental/LICENSE
new file mode 100644
index 0000000..41be2c4
--- /dev/null
+++ b/client/node_modules/tldts-experimental/LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/tldts-experimental/README.md b/client/node_modules/tldts-experimental/README.md
new file mode 100644
index 0000000..91fea6f
--- /dev/null
+++ b/client/node_modules/tldts-experimental/README.md
@@ -0,0 +1,26 @@
+# `tldts-experimental`
+
+> faster, experimental, unstable version of `tldts`. It exposes the exact same
+> API and is subjected to the same tests as the main library, but offers a
+> different trade-off in terms of space, speed and accuracy.
+
+See README.md from `tldts` for more details about the API.
+
+## Differences with tldts
+
+The default `tldts` package is what you should use most of the time and what is
+imported out of the box. It makes use of an optimized DAWG (direct acyclic word
+graph) data-structure and delivers very good performances. If that is not
+enough, you can try the `tldts-experimental` package which implements a
+_probabilistic data-structure_. It is:
+
+- Must smaller (in terms of bundle size and memory footprint)
+- Loads instantly (no data loading or parsing required)
+- Much faster (lookups are up to 1.5-2x faster)
+
+The drawback is that there might be some _unlikely_ false positive (think bloom filters).
+
+For more details, check the documentation from the following files:
+
+- [building](https://github.com/remusao/tldts/blob/master/bin/builders/hashes.ts)
+- [lookups](./src/packed-hashes.ts)
diff --git a/client/node_modules/tldts-experimental/dist/cjs/index.js b/client/node_modules/tldts-experimental/dist/cjs/index.js
new file mode 100644
index 0000000..3e0c4c2
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/index.js
@@ -0,0 +1,808 @@
+'use strict';
+
+/**
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
+ *
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
+ * make sure that: either they are equal, or the character preceding `vhost` in
+ * `hostname` is a '.' (it should not be a partial label).
+ *
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
+ */
+function shareSameDomainSuffix(hostname, vhost) {
+ if (hostname.endsWith(vhost)) {
+ return (hostname.length === vhost.length ||
+ hostname[hostname.length - vhost.length - 1] === '.');
+ }
+ return false;
+}
+/**
+ * Given a hostname and its public suffix, extract the general domain.
+ */
+function extractDomainWithSuffix(hostname, publicSuffix) {
+ // Locate the index of the last '.' in the part of the `hostname` preceding
+ // the public suffix.
+ //
+ // examples:
+ // 1. not.evil.co.uk => evil.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // | index of the last dot
+ //
+ // 2. example.co.uk => example.co.uk
+ // ^ ^
+ // | | start of public suffix
+ // |
+ // | (-1) no dot found before the public suffix
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
+ if (lastDotBeforeSuffixIndex === -1) {
+ return hostname;
+ }
+ // Extract the part between the last '.'
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
+}
+/**
+ * Detects the domain based on rules and upon and a host string
+ */
+function getDomain$1(suffix, hostname, options) {
+ // Check if `hostname` ends with a member of `validHosts`.
+ if (options.validHosts !== null) {
+ const validHosts = options.validHosts;
+ for (const vhost of validHosts) {
+ if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {
+ return vhost;
+ }
+ }
+ }
+ let numberOfLeadingDots = 0;
+ if (hostname.startsWith('.')) {
+ while (numberOfLeadingDots < hostname.length &&
+ hostname[numberOfLeadingDots] === '.') {
+ numberOfLeadingDots += 1;
+ }
+ }
+ // If `hostname` is a valid public suffix, then there is no domain to return.
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
+ // there is no need to perform a string comparison and we only compare the
+ // size.
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
+ return null;
+ }
+ // To extract the general domain, we start by identifying the public suffix
+ // (if any), then consider the domain to be the public suffix with one added
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
+ // `evil.co.uk`).
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
+}
+
+/**
+ * Return the part of domain without suffix.
+ *
+ * Example: for domain 'foo.com', the result would be 'foo'.
+ */
+function getDomainWithoutSuffix$1(domain, suffix) {
+ // Note: here `domain` and `suffix` cannot have the same length because in
+ // this case we set `domain` to `null` instead. It is thus safe to assume
+ // that `suffix` is shorter than `domain`.
+ return domain.slice(0, -suffix.length - 1);
+}
+
+/**
+ * @param url - URL we want to extract a hostname from.
+ * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.
+ */
+function extractHostname(url, urlIsValidHostname) {
+ let start = 0;
+ let end = url.length;
+ let hasUpper = false;
+ // If url is not already a valid hostname, then try to extract hostname.
+ if (!urlIsValidHostname) {
+ // Special handling of data URLs
+ if (url.startsWith('data:')) {
+ return null;
+ }
+ // Trim leading spaces
+ while (start < url.length && url.charCodeAt(start) <= 32) {
+ start += 1;
+ }
+ // Trim trailing spaces
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
+ end -= 1;
+ }
+ // Skip scheme.
+ if (url.charCodeAt(start) === 47 /* '/' */ &&
+ url.charCodeAt(start + 1) === 47 /* '/' */) {
+ start += 2;
+ }
+ else {
+ const indexOfProtocol = url.indexOf(':/', start);
+ if (indexOfProtocol !== -1) {
+ // Implement fast-path for common protocols. We expect most protocols
+ // should be one of these 4 and thus we will not need to perform the
+ // more expansive validity check most of the time.
+ const protocolSize = indexOfProtocol - start;
+ const c0 = url.charCodeAt(start);
+ const c1 = url.charCodeAt(start + 1);
+ const c2 = url.charCodeAt(start + 2);
+ const c3 = url.charCodeAt(start + 3);
+ const c4 = url.charCodeAt(start + 4);
+ if (protocolSize === 5 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */ &&
+ c4 === 115 /* 's' */) ;
+ else if (protocolSize === 4 &&
+ c0 === 104 /* 'h' */ &&
+ c1 === 116 /* 't' */ &&
+ c2 === 116 /* 't' */ &&
+ c3 === 112 /* 'p' */) ;
+ else if (protocolSize === 3 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */ &&
+ c2 === 115 /* 's' */) ;
+ else if (protocolSize === 2 &&
+ c0 === 119 /* 'w' */ &&
+ c1 === 115 /* 's' */) ;
+ else {
+ // Check that scheme is valid
+ for (let i = start; i < indexOfProtocol; i += 1) {
+ const lowerCaseCode = url.charCodeAt(i) | 32;
+ if (!(((lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]
+ (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]
+ lowerCaseCode === 46 || // '.'
+ lowerCaseCode === 45 || // '-'
+ lowerCaseCode === 43) // '+'
+ )) {
+ return null;
+ }
+ }
+ }
+ // Skip 0, 1 or more '/' after ':/'
+ start = indexOfProtocol + 2;
+ while (url.charCodeAt(start) === 47 /* '/' */) {
+ start += 1;
+ }
+ }
+ }
+ // Detect first occurrence of '/', '?' or '#'. We also keep track of the
+ // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of
+ // (respectively), identifier, ipv6 or port.
+ let indexOfIdentifier = -1;
+ let indexOfClosingBracket = -1;
+ let indexOfPort = -1;
+ for (let i = start; i < end; i += 1) {
+ const code = url.charCodeAt(i);
+ if (code === 35 || // '#'
+ code === 47 || // '/'
+ code === 63 // '?'
+ ) {
+ end = i;
+ break;
+ }
+ else if (code === 64) {
+ // '@'
+ indexOfIdentifier = i;
+ }
+ else if (code === 93) {
+ // ']'
+ indexOfClosingBracket = i;
+ }
+ else if (code === 58) {
+ // ':'
+ indexOfPort = i;
+ }
+ else if (code >= 65 && code <= 90) {
+ hasUpper = true;
+ }
+ }
+ // Detect identifier: '@'
+ if (indexOfIdentifier !== -1 &&
+ indexOfIdentifier > start &&
+ indexOfIdentifier < end) {
+ start = indexOfIdentifier + 1;
+ }
+ // Handle ipv6 addresses
+ if (url.charCodeAt(start) === 91 /* '[' */) {
+ if (indexOfClosingBracket !== -1) {
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
+ }
+ return null;
+ }
+ else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
+ // Detect port: ':'
+ end = indexOfPort;
+ }
+ }
+ // Trim trailing dots
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
+ end -= 1;
+ }
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
+ if (hasUpper) {
+ return hostname.toLowerCase();
+ }
+ return hostname;
+}
+
+/**
+ * Check if a hostname is an IP. You should be aware that this only works
+ * because `hostname` is already garanteed to be a valid hostname!
+ */
+function isProbablyIpv4(hostname) {
+ // Cannot be shorted than 1.1.1.1
+ if (hostname.length < 7) {
+ return false;
+ }
+ // Cannot be longer than: 255.255.255.255
+ if (hostname.length > 15) {
+ return false;
+ }
+ let numberOfDots = 0;
+ for (let i = 0; i < hostname.length; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ numberOfDots += 1;
+ }
+ else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
+ return false;
+ }
+ }
+ return (numberOfDots === 3 &&
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);
+}
+/**
+ * Similar to isProbablyIpv4.
+ */
+function isProbablyIpv6(hostname) {
+ if (hostname.length < 3) {
+ return false;
+ }
+ let start = hostname.startsWith('[') ? 1 : 0;
+ let end = hostname.length;
+ if (hostname[end - 1] === ']') {
+ end -= 1;
+ }
+ // We only consider the maximum size of a normal IPV6. Note that this will
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
+ // and a proper validation library should be used for these.
+ if (end - start > 39) {
+ return false;
+ }
+ let hasColon = false;
+ for (; start < end; start += 1) {
+ const code = hostname.charCodeAt(start);
+ if (code === 58 /* ':' */) {
+ hasColon = true;
+ }
+ else if (!(((code >= 48 && code <= 57) || // 0-9
+ (code >= 97 && code <= 102) || // a-f
+ (code >= 65 && code <= 90)) // A-F
+ )) {
+ return false;
+ }
+ }
+ return hasColon;
+}
+/**
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
+ * This *will not* work on any string. We need `hostname` to be a valid
+ * hostname.
+ */
+function isIp(hostname) {
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
+}
+
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+function isValidAscii(code) {
+ return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);
+}
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+function isValidHostname (hostname) {
+ if (hostname.length > 255) {
+ return false;
+ }
+ if (hostname.length === 0) {
+ return false;
+ }
+ if (
+ /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&
+ hostname.charCodeAt(0) !== 46 && // '.' (dot)
+ hostname.charCodeAt(0) !== 95 // '_' (underscore)
+ ) {
+ return false;
+ }
+ // Validate hostname according to RFC
+ let lastDotIndex = -1;
+ let lastCharCode = -1;
+ const len = hostname.length;
+ for (let i = 0; i < len; i += 1) {
+ const code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95) {
+ return false;
+ }
+ lastDotIndex = i;
+ }
+ else if (!( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95))) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+ lastCharCode = code;
+ }
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45);
+}
+
+function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {
+ return {
+ allowIcannDomains,
+ allowPrivateDomains,
+ detectIp,
+ extractHostname,
+ mixedInputs,
+ validHosts,
+ validateHostname,
+ };
+}
+const DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});
+function setDefaults(options) {
+ if (options === undefined) {
+ return DEFAULT_OPTIONS;
+ }
+ return /*@__INLINE__*/ setDefaultsImpl(options);
+}
+
+/**
+ * Returns the subdomain of a hostname string
+ */
+function getSubdomain$1(hostname, domain) {
+ // If `hostname` and `domain` are the same, then there is no sub-domain
+ if (domain.length === hostname.length) {
+ return '';
+ }
+ return hostname.slice(0, -domain.length - 1);
+}
+
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+function getEmptyResult() {
+ return {
+ domain: null,
+ domainWithoutSuffix: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null,
+ };
+}
+function resetResult(result) {
+ result.domain = null;
+ result.domainWithoutSuffix = null;
+ result.hostname = null;
+ result.isIcann = null;
+ result.isIp = null;
+ result.isPrivate = null;
+ result.publicSuffix = null;
+ result.subdomain = null;
+}
+function parseImpl(url, step, suffixLookup, partialOptions, result) {
+ const options = /*@__INLINE__*/ setDefaults(partialOptions);
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (!options.extractHostname) {
+ result.hostname = url;
+ }
+ else if (options.mixedInputs) {
+ result.hostname = extractHostname(url, isValidHostname(url));
+ }
+ else {
+ result.hostname = extractHostname(url, false);
+ }
+ if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {
+ return result;
+ }
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp) {
+ result.isIp = isIp(result.hostname);
+ if (result.isIp) {
+ return result;
+ }
+ }
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (options.validateHostname &&
+ options.extractHostname &&
+ !isValidHostname(result.hostname)) {
+ result.hostname = null;
+ return result;
+ }
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {
+ return result;
+ }
+ // Extract domain
+ result.domain = getDomain$1(result.publicSuffix, result.hostname, options);
+ if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {
+ return result;
+ }
+ // Extract subdomain
+ result.subdomain = getSubdomain$1(result.hostname, result.domain);
+ if (step === 4 /* FLAG.SUB_DOMAIN */) {
+ return result;
+ }
+ // Extract domain without suffix
+ result.domainWithoutSuffix = getDomainWithoutSuffix$1(result.domain, result.publicSuffix);
+ return result;
+}
+
+function fastPathLookup (hostname, options, out) {
+ // Fast path for very popular suffixes; this allows to by-pass lookup
+ // completely as well as any extra allocation or string manipulation.
+ if (!options.allowPrivateDomains && hostname.length > 3) {
+ const last = hostname.length - 1;
+ const c3 = hostname.charCodeAt(last);
+ const c2 = hostname.charCodeAt(last - 1);
+ const c1 = hostname.charCodeAt(last - 2);
+ const c0 = hostname.charCodeAt(last - 3);
+ if (c3 === 109 /* 'm' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 99 /* 'c' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'com';
+ return true;
+ }
+ else if (c3 === 103 /* 'g' */ &&
+ c2 === 114 /* 'r' */ &&
+ c1 === 111 /* 'o' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'org';
+ return true;
+ }
+ else if (c3 === 117 /* 'u' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 101 /* 'e' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'edu';
+ return true;
+ }
+ else if (c3 === 118 /* 'v' */ &&
+ c2 === 111 /* 'o' */ &&
+ c1 === 103 /* 'g' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'gov';
+ return true;
+ }
+ else if (c3 === 116 /* 't' */ &&
+ c2 === 101 /* 'e' */ &&
+ c1 === 110 /* 'n' */ &&
+ c0 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'net';
+ return true;
+ }
+ else if (c3 === 101 /* 'e' */ &&
+ c2 === 100 /* 'd' */ &&
+ c1 === 46 /* '.' */) {
+ out.isIcann = true;
+ out.isPrivate = false;
+ out.publicSuffix = 'de';
+ return true;
+ }
+ }
+ return false;
+}
+
+// Code automatically generated using ./bin/builders/hashes.ts
+var packed = new Uint32Array([6, 0, 0, 9, 5860739, 5860978, 5861026, 5861029, 5861126, 5861352, 5861357, 5861403, 5861586, 0, 0, 0, 1, 1850179732, 0, 9, 328184559, 1866923597, 2123501943, 2282562397, 2795346450, 3130446446, 3136607046, 3453334789, 4194175729, 59, 3156266, 20989895, 65021741, 101876503, 179500755, 311298055, 460682395, 582839475, 819014943, 819028732, 870639071, 1075688039, 1139486022, 1241916785, 1335010188, 1370787547, 1370800824, 1431231509, 1498275876, 1522025464, 1544104458, 1554653742, 1570707647, 1626814538, 1630208269, 1675555530, 1679919230, 1687232530, 1730108052, 1789539963, 1893848785, 2001752368, 2023201532, 2182413090, 2391299855, 2419619562, 2445171142, 2496327381, 2525245455, 2573179642, 2703420555, 2709520566, 2762771525, 2921343336, 2989808530, 3000405309, 3015527775, 3047607849, 3382460164, 3420815319, 3461355676, 3498015045, 3738715095, 3810061811, 3843717774, 3934774481, 4085096371, 4146774829, 4208486561, 3692, 100835, 372942, 373596, 399643, 403867, 589540, 737224, 1210028, 1861414, 2424682, 2658901, 2946999, 3329363, 3333156, 6942202, 9086062, 9095117, 9267209, 9340158, 9485932, 11010102, 11406846, 16314893, 17546564, 18146303, 18331450, 19211200, 20314441, 20797457, 25057869, 26663359, 28320278, 30499151, 30585840, 36605120, 36775470, 36775473, 36990037, 39275208, 41892561, 42049478, 42538024, 45214788, 47656662, 50173535, 53599326, 53858455, 54537430, 63815836, 64422985, 64643127, 64831187, 69971116, 73517283, 73904368, 75706244, 78793775, 78794171, 79558910, 80324123, 84993902, 87977581, 87978853, 87978860, 93811268, 95641381, 95641777, 96671837, 100511481, 100947456, 108215410, 108929491, 110526112, 110662188, 112311307, 114507832, 116811054, 120488259, 122521550, 133427701, 134012911, 141513861, 141517490, 144349377, 144362028, 144550088, 144770230, 147205859, 147810002, 147989623, 149598895, 150736276, 150856054, 152379730, 156555774, 164189124, 164189258, 164189262, 164189691, 164189842, 164560958, 165069166, 165106627, 165107021, 165339368, 165444557, 165444558, 165444615, 165444629, 165444745, 165444749, 165445368, 165512129, 165512527, 165749053, 165749188, 165749299, 165749435, 165749535, 165779060, 167155067, 169909265, 169909275, 169909419, 169909512, 169909517, 169909531, 169909608, 169909724, 169909733, 169909734, 169909738, 169909857, 169910036, 169910195, 169910226, 169938982, 169939075, 169939172, 169939304, 169939334, 169939474, 169939481, 169939680, 169939682, 169939793, 169977029, 169977163, 170281136, 170281250, 170281253, 170281258, 170281275, 170281382, 170281390, 170281415, 170281447, 170281457, 170281473, 170281497, 170281511, 170281522, 170281525, 170281528, 170281579, 170281589, 170281687, 170281689, 170281699, 170281742, 170281776, 170281812, 170281852, 170281902, 170281972, 170311352, 170649202, 170649385, 170649596, 171188220, 172078401, 172145927, 172484120, 172484301, 172788260, 172788689, 172788693, 172788754, 172788809, 172788827, 173118530, 173118924, 173456648, 173591948, 173930212, 173930286, 174129293, 174306499, 174306893, 174307245, 174307439, 174358551, 174374100, 174407806, 174410098, 174488250, 174509317, 174577099, 174644617, 174843632, 174844030, 174847160, 175181758, 175524135, 175524873, 176843304, 176948764, 178529610, 178530165, 178530256, 178530299, 178530303, 178530355, 178868363, 178868576, 178868974, 179274397, 179274476, 179379459, 179379616, 179379624, 179379849, 179379853, 179380220, 179657877, 179692651, 179714168, 179913714, 180090112, 180090244, 180090304, 180090314, 180090337, 180090372, 180090450, 180090510, 180090525, 180090526, 180090587, 180090702, 180091049, 180091118, 180091210, 180091228, 180091258, 180091259, 180283722, 180292996, 180293014, 180293036, 180293067, 180293093, 180293105, 180293124, 180293152, 180293156, 180293169, 180293179, 180293199, 180293253, 180293290, 180293294, 180293300, 180293302, 180293304, 180293317, 180293344, 180293346, 180293381, 180293447, 180293487, 180293501, 180293503, 180293522, 180293535, 180293716, 180293796, 180293819, 180293997, 180294000, 180294004, 180294009, 180428032, 180902137, 180969265, 180969566, 180969653, 180969723, 181240259, 181240353, 181240367, 181240371, 181240391, 181240392, 181240393, 181240398, 181240404, 181240451, 181240474, 181240479, 181240483, 181240490, 181240509, 181240515, 181240844, 181240853, 181240956, 181241149, 181241165, 181241168, 181244839, 181375748, 181548621, 181548644, 181548727, 181548873, 181549108, 181549176, 181949900, 181950639, 182056031, 182385920, 182419943, 182893167, 182893283, 182893394, 182893788, 183163149, 183163151, 183163155, 183163168, 183163169, 183163171, 183163181, 183163182, 183163183, 183163186, 183163188, 183163233, 183163248, 183163251, 183163252, 183163254, 183163270, 183163303, 183163314, 183163317, 183163334, 183163335, 183163336, 183163340, 183163345, 183163347, 183163350, 183163362, 183163363, 183163365, 183163366, 183163367, 183163371, 183163375, 183163376, 183163378, 183163380, 183163383, 183163630, 183163631, 183163644, 183163649, 183163651, 183163653, 183163655, 183163664, 183163668, 183163669, 183163678, 183163679, 183163682, 183163687, 183163713, 183163715, 183163728, 183163731, 183163735, 183163742, 183163777, 183163779, 183163780, 183163781, 183163783, 183163796, 183163797, 183163801, 183163843, 183163845, 183163847, 183163859, 183163864, 183163865, 183163874, 183163895, 183163897, 183163913, 183163922, 183163933, 183163960, 183163961, 183163963, 183163977, 183163978, 183163979, 183163981, 183163988, 183163989, 183163991, 183163992, 183163994, 183163995, 183163998, 183164008, 183164010, 183164012, 183164021, 183164025, 183164026, 183164027, 183164029, 183164041, 183164044, 183164045, 183164047, 183164050, 183164051, 183164057, 183164060, 183164061, 183164093, 184080938, 184081253, 184081673, 184081677, 184081778, 184246330, 184246511, 184486318, 184486865, 184487263, 184828195, 184828212, 184844696, 184844824, 184848486, 184848491, 184849029, 184849387, 184859173, 184869208, 184869819, 184994607, 185163947, 185216284, 185289081, 185292632, 185295605, 185501943, 185502073, 185502077, 185772974, 186723357, 186723671, 186723801, 186763265, 186771866, 186840059, 186858006, 186875993, 186950941, 186953244, 186994101, 186994720, 187011432, 187022814, 187064894, 187067400, 187076090, 187078647, 187088813, 187161171, 187188812, 187203075, 187219343, 187222314, 187251332, 187328908, 187332203, 187378741, 187385256, 187386889, 187403121, 187403860, 187404132, 187409119, 187410536, 187415116, 187415841, 187417183, 187453423, 187455618, 187483569, 187506658, 187521457, 187531575, 187554851, 187557872, 187932036, 187932044, 187932595, 187932730, 187932752, 187932756, 187932794, 187932985, 187932989, 189851312, 190236828, 190304994, 190305388, 190372512, 190372516, 190372621, 190372839, 190373457, 190575460, 190575594, 190879986, 191043224, 191246659, 191458643, 191459037, 191524213, 193856736, 193857103, 193857114, 193857243, 193991787, 194363750, 194498585, 194498630, 194498988, 194499056, 194499063, 194532263, 194532626, 194532630, 194532693, 194532760, 194532936, 194533115, 194802308, 194802313, 194802316, 194802351, 194802818, 194802832, 194802974, 194803141, 194803143, 194803161, 194803226, 194803230, 194836546, 194870589, 194870610, 194871004, 195040013, 195040230, 195040360, 195077902, 195078025, 195078028, 195078034, 195078035, 195078038, 195078058, 195078062, 195078071, 195078081, 195078095, 195078112, 195078119, 195078120, 195078149, 195078150, 195078156, 195078185, 195078215, 195078217, 195078250, 195078251, 195078272, 195078273, 195078277, 195078283, 195078287, 195078298, 195078299, 195078300, 195078368, 195078372, 195078375, 195078394, 195078464, 195078474, 195078493, 195078531, 195078554, 195078559, 195078687, 195078710, 195078753, 195078828, 195078837, 195078892, 195078895, 195078900, 195078906, 195078959, 195078960, 195078974, 195078995, 195078997, 195079007, 195146051, 195817892, 195817910, 195818040, 196653590, 197775763, 198219289, 198248729, 198354195, 198354632, 202063369, 203326381, 203326382, 203326695, 203326709, 203326825, 203326829, 203327047, 203327192, 203360584, 203427712, 203428110, 203563443, 203563837, 203664976, 203665374, 203762913, 203901612, 204069808, 206121592, 207568995, 208227118, 218659706, 219797064, 231775478, 232791016, 232866163, 232870916, 237059472, 238230825, 238671321, 241611072, 245880244, 249954601, 256262487, 257210252, 257542887, 259829097, 260353797, 260353928, 260353938, 260354380, 260381156, 260390354, 271387034, 274691435, 279382168, 280527902, 280532777, 280535076, 280542659, 281931451, 292827804, 295209043, 296292341, 297619746, 305011770, 306510696, 313583000, 314643431, 320313766, 320318114, 321023689, 321141002, 321447655, 325454853, 326762411, 337081594, 338040061, 339830659, 340010259, 341833935, 342149828, 342665371, 356194258, 359223603, 359276554, 360327984, 368215882, 370146306, 370150662, 373255328, 373394720, 374785091, 376173808, 377307531, 377336144, 377652210, 379825795, 380248845, 380316586, 381874529, 381884647, 382049883, 382486912, 382598847, 389069795, 389909922, 392084057, 393290800, 395076177, 395140257, 402724451, 403769719, 404122044, 410188633, 413977571, 418962805, 419080649, 423458772, 430711818, 430784915, 431116435, 431157415, 431370962, 431390595, 431489022, 431585240, 431586828, 431608121, 433686700, 442888655, 442922019, 445176561, 449218512, 449424719, 451217894, 451870618, 459172225, 459395692, 464626711, 464765206, 464834904, 469098393, 471052880, 478642118, 480635114, 480636362, 480638119, 480638181, 480638612, 480653244, 480658155, 480658807, 484603510, 484645735, 486805732, 490264076, 490274093, 493445761, 511578298, 513731936, 514111995, 514955151, 515474792, 515491843, 515593995, 518161197, 520595267, 522631343, 523234636, 525872321, 527144416, 531427447, 533682535, 533847771, 534396735, 545433338, 547443445, 550462929, 551440509, 557981738, 559064708, 560636591, 572640614, 572652435, 572800203, 572833146, 572867160, 575127842, 575742406, 575835832, 576106402, 576590271, 577168455, 582462766, 583917065, 583936789, 584490345, 587768078, 588145733, 596395114, 596517435, 602054693, 609523853, 627471386, 630686153, 632559259, 635121653, 635859009, 637007260, 643488605, 643663853, 648304671, 650538190, 656171171, 656243914, 656640963, 665693626, 667797222, 678076451, 679253935, 684522993, 684536293, 689172736, 689202009, 693611235, 694324728, 695649196, 703142796, 706540885, 707132367, 715533184, 722903474, 725879070, 728415570, 731964179, 733989474, 744440632, 745674128, 752520493, 752687122, 752687226, 752699150, 752938578, 753314817, 762792020, 766278458, 771168358, 772916985, 785945688, 787032422, 793080342, 794341423, 794638681, 799598398, 803443550, 803504423, 803576910, 803750530, 804899040, 810638083, 813049915, 813882670, 813882809, 821390609, 822184173, 824372117, 826639012, 826993974, 827624512, 831815016, 834750300, 834856638, 834963202, 835666250, 838463501, 843454848, 845393562, 845537310, 846032279, 853098265, 855980394, 858467853, 869651422, 878524814, 881613818, 885943745, 896206971, 896253025, 900375831, 900562876, 904696072, 907903147, 911040096, 912288153, 912452591, 913046780, 914761571, 915088911, 915769822, 915838470, 919008564, 919376364, 928343570, 933141848, 935240483, 936096500, 939243980, 939281294, 939375524, 939697158, 939922440, 940027871, 942743627, 943328481, 943363810, 947022624, 950098348, 954017396, 958817278, 959069811, 961909457, 961915153, 962363178, 962549619, 963013768, 968961134, 973306633, 973587946, 973591516, 973595243, 973613934, 973618563, 976871270, 977251657, 983929219, 983931665, 983936021, 984542401, 985854160, 994961720, 1002154839, 1005485664, 1005660307, 1005931709, 1008280710, 1009678005, 1015938248, 1018008327, 1024510565, 1027688850, 1033879086, 1034357170, 1038843968, 1039500800, 1043537387, 1043742405, 1044060157, 1045601283, 1046273911, 1046743273, 1046756254, 1048099261, 1052311686, 1052441930, 1052883806, 1055187548, 1056740120, 1058016469, 1059921109, 1068743400, 1072264613, 1080832696, 1083646554, 1084662717, 1086607170, 1086818213, 1086839634, 1087030220, 1087432248, 1087540767, 1088313455, 1101657937, 1101658065, 1102136407, 1102691201, 1104888372, 1107574816, 1107604513, 1107608406, 1114346722, 1115517588, 1116603570, 1116886791, 1121068214, 1121069468, 1123274870, 1123277038, 1123281470, 1123286137, 1123300855, 1135543458, 1135544712, 1135545955, 1135553917, 1135559494, 1135563376, 1141006631, 1141018311, 1142918810, 1143019669, 1145288372, 1146787097, 1149112251, 1151589762, 1152383075, 1153556935, 1153560693, 1153560855, 1153576209, 1153582928, 1155609853, 1158010336, 1158014282, 1158019276, 1158022529, 1158025585, 1158030151, 1158040127, 1158040853, 1158043091, 1160141196, 1160245697, 1160246728, 1160253683, 1160271099, 1160271446, 1160272445, 1160277399, 1161223806, 1161235355, 1162489113, 1166908086, 1166937977, 1166949933, 1166952503, 1166953757, 1166959964, 1169030529, 1169037994, 1169039382, 1169046802, 1169046815, 1169048548, 1169054036, 1169994302, 1171270800, 1171270813, 1172775704, 1174042111, 1174752677, 1174762471, 1175721241, 1175725254, 1175726508, 1175727467, 1175727495, 1175735444, 1175735449, 1175736592, 1175738385, 1175738578, 1175738760, 1175746250, 1175746252, 1175749986, 1175793566, 1181427747, 1181429001, 1181435208, 1181446765, 1181453654, 1181460959, 1185692184, 1189090107, 1193567716, 1194400508, 1204258276, 1204470469, 1207765705, 1207825797, 1208230324, 1208517393, 1208911775, 1211364607, 1212671635, 1214258492, 1217924538, 1220965831, 1229000062, 1229783327, 1232816452, 1237771172, 1237773393, 1237773841, 1245899123, 1247245722, 1257366451, 1260762188, 1261854970, 1265324777, 1265669119, 1273073240, 1280280379, 1280768035, 1291368159, 1295085673, 1296518360, 1297048848, 1300364681, 1303650868, 1304687455, 1304781392, 1304918086, 1305056028, 1306968125, 1306972554, 1306973586, 1307665177, 1308558601, 1308559744, 1308574194, 1308583254, 1308584508, 1308585495, 1310785148, 1310799239, 1310800921, 1310801269, 1310803416, 1310807041, 1310808370, 1311349087, 1313021694, 1313023237, 1313030377, 1314270973, 1314287001, 1314293208, 1321085506, 1324313259, 1324313985, 1324320704, 1324322270, 1324332261, 1324636022, 1325293061, 1325300526, 1325303158, 1325308368, 1325309334, 1325309339, 1325310241, 1325310486, 1325311328, 1325311482, 1326707500, 1328209699, 1328777903, 1328778629, 1328785348, 1328786906, 1328789635, 1328794451, 1328797153, 1329963165, 1329987910, 1330666198, 1330807345, 1330903052, 1331009222, 1331010221, 1331013633, 1331015175, 1331019352, 1331025251, 1331026645, 1331028446, 1331143849, 1335892543, 1336436046, 1336436772, 1336437775, 1336438057, 1336439236, 1336443338, 1336449024, 1336456660, 1336460266, 1336462620, 1336463768, 1336469142, 1341018428, 1341081128, 1341091249, 1341179896, 1342001696, 1344411053, 1344426134, 1344436952, 1344437939, 1344444146, 1346529166, 1349466130, 1350170659, 1350170661, 1350356518, 1350356534, 1350620578, 1351056251, 1351154191, 1351382419, 1351445663, 1354447091, 1354448055, 1354464484, 1354467042, 1354475004, 1354584300, 1355466970, 1355483586, 1355607656, 1355929695, 1355947655, 1356150953, 1356150969, 1356150973, 1356457867, 1356471002, 1356757572, 1357692080, 1357876668, 1357880232, 1360043731, 1360220638, 1362168625, 1362262729, 1362271868, 1362285703, 1362326863, 1362506071, 1362656266, 1365811994, 1367692098, 1367811071, 1368820926, 1369663049, 1377739598, 1378565283, 1379014609, 1383613953, 1383613964, 1383629111, 1383647122, 1385857457, 1385879444, 1388074128, 1388078600, 1388084119, 1388086017, 1388094003, 1388104573, 1388109527, 1388111766, 1390304957, 1390318095, 1390319238, 1390327192, 1390328435, 1390329689, 1391292472, 1391295130, 1391298115, 1391299402, 1391302044, 1391307254, 1391308253, 1392560940, 1396553940, 1397006395, 1397007527, 1397007872, 1397007885, 1397015305, 1397016949, 1397022431, 1400354688, 1400355947, 1400356673, 1400360856, 1400364702, 1400366245, 1401741660, 1407053336, 1407067683, 1409840426, 1410939834, 1414623055, 1417953492, 1417953925, 1417969521, 1417971248, 1418042854, 1418666866, 1422407147, 1422418384, 1422432926, 1422434165, 1422435892, 1423090882, 1425971467, 1426162994, 1426865884, 1426871783, 1426872814, 1426880658, 1426881913, 1426884152, 1428612014, 1429098926, 1429105132, 1429112250, 1430623854, 1433558874, 1433568865, 1433577620, 1433578879, 1435862377, 1444705448, 1444706435, 1444707945, 1444708598, 1444713016, 1444718265, 1444720166, 1444723003, 1444725453, 1444731199, 1444731564, 1444731950, 1444732047, 1444732342, 1444732347, 1444738453, 1448052138, 1448052864, 1448054123, 1448067662, 1448078965, 1449172589, 1452091461, 1453961462, 1457037634, 1457145422, 1457156469, 1457178704, 1459376581, 1459377857, 1459377868, 1459384567, 1459385707, 1459403577, 1459405260, 1459408531, 1463053013, 1463840740, 1463842504, 1463849459, 1463849797, 1463867222, 1463868221, 1463873175, 1464819582, 1464821125, 1464829402, 1464830128, 1464831131, 1465838987, 1466068861, 1466074694, 1466091096, 1466403701, 1467047928, 1467061763, 1467063453, 1467065948, 1467070902, 1468307140, 1468314970, 1468321435, 1469284474, 1469285761, 1469294772, 1469295775, 1471526086, 1474720970, 1474751199, 1474796155, 1474852365, 1474856386, 1474857640, 1474858627, 1474866589, 1474867476, 1474871748, 1474880870, 1482183211, 1482187228, 1482389973, 1486003341, 1486005836, 1486010790, 1486021608, 1486029338, 1486036499, 1486036510, 1491300687, 1492905126, 1495099017, 1496999162, 1497335658, 1497338257, 1497341434, 1497353781, 1497360500, 1497361503, 1503214457, 1504022303, 1504024292, 1504032122, 1504033105, 1504038587, 1509379857, 1510741574, 1511059454, 1514359714, 1514604870, 1517410020, 1517415502, 1517416485, 1517424315, 1517426048, 1519466742, 1519486936, 1521633706, 1524564715, 1526518672, 1534242148, 1535379077, 1535411852, 1535416972, 1535418272, 1535419013, 1535426999, 1535427585, 1535429447, 1535437817, 1535442771, 1535445010, 1538631370, 1539876488, 1539883905, 1539891891, 1539902461, 1539907415, 1539909654, 1540853566, 1540863813, 1540865371, 1540871834, 1540872816, 1540972285, 1544565822, 1547523228, 1548000883, 1548203684, 1548662272, 1548668010, 1548668993, 1548676831, 1548677846, 1548686756, 1550655859, 1551291701, 1552780862, 1554083280, 1554160502, 1556617220, 1556618479, 1556619205, 1556627226, 1556629025, 1571587981, 1572843623, 1577978899, 1578737375, 1579027766, 1580891870, 1580902117, 1580903020, 1580910138, 1580910864, 1581061599, 1584242651, 1584252576, 1584258687, 1584260414, 1584261397, 1594150134, 1594318433, 1594644051, 1595762332, 1596345927, 1596503336, 1599871881, 1600554193, 1600562964, 1600967980, 1600968967, 1600970477, 1600988233, 1600993979, 1600994866, 1600997301, 1601541268, 1602995891, 1603061457, 1604314670, 1604316655, 1604330442, 1604341489, 1604342648, 1605183784, 1605406132, 1605908391, 1607689728, 1607689741, 1607690628, 1607701062, 1607701276, 1607705078, 1607710365, 1607715640, 1607716607, 1607716627, 1608344260, 1610313759, 1610666926, 1611239998, 1611396088, 1614382839, 1614530679, 1615167003, 1615172374, 1615640392, 1615647347, 1615658840, 1615665110, 1615666109, 1615671063, 1620094847, 1620095619, 1620095929, 1620105028, 1620113841, 1620119323, 1620795340, 1621082362, 1621083649, 1621092660, 1622329964, 1622331641, 1622337218, 1622353628, 1623408910, 1624559739, 1624569664, 1624577502, 1624577906, 1624578485, 1626556599, 1628470609, 1630022199, 1632310642, 1633163415, 1635568907, 1635591150, 1635593749, 1635643420, 1635994183, 1635994320, 1641006393, 1645672758, 1645785364, 1645803376, 1645808858, 1645809841, 1646891621, 1646892908, 1646907799, 1646910247, 1646917618, 1646918617, 1648006829, 1648007716, 1648013185, 1648013984, 1648016015, 1648021910, 1648025704, 1648032728, 1648033439, 1648033715, 1648035901, 1648039922, 1648043240, 1649119056, 1649454738, 1649581121, 1652486802, 1652497372, 1652504566, 1652932064, 1652936599, 1653583645, 1653598182, 1653599929, 1653606136, 1653607123, 1654697756, 1654712103, 1654713134, 1654716280, 1654721234, 1654722233, 1656168200, 1659162648, 1659176739, 1659180924, 1659185878, 1659186877, 1659695250, 1660874915, 1664393911, 1666510724, 1668155429, 1669474757, 1673661122, 1673662353, 1673671436, 1673686839, 1673856704, 1674136053, 1674769898, 1674770881, 1674776363, 1674793871, 1675780006, 1676641114, 1677004461, 1677008482, 1677010668, 1677010688, 1677011655, 1677022217, 1677030942, 1677037554, 1679194024, 1679234542, 1679234666, 1679237897, 1679241007, 1679252114, 1679258763, 1679261552, 1679266928, 1681499983, 1681500998, 1681504918, 1681510964, 1681520272, 1681526010, 1681526993, 1682221833, 1682359277, 1685960411, 1685962398, 1685964612, 1685965520, 1685965569, 1685965582, 1685965890, 1685967499, 1685968865, 1685974082, 1685987547, 1685988215, 1685988552, 1685991645, 1686112357, 1686592668, 1686670946, 1687209740, 1690419670, 1690419852, 1690423356, 1690429255, 1690430286, 1690438386, 1690439385, 1690439477, 1691674376, 1691689779, 1691700349, 1691705303, 1691707542, 1691739899, 1692242488, 1693900733, 1693904467, 1693911703, 1693913871, 1693915014, 1693915019, 1693922968, 1693923252, 1693924211, 1693925465, 1696514991, 1697110779, 1697112784, 1697112842, 1697116346, 1697119048, 1697126337, 1697127463, 1697127903, 1697134366, 1697135348, 1699859798, 1705948764, 1706596362, 1707661217, 1709380801, 1709397036, 1709401602, 1709403991, 1709403994, 1709715630, 1709719753, 1710553669, 1710842194, 1711349139, 1711911296, 1712862856, 1712864099, 1712865353, 1712874413, 1712889750, 1715042583, 1716067791, 1716074254, 1716075236, 1716090026, 1716093784, 1716101073, 1716987897, 1717046504, 1717344945, 1717458342, 1717567159, 1717665490, 1720424110, 1720435157, 1720448732, 1720448944, 1720449947, 1720450929, 1722611952, 1723770733, 1723771620, 1723777366, 1723796376, 1723797619, 1723869014, 1724144999, 1724360630, 1724888746, 1724891334, 1724900049, 1724902970, 1724913368, 1724913588, 1724914591, 1724915573, 1727744610, 1733044570, 1737465416, 1740104597, 1740108386, 1741479646, 1741618915, 1741621154, 1741622153, 1741631292, 1741636935, 1741709977, 1742216984, 1743089654, 1744959211, 1744968590, 1744969829, 1744971556, 1744977659, 1744987840, 1745343269, 1745488513, 1746392299, 1747200908, 1747202151, 1747210105, 1747211248, 1747212978, 1747215938, 1747219291, 1747533677, 1747671543, 1747762259, 1748301224, 1748301648, 1748302211, 1748318651, 1748321229, 1748327140, 1748327340, 1748328118, 1748329946, 1749416322, 1749419816, 1749422630, 1749422974, 1749423815, 1749423848, 1749423862, 1749423980, 1749432545, 1749435316, 1749435457, 1749435956, 1749437829, 1749437986, 1749440303, 1749441388, 1749442296, 1749442361, 1749443256, 1749443576, 1749444398, 1749445477, 1749445739, 1749750164, 1749955965, 1752768365, 1753028168, 1753430927, 1753880966, 1753882221, 1753900232, 1753906931, 1756680747, 1759105063, 1762715404, 1763952265, 1763967858, 1763978172, 1763979159, 1765274516, 1768132013, 1774870841, 1775278057, 1776446407, 1778765218, 1779479261, 1779706923, 1779707649, 1779709525, 1779713177, 1779714057, 1779714368, 1779715934, 1779715971, 1779725925, 1779730307, 1779731494, 1780768183, 1781938242, 1781939241, 1781944195, 1781948380, 1781954023, 1781961852, 1783657515, 1785147288, 1785152492, 1785564290, 1786402886, 1786403885, 1786408839, 1786413016, 1786418915, 1786422601, 1793085197, 1793091404, 1793103209, 1793109842, 1794311882, 1796513490, 1798682988, 1799934413, 1800873944, 1804734874, 1804986274, 1805201900, 1805201909, 1805381533, 1805390218, 1805394927, 1805396070, 1805397817, 1805404024, 1805410294, 1808346875, 1809278593, 1809846425, 1809852765, 1809854826, 1809860706, 1809868668, 1809869655, 1809909084, 1810126394, 1810162729, 1811189710, 1812804641, 1813167465, 1818860644, 1819164253, 1824377544, 1826567786, 1826567942, 1826568769, 1826574251, 1826586852, 1826591759, 1826593533, 1826594804, 1826595685, 1826597041, 1826838298, 1830073720, 1832102940, 1835526804, 1835527882, 1835530317, 1835531888, 1835536950, 1835540435, 1835541852, 1835548479, 1835548755, 1835552425, 1835554706, 1835556216, 1836706536, 1838062951, 1839007628, 1839021100, 1839022775, 1839033593, 1839038547, 1839040786, 1839994953, 1840001842, 1840013399, 1840019350, 1840019827, 1840020860, 1843076481, 1845608978, 1846070315, 1848013570, 1854921046, 1859450748, 1859510931, 1859511204, 1860240647, 1860312281, 1860334137, 1861101595, 1863024310, 1866891339, 1866893066, 1866896736, 1866908847, 1866910185, 1866914026, 1867191437, 1867861768, 1867865679, 1867867083, 1867872142, 1867873124, 1867876289, 1867885376, 1867885466, 1867887914, 1867892691, 1867897750, 1867898961, 1867899162, 1873521117, 1875950626, 1878219696, 1883713830, 1883718737, 1883722494, 1883726489, 1883992567, 1884025074, 1889208808, 1889317056, 1890185274, 1890552293, 1891315242, 1893129355, 1894534152, 1894535395, 1894543357, 1894548934, 1895822736, 1896748195, 1896864381, 1896883495, 1896884690, 1896893413, 1897086584, 1897144569, 1897150382, 1897161336, 1898308423, 1899713189, 1903920486, 1903920882, 1906518923, 1906815088, 1907758428, 1907908343, 1907910446, 1907911172, 1907924055, 1907926218, 1907937265, 1910568778, 1912588116, 1912664290, 1912773142, 1919704439, 1919708663, 1925589573, 1928014104, 1931786446, 1933270769, 1933847987, 1934282690, 1935832225, 1937137824, 1940180687, 1941545223, 1944881831, 1944883085, 1944889292, 1944901097, 1944907730, 1944915291, 1947690884, 1949378607, 1949381140, 1949385828, 1949388221, 1949404634, 1953208595, 1957126749, 1965980590, 1966393263, 1967560433, 1968030901, 1968344522, 1968345101, 1968353343, 1968354820, 1969952988, 1969953274, 1970271924, 1982830318, 1982831301, 1982836783, 1982854539, 1982856313, 1982857328, 1982862253, 1982863214, 1983945412, 1983946415, 1983946627, 1983953134, 1983957025, 1983968650, 1983971249, 1983972408, 1983977373, 1985096774, 1985106740, 1985116048, 1985122769, 1987638584, 1989155232, 1991785536, 1991792841, 1991799730, 1991811287, 1991817238, 1991817715, 1991818748, 1994019132, 1994026062, 1994028952, 1994613365, 2000627256, 2002587178, 2002703477, 2004080420, 2007546240, 2007547499, 2007556254, 2007557797, 2009780252, 2013938002, 2016158046, 2016458632, 2016459875, 2016461129, 2016470189, 2016476340, 2016482461, 2016485526, 2019785049, 2023148389, 2023153871, 2023155598, 2023156002, 2023157760, 2023171627, 2023174160, 2023812622, 2029256230, 2029286951, 2029296544, 2037064184, 2042215210, 2042272668, 2042423451, 2043073993, 2044012869, 2046744295, 2047386704, 2047490213, 2047625030, 2047828609, 2051192703, 2052284669, 2056364987, 2056365175, 2056459861, 2057257910, 2058376024, 2058382302, 2058436464, 2058440319, 2058445367, 2058448694, 2058452545, 2058552215, 2058569521, 2058573621, 2058924197, 2058929805, 2058958371, 2058984507, 2058988863, 2059003240, 2059051015, 2059075746, 2059422408, 2059824807, 2061714098, 2062014471, 2063260135, 2063415690, 2063627333, 2063814283, 2064238717, 2064313581, 2064484772, 2064499575, 2064635107, 2064635452, 2064635773, 2064639428, 2064639883, 2064648773, 2064654772, 2064655646, 2065476844, 2065542420, 2065542544, 2065543022, 2065727011, 2066567940, 2066734284, 2066828553, 2066833534, 2067202738, 2067233317, 2068031208, 2068725531, 2068831008, 2068854498, 2068854512, 2068858196, 2068859575, 2068860177, 2068862627, 2068863232, 2068869021, 2068950273, 2068994789, 2068994807, 2069062998, 2069102686, 2069161595, 2069263945, 2069338842, 2069365704, 2069468800, 2069558220, 2069561350, 2069566268, 2069591394, 2069593072, 2069595618, 2069600040, 2069600946, 2069600957, 2069604100, 2069765192, 2069904166, 2069904305, 2071035931, 2071149679, 2071643658, 2073289171, 2073308845, 2073310709, 2073312474, 2073322881, 2073335784, 2073440452, 2073448514, 2073457247, 2073500084, 2073509625, 2073523923, 2073533208, 2073640292, 2073794194, 2073803151, 2073803461, 2073808229, 2073811616, 2073811996, 2073815760, 2073826308, 2073826688, 2073827152, 2073830759, 2073831593, 2073831601, 2074299520, 2075044848, 2075423284, 2075693433, 2078935992, 2078936931, 2078937889, 2078937913, 2078938163, 2078938295, 2078944407, 2078944555, 2078944613, 2078944933, 2081181239, 2082063743, 2082285629, 2082430948, 2084946688, 2086083080, 2087431076, 2087431077, 2087431079, 2087431080, 2087431081, 2087431082, 2087431085, 2087431086, 2087431087, 2087431088, 2087431089, 2087431090, 2087431091, 2087431092, 2087431093, 2087431094, 2087431096, 2087431097, 2087431098, 2087431099, 2087431100, 2087431102, 2087431103, 2087617590, 2087617591, 2087617592, 2087617593, 2087617594, 2087617595, 2087617596, 2087617597, 2087617598, 2087617599, 2087617632, 2087617633, 2087617634, 2087617635, 2087617636, 2087617637, 2087617638, 2087617639, 2087617640, 2087617641, 2087617642, 2087617643, 2087617644, 2087617645, 2087617647, 2087617652, 2087617654, 2087617655, 2087617656, 2087617657, 2087617658, 2087617659, 2087617660, 2087617661, 2087617662, 2087617663, 2087629931, 2087822490, 2088302297, 2088726760, 2088953542, 2090213881, 2090218574, 2090297888, 2090298020, 2090439875, 2090439900, 2091225604, 2092577468, 2092702023, 2092715579, 2092766986, 2092957042, 2093991393, 2093995617, 2093995632, 2097113374, 2098599777, 2098599792, 2099138174, 2102249573, 2102285158, 2102285168, 2102285285, 2102285374, 2102286572, 2102291553, 2102297313, 2102301463, 2102304381, 2102311282, 2102312281, 2102313468, 2102315379, 2102317235, 2102322718, 2103529616, 2105684477, 2105873178, 2106751208, 2106757636, 2106766355, 2106769656, 2106775467, 2106775926, 2106776925, 2106781879, 2118750891, 2119037299, 2119037310, 2119041270, 2119043865, 2119381911, 2119891962, 2120136928, 2120142410, 2120143393, 2120151231, 2120152708, 2121629990, 2122433548, 2123414271, 2123472843, 2123472936, 2123472941, 2123472990, 2123479292, 2123481132, 2123481326, 2123481391, 2123481939, 2123481960, 2123482409, 2123482928, 2123482935, 2123485221, 2123485512, 2123485548, 2123486092, 2123487587, 2123487602, 2123487868, 2123488061, 2123488218, 2123489049, 2123491458, 2123491494, 2123491502, 2123491940, 2123491950, 2123491964, 2123492067, 2123492380, 2123492410, 2123492613, 2123492943, 2123493403, 2123494323, 2123494721, 2123494806, 2123495205, 2123495222, 2123495263, 2123495538, 2123495599, 2123495615, 2123495829, 2123496707, 2123496945, 2123497027, 2123497539, 2123498152, 2123498482, 2123498621, 2123498738, 2123499337, 2123499387, 2123499393, 2123499675, 2123499817, 2123499823, 2123500085, 2123500670, 2123501043, 2123501651, 2123501946, 2123502012, 2123502614, 2123502618, 2123502909, 2123502931, 2123502972, 2123503489, 2123503580, 2123503633, 2123503639, 2123503645, 2123503683, 2123503690, 2123503871, 2123503914, 2123503925, 2123506021, 2123508761, 2123508887, 2123508888, 2123509104, 2123509367, 2123510210, 2126830924, 2126831627, 2126831911, 2126831915, 2126834731, 2126838118, 2126839865, 2126841008, 2126851442, 2126854146, 2127933481, 2127939688, 2127940675, 2127945958, 2127950989, 2127966582, 2130163562, 2130164545, 2130170027, 2130187535, 2130190580, 2131286378, 2132327224, 2132331087, 2132359596, 2133546426, 2134655216, 2135730753, 2135744303, 2135751022, 2135766376, 2135766538, 2136033383, 2136198665, 2140379406, 2140382005, 2140404240, 2140405499, 2140406225, 2141369520, 2141378580, 2141384318, 2142607534, 2142608862, 2142616598, 2142619146, 2143588731, 2143590729, 2143592861, 2143597618, 2143609175, 2143615126, 2143616636, 2144000095, 2144838611, 2144844042, 2144846897, 2144858266, 2144868884, 2144870143, 2144870869, 2157945278, 2158338411, 2160318468, 2160324206, 2160325189, 2160333019, 2160343200, 2161569257, 2161578129, 2161578140, 2161592231, 2161595735, 2165898261, 2166038855, 2166996811, 2167003274, 2167004256, 2167015877, 2167018798, 2167213797, 2167993101, 2169327252, 2170481633, 2170487115, 2170488842, 2170504623, 2170507412, 2174946277, 2174951759, 2174953486, 2174953890, 2174969515, 2174972048, 2176528068, 2179101309, 2180545870, 2191744103, 2191744212, 2191821366, 2191883015, 2192566334, 2193960351, 2195897610, 2195898849, 2195906687, 2195916612, 2195922100, 2196631346, 2205406696, 2211506222, 2216825796, 2219145843, 2221394610, 2225058301, 2225061335, 2225064134, 2225071439, 2225073075, 2225080536, 2226037368, 2226044042, 2226051203, 2226052893, 2226055388, 2226060342, 2226419862, 2229788675, 2230793522, 2230840997, 2231615745, 2231617728, 2231623210, 2231628742, 2231632031, 2231633170, 2231633764, 2231638049, 2231729235, 2231751291, 2231760201, 2231761216, 2231769054, 2231770037, 2231775519, 2233884981, 2235097422, 2235100587, 2235101313, 2235108032, 2235109598, 2235116887, 2235119589, 2236869449, 2241796550, 2241797549, 2241806680, 2241812579, 2242828527, 2246244298, 2246245281, 2246250763, 2246260079, 2246271316, 2247223374, 2247249937, 2247251096, 2248592412, 2250708942, 2250715407, 2250719552, 2250724971, 2250725805, 2250733692, 2250734937, 2250735952, 2258665553, 2258878642, 2264886749, 2266447633, 2267607000, 2274782645, 2282544968, 2285662351, 2290599544, 2292158595, 2293175691, 2293351636, 2296071446, 2299255515, 2301040846, 2306079466, 2307580553, 2313241363, 2313504811, 2318220358, 2320224028, 2325476095, 2337176745, 2339504386, 2344847762, 2345345412, 2345556981, 2346482211, 2346482871, 2351498341, 2352240646, 2352738840, 2358991500, 2361087993, 2364634824, 2371011349, 2373457221, 2375393789, 2376425283, 2379512524, 2379580075, 2390286898, 2390518325, 2390736011, 2392516839, 2392521063, 2400874900, 2400879124, 2402335630, 2404974948, 2405102721, 2405117283, 2405120727, 2414810349, 2415093005, 2415923742, 2415925541, 2415935547, 2415976346, 2418152088, 2422623072, 2422625395, 2422631927, 2422634373, 2422636295, 2422636392, 2425962056, 2425963043, 2425969250, 2425969487, 2425971892, 2425985030, 2428197348, 2428202830, 2428203813, 2428211643, 2428212914, 2428213376, 2428240545, 2430223084, 2433759338, 2433759634, 2433760321, 2433765803, 2433783311, 2433785126, 2433786356, 2433788522, 2435993901, 2436000108, 2436001095, 2436011657, 2436026994, 2439339076, 2439340079, 2439340291, 2439346798, 2439350689, 2439362314, 2439364913, 2439366072, 2439371037, 2439876345, 2440431898, 2440444045, 2440449369, 2444112661, 2447928023, 2452264162, 2454797153, 2458316286, 2459819944, 2462285242, 2462802458, 2463186757, 2466741694, 2466758807, 2467213089, 2467545358, 2467601561, 2467655846, 2467686484, 2467740953, 2473985870, 2474042431, 2474150919, 2474285829, 2474577412, 2474661520, 2475343068, 2475470210, 2475772433, 2475877012, 2475877016, 2475892298, 2476213365, 2476552306, 2479517659, 2489453909, 2489531547, 2498555779, 2501597440, 2507278661, 2510852110, 2511694664, 2512156190, 2540805343, 2543008264, 2547140668, 2553182506, 2558063998, 2558416820, 2560726248, 2564751176, 2566787042, 2569608194, 2572602371, 2577853220, 2579803386, 2583084289, 2586020617, 2600402029, 2604613571, 2614694552, 2616608417, 2623678483, 2624091113, 2626979216, 2627765050, 2629831661, 2630340943, 2630577386, 2637047575, 2637160117, 2637393619, 2637589507, 2639283063, 2642320383, 2657728452, 2661288721, 2663538084, 2673250796, 2673678071, 2673953045, 2683622002, 2686768508, 2689921282, 2691751732, 2691869931, 2692015714, 2693065457, 2693628719, 2694158948, 2699054734, 2699567323, 2701589506, 2708247797, 2710218932, 2712973569, 2713114330, 2714570818, 2714658156, 2715859111, 2716538256, 2717691085, 2718235570, 2719851426, 2722275573, 2728431851, 2731033959, 2733567145, 2745064373, 2747735009, 2748168364, 2748310006, 2753354596, 2761147374, 2762813598, 2767767034, 2769808878, 2775691349, 2789347571, 2792452218, 2793624174, 2794767436, 2795183554, 2795185357, 2795205893, 2798224110, 2803597621, 2804113804, 2807804736, 2809486328, 2813025413, 2815428841, 2815585428, 2816618421, 2819662823, 2822221150, 2824682484, 2828575765, 2828866516, 2829935276, 2834927579, 2836892761, 2839658405, 2844621372, 2844815106, 2845489684, 2845638303, 2857193006, 2860702321, 2870435535, 2874906565, 2880233005, 2885526550, 2889073982, 2893961579, 2896115089, 2896360091, 2896815948, 2898520762, 2898642745, 2908250170, 2908376536, 2911135641, 2915014315, 2918403731, 2918486269, 2919235927, 2920587887, 2922468503, 2922493886, 2923084706, 2929584080, 2931398379, 2931402541, 2934893225, 2937779198, 2941551192, 2942859576, 2948690168, 2948867989, 2949433359, 2951266128, 2954570766, 2956489777, 2960184498, 2960188722, 2960612931, 2962892549, 2963032843, 2966548328, 2976545290, 2976620947, 2978924197, 2982913903, 2986096991, 2987284613, 2988637881, 2993692642, 2996709992, 2999106536, 3000568496, 3005531064, 3005732955, 3007175865, 3007286028, 3008753857, 3010444860, 3010880247, 3017258218, 3019938621, 3020499579, 3022866914, 3023311759, 3024482653, 3024795687, 3024807531, 3027071777, 3029820267, 3032088673, 3032839979, 3033043261, 3033965900, 3036878933, 3037343835, 3038234864, 3051293097, 3052701732, 3055037923, 3056484673, 3060407188, 3061523114, 3071254387, 3071254500, 3071254881, 3073058130, 3074871971, 3074935051, 3075008146, 3075048985, 3075285442, 3075422693, 3075548305, 3075766008, 3075860343, 3075962648, 3076097045, 3077391764, 3079190285, 3085252246, 3091553195, 3103424085, 3107541791, 3107727924, 3107749241, 3107778469, 3107783354, 3107787446, 3107790299, 3107948057, 3107956419, 3107974264, 3107984588, 3107991466, 3108296169, 3111583245, 3113459538, 3116256345, 3116975703, 3117043431, 3121647752, 3123411243, 3123445549, 3123737595, 3127243644, 3131616468, 3134139083, 3134716611, 3141709512, 3148676509, 3154082174, 3155375542, 3160028447, 3163162577, 3163167462, 3163515572, 3163650864, 3172095015, 3178395499, 3179705353, 3183658699, 3187099641, 3187299343, 3189362935, 3189614929, 3189845278, 3191231848, 3191324353, 3196795314, 3196799538, 3197664642, 3200115829, 3202732235, 3206363778, 3207294280, 3218691622, 3224832477, 3226582088, 3231960701, 3231960825, 3238444781, 3240506687, 3241127686, 3245505639, 3246685420, 3255250502, 3255475289, 3255493270, 3258010725, 3259268259, 3259708744, 3272088211, 3277477189, 3287497511, 3289363789, 3294281816, 3300709686, 3302430666, 3307080284, 3310372188, 3310580422, 3313110325, 3317570505, 3321771963, 3323504524, 3331794938, 3332552236, 3344936763, 3351242611, 3354164541, 3356161036, 3357443896, 3358280978, 3360549707, 3361435146, 3362509089, 3362630778, 3366341181, 3366920760, 3372160500, 3373297021, 3374596217, 3375285141, 3377755895, 3379029866, 3380241983, 3380595728, 3381834713, 3385946526, 3386125251, 3388057612, 3393544563, 3404840083, 3405857857, 3407191084, 3408814815, 3408819560, 3409018494, 3409457570, 3410577155, 3411051814, 3411102162, 3413983999, 3416635233, 3418887913, 3424150275, 3426036948, 3426656604, 3429124000, 3430316367, 3430320824, 3430870942, 3431771155, 3432731814, 3434192147, 3440930072, 3441289467, 3448289841, 3448536520, 3452859864, 3455445539, 3455973701, 3456106851, 3456282588, 3457601666, 3463597433, 3467469261, 3473077716, 3481649290, 3487446962, 3488816292, 3495434909, 3503723552, 3503962589, 3503975251, 3504086267, 3504111353, 3504116046, 3504274912, 3506277065, 3508805241, 3509081590, 3511319965, 3513566261, 3515728076, 3515960057, 3516630755, 3523519258, 3526432473, 3530287752, 3530798581, 3531066474, 3531601080, 3532265658, 3532567787, 3533680386, 3538145547, 3540002868, 3540019679, 3541120058, 3551826674, 3554146688, 3557238629, 3557288966, 3560409651, 3560721423, 3560755308, 3560772904, 3560776799, 3560843986, 3563273081, 3564677062, 3564681286, 3567399383, 3582031081, 3584271853, 3584286131, 3585048866, 3585049834, 3585528102, 3593775985, 3599378282, 3602300234, 3607509617, 3611661676, 3611790203, 3621964687, 3621965124, 3621966081, 3621966083, 3621968414, 3621969916, 3621970585, 3621975893, 3622095083, 3622538650, 3627671724, 3631197772, 3636965307, 3639447013, 3650032210, 3667545339, 3668394990, 3668555001, 3668632957, 3671699945, 3674122558, 3682693088, 3690182854, 3691035506, 3691048605, 3691317036, 3693068020, 3697923226, 3699114476, 3702342894, 3706900355, 3708334595, 3709045244, 3712703179, 3712728440, 3712733478, 3718845099, 3718930524, 3720827503, 3728968422, 3729352785, 3730027878, 3734185373, 3735541918, 3737224996, 3738382782, 3738387349, 3738389800, 3738389990, 3738390006, 3738390241, 3738390427, 3738394220, 3738394620, 3738394722, 3738394744, 3738394859, 3738396519, 3738397033, 3738399064, 3738400460, 3738887202, 3738887334, 3739466542, 3743223168, 3743289449, 3744330913, 3745299015, 3748385635, 3749221030, 3756564018, 3766265917, 3766587032, 3767014136, 3767872686, 3768672199, 3771941409, 3772113601, 3772128853, 3772772804, 3776028623, 3776032376, 3777321837, 3777702607, 3777706691, 3777840696, 3778052019, 3778877784, 3788596678, 3788641118, 3789096147, 3790949066, 3792555306, 3792675197, 3794434962, 3795445637, 3799396589, 3802359444, 3802425981, 3802900168, 3803509878, 3803533553, 3803824710, 3817195077, 3825134626, 3831783888, 3836226283, 3837130236, 3839963077, 3842564401, 3842605521, 3845461162, 3845489549, 3848928610, 3854658802, 3856336918, 3857323999, 3858008723, 3859684851, 3862352064, 3867966833, 3870049918, 3871085378, 3871829833, 3872291932, 3872427595, 3873740388, 3875975886, 3876231871, 3878080222, 3881750832, 3882302039, 3886373040, 3890622701, 3890644440, 3890892359, 3896043913, 3896689307, 3899279503, 3900747045, 3906847659, 3911916015, 3927826024, 3935292304, 3943337509, 3944324480, 3944448839, 3945529821, 3947301018, 3949488650, 3950159753, 3952494101, 3960241116, 3960376152, 3961917741, 3963099658, 3963421060, 3963723254, 3967007952, 3967259205, 3969124422, 3970612783, 3970678261, 3973713485, 3975040093, 3975243357, 3975693785, 3987058095, 3990704705, 3992681822, 3994071046, 3995478227, 3998971354, 3999298006, 4000670401, 4000993351, 4001099777, 4001277861, 4001735503, 4002465742, 4003357293, 4005356768, 4007925342, 4011050686, 4011066530, 4011075332, 4011273939, 4011552428, 4011788459, 4012217148, 4012217259, 4024186918, 4027830515, 4028975169, 4029110469, 4029583348, 4030423947, 4031498693, 4031499367, 4031499504, 4031509172, 4031928713, 4032208645, 4032479130, 4033316487, 4036743247, 4038287798, 4038545865, 4040900190, 4042024153, 4059950647, 4061045790, 4064482362, 4064482494, 4064686007, 4068398139, 4074270800, 4074270919, 4074308286, 4075674315, 4075712516, 4075885548, 4078878227, 4080178633, 4081049105, 4089654486, 4090206590, 4090679933, 4091412422, 4095259202, 4095274203, 4097043581, 4097047544, 4097047888, 4097050487, 4097053538, 4097079538, 4097094723, 4097094855, 4097218811, 4097289420, 4097298261, 4097355529, 4097358800, 4097358806, 4097359478, 4097365147, 4097365569, 4097368351, 4097368475, 4097373732, 4097381131, 4097390898, 4097493023, 4097494448, 4097500420, 4097504860, 4097508952, 4097518447, 4097523657, 4097528230, 4097528249, 4097565588, 4097595928, 4097769515, 4097769660, 4097770040, 4097900631, 4097993352, 4097993363, 4098078311, 4098093255, 4098096816, 4098101881, 4098102013, 4098120408, 4099257624, 4099391059, 4100119818, 4101141701, 4101990706, 4102099355, 4102141580, 4102295291, 4103385373, 4104416776, 4108421678, 4108481771, 4113654278, 4120143040, 4120573143, 4120685305, 4120832270, 4121323786, 4122797449, 4123137490, 4123141719, 4123166778, 4123237466, 4124517918, 4124852870, 4126190390, 4126265264, 4126330058, 4126584791, 4128561486, 4130538182, 4130665595, 4135804702, 4138805004, 4138959002, 4142649353, 4143010615, 4143011353, 4149276818, 4149741566, 4155964946, 4160851306, 4165043845, 4165602674, 4166101816, 4168666626, 4168671212, 4169534192, 4169538416, 4175499442, 4178182706, 4179726175, 4180321577, 4180398911, 4180437564, 4180584501, 4180592595, 4180655876, 4182610142, 4190427894, 4190436241, 4190438903, 4190464587, 4190536489, 4191350062, 4197904504, 4208748285, 4213114634, 4213114766, 4213115878, 4213133169, 4213139443, 4216213600, 4229539334, 4230260404, 4236039784, 4239211903, 4244301284, 4244359264, 4244636840, 4244650461, 4244697370, 4246504751, 4248927363, 4249781266, 4250093591, 4255547342, 4269915810, 4271230391, 4273205904, 4280822506, 4281987205, 4281991429, 4288642117, 4290818353, 4290862694, 4290938088, 4291163255, 4291519114, 4292375442, 1641, 113029, 2431109, 6154799, 9085905, 10454523, 11833936, 15005411, 29369909, 32348563, 32392946, 34831997, 35241656, 35407085, 41719852, 42040525, 44148994, 49751269, 54657448, 54829135, 61297674, 64616140, 64792746, 65243007, 69912355, 73497087, 75564691, 84754216, 85474843, 88950783, 95227810, 97671606, 97869711, 98556036, 111529024, 112714201, 113832573, 118457586, 119013459, 129204800, 129504899, 132934253, 133576354, 140643360, 141325108, 142928709, 144351849, 147399388, 148485881, 153516070, 159755595, 162751717, 164324227, 164324569, 164324664, 164324791, 165338893, 166383271, 169804649, 169909381, 170281316, 170281555, 170281599, 170281747, 170281951, 172221532, 172281217, 172281369, 172281601, 172281701, 172281789, 172615247, 173287589, 173592416, 173930363, 174306514, 176844018, 177079695, 177080427, 177147671, 177148014, 177148020, 177546706, 179139641, 179379875, 179569944, 180056941, 180259371, 181198501, 181205574, 181240422, 181950714, 182150488, 183096195, 183096537, 183468910, 183469260, 183603589, 183603872, 186043176, 187501046, 187763081, 189174183, 190912115, 191031927, 191069908, 191103669, 193357074, 193420201, 194024818, 195040318, 195040605, 195184107, 195615400, 195788148, 195817845, 196491587, 197098180, 197098196, 197098242, 197098387, 197098716, 197098773, 197098834, 198219090, 201802654, 203969128, 204000291, 204003102, 205844479, 208540214, 211702237, 213315812, 216404638, 221220686, 223633303, 225036633, 231228447, 233832515, 235585683, 236122625, 238349947, 244953360, 253603556, 254556119, 268305044, 270508724, 279497384, 282260013, 286117940, 288337735, 294222691, 294944592, 297796540, 299806932, 301175958, 305396028, 309814229, 316711416, 319659866, 321667918, 323472705, 329290740, 333539694, 336073493, 344556873, 345150446, 346582968, 348240977, 352942917, 361618841, 362641227, 363650316, 368392429, 371447569, 379018060, 379803748, 381683792, 382346929, 390037588, 392534911, 393050977, 398079720, 401473592, 404580880, 408076405, 409551689, 412923104, 413523569, 417762611, 418389794, 418643706, 419980117, 420076057, 430774757, 431420666, 431463230, 433047970, 433960232, 434424313, 439016491, 446595824, 448347366, 453082265, 459993498, 461991320, 467355959, 468677861, 471325996, 478194174, 481007914, 483933287, 492579864, 492820046, 493239087, 495294245, 500922416, 501132892, 502571724, 503870109, 505520155, 505540840, 505547348, 507674743, 507704542, 508155006, 508732896, 524499536, 528698966, 533082472, 536472645, 536606854, 536706420, 544035780, 545100578, 547829195, 548068662, 550157112, 554422931, 557980541, 558904957, 566123574, 569085212, 574052622, 575078226, 579214441, 582810837, 583362052, 583453417, 594063106, 598128236, 601157755, 601161740, 601948346, 602413319, 603986209, 605582466, 609198625, 610045978, 617827459, 620396524, 626039263, 626988485, 629099694, 630452394, 635400744, 640415961, 643558590, 645257576, 652659119, 656273907, 665354414, 666296511, 667333922, 668403785, 669730879, 669929645, 674175725, 680972003, 682364285, 684524418, 689215333, 704136516, 706383966, 708808466, 710978465, 712995495, 713788357, 717519098, 722655660, 722956329, 725449644, 727209749, 729977159, 734622016, 735035205, 737142807, 737152212, 737166334, 737644692, 737837074, 739516787, 739566545, 739985822, 741816033, 742252614, 742260586, 745092996, 747930588, 750219296, 750508933, 752522257, 753857751, 754000708, 757807602, 758478444, 761228031, 762067870, 762641736, 764248075, 764320946, 764825188, 766296725, 766355544, 766643209, 766774330, 767540529, 772363084, 774299734, 777688891, 787564577, 792068311, 792844833, 796739176, 800010738, 800087019, 809563086, 810061706, 810813298, 811092091, 817847511, 819009519, 826260124, 833658992, 834470340, 839856739, 842147301, 847675799, 861294299, 862950715, 867021650, 867036335, 867732810, 870151875, 874296659, 875096251, 875944810, 876149555, 884498580, 887482102, 893652881, 894264732, 896104248, 896979123, 897240751, 902139830, 911653942, 912249299, 919599881, 927052135, 933697266, 933746041, 939098524, 939114841, 948752149, 955130439, 955354780, 955942299, 956480228, 958121442, 966830075, 970076747, 972273212, 976381303, 978919739, 981829565, 984418838, 997412732, 1001458257, 1001637783, 1001651627, 1005191377, 1008948875, 1010556097, 1016009727, 1016348317, 1023879932, 1024317101, 1027786481, 1027856392, 1032266307, 1033049924, 1035709107, 1038486906, 1041294385, 1043437244, 1049779946, 1051535617, 1053737172, 1054370922, 1056150770, 1056645919, 1056720884, 1063952736, 1064732809, 1064857294, 1065290596, 1079732589, 1080478458, 1081536009, 1086069586, 1088535269, 1094421058, 1095718313, 1096687866, 1100372480, 1101043104, 1102004406, 1104733017, 1110237878, 1112959177, 1113096701, 1114972095, 1117545303, 1118952562, 1125668821, 1130216203, 1132104794, 1132534664, 1132579070, 1132598106, 1135683888, 1135892328, 1136018325, 1138287902, 1145147923, 1145899518, 1146523166, 1149204820, 1151262913, 1152056864, 1154446700, 1154536715, 1154542665, 1155367440, 1155994599, 1161218045, 1164964007, 1166033123, 1167024992, 1167025137, 1174582808, 1174756828, 1179004234, 1181469438, 1183829925, 1186977866, 1187653498, 1188208310, 1189560180, 1191923730, 1192723278, 1195304992, 1199133859, 1199554249, 1199600208, 1202045876, 1204911535, 1208429990, 1210779948, 1210807525, 1220586092, 1221782335, 1221920801, 1236932222, 1238449939, 1243532105, 1246474378, 1257626414, 1257876060, 1258346504, 1259689738, 1260836076, 1261324364, 1266641105, 1268763191, 1271531819, 1273274467, 1276658942, 1282928227, 1283757717, 1290537388, 1296032318, 1296235125, 1301946320, 1305140481, 1308857550, 1310807544, 1310899277, 1312163653, 1316036626, 1316125796, 1324285266, 1324310094, 1324331646, 1324337571, 1324579984, 1325750278, 1326569216, 1333842476, 1349684561, 1351415139, 1351558342, 1351862653, 1351880550, 1354386923, 1356250756, 1356331589, 1357629674, 1362165018, 1363404812, 1364008114, 1364487272, 1365133140, 1365599531, 1365623138, 1366730785, 1366987615, 1372241226, 1372705460, 1372794328, 1373871548, 1375834117, 1377641421, 1378253217, 1385859280, 1391291390, 1391293134, 1391299074, 1391300548, 1393577155, 1394469288, 1394469303, 1394469473, 1394469866, 1394470005, 1394470066, 1396870772, 1399867662, 1410090536, 1413067533, 1423547895, 1430902259, 1431096661, 1433581041, 1435770227, 1436788950, 1441443055, 1441473969, 1443172426, 1444705872, 1444722875, 1444727957, 1445594238, 1447082963, 1448082324, 1455246557, 1457519039, 1458084479, 1458493639, 1458555099, 1459794391, 1460930084, 1465058743, 1465974914, 1465976327, 1465976425, 1465976436, 1465976550, 1465976555, 1465976625, 1465976632, 1465976696, 1465976747, 1465976870, 1465976979, 1465976985, 1465976986, 1465976991, 1465977196, 1465977261, 1465977271, 1465977274, 1465977303, 1465977323, 1474444421, 1478092049, 1478716185, 1481566528, 1482522967, 1489772937, 1494181387, 1504535254, 1509029106, 1510450262, 1511907991, 1515598870, 1519441587, 1522685369, 1525831150, 1526085253, 1527459723, 1529619411, 1532042759, 1533712942, 1537663939, 1539902893, 1541073018, 1541496652, 1542773859, 1549199388, 1549209224, 1549210203, 1552284203, 1553692884, 1555806428, 1561102750, 1568416773, 1570561776, 1573188605, 1576134740, 1582406800, 1582529544, 1585380899, 1587251606, 1592687509, 1594093747, 1601662530, 1602151715, 1602222565, 1602416912, 1604312683, 1604313702, 1604341906, 1605478605, 1610069144, 1610724928, 1613430619, 1616149762, 1616623247, 1616826805, 1622345684, 1624120544, 1624575040, 1631446240, 1634840328, 1635306209, 1637735434, 1639041637, 1643893360, 1645239134, 1645714411, 1646967505, 1647763648, 1648026812, 1648459154, 1652482428, 1654623339, 1659538076, 1660752253, 1661285202, 1662950537, 1675032552, 1676328914, 1681382184, 1682444281, 1683407715, 1684605451, 1684964181, 1686375531, 1686572406, 1686834359, 1687225102, 1687228988, 1687238599, 1687241697, 1693905970, 1693924649, 1694678234, 1696017211, 1697022103, 1698247372, 1700196518, 1700874190, 1702743585, 1705191422, 1705572464, 1705775316, 1708553688, 1709604401, 1711224201, 1712893263, 1713051167, 1713095897, 1715999558, 1716074224, 1716087943, 1716947524, 1721557559, 1722492001, 1723859941, 1728197301, 1730461660, 1732377833, 1740500925, 1740503023, 1747349646, 1747349737, 1747349747, 1747349811, 1747350242, 1747350353, 1747350383, 1747350483, 1747350570, 1757625214, 1758838683, 1759487629, 1759488516, 1759498393, 1759499821, 1759502442, 1759502966, 1759512274, 1759512283, 1759513528, 1759514495, 1759514515, 1759516437, 1759524172, 1759589336, 1760335250, 1762975960, 1762992044, 1763004314, 1763977119, 1771261987, 1772061961, 1772164204, 1782043531, 1789421301, 1792792037, 1793905730, 1800839994, 1801396125, 1804673412, 1806579373, 1807671676, 1813955111, 1814430790, 1817436421, 1822787251, 1823557150, 1828043124, 1839996532, 1839996844, 1841030555, 1842560365, 1844448916, 1844480213, 1846724376, 1860761623, 1861064328, 1863000850, 1867708596, 1873769763, 1873773882, 1874142716, 1875798230, 1880233189, 1882601503, 1885862630, 1890372289, 1890379225, 1891031342, 1891205640, 1891938925, 1894539933, 1896919160, 1896919227, 1896919294, 1897898461, 1899147627, 1900573373, 1901379444, 1902628941, 1905060165, 1906789934, 1906790006, 1906790139, 1906796594, 1906797455, 1906801573, 1906801694, 1906806837, 1906810233, 1906810485, 1906811690, 1906817274, 1906818921, 1906820915, 1906820924, 1906823423, 1925206882, 1927020241, 1928994000, 1935386784, 1936188797, 1939298330, 1939994885, 1941474619, 1944071536, 1945201987, 1946130305, 1946324244, 1947055740, 1949193282, 1951127334, 1956200886, 1960661844, 1964294607, 1971670426, 1975660003, 1977074332, 1979063800, 1986972074, 1987660949, 1991785763, 1992080509, 1995174355, 1995890751, 2001507875, 2004488903, 2015900220, 2018783243, 2021213332, 2023260368, 2025018361, 2025037989, 2025039155, 2026543248, 2027114414, 2034028822, 2034497157, 2034927376, 2035815698, 2037403782, 2037552632, 2038238057, 2038463378, 2038609522, 2039595722, 2040354520, 2040943501, 2041028464, 2044842550, 2047340057, 2047377876, 2047791608, 2047824538, 2050823774, 2050838609, 2051525062, 2051827668, 2052255777, 2052901511, 2053206810, 2053240934, 2053337172, 2053478875, 2053493456, 2053853373, 2054449324, 2055229681, 2055578022, 2056180496, 2057710300, 2058751811, 2059048621, 2061275137, 2066721635, 2067699997, 2071301924, 2075934693, 2077460241, 2077463931, 2082279457, 2082350395, 2082490504, 2083899515, 2084905908, 2087506861, 2087556005, 2087568425, 2087595516, 2092046651, 2092301721, 2097381010, 2097529923, 2100199727, 2103470828, 2105481502, 2107063121, 2107436658, 2111314048, 2113664954, 2116750738, 2117068897, 2119040128, 2122563214, 2122618177, 2124668692, 2132271390, 2134191641, 2134715695, 2138049165, 2138494997, 2144770101, 2151094932, 2151644274, 2163712208, 2163898589, 2170508442, 2176727539, 2177318798, 2178944930, 2179027416, 2184528600, 2186571792, 2187374596, 2190645414, 2190660247, 2190897184, 2195413098, 2195424198, 2198290764, 2203121973, 2208876632, 2209276004, 2211529485, 2216861598, 2219976143, 2224936471, 2229389306, 2229428098, 2233205867, 2235535537, 2238302643, 2241998064, 2243922068, 2245744882, 2246095470, 2246624423, 2249578444, 2251500542, 2256423319, 2257131811, 2259407586, 2265403416, 2277922362, 2278366865, 2281444864, 2284221844, 2290521795, 2298483014, 2298859942, 2303709693, 2305684069, 2306183534, 2310688315, 2315634657, 2319104481, 2323978889, 2326416557, 2327685947, 2331542577, 2334488740, 2335980755, 2343955873, 2343987387, 2344051572, 2344081298, 2353017729, 2357782940, 2360233424, 2372460029, 2372478071, 2376327406, 2380959235, 2384339112, 2391410598, 2392072803, 2393811335, 2399346319, 2399822664, 2401643245, 2401782259, 2403261116, 2407789481, 2409182571, 2417084170, 2417165267, 2417652035, 2419411749, 2419417423, 2422324904, 2423117096, 2424431334, 2424771770, 2432634086, 2435584133, 2436015021, 2441679501, 2441854846, 2444838503, 2451024601, 2451094457, 2453483137, 2454448917, 2456215407, 2459247176, 2463271525, 2463506842, 2467234433, 2469945372, 2473920266, 2486666796, 2489018185, 2489169796, 2490847830, 2492970238, 2497220049, 2503042985, 2512844015, 2518379243, 2518777282, 2525588137, 2525608018, 2528358668, 2528706848, 2531896313, 2536602755, 2539686262, 2551310943, 2554772601, 2556085817, 2558131228, 2564231467, 2565836498, 2569358076, 2571159128, 2572746788, 2575905107, 2579846032, 2582295686, 2585286228, 2585297154, 2587884409, 2590263013, 2592032772, 2597156358, 2600208325, 2600311538, 2609976564, 2614031703, 2619619987, 2622453927, 2622601193, 2622997773, 2630676340, 2635726130, 2636739119, 2637611531, 2637745410, 2637827916, 2639832942, 2646831691, 2652889161, 2656916375, 2658971428, 2660417858, 2667387895, 2669967601, 2671812960, 2675377616, 2680331975, 2692646873, 2694622232, 2697812844, 2707358863, 2708256980, 2708843581, 2721005193, 2723132333, 2723449219, 2727613517, 2729386864, 2732129495, 2739504392, 2742067873, 2743561936, 2745053658, 2748129339, 2755346949, 2756835810, 2762308724, 2762732310, 2772048233, 2773342582, 2773916239, 2774237802, 2777215669, 2780442125, 2780969136, 2784038323, 2786612080, 2787145966, 2787151566, 2791623281, 2792656912, 2793820597, 2793843165, 2794535853, 2794558276, 2794571602, 2794589073, 2794607684, 2794781905, 2794812897, 2794904579, 2795201682, 2795215251, 2795316793, 2795413889, 2795489178, 2795518714, 2795546979, 2795547152, 2795551511, 2795554576, 2795555553, 2795567189, 2795581043, 2795588603, 2796767057, 2797512177, 2798111293, 2798512509, 2799526810, 2799947922, 2802973072, 2804403738, 2804874542, 2805637755, 2805753744, 2812187177, 2812916202, 2815541885, 2820491263, 2822394574, 2829422945, 2831048350, 2832237259, 2834623189, 2837348717, 2839650695, 2840525902, 2841159353, 2842490055, 2844781614, 2846385194, 2846982791, 2849860412, 2850213786, 2852028874, 2852573181, 2854701866, 2855519660, 2857974075, 2859686627, 2864766480, 2865932173, 2873369054, 2873382924, 2877054650, 2878248977, 2880150758, 2882016813, 2894321712, 2896549226, 2900972274, 2907164383, 2909422460, 2910191497, 2914081458, 2914744694, 2914938714, 2915009556, 2917041430, 2918571873, 2929237742, 2930384385, 2931708704, 2933052029, 2935350303, 2939956665, 2941858877, 2943539162, 2944562948, 2945364171, 2947166646, 2953041500, 2953600606, 2958695479, 2959025464, 2963193938, 2963907974, 2964323647, 2969439522, 2972958854, 2976622717, 2978201778, 2982085395, 2985605450, 2996423818, 2999691650, 3008190733, 3008855969, 3016122305, 3017646001, 3023766416, 3029366772, 3032047068, 3036119914, 3036992672, 3039024727, 3042813479, 3043904968, 3050467218, 3051886594, 3053067553, 3056188564, 3057812794, 3065938060, 3066185554, 3067801157, 3067842181, 3068762275, 3077857486, 3080857101, 3087114209, 3087935921, 3088190003, 3089015336, 3091255985, 3095401268, 3096813247, 3098725318, 3105671535, 3117883740, 3118052513, 3118932015, 3119183299, 3121944857, 3124496054, 3126706525, 3129135980, 3130262956, 3136193853, 3146277579, 3150523560, 3154412692, 3159557566, 3164499075, 3164706839, 3168577861, 3173559921, 3174529089, 3176196996, 3176871024, 3180039849, 3180784320, 3181226348, 3184223807, 3185392090, 3186278865, 3187205025, 3189849017, 3192015124, 3201052817, 3206103617, 3212240200, 3229338204, 3231038915, 3232995840, 3236363663, 3236684869, 3240062262, 3241501460, 3243217472, 3245554401, 3249410406, 3254464708, 3257959952, 3274402918, 3276160836, 3276196901, 3278107133, 3290502878, 3291450742, 3293286977, 3293297241, 3296419295, 3299472058, 3299767442, 3301223392, 3301309499, 3301391192, 3304599725, 3306064327, 3313552392, 3321637504, 3331885553, 3332277580, 3333914252, 3337182013, 3337858974, 3341471161, 3347209717, 3350345047, 3350816321, 3351869587, 3352060268, 3355691995, 3356175586, 3356927752, 3366755503, 3367073048, 3367944003, 3372319994, 3375346812, 3376868662, 3381262072, 3382258705, 3385088233, 3389287501, 3392485763, 3403435361, 3403782237, 3406109171, 3406111906, 3407122639, 3411575670, 3424242744, 3426100153, 3426523263, 3431675506, 3431798787, 3432725491, 3433958809, 3443103158, 3445734210, 3450482982, 3453219838, 3455171543, 3455975626, 3458629656, 3459326184, 3460835389, 3468111852, 3471910127, 3473608107, 3474158466, 3478804050, 3479897537, 3480605972, 3480868929, 3481097537, 3485240025, 3491815953, 3492209950, 3494777461, 3500328283, 3503925212, 3506796962, 3514565086, 3514565812, 3518469610, 3519725933, 3524188747, 3529349528, 3542452078, 3546487756, 3550700124, 3550989552, 3551573749, 3553442167, 3554781799, 3556847596, 3557221487, 3557691349, 3558264087, 3560824248, 3563344816, 3565186253, 3565418379, 3566074326, 3568626956, 3569886279, 3570187564, 3574536814, 3576593305, 3584104748, 3586564634, 3588013803, 3590119076, 3594126223, 3605649145, 3607964178, 3610130320, 3611466472, 3615937331, 3618863110, 3629119210, 3629792790, 3635135986, 3635459541, 3636074310, 3638424639, 3640911628, 3642130958, 3642225062, 3647798063, 3656108419, 3657615451, 3659534155, 3659611370, 3659667263, 3660545348, 3660867367, 3671487562, 3678946749, 3680027665, 3684023399, 3686613485, 3686646984, 3691543485, 3691543777, 3694814128, 3695175653, 3698130051, 3700803863, 3704722354, 3717443225, 3718851041, 3722297297, 3724304421, 3727535579, 3735382080, 3740438523, 3740440657, 3745910284, 3748112414, 3748157778, 3751765724, 3751843037, 3758548269, 3759175702, 3760229117, 3767579376, 3767636566, 3774416951, 3774620406, 3775107448, 3777554302, 3784459817, 3789001045, 3789217359, 3790213466, 3791430232, 3792756850, 3797275201, 3797334865, 3797547975, 3797752814, 3798120765, 3799727891, 3800284920, 3803890887, 3807736858, 3811590943, 3812650457, 3813081457, 3814583456, 3816238011, 3818244185, 3820433217, 3821631768, 3824973847, 3830752599, 3831121452, 3831131041, 3837373870, 3839962587, 3842157165, 3849728326, 3849729892, 3849734551, 3849787726, 3849792721, 3849819373, 3853184002, 3854490492, 3856121458, 3860607422, 3861431943, 3861926244, 3867504094, 3869648625, 3871255217, 3879613384, 3888702999, 3902486573, 3909678524, 3911290870, 3914258422, 3919568627, 3924938673, 3928836058, 3929271846, 3932881151, 3932899585, 3934007962, 3942901813, 3950379841, 3960912026, 3973890763, 3976040035, 3981060932, 3981985710, 3991078309, 3992022849, 3992259208, 4010941807, 4012569891, 4013412307, 4021161495, 4025854722, 4027536004, 4033312623, 4036094574, 4037300319, 4043405137, 4048222256, 4048420974, 4049948378, 4051811237, 4052267313, 4054558966, 4064836207, 4066383490, 4070580503, 4073707968, 4100786237, 4104807039, 4115427659, 4116271014, 4117626035, 4127381498, 4128299636, 4132054341, 4132795027, 4133480683, 4136878052, 4138452493, 4138537192, 4138587115, 4138850346, 4138930624, 4148483014, 4149140792, 4149626272, 4149641566, 4149809179, 4152090640, 4152153727, 4156628388, 4159166567, 4161006924, 4161031359, 4167095051, 4168702437, 4168921085, 4175490343, 4178043127, 4179607399, 4182917435, 4196816243, 4201195770, 4201710836, 4204344500, 4212065046, 4216249688, 4218603456, 4220181346, 4230252988, 4230808631, 4235216564, 4245730359, 4250048329, 4251017064, 4254397175, 4261049438, 4265986719, 4266150865, 4270257086, 4272517612, 4285995571, 4287809158, 4287924367, 4293141634, 4293320049, 7, 171252454, 314658260, 1911007288, 2310391087, 2705648135, 3085052283, 4199583372, 0, 0, 30, 66987915, 366428436, 366991379, 487687151, 649399193, 716916462, 900018457, 911616432, 914855142, 981141093, 981156754, 1068454171, 1213136917, 1357549542, 1437166305, 1491010671, 1491010869, 2035443912, 2098925819, 2412701058, 2447973967, 2572472237, 2572499572, 2572504631, 2734871983, 2873757688, 3229893628, 3628727675, 3840638318, 4020469118, 1985, 3609572, 4707302, 4731941, 7066741, 12732264, 12733869, 12874473, 12898727, 15239865, 15443925, 15464989, 17770158, 18806137, 22641470, 34805542, 37254453, 38352510, 47103897, 47124528, 47160482, 47264668, 47270558, 47521880, 47670735, 47682584, 48206184, 54052064, 55399270, 55790429, 57861540, 64629239, 65951659, 73540622, 74816563, 79005572, 79010572, 79432449, 79977826, 80960607, 90941114, 91781471, 93732497, 101061895, 101792620, 105281118, 114635485, 121111459, 126395821, 127613999, 134819976, 135124399, 135156325, 135512978, 139443164, 140195744, 146403274, 147165318, 147311351, 147680945, 154712981, 156193153, 157683252, 162021680, 165184869, 165682351, 167795310, 169177047, 169285407, 170248114, 175536255, 176298648, 181584625, 186190871, 188366635, 190461039, 190805290, 190817793, 191644192, 193330267, 200367649, 204872798, 208246903, 213994908, 222038678, 222914983, 226753977, 227658815, 230657663, 231976681, 232418677, 234224516, 235125560, 235385397, 235630461, 235880887, 236100347, 237106084, 237695302, 243768879, 244905302, 245221564, 245221621, 245248688, 246957980, 247379872, 247404538, 247547714, 249186148, 249832804, 250298968, 252007821, 252166643, 254498243, 256250975, 256734086, 257675257, 258276240, 260078806, 269653037, 270614174, 270803459, 279865482, 290747254, 296104342, 296106331, 296214241, 297365588, 297388265, 297388314, 297395043, 297872731, 297875338, 305678573, 310113063, 317059542, 318726251, 320983337, 321380700, 329390871, 340233049, 343985311, 368331859, 368339983, 374202536, 374729119, 377042975, 377218502, 377330983, 379160277, 387137528, 390536878, 397426025, 410462833, 410898354, 411028646, 415359567, 418289923, 418809394, 420699727, 422768411, 423087664, 434374676, 434499530, 439966930, 443910462, 444881445, 446735168, 470802373, 473022090, 475752042, 480190019, 481797890, 482141996, 493334140, 493996949, 494002753, 494111972, 496668263, 497004637, 505642028, 513006918, 520166698, 522732652, 524323805, 524791178, 525296785, 532366388, 537994409, 538156652, 539123093, 539125333, 540384923, 545724556, 546598380, 552815312, 564847266, 572585472, 572589595, 572660745, 572917514, 572938118, 581295982, 583116728, 584477771, 585356786, 585510953, 586974440, 588341431, 590260151, 593171510, 600861600, 602587622, 608185550, 608501000, 611172806, 617227910, 620862123, 625412750, 626878575, 627192073, 628675473, 636454657, 644892435, 645708934, 646772532, 650376939, 653264074, 653865504, 654835286, 655274400, 657684596, 657843927, 665654464, 665772443, 667917050, 667982163, 668803663, 678409190, 685972429, 687873546, 699223116, 722349553, 723381066, 723506578, 725289629, 728910939, 728916446, 729301272, 730375222, 731520837, 731524865, 731524893, 733458327, 734942836, 742063133, 744425628, 745118723, 750501894, 753379261, 753585532, 755936840, 755999442, 757164322, 757742871, 758908039, 758927262, 766978617, 767310694, 767319597, 768502512, 775086059, 775783015, 776818569, 777129529, 782249017, 782470551, 782586541, 783225086, 783819749, 787058931, 793173186, 793643539, 793791572, 794069868, 797737785, 801549019, 805476735, 809560577, 810471911, 810660018, 813069363, 813965189, 814609400, 819689086, 822265343, 827811881, 828807618, 840895172, 842670706, 845178939, 849626506, 857304293, 867054787, 875581912, 878480613, 878489001, 888652626, 892902192, 904040802, 904780949, 904781069, 904781208, 904781211, 904781269, 904781270, 904781407, 904781445, 904781469, 904781569, 904781597, 904781741, 904781750, 904781797, 904781798, 907680375, 909542970, 913350787, 915552624, 943105427, 944616168, 945567936, 946059164, 946112067, 950116031, 950459761, 950797941, 950991772, 952407653, 954708706, 954904735, 956279390, 959296218, 959317553, 960000436, 960088334, 964474682, 965248297, 965252181, 968600148, 969495568, 969714387, 969714391, 969714751, 975014436, 976847064, 977515724, 978655375, 985441466, 985451059, 988676432, 989199112, 995754553, 995754557, 998100773, 998582596, 1001682227, 1002897238, 1005026102, 1007267340, 1018029509, 1019292109, 1021170671, 1021615491, 1027478448, 1027904949, 1028176876, 1028524011, 1033544761, 1037073656, 1039464298, 1041396131, 1043364491, 1051084878, 1053049944, 1055328538, 1055480209, 1058862972, 1066609925, 1068948457, 1071874351, 1072134738, 1082834847, 1084511341, 1087693738, 1089012798, 1089634494, 1093384439, 1093825560, 1094815391, 1098082937, 1102471353, 1113642022, 1113846049, 1121249692, 1127953536, 1132317159, 1132485954, 1132585385, 1132689597, 1132723356, 1132858392, 1133501028, 1133636064, 1134046361, 1134351151, 1134824033, 1135467502, 1135737574, 1135775689, 1136782059, 1136883336, 1137085890, 1137173922, 1138138823, 1138714596, 1139072942, 1139153897, 1139221159, 1139981182, 1140405028, 1140510661, 1141246959, 1141280718, 1141381995, 1141584549, 1141719585, 1141874653, 1142159541, 1142193300, 1142260818, 1142366610, 1144440814, 1144457023, 1144667374, 1144802410, 1144975561, 1145579956, 1145625081, 1147135141, 1147314976, 1148184718, 1148522564, 1149131059, 1150514349, 1150729533, 1151393172, 1151494449, 1153073825, 1154465661, 1155177503, 1156094385, 1156940664, 1158572559, 1160038984, 1160487168, 1161167906, 1161578459, 1161965872, 1162013821, 1163255421, 1163472226, 1163645377, 1163777146, 1163979700, 1164916562, 1165010690, 1165068597, 1165937726, 1165940993, 1166410608, 1167096330, 1167193469, 1167260731, 1167598577, 1169823858, 1170720439, 1171147706, 1171150005, 1180230175, 1180849387, 1188216287, 1188228500, 1188701654, 1190334387, 1190352716, 1190641324, 1202600586, 1206718941, 1209302133, 1214814043, 1216095517, 1220486075, 1223892937, 1224444732, 1225577971, 1229986049, 1243738793, 1247471306, 1252266596, 1252792940, 1253960230, 1254127330, 1255848785, 1255859538, 1257563663, 1257583343, 1258195056, 1258213434, 1262993336, 1263908042, 1265512654, 1267283463, 1278475387, 1281229947, 1281889125, 1284797630, 1288585218, 1290240457, 1290513099, 1293031053, 1295516865, 1297095740, 1297597617, 1298827289, 1298832842, 1299380998, 1300818337, 1304310342, 1304455504, 1310534169, 1316956180, 1336232039, 1337809090, 1340075459, 1343684265, 1347737800, 1348149256, 1354685816, 1355025196, 1357282216, 1357301365, 1363667295, 1364395531, 1364732891, 1373278040, 1373514813, 1373685873, 1375205051, 1375419602, 1376146087, 1380234474, 1380513046, 1381723825, 1382632688, 1382645602, 1382709874, 1386126578, 1388184353, 1389190819, 1389902309, 1389912616, 1390104485, 1390958270, 1391687090, 1391699393, 1393151104, 1395748391, 1395924208, 1397018707, 1397022500, 1397827261, 1398423514, 1400330808, 1401462671, 1410284129, 1411428439, 1412479074, 1412717811, 1412831927, 1420822802, 1423109435, 1423890423, 1424552007, 1425040900, 1428131728, 1431817030, 1431897749, 1433480127, 1433483767, 1434457973, 1451286836, 1451565010, 1452211848, 1452224159, 1455851258, 1458060161, 1458176029, 1458620255, 1463365872, 1466302404, 1472319400, 1475303091, 1484355552, 1486115226, 1486401243, 1489893113, 1490054949, 1492145100, 1494001659, 1494630697, 1494690535, 1494695213, 1494714660, 1494714786, 1494714930, 1494889015, 1494990523, 1494992680, 1494997876, 1495466906, 1500014997, 1502962162, 1504548128, 1505655813, 1508029184, 1508045454, 1509815249, 1518807662, 1524160328, 1529373691, 1536802563, 1538089784, 1539586715, 1544812783, 1547140470, 1552392687, 1552405115, 1552405169, 1553111822, 1553462237, 1554120313, 1554158027, 1555241094, 1555436471, 1555595989, 1556675361, 1557492455, 1557696008, 1558835738, 1558865070, 1559582938, 1559928005, 1561078602, 1565016185, 1565113430, 1565407826, 1568314306, 1568314316, 1568317266, 1568696751, 1568699472, 1568940804, 1569248185, 1570879860, 1573625992, 1573800670, 1576869802, 1581247153, 1581398717, 1581675892, 1581718434, 1583510121, 1583803496, 1588886160, 1595292826, 1602148307, 1605015374, 1609481646, 1612153257, 1618209596, 1618218864, 1618873873, 1619384363, 1624861042, 1630153983, 1638526919, 1639454708, 1640524262, 1641042489, 1641812886, 1647303548, 1648240296, 1650468220, 1650500409, 1651513056, 1658862087, 1658979753, 1661301475, 1667470132, 1667473335, 1667728240, 1667806132, 1677105623, 1680875001, 1680882207, 1681660610, 1685495090, 1685495093, 1685495270, 1685495398, 1688394353, 1688567575, 1688665455, 1688778883, 1690751126, 1691125863, 1693300755, 1694472929, 1703388735, 1709297356, 1709313729, 1712511978, 1715661089, 1717927392, 1718114956, 1721373840, 1722360575, 1724823399, 1726408681, 1726606395, 1726645504, 1732927910, 1736066754, 1736347741, 1740486766, 1742215384, 1745377406, 1758824175, 1758930481, 1758975612, 1759122505, 1759143730, 1759143733, 1759227293, 1759313682, 1759313685, 1759412017, 1759432510, 1759498975, 1759505228, 1759507354, 1759515800, 1759642661, 1759864276, 1759893786, 1760159824, 1763810143, 1766750547, 1769211545, 1769618102, 1772590156, 1775156822, 1780760274, 1783870720, 1784406502, 1786353732, 1793007575, 1811810046, 1815656403, 1816569647, 1816866992, 1822574126, 1822868024, 1822868031, 1823268852, 1823275309, 1823288115, 1823390804, 1823768300, 1833535991, 1842420860, 1844031908, 1844296341, 1844524436, 1844853963, 1845272265, 1845433501, 1850725233, 1851761689, 1851765614, 1852766386, 1853687691, 1854177922, 1861204803, 1863593250, 1872674263, 1872992134, 1873841021, 1877281407, 1877305076, 1881597618, 1884316146, 1886743174, 1887188539, 1892879921, 1905997196, 1912353097, 1916296381, 1919640688, 1919643810, 1924325687, 1935798204, 1935801369, 1935813711, 1935815187, 1935818499, 1941710024, 1944260378, 1945210145, 1951157591, 1955955663, 1957378415, 1957388660, 1957444069, 1958153525, 1958153878, 1962799016, 1964448624, 1967235715, 1967514117, 1968334692, 1970709900, 1974828022, 1977445003, 1980811473, 1981302481, 1984866213, 1986874949, 1987285901, 1987558613, 1988913069, 1998855379, 2023930736, 2026542768, 2029442974, 2029502301, 2031253491, 2041190670, 2044176332, 2044519717, 2044521677, 2044845895, 2044862336, 2050748464, 2055299797, 2059226128, 2060744697, 2060874008, 2061631935, 2062602594, 2062613436, 2062713055, 2062721365, 2062782118, 2064194523, 2064289093, 2064667157, 2064835977, 2065546931, 2065580690, 2065783508, 2066019598, 2067177842, 2067640249, 2068518016, 2068619301, 2069026672, 2069773511, 2070805664, 2073324624, 2075547993, 2076314666, 2076760108, 2076927096, 2078661044, 2080078919, 2080126248, 2080270176, 2080768362, 2080948565, 2081049148, 2081811414, 2082081519, 2083365940, 2084275182, 2089789238, 2090043919, 2090165361, 2090287045, 2092471497, 2092773191, 2093281591, 2093290649, 2093484170, 2095261287, 2096596043, 2096775591, 2100685312, 2102866955, 2108433077, 2109903284, 2110249550, 2112026046, 2112754908, 2114424326, 2115251185, 2116737470, 2118764990, 2119510407, 2120903194, 2121183749, 2121530494, 2121539444, 2122085862, 2123968241, 2123974461, 2124038667, 2126585211, 2127702833, 2127711196, 2129393172, 2140172366, 2141043403, 2144163444, 2144352359, 2146552134, 2146559400, 2146579609, 2146771534, 2146787712, 2147192784, 2149214372, 2150227387, 2151276842, 2152677197, 2158829447, 2159124528, 2159550475, 2161337980, 2161361535, 2163722410, 2163917836, 2165826914, 2169168320, 2170868227, 2173022808, 2174751247, 2179048400, 2184998274, 2196541409, 2200622033, 2203412941, 2206322353, 2208794483, 2219653172, 2219657520, 2225010953, 2226828879, 2238722895, 2238722920, 2238723506, 2241976578, 2245936247, 2248375230, 2249276550, 2249625301, 2254065144, 2254179087, 2254183431, 2254275149, 2254449430, 2254449877, 2255178054, 2264880989, 2270863210, 2290294367, 2304704334, 2304866355, 2305219189, 2310350875, 2310486036, 2312897274, 2314773060, 2315564905, 2319231065, 2319463533, 2325240383, 2327016339, 2330482855, 2337919027, 2340169455, 2359883328, 2361871491, 2366081778, 2369823335, 2369831600, 2371523459, 2372759050, 2374977123, 2376431395, 2378889732, 2382890223, 2383755454, 2386589953, 2387052696, 2389856295, 2391789782, 2398718314, 2399324290, 2400888860, 2401211408, 2404756392, 2406557074, 2407241140, 2409418646, 2411497922, 2411691127, 2413846222, 2413908037, 2414944572, 2415208709, 2417936111, 2419639306, 2423159152, 2423360684, 2425978408, 2428076111, 2437572023, 2440527060, 2444775143, 2449407487, 2457428534, 2469735934, 2475146676, 2475744613, 2476033552, 2476112212, 2476147614, 2477393954, 2478803388, 2479415778, 2482075359, 2485317413, 2485370363, 2488499588, 2488699734, 2491415998, 2492607180, 2493496209, 2497515972, 2499072481, 2499532790, 2504383993, 2504870149, 2505121421, 2505147736, 2513647314, 2513693640, 2513701512, 2513706827, 2521253655, 2521398855, 2526527953, 2526528078, 2527291586, 2527292245, 2527666001, 2528098475, 2536669081, 2536933437, 2537106090, 2538335365, 2541170503, 2541170604, 2541177518, 2545965593, 2546249066, 2546819122, 2548278991, 2548782015, 2549421379, 2557808039, 2557863700, 2558865115, 2568950385, 2569073380, 2569341502, 2569405925, 2570837952, 2575053435, 2575619554, 2575627585, 2579451785, 2581687876, 2582936524, 2586547509, 2590439971, 2600983050, 2602643559, 2605946857, 2608238576, 2608504686, 2611889973, 2612202111, 2619739935, 2621175072, 2627204334, 2627570013, 2627677159, 2631480810, 2631901285, 2635187702, 2637430468, 2638897207, 2639751704, 2642390316, 2644459471, 2644532855, 2644906311, 2645171587, 2647433605, 2647443463, 2649904288, 2651288351, 2652440186, 2655263134, 2660229222, 2660362019, 2662714632, 2671981072, 2673085999, 2676359415, 2678218950, 2680015310, 2683201101, 2683726243, 2687071289, 2687546085, 2689958531, 2690565794, 2691049537, 2696922944, 2702278755, 2705586928, 2707450736, 2708750293, 2710694053, 2710777678, 2717039465, 2719746264, 2719953243, 2722365346, 2724396360, 2730361077, 2732178535, 2732249147, 2732255792, 2732453216, 2732465831, 2733162785, 2733179003, 2740913336, 2743326046, 2745816408, 2746770100, 2768031559, 2768594053, 2769743066, 2770453396, 2777301260, 2777413063, 2779047561, 2779131760, 2781151044, 2788878449, 2791114477, 2792266216, 2795123222, 2795130739, 2795148393, 2803000277, 2803220098, 2820015673, 2824852881, 2825063248, 2825297984, 2826183623, 2826618777, 2828159974, 2830840737, 2840364717, 2844137461, 2844192015, 2844331414, 2844474265, 2845536368, 2847702680, 2847708560, 2849875839, 2854691117, 2857021867, 2857111846, 2857167445, 2857291628, 2857718467, 2857718874, 2859609075, 2860369035, 2860944275, 2861234828, 2861431296, 2861773187, 2862323803, 2862729831, 2862789186, 2862818280, 2865000297, 2865536587, 2872917161, 2879220442, 2885591219, 2886256228, 2886266660, 2886337850, 2886340600, 2886347487, 2886358758, 2886559394, 2888553420, 2893735969, 2893987517, 2894277589, 2895201770, 2895970159, 2903889952, 2904798808, 2907566289, 2911967032, 2913775681, 2917443420, 2921648360, 2921994283, 2925162127, 2925540459, 2931480722, 2936112276, 2938485423, 2939997155, 2941295122, 2942568797, 2944555176, 2950549599, 2952067971, 2952072562, 2955690120, 2961421753, 2962144430, 2962519996, 2962841785, 2964270344, 2964373735, 2965548040, 2966852375, 2970298080, 2974400461, 2975755381, 2981996158, 2987922608, 2991195167, 2991625994, 2993771546, 2995901561, 3000958971, 3001281849, 3001388716, 3004478994, 3004479027, 3004479111, 3004479159, 3004479171, 3004479184, 3004479190, 3004479239, 3004479240, 3004479258, 3004479289, 3004479305, 3004479323, 3004479334, 3004479373, 3004479389, 3004479390, 3004479401, 3004479425, 3004479785, 3004479787, 3004479818, 3004479829, 3004479837, 3004479976, 3004479994, 3004480114, 3005847375, 3006723884, 3006726944, 3006727797, 3006731179, 3006737252, 3006744684, 3006811183, 3012299493, 3014399025, 3019017018, 3019072181, 3019996757, 3020108825, 3020133371, 3020188532, 3023885513, 3024558034, 3024589567, 3024626538, 3033483503, 3034109278, 3035739007, 3035887950, 3044634578, 3044797796, 3044821749, 3045244983, 3045788419, 3045876876, 3046124074, 3046256428, 3050244615, 3050333064, 3050334784, 3056297406, 3062281966, 3063798750, 3063849681, 3073445035, 3073797863, 3073848296, 3086119708, 3087786680, 3089398889, 3089451715, 3089454054, 3089461994, 3089735415, 3094552970, 3097888413, 3098875466, 3099276787, 3104375123, 3104503715, 3105798493, 3107144912, 3107146953, 3110631110, 3110681545, 3111601102, 3111601746, 3111606786, 3114815727, 3119543502, 3119594433, 3120807553, 3120857998, 3122897068, 3125786613, 3128821880, 3133975234, 3135838657, 3136281421, 3145164732, 3147940006, 3154068140, 3154152867, 3157412719, 3157501664, 3159380027, 3160589879, 3161016478, 3161897203, 3174437714, 3180245112, 3180300610, 3182786585, 3183126568, 3183293814, 3183325319, 3184294753, 3188347051, 3191217062, 3196370198, 3197567695, 3198643172, 3198783739, 3198824989, 3198841920, 3198930383, 3199640352, 3200095506, 3203439089, 3203573947, 3203579445, 3208441350, 3209729826, 3210506925, 3210514725, 3210570457, 3214383466, 3214394316, 3214653823, 3215790970, 3217760577, 3218901480, 3218928718, 3218996674, 3218997101, 3219339071, 3219427268, 3220535722, 3220543483, 3221757640, 3223098753, 3224727829, 3232284385, 3232339054, 3234508143, 3234559072, 3235473148, 3237969392, 3243142044, 3247991594, 3253953941, 3269910681, 3270985722, 3273573836, 3273628995, 3275986591, 3277061645, 3277112578, 3277868236, 3277980164, 3278129999, 3278154322, 3280832255, 3280992609, 3283017533, 3286262047, 3290414111, 3301409832, 3301494567, 3302526185, 3302610918, 3305712858, 3305866028, 3305950755, 3309540327, 3309590022, 3309595898, 3309596203, 3309660560, 3309660597, 3309937069, 3312550946, 3312639405, 3317007142, 3317095593, 3324397363, 3331028046, 3331525682, 3331580349, 3331802213, 3332642035, 3332696700, 3333929978, 3334870005, 3334920442, 3335058344, 3335315569, 3343940221, 3345496201, 3350023967, 3353092349, 3358586999, 3365687143, 3366763202, 3368167300, 3371155980, 3372842751, 3373802982, 3374003367, 3374007861, 3374013921, 3374033257, 3374071862, 3374072315, 3374075119, 3374222601, 3374506623, 3377952754, 3382868701, 3384928690, 3388197033, 3390931348, 3391051206, 3391063809, 3391068622, 3391334282, 3391402631, 3391423133, 3391432603, 3392425741, 3394879910, 3395277647, 3399311251, 3402270417, 3404440519, 3414226886, 3414277321, 3415566709, 3417045783, 3417060092, 3418683074, 3418733517, 3424453774, 3431921225, 3437307073, 3437430868, 3437705452, 3444401619, 3445590826, 3447374472, 3456431399, 3458638240, 3461359920, 3463272868, 3468986640, 3469121667, 3471246134, 3474393156, 3474446194, 3476056250, 3478543821, 3486841411, 3486906847, 3489097968, 3491201265, 3495569706, 3496705474, 3497897502, 3497994843, 3498252682, 3502149957, 3504414102, 3504826781, 3506839508, 3506948350, 3508950458, 3509210745, 3509498189, 3511959565, 3512025010, 3512493029, 3514111400, 3517669498, 3518790968, 3521920341, 3523035738, 3523862571, 3524226140, 3530307622, 3530358057, 3536335853, 3536792162, 3538712404, 3541452460, 3541507619, 3542648636, 3544416242, 3550676375, 3551025439, 3553383951, 3556498831, 3561501051, 3561585780, 3565016796, 3565023071, 3565174365, 3565227623, 3565288856, 3566089568, 3572109810, 3575114019, 3577841990, 3586425916, 3589694483, 3591020567, 3592221649, 3594125448, 3595182758, 3596128381, 3602035250, 3602533630, 3602552275, 3604829927, 3607233834, 3607322789, 3607604079, 3608554389, 3610981370, 3617629034, 3619761411, 3623812162, 3629877419, 3636237811, 3636292476, 3639577654, 3639632313, 3645953597, 3647523178, 3649784978, 3653883892, 3660676457, 3664234276, 3674197367, 3675513627, 3681233287, 3684650455, 3688377898, 3689406359, 3692544695, 3693437133, 3694959415, 3703294733, 3704443907, 3704956777, 3706490306, 3709178884, 3709268355, 3709272958, 3717182590, 3718660896, 3719413702, 3721853564, 3731122282, 3734934472, 3736397122, 3736397691, 3738359136, 3744502996, 3744505315, 3744515994, 3744516038, 3745225898, 3745403285, 3749377655, 3751498613, 3752631559, 3753565240, 3756319792, 3758308501, 3758308691, 3761682835, 3762386667, 3762488637, 3763193356, 3763904751, 3764062969, 3764739038, 3769398133, 3770065529, 3774076759, 3779092995, 3780318738, 3781089827, 3783201212, 3785420602, 3786786081, 3788364543, 3791375542, 3791430201, 3791912060, 3792007260, 3792147146, 3793208754, 3794029235, 3805317549, 3808957225, 3809652473, 3811984999, 3812594538, 3819295903, 3819351056, 3821104144, 3821104746, 3829518367, 3832811824, 3833121835, 3833171090, 3833706374, 3838812042, 3843969806, 3844552031, 3850681433, 3851222744, 3851541567, 3851602009, 3851679807, 3853676291, 3855415829, 3856249405, 3859110665, 3859972063, 3862928629, 3865386916, 3865396334, 3873108359, 3873163016, 3876524049, 3883472548, 3885986978, 3888196487, 3895773227, 3898366596, 3900605466, 3900796753, 3906034907, 3907036333, 3914330405, 3916906002, 3922403377, 3925982068, 3933039724, 3936549300, 3939824482, 3940957272, 3941201834, 3941535714, 3943160335, 3943296300, 3950173236, 3955179593, 3959867562, 3960938237, 3961299015, 3961303520, 3961836502, 3962329360, 3963273426, 3966271140, 3969493837, 3970184201, 3971378905, 3972349404, 3972404563, 3974206923, 3977375686, 3977639927, 3981851856, 3984175284, 3984369770, 3984383153, 3984388901, 3984577838, 3986753035, 3987449768, 3988320676, 3989122328, 3989124781, 3989300792, 3991957101, 3991978776, 3992246021, 3993156440, 3995285601, 4002046206, 4002059123, 4002298131, 4007368305, 4009075902, 4012314248, 4014272956, 4018800601, 4021398623, 4022152923, 4023242992, 4034787018, 4034837957, 4040007159, 4040507273, 4040558214, 4042630615, 4042667369, 4044815570, 4044899805, 4046325025, 4051504220, 4051593171, 4059166898, 4059387372, 4060969098, 4060986772, 4062588735, 4063625944, 4063736412, 4064813411, 4074640059, 4077930265, 4080197122, 4081731399, 4081736449, 4081740860, 4081761692, 4082508192, 4082648933, 4085037592, 4085499470, 4085741867, 4086206754, 4087477773, 4087973382, 4087974431, 4087975312, 4087977920, 4087977986, 4087982672, 4087983230, 4087984585, 4087984590, 4087984656, 4087988411, 4087993231, 4087993234, 4087993291, 4087993428, 4088004545, 4089941093, 4090379779, 4094838531, 4095533224, 4098180267, 4104794847, 4104808845, 4105491350, 4105500480, 4109580593, 4111598640, 4115797781, 4116207257, 4116258198, 4116322118, 4116406345, 4116912946, 4122262153, 4126221625, 4127308650, 4128209898, 4128210099, 4128224738, 4128228031, 4128452341, 4131804567, 4131859224, 4137741343, 4141029933, 4142953920, 4145022541, 4149201544, 4150566897, 4151710650, 4152474623, 4155185738, 4156445644, 4157556469, 4157644922, 4159136925, 4159401066, 4159780211, 4159864444, 4164601660, 4166043368, 4168091484, 4169450331, 4170161097, 4170579962, 4170925049, 4171014006, 4171016671, 4171029715, 4172482250, 4175353143, 4176008925, 4178981053, 4184703759, 4186748423, 4188894668, 4189635776, 4190045706, 4190142208, 4195146068, 4196943735, 4199824850, 4203521301, 4206809827, 4206944958, 4207535653, 4208164707, 4211585807, 4215346074, 4215356593, 4218114605, 4218115138, 4218132009, 4219656584, 4219999876, 4220379359, 4221957810, 4222018626, 4225873997, 4227433758, 4228171984, 4228217908, 4228360888, 4228368741, 4228368760, 4231583294, 4231662792, 4232149414, 4232629512, 4234942237, 4235762280, 4240864861, 4241320459, 4241740950, 4242647335, 4243702915, 4245105172, 4246629902, 4248741847, 4252833472, 4252840599, 4254781707, 4254799704, 4255058051, 4260594638, 4261873154, 4261894730, 4262104449, 4262374147, 4262375371, 4262499171, 4264253465, 4265048576, 4267292711, 4271528787, 4272039260, 4272350188, 4272417877, 4276136562, 4288066094, 369, 54631547, 68945260, 76317054, 90122581, 107533418, 134757519, 142022835, 149084067, 159782934, 169736776, 205527546, 244603010, 255553804, 262051769, 263431316, 265459661, 284810646, 289494951, 371032970, 373243562, 374621869, 387545720, 391377589, 415171499, 415171548, 415171976, 418990556, 418990602, 425807660, 435420269, 461226423, 483976516, 501379566, 531625563, 553327069, 590191545, 595217502, 649854972, 668816409, 678957092, 680578927, 714686602, 715141614, 717942499, 720960146, 720974524, 720974736, 720975995, 725617684, 744932012, 793535325, 806495002, 817571047, 823641433, 857348365, 862847657, 871542102, 874448701, 877175745, 893771636, 914435801, 931438088, 937200556, 1015486168, 1026348750, 1029964103, 1030875558, 1083568115, 1106088318, 1135523977, 1206251138, 1219433535, 1220725895, 1220852235, 1220852260, 1220852796, 1220852957, 1222628504, 1230410191, 1240508317, 1242746690, 1260212779, 1282239389, 1290343418, 1326192098, 1338160975, 1340954405, 1351436722, 1361325259, 1374669131, 1374800320, 1389489864, 1401511709, 1421711922, 1452449030, 1467196671, 1467386990, 1490648152, 1493005045, 1506058569, 1507763651, 1514073041, 1515782688, 1515784934, 1515785058, 1523142552, 1526329423, 1553174585, 1591300266, 1629584534, 1641166031, 1642384128, 1661678914, 1679178836, 1679485164, 1681545174, 1704277516, 1705410866, 1705908110, 1714538458, 1768636249, 1772526810, 1818263278, 1821800212, 1833750850, 1834601376, 1834613468, 1866278547, 1867401367, 1936236019, 1945296852, 1978039580, 1997464432, 2017904725, 2055461758, 2058918178, 2080694907, 2086814061, 2089989988, 2123843096, 2170766397, 2172738430, 2174442073, 2177527468, 2178512614, 2233637259, 2246941078, 2274844928, 2274845447, 2274845649, 2279046513, 2293400491, 2299670458, 2300280964, 2300527715, 2305877279, 2307152224, 2316307169, 2322963439, 2335588857, 2337430377, 2359562546, 2360555826, 2405952063, 2419834458, 2423179189, 2436862648, 2436862650, 2436862651, 2436862652, 2436862653, 2436862654, 2436862655, 2439178127, 2460729245, 2517521888, 2585317679, 2631335866, 2632842752, 2726667654, 2726667661, 2726667752, 2726667756, 2726667834, 2726667995, 2726668398, 2737177336, 2757711981, 2779759639, 2787445139, 2796817467, 2812190333, 2816464305, 2817592022, 2826795200, 2827908591, 2872823135, 2873905939, 2876785673, 2876785759, 2901134565, 2913059937, 2924726497, 2938670220, 2939089089, 2943360116, 2945389039, 3005172573, 3015670621, 3022308183, 3050185270, 3050185436, 3056015384, 3056015484, 3071839865, 3079506072, 3079929644, 3116612793, 3164097381, 3176996220, 3180729164, 3227651590, 3234391576, 3234432745, 3278041418, 3278041727, 3278041816, 3319967633, 3330642108, 3334769994, 3354637514, 3375261606, 3375312977, 3410106074, 3423153883, 3456106742, 3461071037, 3473412940, 3486684134, 3504293483, 3517650814, 3547292615, 3571189672, 3593285841, 3612407497, 3666061454, 3666061458, 3666061568, 3666061577, 3666061585, 3666061591, 3666061602, 3666061610, 3666061613, 3666061619, 3666061666, 3666061672, 3666061702, 3666061706, 3666061732, 3666061760, 3666061781, 3666061825, 3666061864, 3666061891, 3666061895, 3666061896, 3666061902, 3666061903, 3666061913, 3666062029, 3666062293, 3666062299, 3666062326, 3666062331, 3666062345, 3666062357, 3666062361, 3666062379, 3666062386, 3666062390, 3666062391, 3666062394, 3666062408, 3666062418, 3666062422, 3666062427, 3666062453, 3666062517, 3666062569, 3666062581, 3666062582, 3666062586, 3666062587, 3666099519, 3667007182, 3676644409, 3676644411, 3676644421, 3676644429, 3676644442, 3676644586, 3676644600, 3676644610, 3676644643, 3676644706, 3676644759, 3676644775, 3676644800, 3676644806, 3676644819, 3676644874, 3676644887, 3676644888, 3676644905, 3676644939, 3676644953, 3676644982, 3676645005, 3676645006, 3676645021, 3676645049, 3676645073, 3684315096, 3691777760, 3697941178, 3708654452, 3710369155, 3749170769, 3772863442, 3793240332, 3798969166, 3800169971, 3820675046, 3829710462, 3829710568, 3843370951, 3845152461, 3847111189, 3861225221, 3871154340, 3872238039, 3916589493, 3949265042, 3952274701, 3967179311, 4020468984, 4088042711, 4088042763, 4088043471, 4098608917, 4098609219, 4098704176, 4098704230, 4098775844, 4098776178, 4098815877, 4098816211, 4126370696, 4127380674, 4155818428, 4160021452, 4179162156, 4189349925, 4224941776, 4233200080, 4259920717, 4263023754, 4268562148, 0, 0, 0, 17, 343511425, 1030334438, 1035444912, 1035444966, 1126785220, 1160516735, 2496101809, 2496102373, 2501069285, 2506938014, 2613448893, 2668096359, 2767610756, 2943255975, 3483670337, 3483670995, 4233599295, 4, 989615076, 1348282182, 2372695675, 2793429742, 397, 2315777, 2516160, 11643297, 13203897, 21231554, 35967653, 38712935, 47792331, 72865995, 74144458, 82734700, 83460346, 105527502, 113271207, 133306274, 134752460, 140540365, 149081424, 159784149, 160693466, 187981691, 201714711, 257089230, 271126044, 284628322, 288401789, 293512087, 299470436, 301921344, 303087651, 310748895, 318673258, 321508235, 328967865, 331740776, 333043316, 343618051, 344116268, 349554276, 368842915, 373240553, 380288946, 385653806, 387546555, 391603917, 397299232, 407552584, 411195000, 457925677, 465045723, 466546683, 476300545, 496262010, 508940895, 528158848, 576308682, 599016891, 599034260, 599035482, 617473653, 629010449, 643159709, 649306413, 657763177, 658030821, 663498697, 666920016, 684079208, 730892591, 745170160, 748876721, 748886222, 752803028, 756281027, 761348098, 767592699, 768148470, 771634050, 771637032, 797075449, 798164153, 806496217, 807477757, 814547322, 823640218, 828791723, 830209933, 830328663, 830812219, 831086733, 843422410, 848961657, 871543061, 884068409, 931459402, 935834596, 953760609, 956026316, 973201175, 985556812, 990107236, 1002251210, 1006286666, 1015491227, 1017212284, 1017751931, 1026349709, 1027559288, 1039189287, 1048681185, 1049173028, 1069937338, 1071441344, 1072691903, 1128950639, 1139782538, 1139843834, 1141008431, 1156523661, 1160815779, 1194239092, 1211577197, 1211637010, 1222641289, 1240507358, 1264600767, 1288872441, 1321698432, 1329660539, 1338155660, 1339210968, 1373285759, 1382125974, 1390628516, 1399578255, 1399657308, 1403708559, 1408484449, 1432456391, 1433498959, 1468959011, 1474134153, 1481167509, 1481892069, 1485735468, 1512063165, 1514478145, 1519263375, 1522675342, 1541305645, 1542981532, 1553720283, 1557499238, 1635518266, 1640297675, 1644040136, 1645084619, 1672625515, 1675268949, 1675573659, 1679183895, 1701744405, 1704282831, 1705918154, 1709094170, 1740118996, 1745197398, 1746168006, 1763490076, 1764138250, 1778504542, 1804707890, 1807895638, 1812124962, 1825087480, 1827997201, 1834433178, 1836295865, 1836721468, 1855831597, 1871287494, 1874044309, 1894472089, 1911094612, 1944286571, 1945301911, 1964668429, 1992457158, 2005254865, 2048724462, 2072914399, 2073220142, 2080693816, 2086817070, 2091822363, 2116894487, 2120589916, 2132854800, 2138833857, 2149555928, 2149786502, 2159131792, 2193556503, 2203826663, 2222814745, 2233632200, 2234478015, 2266871804, 2270958851, 2280109123, 2300684501, 2320975486, 2368015199, 2368150205, 2378859099, 2402357659, 2420231640, 2421832104, 2442099500, 2445444524, 2450316872, 2480056360, 2511017726, 2535682339, 2564758885, 2580206998, 2634443356, 2655498207, 2659744440, 2664398480, 2665288759, 2683912382, 2685363948, 2697995386, 2705244823, 2707054618, 2731911143, 2746095604, 2750223108, 2751457001, 2757038073, 2757714990, 2757832374, 2763102979, 2764615893, 2768173321, 2769632227, 2788021838, 2808290141, 2813866328, 2823576784, 2832963785, 2833300206, 2839929991, 2842899363, 2855442276, 2861724882, 2873826097, 2875201553, 2889802328, 2894057006, 2902844704, 2920776771, 2938675535, 2940382413, 2940687092, 2942499160, 2976147113, 2999699036, 3012594373, 3014878073, 3021947486, 3024482894, 3027886950, 3033143700, 3041972547, 3043054392, 3061104959, 3068421535, 3068451149, 3073259213, 3076287128, 3092740204, 3097180103, 3126517186, 3134714387, 3141033517, 3153726305, 3161099645, 3164570023, 3168616586, 3178721795, 3185964212, 3199657339, 3213212569, 3227558031, 3234959359, 3242752110, 3245911312, 3250117513, 3255207552, 3263028169, 3267416959, 3271443733, 3276067803, 3303582289, 3303582897, 3303582994, 3303614961, 3327283712, 3336973745, 3345667381, 3346748653, 3358811093, 3365430328, 3371744816, 3393399711, 3418876414, 3451234301, 3462047339, 3466186248, 3487461167, 3489942689, 3511023565, 3528253833, 3577832733, 3577832874, 3579570991, 3581968529, 3587382024, 3594263141, 3597175734, 3609198260, 3620670314, 3644061745, 3686687805, 3699471696, 3704450806, 3719669200, 3724302375, 3732631655, 3737867596, 3737869333, 3737882439, 3743824089, 3748450386, 3755463030, 3762725071, 3780090414, 3786960458, 3789613664, 3804622433, 3829814476, 3834232417, 3836376093, 3843018675, 3847110230, 3849573984, 3888536498, 3895950835, 3927045026, 3930866393, 3974478460, 3989861270, 3990612749, 3994206764, 3994206767, 4003176468, 4013705057, 4040130402, 4055956024, 4064081091, 4069710253, 4076793042, 4078153021, 4095557691, 4103392506, 4105790268, 4130682685, 4131077260, 4150503708, 4155492542, 4165042016, 4186885299, 4188349987, 4190709408, 4193373567, 4197651626, 4198443983, 4202984206, 4210375752, 4212069506, 4216891535, 4228991204, 4251429164, 4263509307, 4279717352, 0, 0, 0, 2, 898804372, 2420122849, 0, 184, 14034108, 23188555, 69988957, 176179919, 181602757, 234878220, 241015393, 282017655, 286917352, 298380305, 303225044, 333040682, 436746473, 437068413, 449019336, 449464240, 451920903, 472319354, 495318858, 500388520, 512606097, 527005648, 554651161, 561857715, 570474602, 588675343, 615779940, 680838102, 688229624, 722503086, 733631603, 760863762, 768579191, 769161927, 777931472, 804592434, 820388681, 834351359, 838060561, 871806992, 907959623, 917609192, 921095799, 922653385, 936253712, 951807472, 976944213, 1057868108, 1061438860, 1097991931, 1099387701, 1118780323, 1129127307, 1134058690, 1149298066, 1173449599, 1188365042, 1221482277, 1242510922, 1244344576, 1249042959, 1256956692, 1322375458, 1340682260, 1389219463, 1420709285, 1468300758, 1544881072, 1554252850, 1557974723, 1564485910, 1566036640, 1637844009, 1641584834, 1668922875, 1697481902, 1700564263, 1779722906, 1817679755, 1844196310, 1862443027, 1863425670, 1874439438, 1918635827, 1942164974, 1953292144, 1996832610, 2005075462, 2171493616, 2174172768, 2200270403, 2224853335, 2232538822, 2253530761, 2271804726, 2307427283, 2314778321, 2325064176, 2347507979, 2356867634, 2422267260, 2435625787, 2442761119, 2454582508, 2471444403, 2478294033, 2487762682, 2505529649, 2513007594, 2514973059, 2523046044, 2645305307, 2697781106, 2700249759, 2713921343, 2858583336, 2869381059, 2875883974, 2877426354, 2906087318, 2940183875, 2941854634, 2983778787, 2991311078, 3020661286, 3033841873, 3036938981, 3061233249, 3088839886, 3090851000, 3116880000, 3160125774, 3173697968, 3175256934, 3193365922, 3248874150, 3262696949, 3293334302, 3294129343, 3298593000, 3336190368, 3342381501, 3344449059, 3367460946, 3387371732, 3391640312, 3415133140, 3415553447, 3416872467, 3486599559, 3505446608, 3554833241, 3594782899, 3615198865, 3629910769, 3642670614, 3643744473, 3654513786, 3675702820, 3697030868, 3710380917, 3779661543, 3795518186, 3803370028, 3804920752, 3840174405, 3861583079, 3867650596, 3894082090, 3900359633, 3928753122, 3942119031, 3951224511, 4009634354, 4063453845, 4065646590, 4079144597, 4163056211, 4180315949, 4196008531, 4241738188, 4254148468, 4265459019, 4273759132, 0, 0, 0, 0, 0, 5, 1148034389, 1373602048, 2160920720, 2391490885, 2722440867]);
+
+/**
+ * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)
+ * using a binary search algorithm.
+ */
+function binSearch(arr, elt, start, end) {
+ if (start >= end) {
+ return false;
+ }
+ let low = start;
+ let high = end - 1;
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const midVal = arr[mid];
+ if (midVal < elt) {
+ low = mid + 1;
+ }
+ else if (midVal > elt) {
+ high = mid - 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To
+// avoid having to allocate an array to store them at every invocation, we
+// create one global one that can be reused.
+const BUFFER = new Uint32Array(20);
+/**
+ * Iterate on hashes of labels from `hostname` backward (from last label to
+ * first label), stopping after `maximumNumberOfLabels` have been extracted and
+ * calling `cb` on each of them.
+ *
+ * The `maximumNumberOfLabels` argument is typically used to specify the number
+ * of labels seen in the longest public suffix. We do not need to check further
+ * in very long hostnames.
+ */
+function hashHostnameLabelsBackward(hostname, maximumNumberOfLabels) {
+ let hash = 5381;
+ let index = 0;
+ // Compute hash backward, label per label
+ for (let i = hostname.length - 1; i >= 0; i -= 1) {
+ const code = hostname.charCodeAt(i);
+ // Process label
+ if (code === 46 /* '.' */) {
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = i + 1;
+ index += 1;
+ if (index === maximumNumberOfLabels) {
+ return index;
+ }
+ }
+ // Update hash
+ hash = (hash * 33) ^ code;
+ }
+ // Let's not forget about last label
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = 0;
+ index += 1;
+ return index;
+}
+/**
+ * Perform a public suffix lookup for `hostname` using the packed hashes
+ * data-structure. The `options` allows to specify if ICANN/PRIVATE sections
+ * should be considered. By default, both are.
+ *
+ */
+function suffixLookup(hostname, options, out) {
+ if (fastPathLookup(hostname, options, out)) {
+ return;
+ }
+ const { allowIcannDomains, allowPrivateDomains } = options;
+ // Keep track of longest match
+ let matchIndex = -1;
+ let matchKind = 0 /* Result.NO_MATCH */;
+ let matchLabels = 0; // Keep track of number of labels currently matched
+ // Index in the packed array data-structure
+ let index = 1;
+ const numberOfHashes = hashHostnameLabelsBackward(hostname, packed[0] /* maximumNumberOfLabels */);
+ for (let label = 0; label < numberOfHashes; label += 1) {
+ const hash = BUFFER[label << 1];
+ const labelStart = BUFFER[(label << 1) + 1];
+ // For each label, matching proceeds in the following way:
+ //
+ // 1. check exceptions
+ // 2. check wildcards
+ // 3. check normal rules
+ //
+ // For each of these, we also perform the lookup in two parts, once for
+ // the ICANN section and one for the PRIVATE section. Both of which are
+ // optional and can be enabled/disabled using the `options` argument.
+ //
+ // We start with exceptions because if an exception is found, we do not
+ // need to continue matching wildcards or normal rules; the exception will
+ // always have priority.
+ //
+ // Similarly, if we find a wildcard match, we do not need to check the
+ // rules for the same label as the wildcard match is always longer (one
+ // more label is matched).
+ //
+ // **WARNING**: the structure of this code follows exactly the structure
+ // of the packed data structure as create in ./bin/builders/hashes.js
+ let match = 0 /* Result.NO_MATCH */;
+ // ========================================================================
+ // Lookup exceptions
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 1 /* Result.ICANN_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains && match === 0 /* Result.NO_MATCH */) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 2 /* Result.PRIVATE_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // ========================================================================
+ // Lookup wildcards
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // ========================================================================
+ // Lookup rules
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // If we found a match, the longest match that is being tracked for this
+ // hostname. We need to remember which kind of match it was (exception,
+ // wildcard, normal rule), the index where the suffix starts in `hostname`
+ // as well as the number of labels contained in this suffix (this is
+ // important to make sure that we always keep the longest match if there
+ // are both a wildcard and a normal rule matching).
+ if (match !== 0 /* Result.NO_MATCH */) {
+ matchKind = match;
+ matchLabels = label + ((match & 16 /* Result.WILDCARD_MATCH */) !== 0 ? 2 : 1);
+ matchIndex = labelStart;
+ }
+ }
+ out.isIcann = (matchKind & 1 /* Result.ICANN_MATCH */) !== 0;
+ out.isPrivate = (matchKind & 2 /* Result.PRIVATE_MATCH */) !== 0;
+ // No match found
+ if (matchIndex === -1) {
+ out.publicSuffix =
+ numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);
+ return;
+ }
+ // If match is an exception, this means that we need to count less label.
+ // For example, exception rule !foo.com would yield suffix 'com', so we need
+ // to locate the next dot and slice from there.
+ if ((matchKind & 4 /* Result.EXCEPTION_MATCH */) !== 0) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);
+ return;
+ }
+ // If match is a wildcard, we need to match one more label. If wildcard rule
+ // was *.com, we would have stored only 'com' in the packed structure and we
+ // need to take one extra label on the left.
+ if ((matchKind & 16 /* Result.WILDCARD_MATCH */) !== 0) {
+ if (matchLabels < numberOfHashes) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);
+ return;
+ }
+ const parts = hostname.split('.');
+ while (parts.length > matchLabels) {
+ parts.shift();
+ }
+ out.publicSuffix = parts.join('.');
+ return;
+ }
+ // if ((matchKind & Result.NORMAL_MATCH) !== 0)
+ // For normal match, we just slice the hostname at the beginning of suffix.
+ out.publicSuffix = hostname.slice(matchIndex);
+}
+
+// For all methods but 'parse', it does not make sense to allocate an object
+// every single time to only return the value of a specific attribute. To avoid
+// this un-necessary allocation, we use a global object which is re-used.
+const RESULT = getEmptyResult();
+function parse(url, options = {}) {
+ return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, getEmptyResult());
+}
+function getHostname(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 0 /* FLAG.HOSTNAME */, suffixLookup, options, RESULT).hostname;
+}
+function getPublicSuffix(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 2 /* FLAG.PUBLIC_SUFFIX */, suffixLookup, options, RESULT)
+ .publicSuffix;
+}
+function getDomain(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 3 /* FLAG.DOMAIN */, suffixLookup, options, RESULT).domain;
+}
+function getSubdomain(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 4 /* FLAG.SUB_DOMAIN */, suffixLookup, options, RESULT)
+ .subdomain;
+}
+function getDomainWithoutSuffix(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, RESULT)
+ .domainWithoutSuffix;
+}
+
+exports.getDomain = getDomain;
+exports.getDomainWithoutSuffix = getDomainWithoutSuffix;
+exports.getHostname = getHostname;
+exports.getPublicSuffix = getPublicSuffix;
+exports.getSubdomain = getSubdomain;
+exports.parse = parse;
+//# sourceMappingURL=index.js.map
diff --git a/client/node_modules/tldts-experimental/dist/cjs/index.js.map b/client/node_modules/tldts-experimental/dist/cjs/index.js.map
new file mode 100644
index 0000000..a14ac0b
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../../../tldts-core/src/domain.ts","../../../tldts-core/src/domain-without-suffix.ts","../../../tldts-core/src/extract-hostname.ts","../../../tldts-core/src/is-ip.ts","../../../tldts-core/src/is-valid.ts","../../../tldts-core/src/options.ts","../../../tldts-core/src/subdomain.ts","../../../tldts-core/src/factory.ts","../../../tldts-core/src/lookup/fast-path.ts","../../src/data/hashes.ts","../../src/packed-hashes.ts","../../index.ts"],"sourcesContent":["import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","\n// Code automatically generated using ./bin/builders/hashes.ts\nexport default new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195000,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851000,3116880000,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593000,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport packed from './data/hashes';\n\n/**\n * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)\n * using a binary search algorithm.\n */\nfunction binSearch(\n arr: Uint32Array,\n elt: number,\n start: number,\n end: number,\n): boolean {\n if (start >= end) {\n return false;\n }\n\n let low = start;\n let high = end - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid]!;\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return true;\n }\n }\n\n return false;\n}\n\n// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To\n// avoid having to allocate an array to store them at every invocation, we\n// create one global one that can be reused.\nconst BUFFER = new Uint32Array(20);\n\n/**\n * Iterate on hashes of labels from `hostname` backward (from last label to\n * first label), stopping after `maximumNumberOfLabels` have been extracted and\n * calling `cb` on each of them.\n *\n * The `maximumNumberOfLabels` argument is typically used to specify the number\n * of labels seen in the longest public suffix. We do not need to check further\n * in very long hostnames.\n */\nfunction hashHostnameLabelsBackward(\n hostname: string,\n maximumNumberOfLabels: number,\n): number {\n let hash = 5381;\n let index = 0;\n\n // Compute hash backward, label per label\n for (let i = hostname.length - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n // Process label\n if (code === 46 /* '.' */) {\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = i + 1;\n index += 1;\n\n if (index === maximumNumberOfLabels) {\n return index;\n }\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n // Let's not forget about last label\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = 0;\n index += 1;\n\n return index;\n}\n\nconst enum Result {\n NO_MATCH = 0,\n ICANN_MATCH = 1,\n PRIVATE_MATCH = 2,\n EXCEPTION_MATCH = 4,\n NORMAL_MATCH = 8,\n WILDCARD_MATCH = 16,\n}\n\n/**\n * Perform a public suffix lookup for `hostname` using the packed hashes\n * data-structure. The `options` allows to specify if ICANN/PRIVATE sections\n * should be considered. By default, both are.\n *\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const { allowIcannDomains, allowPrivateDomains } = options;\n\n // Keep track of longest match\n let matchIndex = -1;\n let matchKind = Result.NO_MATCH;\n let matchLabels = 0; // Keep track of number of labels currently matched\n\n // Index in the packed array data-structure\n let index = 1;\n\n const numberOfHashes = hashHostnameLabelsBackward(\n hostname,\n packed[0]! /* maximumNumberOfLabels */,\n );\n\n for (let label = 0; label < numberOfHashes; label += 1) {\n const hash = BUFFER[label << 1]!;\n const labelStart = BUFFER[(label << 1) + 1]!;\n // For each label, matching proceeds in the following way:\n //\n // 1. check exceptions\n // 2. check wildcards\n // 3. check normal rules\n //\n // For each of these, we also perform the lookup in two parts, once for\n // the ICANN section and one for the PRIVATE section. Both of which are\n // optional and can be enabled/disabled using the `options` argument.\n //\n // We start with exceptions because if an exception is found, we do not\n // need to continue matching wildcards or normal rules; the exception will\n // always have priority.\n //\n // Similarly, if we find a wildcard match, we do not need to check the\n // rules for the same label as the wildcard match is always longer (one\n // more label is matched).\n //\n // **WARNING**: the structure of this code follows exactly the structure\n // of the packed data structure as create in ./bin/builders/hashes.js\n\n let match = Result.NO_MATCH;\n\n // ========================================================================\n // Lookup exceptions\n // ========================================================================\n // ICANN\n if (allowIcannDomains) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (allowPrivateDomains && match === Result.NO_MATCH) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup wildcards\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup rules\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // If we found a match, the longest match that is being tracked for this\n // hostname. We need to remember which kind of match it was (exception,\n // wildcard, normal rule), the index where the suffix starts in `hostname`\n // as well as the number of labels contained in this suffix (this is\n // important to make sure that we always keep the longest match if there\n // are both a wildcard and a normal rule matching).\n if (match !== Result.NO_MATCH) {\n matchKind = match;\n matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);\n matchIndex = labelStart;\n }\n }\n\n out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;\n out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;\n\n // No match found\n if (matchIndex === -1) {\n out.publicSuffix =\n numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);\n return;\n }\n\n // If match is an exception, this means that we need to count less label.\n // For example, exception rule !foo.com would yield suffix 'com', so we need\n // to locate the next dot and slice from there.\n if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);\n return;\n }\n\n // If match is a wildcard, we need to match one more label. If wildcard rule\n // was *.com, we would have stored only 'com' in the packed structure and we\n // need to take one extra label on the left.\n if ((matchKind & Result.WILDCARD_MATCH) !== 0) {\n if (matchLabels < numberOfHashes) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);\n return;\n }\n\n const parts = hostname.split('.');\n while (parts.length > matchLabels) {\n parts.shift();\n }\n out.publicSuffix = parts.join('.');\n return;\n }\n\n // if ((matchKind & Result.NORMAL_MATCH) !== 0)\n // For normal match, we just slice the hostname at the beginning of suffix.\n out.publicSuffix = hostname.slice(matchIndex);\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/packed-hashes';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial<IOptions> = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n"],"names":["getDomain","getDomainWithoutSuffix","getSubdomain"],"mappings":"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C,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,CAAC,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAA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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js b/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js
new file mode 100644
index 0000000..14fd7fb
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+// Code automatically generated using ./bin/builders/hashes.ts
+exports.default = new Uint32Array([6, 0, 0, 9, 5860739, 5860978, 5861026, 5861029, 5861126, 5861352, 5861357, 5861403, 5861586, 0, 0, 0, 1, 1850179732, 0, 9, 328184559, 1866923597, 2123501943, 2282562397, 2795346450, 3130446446, 3136607046, 3453334789, 4194175729, 59, 3156266, 20989895, 65021741, 101876503, 179500755, 311298055, 460682395, 582839475, 819014943, 819028732, 870639071, 1075688039, 1139486022, 1241916785, 1335010188, 1370787547, 1370800824, 1431231509, 1498275876, 1522025464, 1544104458, 1554653742, 1570707647, 1626814538, 1630208269, 1675555530, 1679919230, 1687232530, 1730108052, 1789539963, 1893848785, 2001752368, 2023201532, 2182413090, 2391299855, 2419619562, 2445171142, 2496327381, 2525245455, 2573179642, 2703420555, 2709520566, 2762771525, 2921343336, 2989808530, 3000405309, 3015527775, 3047607849, 3382460164, 3420815319, 3461355676, 3498015045, 3738715095, 3810061811, 3843717774, 3934774481, 4085096371, 4146774829, 4208486561, 3692, 100835, 372942, 373596, 399643, 403867, 589540, 737224, 1210028, 1861414, 2424682, 2658901, 2946999, 3329363, 3333156, 6942202, 9086062, 9095117, 9267209, 9340158, 9485932, 11010102, 11406846, 16314893, 17546564, 18146303, 18331450, 19211200, 20314441, 20797457, 25057869, 26663359, 28320278, 30499151, 30585840, 36605120, 36775470, 36775473, 36990037, 39275208, 41892561, 42049478, 42538024, 45214788, 47656662, 50173535, 53599326, 53858455, 54537430, 63815836, 64422985, 64643127, 64831187, 69971116, 73517283, 73904368, 75706244, 78793775, 78794171, 79558910, 80324123, 84993902, 87977581, 87978853, 87978860, 93811268, 95641381, 95641777, 96671837, 100511481, 100947456, 108215410, 108929491, 110526112, 110662188, 112311307, 114507832, 116811054, 120488259, 122521550, 133427701, 134012911, 141513861, 141517490, 144349377, 144362028, 144550088, 144770230, 147205859, 147810002, 147989623, 149598895, 150736276, 150856054, 152379730, 156555774, 164189124, 164189258, 164189262, 164189691, 164189842, 164560958, 165069166, 165106627, 165107021, 165339368, 165444557, 165444558, 165444615, 165444629, 165444745, 165444749, 165445368, 165512129, 165512527, 165749053, 165749188, 165749299, 165749435, 165749535, 165779060, 167155067, 169909265, 169909275, 169909419, 169909512, 169909517, 169909531, 169909608, 169909724, 169909733, 169909734, 169909738, 169909857, 169910036, 169910195, 169910226, 169938982, 169939075, 169939172, 169939304, 169939334, 169939474, 169939481, 169939680, 169939682, 169939793, 169977029, 169977163, 170281136, 170281250, 170281253, 170281258, 170281275, 170281382, 170281390, 170281415, 170281447, 170281457, 170281473, 170281497, 170281511, 170281522, 170281525, 170281528, 170281579, 170281589, 170281687, 170281689, 170281699, 170281742, 170281776, 170281812, 170281852, 170281902, 170281972, 170311352, 170649202, 170649385, 170649596, 171188220, 172078401, 172145927, 172484120, 172484301, 172788260, 172788689, 172788693, 172788754, 172788809, 172788827, 173118530, 173118924, 173456648, 173591948, 173930212, 173930286, 174129293, 174306499, 174306893, 174307245, 174307439, 174358551, 174374100, 174407806, 174410098, 174488250, 174509317, 174577099, 174644617, 174843632, 174844030, 174847160, 175181758, 175524135, 175524873, 176843304, 176948764, 178529610, 178530165, 178530256, 178530299, 178530303, 178530355, 178868363, 178868576, 178868974, 179274397, 179274476, 179379459, 179379616, 179379624, 179379849, 179379853, 179380220, 179657877, 179692651, 179714168, 179913714, 180090112, 180090244, 180090304, 180090314, 180090337, 180090372, 180090450, 180090510, 180090525, 180090526, 180090587, 180090702, 180091049, 180091118, 180091210, 180091228, 180091258, 180091259, 180283722, 180292996, 180293014, 180293036, 180293067, 180293093, 180293105, 180293124, 180293152, 180293156, 180293169, 180293179, 180293199, 180293253, 180293290, 180293294, 180293300, 180293302, 180293304, 180293317, 180293344, 180293346, 180293381, 180293447, 180293487, 180293501, 180293503, 180293522, 180293535, 180293716, 180293796, 180293819, 180293997, 180294000, 180294004, 180294009, 180428032, 180902137, 180969265, 180969566, 180969653, 180969723, 181240259, 181240353, 181240367, 181240371, 181240391, 181240392, 181240393, 181240398, 181240404, 181240451, 181240474, 181240479, 181240483, 181240490, 181240509, 181240515, 181240844, 181240853, 181240956, 181241149, 181241165, 181241168, 181244839, 181375748, 181548621, 181548644, 181548727, 181548873, 181549108, 181549176, 181949900, 181950639, 182056031, 182385920, 182419943, 182893167, 182893283, 182893394, 182893788, 183163149, 183163151, 183163155, 183163168, 183163169, 183163171, 183163181, 183163182, 183163183, 183163186, 183163188, 183163233, 183163248, 183163251, 183163252, 183163254, 183163270, 183163303, 183163314, 183163317, 183163334, 183163335, 183163336, 183163340, 183163345, 183163347, 183163350, 183163362, 183163363, 183163365, 183163366, 183163367, 183163371, 183163375, 183163376, 183163378, 183163380, 183163383, 183163630, 183163631, 183163644, 183163649, 183163651, 183163653, 183163655, 183163664, 183163668, 183163669, 183163678, 183163679, 183163682, 183163687, 183163713, 183163715, 183163728, 183163731, 183163735, 183163742, 183163777, 183163779, 183163780, 183163781, 183163783, 183163796, 183163797, 183163801, 183163843, 183163845, 183163847, 183163859, 183163864, 183163865, 183163874, 183163895, 183163897, 183163913, 183163922, 183163933, 183163960, 183163961, 183163963, 183163977, 183163978, 183163979, 183163981, 183163988, 183163989, 183163991, 183163992, 183163994, 183163995, 183163998, 183164008, 183164010, 183164012, 183164021, 183164025, 183164026, 183164027, 183164029, 183164041, 183164044, 183164045, 183164047, 183164050, 183164051, 183164057, 183164060, 183164061, 183164093, 184080938, 184081253, 184081673, 184081677, 184081778, 184246330, 184246511, 184486318, 184486865, 184487263, 184828195, 184828212, 184844696, 184844824, 184848486, 184848491, 184849029, 184849387, 184859173, 184869208, 184869819, 184994607, 185163947, 185216284, 185289081, 185292632, 185295605, 185501943, 185502073, 185502077, 185772974, 186723357, 186723671, 186723801, 186763265, 186771866, 186840059, 186858006, 186875993, 186950941, 186953244, 186994101, 186994720, 187011432, 187022814, 187064894, 187067400, 187076090, 187078647, 187088813, 187161171, 187188812, 187203075, 187219343, 187222314, 187251332, 187328908, 187332203, 187378741, 187385256, 187386889, 187403121, 187403860, 187404132, 187409119, 187410536, 187415116, 187415841, 187417183, 187453423, 187455618, 187483569, 187506658, 187521457, 187531575, 187554851, 187557872, 187932036, 187932044, 187932595, 187932730, 187932752, 187932756, 187932794, 187932985, 187932989, 189851312, 190236828, 190304994, 190305388, 190372512, 190372516, 190372621, 190372839, 190373457, 190575460, 190575594, 190879986, 191043224, 191246659, 191458643, 191459037, 191524213, 193856736, 193857103, 193857114, 193857243, 193991787, 194363750, 194498585, 194498630, 194498988, 194499056, 194499063, 194532263, 194532626, 194532630, 194532693, 194532760, 194532936, 194533115, 194802308, 194802313, 194802316, 194802351, 194802818, 194802832, 194802974, 194803141, 194803143, 194803161, 194803226, 194803230, 194836546, 194870589, 194870610, 194871004, 195040013, 195040230, 195040360, 195077902, 195078025, 195078028, 195078034, 195078035, 195078038, 195078058, 195078062, 195078071, 195078081, 195078095, 195078112, 195078119, 195078120, 195078149, 195078150, 195078156, 195078185, 195078215, 195078217, 195078250, 195078251, 195078272, 195078273, 195078277, 195078283, 195078287, 195078298, 195078299, 195078300, 195078368, 195078372, 195078375, 195078394, 195078464, 195078474, 195078493, 195078531, 195078554, 195078559, 195078687, 195078710, 195078753, 195078828, 195078837, 195078892, 195078895, 195078900, 195078906, 195078959, 195078960, 195078974, 195078995, 195078997, 195079007, 195146051, 195817892, 195817910, 195818040, 196653590, 197775763, 198219289, 198248729, 198354195, 198354632, 202063369, 203326381, 203326382, 203326695, 203326709, 203326825, 203326829, 203327047, 203327192, 203360584, 203427712, 203428110, 203563443, 203563837, 203664976, 203665374, 203762913, 203901612, 204069808, 206121592, 207568995, 208227118, 218659706, 219797064, 231775478, 232791016, 232866163, 232870916, 237059472, 238230825, 238671321, 241611072, 245880244, 249954601, 256262487, 257210252, 257542887, 259829097, 260353797, 260353928, 260353938, 260354380, 260381156, 260390354, 271387034, 274691435, 279382168, 280527902, 280532777, 280535076, 280542659, 281931451, 292827804, 295209043, 296292341, 297619746, 305011770, 306510696, 313583000, 314643431, 320313766, 320318114, 321023689, 321141002, 321447655, 325454853, 326762411, 337081594, 338040061, 339830659, 340010259, 341833935, 342149828, 342665371, 356194258, 359223603, 359276554, 360327984, 368215882, 370146306, 370150662, 373255328, 373394720, 374785091, 376173808, 377307531, 377336144, 377652210, 379825795, 380248845, 380316586, 381874529, 381884647, 382049883, 382486912, 382598847, 389069795, 389909922, 392084057, 393290800, 395076177, 395140257, 402724451, 403769719, 404122044, 410188633, 413977571, 418962805, 419080649, 423458772, 430711818, 430784915, 431116435, 431157415, 431370962, 431390595, 431489022, 431585240, 431586828, 431608121, 433686700, 442888655, 442922019, 445176561, 449218512, 449424719, 451217894, 451870618, 459172225, 459395692, 464626711, 464765206, 464834904, 469098393, 471052880, 478642118, 480635114, 480636362, 480638119, 480638181, 480638612, 480653244, 480658155, 480658807, 484603510, 484645735, 486805732, 490264076, 490274093, 493445761, 511578298, 513731936, 514111995, 514955151, 515474792, 515491843, 515593995, 518161197, 520595267, 522631343, 523234636, 525872321, 527144416, 531427447, 533682535, 533847771, 534396735, 545433338, 547443445, 550462929, 551440509, 557981738, 559064708, 560636591, 572640614, 572652435, 572800203, 572833146, 572867160, 575127842, 575742406, 575835832, 576106402, 576590271, 577168455, 582462766, 583917065, 583936789, 584490345, 587768078, 588145733, 596395114, 596517435, 602054693, 609523853, 627471386, 630686153, 632559259, 635121653, 635859009, 637007260, 643488605, 643663853, 648304671, 650538190, 656171171, 656243914, 656640963, 665693626, 667797222, 678076451, 679253935, 684522993, 684536293, 689172736, 689202009, 693611235, 694324728, 695649196, 703142796, 706540885, 707132367, 715533184, 722903474, 725879070, 728415570, 731964179, 733989474, 744440632, 745674128, 752520493, 752687122, 752687226, 752699150, 752938578, 753314817, 762792020, 766278458, 771168358, 772916985, 785945688, 787032422, 793080342, 794341423, 794638681, 799598398, 803443550, 803504423, 803576910, 803750530, 804899040, 810638083, 813049915, 813882670, 813882809, 821390609, 822184173, 824372117, 826639012, 826993974, 827624512, 831815016, 834750300, 834856638, 834963202, 835666250, 838463501, 843454848, 845393562, 845537310, 846032279, 853098265, 855980394, 858467853, 869651422, 878524814, 881613818, 885943745, 896206971, 896253025, 900375831, 900562876, 904696072, 907903147, 911040096, 912288153, 912452591, 913046780, 914761571, 915088911, 915769822, 915838470, 919008564, 919376364, 928343570, 933141848, 935240483, 936096500, 939243980, 939281294, 939375524, 939697158, 939922440, 940027871, 942743627, 943328481, 943363810, 947022624, 950098348, 954017396, 958817278, 959069811, 961909457, 961915153, 962363178, 962549619, 963013768, 968961134, 973306633, 973587946, 973591516, 973595243, 973613934, 973618563, 976871270, 977251657, 983929219, 983931665, 983936021, 984542401, 985854160, 994961720, 1002154839, 1005485664, 1005660307, 1005931709, 1008280710, 1009678005, 1015938248, 1018008327, 1024510565, 1027688850, 1033879086, 1034357170, 1038843968, 1039500800, 1043537387, 1043742405, 1044060157, 1045601283, 1046273911, 1046743273, 1046756254, 1048099261, 1052311686, 1052441930, 1052883806, 1055187548, 1056740120, 1058016469, 1059921109, 1068743400, 1072264613, 1080832696, 1083646554, 1084662717, 1086607170, 1086818213, 1086839634, 1087030220, 1087432248, 1087540767, 1088313455, 1101657937, 1101658065, 1102136407, 1102691201, 1104888372, 1107574816, 1107604513, 1107608406, 1114346722, 1115517588, 1116603570, 1116886791, 1121068214, 1121069468, 1123274870, 1123277038, 1123281470, 1123286137, 1123300855, 1135543458, 1135544712, 1135545955, 1135553917, 1135559494, 1135563376, 1141006631, 1141018311, 1142918810, 1143019669, 1145288372, 1146787097, 1149112251, 1151589762, 1152383075, 1153556935, 1153560693, 1153560855, 1153576209, 1153582928, 1155609853, 1158010336, 1158014282, 1158019276, 1158022529, 1158025585, 1158030151, 1158040127, 1158040853, 1158043091, 1160141196, 1160245697, 1160246728, 1160253683, 1160271099, 1160271446, 1160272445, 1160277399, 1161223806, 1161235355, 1162489113, 1166908086, 1166937977, 1166949933, 1166952503, 1166953757, 1166959964, 1169030529, 1169037994, 1169039382, 1169046802, 1169046815, 1169048548, 1169054036, 1169994302, 1171270800, 1171270813, 1172775704, 1174042111, 1174752677, 1174762471, 1175721241, 1175725254, 1175726508, 1175727467, 1175727495, 1175735444, 1175735449, 1175736592, 1175738385, 1175738578, 1175738760, 1175746250, 1175746252, 1175749986, 1175793566, 1181427747, 1181429001, 1181435208, 1181446765, 1181453654, 1181460959, 1185692184, 1189090107, 1193567716, 1194400508, 1204258276, 1204470469, 1207765705, 1207825797, 1208230324, 1208517393, 1208911775, 1211364607, 1212671635, 1214258492, 1217924538, 1220965831, 1229000062, 1229783327, 1232816452, 1237771172, 1237773393, 1237773841, 1245899123, 1247245722, 1257366451, 1260762188, 1261854970, 1265324777, 1265669119, 1273073240, 1280280379, 1280768035, 1291368159, 1295085673, 1296518360, 1297048848, 1300364681, 1303650868, 1304687455, 1304781392, 1304918086, 1305056028, 1306968125, 1306972554, 1306973586, 1307665177, 1308558601, 1308559744, 1308574194, 1308583254, 1308584508, 1308585495, 1310785148, 1310799239, 1310800921, 1310801269, 1310803416, 1310807041, 1310808370, 1311349087, 1313021694, 1313023237, 1313030377, 1314270973, 1314287001, 1314293208, 1321085506, 1324313259, 1324313985, 1324320704, 1324322270, 1324332261, 1324636022, 1325293061, 1325300526, 1325303158, 1325308368, 1325309334, 1325309339, 1325310241, 1325310486, 1325311328, 1325311482, 1326707500, 1328209699, 1328777903, 1328778629, 1328785348, 1328786906, 1328789635, 1328794451, 1328797153, 1329963165, 1329987910, 1330666198, 1330807345, 1330903052, 1331009222, 1331010221, 1331013633, 1331015175, 1331019352, 1331025251, 1331026645, 1331028446, 1331143849, 1335892543, 1336436046, 1336436772, 1336437775, 1336438057, 1336439236, 1336443338, 1336449024, 1336456660, 1336460266, 1336462620, 1336463768, 1336469142, 1341018428, 1341081128, 1341091249, 1341179896, 1342001696, 1344411053, 1344426134, 1344436952, 1344437939, 1344444146, 1346529166, 1349466130, 1350170659, 1350170661, 1350356518, 1350356534, 1350620578, 1351056251, 1351154191, 1351382419, 1351445663, 1354447091, 1354448055, 1354464484, 1354467042, 1354475004, 1354584300, 1355466970, 1355483586, 1355607656, 1355929695, 1355947655, 1356150953, 1356150969, 1356150973, 1356457867, 1356471002, 1356757572, 1357692080, 1357876668, 1357880232, 1360043731, 1360220638, 1362168625, 1362262729, 1362271868, 1362285703, 1362326863, 1362506071, 1362656266, 1365811994, 1367692098, 1367811071, 1368820926, 1369663049, 1377739598, 1378565283, 1379014609, 1383613953, 1383613964, 1383629111, 1383647122, 1385857457, 1385879444, 1388074128, 1388078600, 1388084119, 1388086017, 1388094003, 1388104573, 1388109527, 1388111766, 1390304957, 1390318095, 1390319238, 1390327192, 1390328435, 1390329689, 1391292472, 1391295130, 1391298115, 1391299402, 1391302044, 1391307254, 1391308253, 1392560940, 1396553940, 1397006395, 1397007527, 1397007872, 1397007885, 1397015305, 1397016949, 1397022431, 1400354688, 1400355947, 1400356673, 1400360856, 1400364702, 1400366245, 1401741660, 1407053336, 1407067683, 1409840426, 1410939834, 1414623055, 1417953492, 1417953925, 1417969521, 1417971248, 1418042854, 1418666866, 1422407147, 1422418384, 1422432926, 1422434165, 1422435892, 1423090882, 1425971467, 1426162994, 1426865884, 1426871783, 1426872814, 1426880658, 1426881913, 1426884152, 1428612014, 1429098926, 1429105132, 1429112250, 1430623854, 1433558874, 1433568865, 1433577620, 1433578879, 1435862377, 1444705448, 1444706435, 1444707945, 1444708598, 1444713016, 1444718265, 1444720166, 1444723003, 1444725453, 1444731199, 1444731564, 1444731950, 1444732047, 1444732342, 1444732347, 1444738453, 1448052138, 1448052864, 1448054123, 1448067662, 1448078965, 1449172589, 1452091461, 1453961462, 1457037634, 1457145422, 1457156469, 1457178704, 1459376581, 1459377857, 1459377868, 1459384567, 1459385707, 1459403577, 1459405260, 1459408531, 1463053013, 1463840740, 1463842504, 1463849459, 1463849797, 1463867222, 1463868221, 1463873175, 1464819582, 1464821125, 1464829402, 1464830128, 1464831131, 1465838987, 1466068861, 1466074694, 1466091096, 1466403701, 1467047928, 1467061763, 1467063453, 1467065948, 1467070902, 1468307140, 1468314970, 1468321435, 1469284474, 1469285761, 1469294772, 1469295775, 1471526086, 1474720970, 1474751199, 1474796155, 1474852365, 1474856386, 1474857640, 1474858627, 1474866589, 1474867476, 1474871748, 1474880870, 1482183211, 1482187228, 1482389973, 1486003341, 1486005836, 1486010790, 1486021608, 1486029338, 1486036499, 1486036510, 1491300687, 1492905126, 1495099017, 1496999162, 1497335658, 1497338257, 1497341434, 1497353781, 1497360500, 1497361503, 1503214457, 1504022303, 1504024292, 1504032122, 1504033105, 1504038587, 1509379857, 1510741574, 1511059454, 1514359714, 1514604870, 1517410020, 1517415502, 1517416485, 1517424315, 1517426048, 1519466742, 1519486936, 1521633706, 1524564715, 1526518672, 1534242148, 1535379077, 1535411852, 1535416972, 1535418272, 1535419013, 1535426999, 1535427585, 1535429447, 1535437817, 1535442771, 1535445010, 1538631370, 1539876488, 1539883905, 1539891891, 1539902461, 1539907415, 1539909654, 1540853566, 1540863813, 1540865371, 1540871834, 1540872816, 1540972285, 1544565822, 1547523228, 1548000883, 1548203684, 1548662272, 1548668010, 1548668993, 1548676831, 1548677846, 1548686756, 1550655859, 1551291701, 1552780862, 1554083280, 1554160502, 1556617220, 1556618479, 1556619205, 1556627226, 1556629025, 1571587981, 1572843623, 1577978899, 1578737375, 1579027766, 1580891870, 1580902117, 1580903020, 1580910138, 1580910864, 1581061599, 1584242651, 1584252576, 1584258687, 1584260414, 1584261397, 1594150134, 1594318433, 1594644051, 1595762332, 1596345927, 1596503336, 1599871881, 1600554193, 1600562964, 1600967980, 1600968967, 1600970477, 1600988233, 1600993979, 1600994866, 1600997301, 1601541268, 1602995891, 1603061457, 1604314670, 1604316655, 1604330442, 1604341489, 1604342648, 1605183784, 1605406132, 1605908391, 1607689728, 1607689741, 1607690628, 1607701062, 1607701276, 1607705078, 1607710365, 1607715640, 1607716607, 1607716627, 1608344260, 1610313759, 1610666926, 1611239998, 1611396088, 1614382839, 1614530679, 1615167003, 1615172374, 1615640392, 1615647347, 1615658840, 1615665110, 1615666109, 1615671063, 1620094847, 1620095619, 1620095929, 1620105028, 1620113841, 1620119323, 1620795340, 1621082362, 1621083649, 1621092660, 1622329964, 1622331641, 1622337218, 1622353628, 1623408910, 1624559739, 1624569664, 1624577502, 1624577906, 1624578485, 1626556599, 1628470609, 1630022199, 1632310642, 1633163415, 1635568907, 1635591150, 1635593749, 1635643420, 1635994183, 1635994320, 1641006393, 1645672758, 1645785364, 1645803376, 1645808858, 1645809841, 1646891621, 1646892908, 1646907799, 1646910247, 1646917618, 1646918617, 1648006829, 1648007716, 1648013185, 1648013984, 1648016015, 1648021910, 1648025704, 1648032728, 1648033439, 1648033715, 1648035901, 1648039922, 1648043240, 1649119056, 1649454738, 1649581121, 1652486802, 1652497372, 1652504566, 1652932064, 1652936599, 1653583645, 1653598182, 1653599929, 1653606136, 1653607123, 1654697756, 1654712103, 1654713134, 1654716280, 1654721234, 1654722233, 1656168200, 1659162648, 1659176739, 1659180924, 1659185878, 1659186877, 1659695250, 1660874915, 1664393911, 1666510724, 1668155429, 1669474757, 1673661122, 1673662353, 1673671436, 1673686839, 1673856704, 1674136053, 1674769898, 1674770881, 1674776363, 1674793871, 1675780006, 1676641114, 1677004461, 1677008482, 1677010668, 1677010688, 1677011655, 1677022217, 1677030942, 1677037554, 1679194024, 1679234542, 1679234666, 1679237897, 1679241007, 1679252114, 1679258763, 1679261552, 1679266928, 1681499983, 1681500998, 1681504918, 1681510964, 1681520272, 1681526010, 1681526993, 1682221833, 1682359277, 1685960411, 1685962398, 1685964612, 1685965520, 1685965569, 1685965582, 1685965890, 1685967499, 1685968865, 1685974082, 1685987547, 1685988215, 1685988552, 1685991645, 1686112357, 1686592668, 1686670946, 1687209740, 1690419670, 1690419852, 1690423356, 1690429255, 1690430286, 1690438386, 1690439385, 1690439477, 1691674376, 1691689779, 1691700349, 1691705303, 1691707542, 1691739899, 1692242488, 1693900733, 1693904467, 1693911703, 1693913871, 1693915014, 1693915019, 1693922968, 1693923252, 1693924211, 1693925465, 1696514991, 1697110779, 1697112784, 1697112842, 1697116346, 1697119048, 1697126337, 1697127463, 1697127903, 1697134366, 1697135348, 1699859798, 1705948764, 1706596362, 1707661217, 1709380801, 1709397036, 1709401602, 1709403991, 1709403994, 1709715630, 1709719753, 1710553669, 1710842194, 1711349139, 1711911296, 1712862856, 1712864099, 1712865353, 1712874413, 1712889750, 1715042583, 1716067791, 1716074254, 1716075236, 1716090026, 1716093784, 1716101073, 1716987897, 1717046504, 1717344945, 1717458342, 1717567159, 1717665490, 1720424110, 1720435157, 1720448732, 1720448944, 1720449947, 1720450929, 1722611952, 1723770733, 1723771620, 1723777366, 1723796376, 1723797619, 1723869014, 1724144999, 1724360630, 1724888746, 1724891334, 1724900049, 1724902970, 1724913368, 1724913588, 1724914591, 1724915573, 1727744610, 1733044570, 1737465416, 1740104597, 1740108386, 1741479646, 1741618915, 1741621154, 1741622153, 1741631292, 1741636935, 1741709977, 1742216984, 1743089654, 1744959211, 1744968590, 1744969829, 1744971556, 1744977659, 1744987840, 1745343269, 1745488513, 1746392299, 1747200908, 1747202151, 1747210105, 1747211248, 1747212978, 1747215938, 1747219291, 1747533677, 1747671543, 1747762259, 1748301224, 1748301648, 1748302211, 1748318651, 1748321229, 1748327140, 1748327340, 1748328118, 1748329946, 1749416322, 1749419816, 1749422630, 1749422974, 1749423815, 1749423848, 1749423862, 1749423980, 1749432545, 1749435316, 1749435457, 1749435956, 1749437829, 1749437986, 1749440303, 1749441388, 1749442296, 1749442361, 1749443256, 1749443576, 1749444398, 1749445477, 1749445739, 1749750164, 1749955965, 1752768365, 1753028168, 1753430927, 1753880966, 1753882221, 1753900232, 1753906931, 1756680747, 1759105063, 1762715404, 1763952265, 1763967858, 1763978172, 1763979159, 1765274516, 1768132013, 1774870841, 1775278057, 1776446407, 1778765218, 1779479261, 1779706923, 1779707649, 1779709525, 1779713177, 1779714057, 1779714368, 1779715934, 1779715971, 1779725925, 1779730307, 1779731494, 1780768183, 1781938242, 1781939241, 1781944195, 1781948380, 1781954023, 1781961852, 1783657515, 1785147288, 1785152492, 1785564290, 1786402886, 1786403885, 1786408839, 1786413016, 1786418915, 1786422601, 1793085197, 1793091404, 1793103209, 1793109842, 1794311882, 1796513490, 1798682988, 1799934413, 1800873944, 1804734874, 1804986274, 1805201900, 1805201909, 1805381533, 1805390218, 1805394927, 1805396070, 1805397817, 1805404024, 1805410294, 1808346875, 1809278593, 1809846425, 1809852765, 1809854826, 1809860706, 1809868668, 1809869655, 1809909084, 1810126394, 1810162729, 1811189710, 1812804641, 1813167465, 1818860644, 1819164253, 1824377544, 1826567786, 1826567942, 1826568769, 1826574251, 1826586852, 1826591759, 1826593533, 1826594804, 1826595685, 1826597041, 1826838298, 1830073720, 1832102940, 1835526804, 1835527882, 1835530317, 1835531888, 1835536950, 1835540435, 1835541852, 1835548479, 1835548755, 1835552425, 1835554706, 1835556216, 1836706536, 1838062951, 1839007628, 1839021100, 1839022775, 1839033593, 1839038547, 1839040786, 1839994953, 1840001842, 1840013399, 1840019350, 1840019827, 1840020860, 1843076481, 1845608978, 1846070315, 1848013570, 1854921046, 1859450748, 1859510931, 1859511204, 1860240647, 1860312281, 1860334137, 1861101595, 1863024310, 1866891339, 1866893066, 1866896736, 1866908847, 1866910185, 1866914026, 1867191437, 1867861768, 1867865679, 1867867083, 1867872142, 1867873124, 1867876289, 1867885376, 1867885466, 1867887914, 1867892691, 1867897750, 1867898961, 1867899162, 1873521117, 1875950626, 1878219696, 1883713830, 1883718737, 1883722494, 1883726489, 1883992567, 1884025074, 1889208808, 1889317056, 1890185274, 1890552293, 1891315242, 1893129355, 1894534152, 1894535395, 1894543357, 1894548934, 1895822736, 1896748195, 1896864381, 1896883495, 1896884690, 1896893413, 1897086584, 1897144569, 1897150382, 1897161336, 1898308423, 1899713189, 1903920486, 1903920882, 1906518923, 1906815088, 1907758428, 1907908343, 1907910446, 1907911172, 1907924055, 1907926218, 1907937265, 1910568778, 1912588116, 1912664290, 1912773142, 1919704439, 1919708663, 1925589573, 1928014104, 1931786446, 1933270769, 1933847987, 1934282690, 1935832225, 1937137824, 1940180687, 1941545223, 1944881831, 1944883085, 1944889292, 1944901097, 1944907730, 1944915291, 1947690884, 1949378607, 1949381140, 1949385828, 1949388221, 1949404634, 1953208595, 1957126749, 1965980590, 1966393263, 1967560433, 1968030901, 1968344522, 1968345101, 1968353343, 1968354820, 1969952988, 1969953274, 1970271924, 1982830318, 1982831301, 1982836783, 1982854539, 1982856313, 1982857328, 1982862253, 1982863214, 1983945412, 1983946415, 1983946627, 1983953134, 1983957025, 1983968650, 1983971249, 1983972408, 1983977373, 1985096774, 1985106740, 1985116048, 1985122769, 1987638584, 1989155232, 1991785536, 1991792841, 1991799730, 1991811287, 1991817238, 1991817715, 1991818748, 1994019132, 1994026062, 1994028952, 1994613365, 2000627256, 2002587178, 2002703477, 2004080420, 2007546240, 2007547499, 2007556254, 2007557797, 2009780252, 2013938002, 2016158046, 2016458632, 2016459875, 2016461129, 2016470189, 2016476340, 2016482461, 2016485526, 2019785049, 2023148389, 2023153871, 2023155598, 2023156002, 2023157760, 2023171627, 2023174160, 2023812622, 2029256230, 2029286951, 2029296544, 2037064184, 2042215210, 2042272668, 2042423451, 2043073993, 2044012869, 2046744295, 2047386704, 2047490213, 2047625030, 2047828609, 2051192703, 2052284669, 2056364987, 2056365175, 2056459861, 2057257910, 2058376024, 2058382302, 2058436464, 2058440319, 2058445367, 2058448694, 2058452545, 2058552215, 2058569521, 2058573621, 2058924197, 2058929805, 2058958371, 2058984507, 2058988863, 2059003240, 2059051015, 2059075746, 2059422408, 2059824807, 2061714098, 2062014471, 2063260135, 2063415690, 2063627333, 2063814283, 2064238717, 2064313581, 2064484772, 2064499575, 2064635107, 2064635452, 2064635773, 2064639428, 2064639883, 2064648773, 2064654772, 2064655646, 2065476844, 2065542420, 2065542544, 2065543022, 2065727011, 2066567940, 2066734284, 2066828553, 2066833534, 2067202738, 2067233317, 2068031208, 2068725531, 2068831008, 2068854498, 2068854512, 2068858196, 2068859575, 2068860177, 2068862627, 2068863232, 2068869021, 2068950273, 2068994789, 2068994807, 2069062998, 2069102686, 2069161595, 2069263945, 2069338842, 2069365704, 2069468800, 2069558220, 2069561350, 2069566268, 2069591394, 2069593072, 2069595618, 2069600040, 2069600946, 2069600957, 2069604100, 2069765192, 2069904166, 2069904305, 2071035931, 2071149679, 2071643658, 2073289171, 2073308845, 2073310709, 2073312474, 2073322881, 2073335784, 2073440452, 2073448514, 2073457247, 2073500084, 2073509625, 2073523923, 2073533208, 2073640292, 2073794194, 2073803151, 2073803461, 2073808229, 2073811616, 2073811996, 2073815760, 2073826308, 2073826688, 2073827152, 2073830759, 2073831593, 2073831601, 2074299520, 2075044848, 2075423284, 2075693433, 2078935992, 2078936931, 2078937889, 2078937913, 2078938163, 2078938295, 2078944407, 2078944555, 2078944613, 2078944933, 2081181239, 2082063743, 2082285629, 2082430948, 2084946688, 2086083080, 2087431076, 2087431077, 2087431079, 2087431080, 2087431081, 2087431082, 2087431085, 2087431086, 2087431087, 2087431088, 2087431089, 2087431090, 2087431091, 2087431092, 2087431093, 2087431094, 2087431096, 2087431097, 2087431098, 2087431099, 2087431100, 2087431102, 2087431103, 2087617590, 2087617591, 2087617592, 2087617593, 2087617594, 2087617595, 2087617596, 2087617597, 2087617598, 2087617599, 2087617632, 2087617633, 2087617634, 2087617635, 2087617636, 2087617637, 2087617638, 2087617639, 2087617640, 2087617641, 2087617642, 2087617643, 2087617644, 2087617645, 2087617647, 2087617652, 2087617654, 2087617655, 2087617656, 2087617657, 2087617658, 2087617659, 2087617660, 2087617661, 2087617662, 2087617663, 2087629931, 2087822490, 2088302297, 2088726760, 2088953542, 2090213881, 2090218574, 2090297888, 2090298020, 2090439875, 2090439900, 2091225604, 2092577468, 2092702023, 2092715579, 2092766986, 2092957042, 2093991393, 2093995617, 2093995632, 2097113374, 2098599777, 2098599792, 2099138174, 2102249573, 2102285158, 2102285168, 2102285285, 2102285374, 2102286572, 2102291553, 2102297313, 2102301463, 2102304381, 2102311282, 2102312281, 2102313468, 2102315379, 2102317235, 2102322718, 2103529616, 2105684477, 2105873178, 2106751208, 2106757636, 2106766355, 2106769656, 2106775467, 2106775926, 2106776925, 2106781879, 2118750891, 2119037299, 2119037310, 2119041270, 2119043865, 2119381911, 2119891962, 2120136928, 2120142410, 2120143393, 2120151231, 2120152708, 2121629990, 2122433548, 2123414271, 2123472843, 2123472936, 2123472941, 2123472990, 2123479292, 2123481132, 2123481326, 2123481391, 2123481939, 2123481960, 2123482409, 2123482928, 2123482935, 2123485221, 2123485512, 2123485548, 2123486092, 2123487587, 2123487602, 2123487868, 2123488061, 2123488218, 2123489049, 2123491458, 2123491494, 2123491502, 2123491940, 2123491950, 2123491964, 2123492067, 2123492380, 2123492410, 2123492613, 2123492943, 2123493403, 2123494323, 2123494721, 2123494806, 2123495205, 2123495222, 2123495263, 2123495538, 2123495599, 2123495615, 2123495829, 2123496707, 2123496945, 2123497027, 2123497539, 2123498152, 2123498482, 2123498621, 2123498738, 2123499337, 2123499387, 2123499393, 2123499675, 2123499817, 2123499823, 2123500085, 2123500670, 2123501043, 2123501651, 2123501946, 2123502012, 2123502614, 2123502618, 2123502909, 2123502931, 2123502972, 2123503489, 2123503580, 2123503633, 2123503639, 2123503645, 2123503683, 2123503690, 2123503871, 2123503914, 2123503925, 2123506021, 2123508761, 2123508887, 2123508888, 2123509104, 2123509367, 2123510210, 2126830924, 2126831627, 2126831911, 2126831915, 2126834731, 2126838118, 2126839865, 2126841008, 2126851442, 2126854146, 2127933481, 2127939688, 2127940675, 2127945958, 2127950989, 2127966582, 2130163562, 2130164545, 2130170027, 2130187535, 2130190580, 2131286378, 2132327224, 2132331087, 2132359596, 2133546426, 2134655216, 2135730753, 2135744303, 2135751022, 2135766376, 2135766538, 2136033383, 2136198665, 2140379406, 2140382005, 2140404240, 2140405499, 2140406225, 2141369520, 2141378580, 2141384318, 2142607534, 2142608862, 2142616598, 2142619146, 2143588731, 2143590729, 2143592861, 2143597618, 2143609175, 2143615126, 2143616636, 2144000095, 2144838611, 2144844042, 2144846897, 2144858266, 2144868884, 2144870143, 2144870869, 2157945278, 2158338411, 2160318468, 2160324206, 2160325189, 2160333019, 2160343200, 2161569257, 2161578129, 2161578140, 2161592231, 2161595735, 2165898261, 2166038855, 2166996811, 2167003274, 2167004256, 2167015877, 2167018798, 2167213797, 2167993101, 2169327252, 2170481633, 2170487115, 2170488842, 2170504623, 2170507412, 2174946277, 2174951759, 2174953486, 2174953890, 2174969515, 2174972048, 2176528068, 2179101309, 2180545870, 2191744103, 2191744212, 2191821366, 2191883015, 2192566334, 2193960351, 2195897610, 2195898849, 2195906687, 2195916612, 2195922100, 2196631346, 2205406696, 2211506222, 2216825796, 2219145843, 2221394610, 2225058301, 2225061335, 2225064134, 2225071439, 2225073075, 2225080536, 2226037368, 2226044042, 2226051203, 2226052893, 2226055388, 2226060342, 2226419862, 2229788675, 2230793522, 2230840997, 2231615745, 2231617728, 2231623210, 2231628742, 2231632031, 2231633170, 2231633764, 2231638049, 2231729235, 2231751291, 2231760201, 2231761216, 2231769054, 2231770037, 2231775519, 2233884981, 2235097422, 2235100587, 2235101313, 2235108032, 2235109598, 2235116887, 2235119589, 2236869449, 2241796550, 2241797549, 2241806680, 2241812579, 2242828527, 2246244298, 2246245281, 2246250763, 2246260079, 2246271316, 2247223374, 2247249937, 2247251096, 2248592412, 2250708942, 2250715407, 2250719552, 2250724971, 2250725805, 2250733692, 2250734937, 2250735952, 2258665553, 2258878642, 2264886749, 2266447633, 2267607000, 2274782645, 2282544968, 2285662351, 2290599544, 2292158595, 2293175691, 2293351636, 2296071446, 2299255515, 2301040846, 2306079466, 2307580553, 2313241363, 2313504811, 2318220358, 2320224028, 2325476095, 2337176745, 2339504386, 2344847762, 2345345412, 2345556981, 2346482211, 2346482871, 2351498341, 2352240646, 2352738840, 2358991500, 2361087993, 2364634824, 2371011349, 2373457221, 2375393789, 2376425283, 2379512524, 2379580075, 2390286898, 2390518325, 2390736011, 2392516839, 2392521063, 2400874900, 2400879124, 2402335630, 2404974948, 2405102721, 2405117283, 2405120727, 2414810349, 2415093005, 2415923742, 2415925541, 2415935547, 2415976346, 2418152088, 2422623072, 2422625395, 2422631927, 2422634373, 2422636295, 2422636392, 2425962056, 2425963043, 2425969250, 2425969487, 2425971892, 2425985030, 2428197348, 2428202830, 2428203813, 2428211643, 2428212914, 2428213376, 2428240545, 2430223084, 2433759338, 2433759634, 2433760321, 2433765803, 2433783311, 2433785126, 2433786356, 2433788522, 2435993901, 2436000108, 2436001095, 2436011657, 2436026994, 2439339076, 2439340079, 2439340291, 2439346798, 2439350689, 2439362314, 2439364913, 2439366072, 2439371037, 2439876345, 2440431898, 2440444045, 2440449369, 2444112661, 2447928023, 2452264162, 2454797153, 2458316286, 2459819944, 2462285242, 2462802458, 2463186757, 2466741694, 2466758807, 2467213089, 2467545358, 2467601561, 2467655846, 2467686484, 2467740953, 2473985870, 2474042431, 2474150919, 2474285829, 2474577412, 2474661520, 2475343068, 2475470210, 2475772433, 2475877012, 2475877016, 2475892298, 2476213365, 2476552306, 2479517659, 2489453909, 2489531547, 2498555779, 2501597440, 2507278661, 2510852110, 2511694664, 2512156190, 2540805343, 2543008264, 2547140668, 2553182506, 2558063998, 2558416820, 2560726248, 2564751176, 2566787042, 2569608194, 2572602371, 2577853220, 2579803386, 2583084289, 2586020617, 2600402029, 2604613571, 2614694552, 2616608417, 2623678483, 2624091113, 2626979216, 2627765050, 2629831661, 2630340943, 2630577386, 2637047575, 2637160117, 2637393619, 2637589507, 2639283063, 2642320383, 2657728452, 2661288721, 2663538084, 2673250796, 2673678071, 2673953045, 2683622002, 2686768508, 2689921282, 2691751732, 2691869931, 2692015714, 2693065457, 2693628719, 2694158948, 2699054734, 2699567323, 2701589506, 2708247797, 2710218932, 2712973569, 2713114330, 2714570818, 2714658156, 2715859111, 2716538256, 2717691085, 2718235570, 2719851426, 2722275573, 2728431851, 2731033959, 2733567145, 2745064373, 2747735009, 2748168364, 2748310006, 2753354596, 2761147374, 2762813598, 2767767034, 2769808878, 2775691349, 2789347571, 2792452218, 2793624174, 2794767436, 2795183554, 2795185357, 2795205893, 2798224110, 2803597621, 2804113804, 2807804736, 2809486328, 2813025413, 2815428841, 2815585428, 2816618421, 2819662823, 2822221150, 2824682484, 2828575765, 2828866516, 2829935276, 2834927579, 2836892761, 2839658405, 2844621372, 2844815106, 2845489684, 2845638303, 2857193006, 2860702321, 2870435535, 2874906565, 2880233005, 2885526550, 2889073982, 2893961579, 2896115089, 2896360091, 2896815948, 2898520762, 2898642745, 2908250170, 2908376536, 2911135641, 2915014315, 2918403731, 2918486269, 2919235927, 2920587887, 2922468503, 2922493886, 2923084706, 2929584080, 2931398379, 2931402541, 2934893225, 2937779198, 2941551192, 2942859576, 2948690168, 2948867989, 2949433359, 2951266128, 2954570766, 2956489777, 2960184498, 2960188722, 2960612931, 2962892549, 2963032843, 2966548328, 2976545290, 2976620947, 2978924197, 2982913903, 2986096991, 2987284613, 2988637881, 2993692642, 2996709992, 2999106536, 3000568496, 3005531064, 3005732955, 3007175865, 3007286028, 3008753857, 3010444860, 3010880247, 3017258218, 3019938621, 3020499579, 3022866914, 3023311759, 3024482653, 3024795687, 3024807531, 3027071777, 3029820267, 3032088673, 3032839979, 3033043261, 3033965900, 3036878933, 3037343835, 3038234864, 3051293097, 3052701732, 3055037923, 3056484673, 3060407188, 3061523114, 3071254387, 3071254500, 3071254881, 3073058130, 3074871971, 3074935051, 3075008146, 3075048985, 3075285442, 3075422693, 3075548305, 3075766008, 3075860343, 3075962648, 3076097045, 3077391764, 3079190285, 3085252246, 3091553195, 3103424085, 3107541791, 3107727924, 3107749241, 3107778469, 3107783354, 3107787446, 3107790299, 3107948057, 3107956419, 3107974264, 3107984588, 3107991466, 3108296169, 3111583245, 3113459538, 3116256345, 3116975703, 3117043431, 3121647752, 3123411243, 3123445549, 3123737595, 3127243644, 3131616468, 3134139083, 3134716611, 3141709512, 3148676509, 3154082174, 3155375542, 3160028447, 3163162577, 3163167462, 3163515572, 3163650864, 3172095015, 3178395499, 3179705353, 3183658699, 3187099641, 3187299343, 3189362935, 3189614929, 3189845278, 3191231848, 3191324353, 3196795314, 3196799538, 3197664642, 3200115829, 3202732235, 3206363778, 3207294280, 3218691622, 3224832477, 3226582088, 3231960701, 3231960825, 3238444781, 3240506687, 3241127686, 3245505639, 3246685420, 3255250502, 3255475289, 3255493270, 3258010725, 3259268259, 3259708744, 3272088211, 3277477189, 3287497511, 3289363789, 3294281816, 3300709686, 3302430666, 3307080284, 3310372188, 3310580422, 3313110325, 3317570505, 3321771963, 3323504524, 3331794938, 3332552236, 3344936763, 3351242611, 3354164541, 3356161036, 3357443896, 3358280978, 3360549707, 3361435146, 3362509089, 3362630778, 3366341181, 3366920760, 3372160500, 3373297021, 3374596217, 3375285141, 3377755895, 3379029866, 3380241983, 3380595728, 3381834713, 3385946526, 3386125251, 3388057612, 3393544563, 3404840083, 3405857857, 3407191084, 3408814815, 3408819560, 3409018494, 3409457570, 3410577155, 3411051814, 3411102162, 3413983999, 3416635233, 3418887913, 3424150275, 3426036948, 3426656604, 3429124000, 3430316367, 3430320824, 3430870942, 3431771155, 3432731814, 3434192147, 3440930072, 3441289467, 3448289841, 3448536520, 3452859864, 3455445539, 3455973701, 3456106851, 3456282588, 3457601666, 3463597433, 3467469261, 3473077716, 3481649290, 3487446962, 3488816292, 3495434909, 3503723552, 3503962589, 3503975251, 3504086267, 3504111353, 3504116046, 3504274912, 3506277065, 3508805241, 3509081590, 3511319965, 3513566261, 3515728076, 3515960057, 3516630755, 3523519258, 3526432473, 3530287752, 3530798581, 3531066474, 3531601080, 3532265658, 3532567787, 3533680386, 3538145547, 3540002868, 3540019679, 3541120058, 3551826674, 3554146688, 3557238629, 3557288966, 3560409651, 3560721423, 3560755308, 3560772904, 3560776799, 3560843986, 3563273081, 3564677062, 3564681286, 3567399383, 3582031081, 3584271853, 3584286131, 3585048866, 3585049834, 3585528102, 3593775985, 3599378282, 3602300234, 3607509617, 3611661676, 3611790203, 3621964687, 3621965124, 3621966081, 3621966083, 3621968414, 3621969916, 3621970585, 3621975893, 3622095083, 3622538650, 3627671724, 3631197772, 3636965307, 3639447013, 3650032210, 3667545339, 3668394990, 3668555001, 3668632957, 3671699945, 3674122558, 3682693088, 3690182854, 3691035506, 3691048605, 3691317036, 3693068020, 3697923226, 3699114476, 3702342894, 3706900355, 3708334595, 3709045244, 3712703179, 3712728440, 3712733478, 3718845099, 3718930524, 3720827503, 3728968422, 3729352785, 3730027878, 3734185373, 3735541918, 3737224996, 3738382782, 3738387349, 3738389800, 3738389990, 3738390006, 3738390241, 3738390427, 3738394220, 3738394620, 3738394722, 3738394744, 3738394859, 3738396519, 3738397033, 3738399064, 3738400460, 3738887202, 3738887334, 3739466542, 3743223168, 3743289449, 3744330913, 3745299015, 3748385635, 3749221030, 3756564018, 3766265917, 3766587032, 3767014136, 3767872686, 3768672199, 3771941409, 3772113601, 3772128853, 3772772804, 3776028623, 3776032376, 3777321837, 3777702607, 3777706691, 3777840696, 3778052019, 3778877784, 3788596678, 3788641118, 3789096147, 3790949066, 3792555306, 3792675197, 3794434962, 3795445637, 3799396589, 3802359444, 3802425981, 3802900168, 3803509878, 3803533553, 3803824710, 3817195077, 3825134626, 3831783888, 3836226283, 3837130236, 3839963077, 3842564401, 3842605521, 3845461162, 3845489549, 3848928610, 3854658802, 3856336918, 3857323999, 3858008723, 3859684851, 3862352064, 3867966833, 3870049918, 3871085378, 3871829833, 3872291932, 3872427595, 3873740388, 3875975886, 3876231871, 3878080222, 3881750832, 3882302039, 3886373040, 3890622701, 3890644440, 3890892359, 3896043913, 3896689307, 3899279503, 3900747045, 3906847659, 3911916015, 3927826024, 3935292304, 3943337509, 3944324480, 3944448839, 3945529821, 3947301018, 3949488650, 3950159753, 3952494101, 3960241116, 3960376152, 3961917741, 3963099658, 3963421060, 3963723254, 3967007952, 3967259205, 3969124422, 3970612783, 3970678261, 3973713485, 3975040093, 3975243357, 3975693785, 3987058095, 3990704705, 3992681822, 3994071046, 3995478227, 3998971354, 3999298006, 4000670401, 4000993351, 4001099777, 4001277861, 4001735503, 4002465742, 4003357293, 4005356768, 4007925342, 4011050686, 4011066530, 4011075332, 4011273939, 4011552428, 4011788459, 4012217148, 4012217259, 4024186918, 4027830515, 4028975169, 4029110469, 4029583348, 4030423947, 4031498693, 4031499367, 4031499504, 4031509172, 4031928713, 4032208645, 4032479130, 4033316487, 4036743247, 4038287798, 4038545865, 4040900190, 4042024153, 4059950647, 4061045790, 4064482362, 4064482494, 4064686007, 4068398139, 4074270800, 4074270919, 4074308286, 4075674315, 4075712516, 4075885548, 4078878227, 4080178633, 4081049105, 4089654486, 4090206590, 4090679933, 4091412422, 4095259202, 4095274203, 4097043581, 4097047544, 4097047888, 4097050487, 4097053538, 4097079538, 4097094723, 4097094855, 4097218811, 4097289420, 4097298261, 4097355529, 4097358800, 4097358806, 4097359478, 4097365147, 4097365569, 4097368351, 4097368475, 4097373732, 4097381131, 4097390898, 4097493023, 4097494448, 4097500420, 4097504860, 4097508952, 4097518447, 4097523657, 4097528230, 4097528249, 4097565588, 4097595928, 4097769515, 4097769660, 4097770040, 4097900631, 4097993352, 4097993363, 4098078311, 4098093255, 4098096816, 4098101881, 4098102013, 4098120408, 4099257624, 4099391059, 4100119818, 4101141701, 4101990706, 4102099355, 4102141580, 4102295291, 4103385373, 4104416776, 4108421678, 4108481771, 4113654278, 4120143040, 4120573143, 4120685305, 4120832270, 4121323786, 4122797449, 4123137490, 4123141719, 4123166778, 4123237466, 4124517918, 4124852870, 4126190390, 4126265264, 4126330058, 4126584791, 4128561486, 4130538182, 4130665595, 4135804702, 4138805004, 4138959002, 4142649353, 4143010615, 4143011353, 4149276818, 4149741566, 4155964946, 4160851306, 4165043845, 4165602674, 4166101816, 4168666626, 4168671212, 4169534192, 4169538416, 4175499442, 4178182706, 4179726175, 4180321577, 4180398911, 4180437564, 4180584501, 4180592595, 4180655876, 4182610142, 4190427894, 4190436241, 4190438903, 4190464587, 4190536489, 4191350062, 4197904504, 4208748285, 4213114634, 4213114766, 4213115878, 4213133169, 4213139443, 4216213600, 4229539334, 4230260404, 4236039784, 4239211903, 4244301284, 4244359264, 4244636840, 4244650461, 4244697370, 4246504751, 4248927363, 4249781266, 4250093591, 4255547342, 4269915810, 4271230391, 4273205904, 4280822506, 4281987205, 4281991429, 4288642117, 4290818353, 4290862694, 4290938088, 4291163255, 4291519114, 4292375442, 1641, 113029, 2431109, 6154799, 9085905, 10454523, 11833936, 15005411, 29369909, 32348563, 32392946, 34831997, 35241656, 35407085, 41719852, 42040525, 44148994, 49751269, 54657448, 54829135, 61297674, 64616140, 64792746, 65243007, 69912355, 73497087, 75564691, 84754216, 85474843, 88950783, 95227810, 97671606, 97869711, 98556036, 111529024, 112714201, 113832573, 118457586, 119013459, 129204800, 129504899, 132934253, 133576354, 140643360, 141325108, 142928709, 144351849, 147399388, 148485881, 153516070, 159755595, 162751717, 164324227, 164324569, 164324664, 164324791, 165338893, 166383271, 169804649, 169909381, 170281316, 170281555, 170281599, 170281747, 170281951, 172221532, 172281217, 172281369, 172281601, 172281701, 172281789, 172615247, 173287589, 173592416, 173930363, 174306514, 176844018, 177079695, 177080427, 177147671, 177148014, 177148020, 177546706, 179139641, 179379875, 179569944, 180056941, 180259371, 181198501, 181205574, 181240422, 181950714, 182150488, 183096195, 183096537, 183468910, 183469260, 183603589, 183603872, 186043176, 187501046, 187763081, 189174183, 190912115, 191031927, 191069908, 191103669, 193357074, 193420201, 194024818, 195040318, 195040605, 195184107, 195615400, 195788148, 195817845, 196491587, 197098180, 197098196, 197098242, 197098387, 197098716, 197098773, 197098834, 198219090, 201802654, 203969128, 204000291, 204003102, 205844479, 208540214, 211702237, 213315812, 216404638, 221220686, 223633303, 225036633, 231228447, 233832515, 235585683, 236122625, 238349947, 244953360, 253603556, 254556119, 268305044, 270508724, 279497384, 282260013, 286117940, 288337735, 294222691, 294944592, 297796540, 299806932, 301175958, 305396028, 309814229, 316711416, 319659866, 321667918, 323472705, 329290740, 333539694, 336073493, 344556873, 345150446, 346582968, 348240977, 352942917, 361618841, 362641227, 363650316, 368392429, 371447569, 379018060, 379803748, 381683792, 382346929, 390037588, 392534911, 393050977, 398079720, 401473592, 404580880, 408076405, 409551689, 412923104, 413523569, 417762611, 418389794, 418643706, 419980117, 420076057, 430774757, 431420666, 431463230, 433047970, 433960232, 434424313, 439016491, 446595824, 448347366, 453082265, 459993498, 461991320, 467355959, 468677861, 471325996, 478194174, 481007914, 483933287, 492579864, 492820046, 493239087, 495294245, 500922416, 501132892, 502571724, 503870109, 505520155, 505540840, 505547348, 507674743, 507704542, 508155006, 508732896, 524499536, 528698966, 533082472, 536472645, 536606854, 536706420, 544035780, 545100578, 547829195, 548068662, 550157112, 554422931, 557980541, 558904957, 566123574, 569085212, 574052622, 575078226, 579214441, 582810837, 583362052, 583453417, 594063106, 598128236, 601157755, 601161740, 601948346, 602413319, 603986209, 605582466, 609198625, 610045978, 617827459, 620396524, 626039263, 626988485, 629099694, 630452394, 635400744, 640415961, 643558590, 645257576, 652659119, 656273907, 665354414, 666296511, 667333922, 668403785, 669730879, 669929645, 674175725, 680972003, 682364285, 684524418, 689215333, 704136516, 706383966, 708808466, 710978465, 712995495, 713788357, 717519098, 722655660, 722956329, 725449644, 727209749, 729977159, 734622016, 735035205, 737142807, 737152212, 737166334, 737644692, 737837074, 739516787, 739566545, 739985822, 741816033, 742252614, 742260586, 745092996, 747930588, 750219296, 750508933, 752522257, 753857751, 754000708, 757807602, 758478444, 761228031, 762067870, 762641736, 764248075, 764320946, 764825188, 766296725, 766355544, 766643209, 766774330, 767540529, 772363084, 774299734, 777688891, 787564577, 792068311, 792844833, 796739176, 800010738, 800087019, 809563086, 810061706, 810813298, 811092091, 817847511, 819009519, 826260124, 833658992, 834470340, 839856739, 842147301, 847675799, 861294299, 862950715, 867021650, 867036335, 867732810, 870151875, 874296659, 875096251, 875944810, 876149555, 884498580, 887482102, 893652881, 894264732, 896104248, 896979123, 897240751, 902139830, 911653942, 912249299, 919599881, 927052135, 933697266, 933746041, 939098524, 939114841, 948752149, 955130439, 955354780, 955942299, 956480228, 958121442, 966830075, 970076747, 972273212, 976381303, 978919739, 981829565, 984418838, 997412732, 1001458257, 1001637783, 1001651627, 1005191377, 1008948875, 1010556097, 1016009727, 1016348317, 1023879932, 1024317101, 1027786481, 1027856392, 1032266307, 1033049924, 1035709107, 1038486906, 1041294385, 1043437244, 1049779946, 1051535617, 1053737172, 1054370922, 1056150770, 1056645919, 1056720884, 1063952736, 1064732809, 1064857294, 1065290596, 1079732589, 1080478458, 1081536009, 1086069586, 1088535269, 1094421058, 1095718313, 1096687866, 1100372480, 1101043104, 1102004406, 1104733017, 1110237878, 1112959177, 1113096701, 1114972095, 1117545303, 1118952562, 1125668821, 1130216203, 1132104794, 1132534664, 1132579070, 1132598106, 1135683888, 1135892328, 1136018325, 1138287902, 1145147923, 1145899518, 1146523166, 1149204820, 1151262913, 1152056864, 1154446700, 1154536715, 1154542665, 1155367440, 1155994599, 1161218045, 1164964007, 1166033123, 1167024992, 1167025137, 1174582808, 1174756828, 1179004234, 1181469438, 1183829925, 1186977866, 1187653498, 1188208310, 1189560180, 1191923730, 1192723278, 1195304992, 1199133859, 1199554249, 1199600208, 1202045876, 1204911535, 1208429990, 1210779948, 1210807525, 1220586092, 1221782335, 1221920801, 1236932222, 1238449939, 1243532105, 1246474378, 1257626414, 1257876060, 1258346504, 1259689738, 1260836076, 1261324364, 1266641105, 1268763191, 1271531819, 1273274467, 1276658942, 1282928227, 1283757717, 1290537388, 1296032318, 1296235125, 1301946320, 1305140481, 1308857550, 1310807544, 1310899277, 1312163653, 1316036626, 1316125796, 1324285266, 1324310094, 1324331646, 1324337571, 1324579984, 1325750278, 1326569216, 1333842476, 1349684561, 1351415139, 1351558342, 1351862653, 1351880550, 1354386923, 1356250756, 1356331589, 1357629674, 1362165018, 1363404812, 1364008114, 1364487272, 1365133140, 1365599531, 1365623138, 1366730785, 1366987615, 1372241226, 1372705460, 1372794328, 1373871548, 1375834117, 1377641421, 1378253217, 1385859280, 1391291390, 1391293134, 1391299074, 1391300548, 1393577155, 1394469288, 1394469303, 1394469473, 1394469866, 1394470005, 1394470066, 1396870772, 1399867662, 1410090536, 1413067533, 1423547895, 1430902259, 1431096661, 1433581041, 1435770227, 1436788950, 1441443055, 1441473969, 1443172426, 1444705872, 1444722875, 1444727957, 1445594238, 1447082963, 1448082324, 1455246557, 1457519039, 1458084479, 1458493639, 1458555099, 1459794391, 1460930084, 1465058743, 1465974914, 1465976327, 1465976425, 1465976436, 1465976550, 1465976555, 1465976625, 1465976632, 1465976696, 1465976747, 1465976870, 1465976979, 1465976985, 1465976986, 1465976991, 1465977196, 1465977261, 1465977271, 1465977274, 1465977303, 1465977323, 1474444421, 1478092049, 1478716185, 1481566528, 1482522967, 1489772937, 1494181387, 1504535254, 1509029106, 1510450262, 1511907991, 1515598870, 1519441587, 1522685369, 1525831150, 1526085253, 1527459723, 1529619411, 1532042759, 1533712942, 1537663939, 1539902893, 1541073018, 1541496652, 1542773859, 1549199388, 1549209224, 1549210203, 1552284203, 1553692884, 1555806428, 1561102750, 1568416773, 1570561776, 1573188605, 1576134740, 1582406800, 1582529544, 1585380899, 1587251606, 1592687509, 1594093747, 1601662530, 1602151715, 1602222565, 1602416912, 1604312683, 1604313702, 1604341906, 1605478605, 1610069144, 1610724928, 1613430619, 1616149762, 1616623247, 1616826805, 1622345684, 1624120544, 1624575040, 1631446240, 1634840328, 1635306209, 1637735434, 1639041637, 1643893360, 1645239134, 1645714411, 1646967505, 1647763648, 1648026812, 1648459154, 1652482428, 1654623339, 1659538076, 1660752253, 1661285202, 1662950537, 1675032552, 1676328914, 1681382184, 1682444281, 1683407715, 1684605451, 1684964181, 1686375531, 1686572406, 1686834359, 1687225102, 1687228988, 1687238599, 1687241697, 1693905970, 1693924649, 1694678234, 1696017211, 1697022103, 1698247372, 1700196518, 1700874190, 1702743585, 1705191422, 1705572464, 1705775316, 1708553688, 1709604401, 1711224201, 1712893263, 1713051167, 1713095897, 1715999558, 1716074224, 1716087943, 1716947524, 1721557559, 1722492001, 1723859941, 1728197301, 1730461660, 1732377833, 1740500925, 1740503023, 1747349646, 1747349737, 1747349747, 1747349811, 1747350242, 1747350353, 1747350383, 1747350483, 1747350570, 1757625214, 1758838683, 1759487629, 1759488516, 1759498393, 1759499821, 1759502442, 1759502966, 1759512274, 1759512283, 1759513528, 1759514495, 1759514515, 1759516437, 1759524172, 1759589336, 1760335250, 1762975960, 1762992044, 1763004314, 1763977119, 1771261987, 1772061961, 1772164204, 1782043531, 1789421301, 1792792037, 1793905730, 1800839994, 1801396125, 1804673412, 1806579373, 1807671676, 1813955111, 1814430790, 1817436421, 1822787251, 1823557150, 1828043124, 1839996532, 1839996844, 1841030555, 1842560365, 1844448916, 1844480213, 1846724376, 1860761623, 1861064328, 1863000850, 1867708596, 1873769763, 1873773882, 1874142716, 1875798230, 1880233189, 1882601503, 1885862630, 1890372289, 1890379225, 1891031342, 1891205640, 1891938925, 1894539933, 1896919160, 1896919227, 1896919294, 1897898461, 1899147627, 1900573373, 1901379444, 1902628941, 1905060165, 1906789934, 1906790006, 1906790139, 1906796594, 1906797455, 1906801573, 1906801694, 1906806837, 1906810233, 1906810485, 1906811690, 1906817274, 1906818921, 1906820915, 1906820924, 1906823423, 1925206882, 1927020241, 1928994000, 1935386784, 1936188797, 1939298330, 1939994885, 1941474619, 1944071536, 1945201987, 1946130305, 1946324244, 1947055740, 1949193282, 1951127334, 1956200886, 1960661844, 1964294607, 1971670426, 1975660003, 1977074332, 1979063800, 1986972074, 1987660949, 1991785763, 1992080509, 1995174355, 1995890751, 2001507875, 2004488903, 2015900220, 2018783243, 2021213332, 2023260368, 2025018361, 2025037989, 2025039155, 2026543248, 2027114414, 2034028822, 2034497157, 2034927376, 2035815698, 2037403782, 2037552632, 2038238057, 2038463378, 2038609522, 2039595722, 2040354520, 2040943501, 2041028464, 2044842550, 2047340057, 2047377876, 2047791608, 2047824538, 2050823774, 2050838609, 2051525062, 2051827668, 2052255777, 2052901511, 2053206810, 2053240934, 2053337172, 2053478875, 2053493456, 2053853373, 2054449324, 2055229681, 2055578022, 2056180496, 2057710300, 2058751811, 2059048621, 2061275137, 2066721635, 2067699997, 2071301924, 2075934693, 2077460241, 2077463931, 2082279457, 2082350395, 2082490504, 2083899515, 2084905908, 2087506861, 2087556005, 2087568425, 2087595516, 2092046651, 2092301721, 2097381010, 2097529923, 2100199727, 2103470828, 2105481502, 2107063121, 2107436658, 2111314048, 2113664954, 2116750738, 2117068897, 2119040128, 2122563214, 2122618177, 2124668692, 2132271390, 2134191641, 2134715695, 2138049165, 2138494997, 2144770101, 2151094932, 2151644274, 2163712208, 2163898589, 2170508442, 2176727539, 2177318798, 2178944930, 2179027416, 2184528600, 2186571792, 2187374596, 2190645414, 2190660247, 2190897184, 2195413098, 2195424198, 2198290764, 2203121973, 2208876632, 2209276004, 2211529485, 2216861598, 2219976143, 2224936471, 2229389306, 2229428098, 2233205867, 2235535537, 2238302643, 2241998064, 2243922068, 2245744882, 2246095470, 2246624423, 2249578444, 2251500542, 2256423319, 2257131811, 2259407586, 2265403416, 2277922362, 2278366865, 2281444864, 2284221844, 2290521795, 2298483014, 2298859942, 2303709693, 2305684069, 2306183534, 2310688315, 2315634657, 2319104481, 2323978889, 2326416557, 2327685947, 2331542577, 2334488740, 2335980755, 2343955873, 2343987387, 2344051572, 2344081298, 2353017729, 2357782940, 2360233424, 2372460029, 2372478071, 2376327406, 2380959235, 2384339112, 2391410598, 2392072803, 2393811335, 2399346319, 2399822664, 2401643245, 2401782259, 2403261116, 2407789481, 2409182571, 2417084170, 2417165267, 2417652035, 2419411749, 2419417423, 2422324904, 2423117096, 2424431334, 2424771770, 2432634086, 2435584133, 2436015021, 2441679501, 2441854846, 2444838503, 2451024601, 2451094457, 2453483137, 2454448917, 2456215407, 2459247176, 2463271525, 2463506842, 2467234433, 2469945372, 2473920266, 2486666796, 2489018185, 2489169796, 2490847830, 2492970238, 2497220049, 2503042985, 2512844015, 2518379243, 2518777282, 2525588137, 2525608018, 2528358668, 2528706848, 2531896313, 2536602755, 2539686262, 2551310943, 2554772601, 2556085817, 2558131228, 2564231467, 2565836498, 2569358076, 2571159128, 2572746788, 2575905107, 2579846032, 2582295686, 2585286228, 2585297154, 2587884409, 2590263013, 2592032772, 2597156358, 2600208325, 2600311538, 2609976564, 2614031703, 2619619987, 2622453927, 2622601193, 2622997773, 2630676340, 2635726130, 2636739119, 2637611531, 2637745410, 2637827916, 2639832942, 2646831691, 2652889161, 2656916375, 2658971428, 2660417858, 2667387895, 2669967601, 2671812960, 2675377616, 2680331975, 2692646873, 2694622232, 2697812844, 2707358863, 2708256980, 2708843581, 2721005193, 2723132333, 2723449219, 2727613517, 2729386864, 2732129495, 2739504392, 2742067873, 2743561936, 2745053658, 2748129339, 2755346949, 2756835810, 2762308724, 2762732310, 2772048233, 2773342582, 2773916239, 2774237802, 2777215669, 2780442125, 2780969136, 2784038323, 2786612080, 2787145966, 2787151566, 2791623281, 2792656912, 2793820597, 2793843165, 2794535853, 2794558276, 2794571602, 2794589073, 2794607684, 2794781905, 2794812897, 2794904579, 2795201682, 2795215251, 2795316793, 2795413889, 2795489178, 2795518714, 2795546979, 2795547152, 2795551511, 2795554576, 2795555553, 2795567189, 2795581043, 2795588603, 2796767057, 2797512177, 2798111293, 2798512509, 2799526810, 2799947922, 2802973072, 2804403738, 2804874542, 2805637755, 2805753744, 2812187177, 2812916202, 2815541885, 2820491263, 2822394574, 2829422945, 2831048350, 2832237259, 2834623189, 2837348717, 2839650695, 2840525902, 2841159353, 2842490055, 2844781614, 2846385194, 2846982791, 2849860412, 2850213786, 2852028874, 2852573181, 2854701866, 2855519660, 2857974075, 2859686627, 2864766480, 2865932173, 2873369054, 2873382924, 2877054650, 2878248977, 2880150758, 2882016813, 2894321712, 2896549226, 2900972274, 2907164383, 2909422460, 2910191497, 2914081458, 2914744694, 2914938714, 2915009556, 2917041430, 2918571873, 2929237742, 2930384385, 2931708704, 2933052029, 2935350303, 2939956665, 2941858877, 2943539162, 2944562948, 2945364171, 2947166646, 2953041500, 2953600606, 2958695479, 2959025464, 2963193938, 2963907974, 2964323647, 2969439522, 2972958854, 2976622717, 2978201778, 2982085395, 2985605450, 2996423818, 2999691650, 3008190733, 3008855969, 3016122305, 3017646001, 3023766416, 3029366772, 3032047068, 3036119914, 3036992672, 3039024727, 3042813479, 3043904968, 3050467218, 3051886594, 3053067553, 3056188564, 3057812794, 3065938060, 3066185554, 3067801157, 3067842181, 3068762275, 3077857486, 3080857101, 3087114209, 3087935921, 3088190003, 3089015336, 3091255985, 3095401268, 3096813247, 3098725318, 3105671535, 3117883740, 3118052513, 3118932015, 3119183299, 3121944857, 3124496054, 3126706525, 3129135980, 3130262956, 3136193853, 3146277579, 3150523560, 3154412692, 3159557566, 3164499075, 3164706839, 3168577861, 3173559921, 3174529089, 3176196996, 3176871024, 3180039849, 3180784320, 3181226348, 3184223807, 3185392090, 3186278865, 3187205025, 3189849017, 3192015124, 3201052817, 3206103617, 3212240200, 3229338204, 3231038915, 3232995840, 3236363663, 3236684869, 3240062262, 3241501460, 3243217472, 3245554401, 3249410406, 3254464708, 3257959952, 3274402918, 3276160836, 3276196901, 3278107133, 3290502878, 3291450742, 3293286977, 3293297241, 3296419295, 3299472058, 3299767442, 3301223392, 3301309499, 3301391192, 3304599725, 3306064327, 3313552392, 3321637504, 3331885553, 3332277580, 3333914252, 3337182013, 3337858974, 3341471161, 3347209717, 3350345047, 3350816321, 3351869587, 3352060268, 3355691995, 3356175586, 3356927752, 3366755503, 3367073048, 3367944003, 3372319994, 3375346812, 3376868662, 3381262072, 3382258705, 3385088233, 3389287501, 3392485763, 3403435361, 3403782237, 3406109171, 3406111906, 3407122639, 3411575670, 3424242744, 3426100153, 3426523263, 3431675506, 3431798787, 3432725491, 3433958809, 3443103158, 3445734210, 3450482982, 3453219838, 3455171543, 3455975626, 3458629656, 3459326184, 3460835389, 3468111852, 3471910127, 3473608107, 3474158466, 3478804050, 3479897537, 3480605972, 3480868929, 3481097537, 3485240025, 3491815953, 3492209950, 3494777461, 3500328283, 3503925212, 3506796962, 3514565086, 3514565812, 3518469610, 3519725933, 3524188747, 3529349528, 3542452078, 3546487756, 3550700124, 3550989552, 3551573749, 3553442167, 3554781799, 3556847596, 3557221487, 3557691349, 3558264087, 3560824248, 3563344816, 3565186253, 3565418379, 3566074326, 3568626956, 3569886279, 3570187564, 3574536814, 3576593305, 3584104748, 3586564634, 3588013803, 3590119076, 3594126223, 3605649145, 3607964178, 3610130320, 3611466472, 3615937331, 3618863110, 3629119210, 3629792790, 3635135986, 3635459541, 3636074310, 3638424639, 3640911628, 3642130958, 3642225062, 3647798063, 3656108419, 3657615451, 3659534155, 3659611370, 3659667263, 3660545348, 3660867367, 3671487562, 3678946749, 3680027665, 3684023399, 3686613485, 3686646984, 3691543485, 3691543777, 3694814128, 3695175653, 3698130051, 3700803863, 3704722354, 3717443225, 3718851041, 3722297297, 3724304421, 3727535579, 3735382080, 3740438523, 3740440657, 3745910284, 3748112414, 3748157778, 3751765724, 3751843037, 3758548269, 3759175702, 3760229117, 3767579376, 3767636566, 3774416951, 3774620406, 3775107448, 3777554302, 3784459817, 3789001045, 3789217359, 3790213466, 3791430232, 3792756850, 3797275201, 3797334865, 3797547975, 3797752814, 3798120765, 3799727891, 3800284920, 3803890887, 3807736858, 3811590943, 3812650457, 3813081457, 3814583456, 3816238011, 3818244185, 3820433217, 3821631768, 3824973847, 3830752599, 3831121452, 3831131041, 3837373870, 3839962587, 3842157165, 3849728326, 3849729892, 3849734551, 3849787726, 3849792721, 3849819373, 3853184002, 3854490492, 3856121458, 3860607422, 3861431943, 3861926244, 3867504094, 3869648625, 3871255217, 3879613384, 3888702999, 3902486573, 3909678524, 3911290870, 3914258422, 3919568627, 3924938673, 3928836058, 3929271846, 3932881151, 3932899585, 3934007962, 3942901813, 3950379841, 3960912026, 3973890763, 3976040035, 3981060932, 3981985710, 3991078309, 3992022849, 3992259208, 4010941807, 4012569891, 4013412307, 4021161495, 4025854722, 4027536004, 4033312623, 4036094574, 4037300319, 4043405137, 4048222256, 4048420974, 4049948378, 4051811237, 4052267313, 4054558966, 4064836207, 4066383490, 4070580503, 4073707968, 4100786237, 4104807039, 4115427659, 4116271014, 4117626035, 4127381498, 4128299636, 4132054341, 4132795027, 4133480683, 4136878052, 4138452493, 4138537192, 4138587115, 4138850346, 4138930624, 4148483014, 4149140792, 4149626272, 4149641566, 4149809179, 4152090640, 4152153727, 4156628388, 4159166567, 4161006924, 4161031359, 4167095051, 4168702437, 4168921085, 4175490343, 4178043127, 4179607399, 4182917435, 4196816243, 4201195770, 4201710836, 4204344500, 4212065046, 4216249688, 4218603456, 4220181346, 4230252988, 4230808631, 4235216564, 4245730359, 4250048329, 4251017064, 4254397175, 4261049438, 4265986719, 4266150865, 4270257086, 4272517612, 4285995571, 4287809158, 4287924367, 4293141634, 4293320049, 7, 171252454, 314658260, 1911007288, 2310391087, 2705648135, 3085052283, 4199583372, 0, 0, 30, 66987915, 366428436, 366991379, 487687151, 649399193, 716916462, 900018457, 911616432, 914855142, 981141093, 981156754, 1068454171, 1213136917, 1357549542, 1437166305, 1491010671, 1491010869, 2035443912, 2098925819, 2412701058, 2447973967, 2572472237, 2572499572, 2572504631, 2734871983, 2873757688, 3229893628, 3628727675, 3840638318, 4020469118, 1985, 3609572, 4707302, 4731941, 7066741, 12732264, 12733869, 12874473, 12898727, 15239865, 15443925, 15464989, 17770158, 18806137, 22641470, 34805542, 37254453, 38352510, 47103897, 47124528, 47160482, 47264668, 47270558, 47521880, 47670735, 47682584, 48206184, 54052064, 55399270, 55790429, 57861540, 64629239, 65951659, 73540622, 74816563, 79005572, 79010572, 79432449, 79977826, 80960607, 90941114, 91781471, 93732497, 101061895, 101792620, 105281118, 114635485, 121111459, 126395821, 127613999, 134819976, 135124399, 135156325, 135512978, 139443164, 140195744, 146403274, 147165318, 147311351, 147680945, 154712981, 156193153, 157683252, 162021680, 165184869, 165682351, 167795310, 169177047, 169285407, 170248114, 175536255, 176298648, 181584625, 186190871, 188366635, 190461039, 190805290, 190817793, 191644192, 193330267, 200367649, 204872798, 208246903, 213994908, 222038678, 222914983, 226753977, 227658815, 230657663, 231976681, 232418677, 234224516, 235125560, 235385397, 235630461, 235880887, 236100347, 237106084, 237695302, 243768879, 244905302, 245221564, 245221621, 245248688, 246957980, 247379872, 247404538, 247547714, 249186148, 249832804, 250298968, 252007821, 252166643, 254498243, 256250975, 256734086, 257675257, 258276240, 260078806, 269653037, 270614174, 270803459, 279865482, 290747254, 296104342, 296106331, 296214241, 297365588, 297388265, 297388314, 297395043, 297872731, 297875338, 305678573, 310113063, 317059542, 318726251, 320983337, 321380700, 329390871, 340233049, 343985311, 368331859, 368339983, 374202536, 374729119, 377042975, 377218502, 377330983, 379160277, 387137528, 390536878, 397426025, 410462833, 410898354, 411028646, 415359567, 418289923, 418809394, 420699727, 422768411, 423087664, 434374676, 434499530, 439966930, 443910462, 444881445, 446735168, 470802373, 473022090, 475752042, 480190019, 481797890, 482141996, 493334140, 493996949, 494002753, 494111972, 496668263, 497004637, 505642028, 513006918, 520166698, 522732652, 524323805, 524791178, 525296785, 532366388, 537994409, 538156652, 539123093, 539125333, 540384923, 545724556, 546598380, 552815312, 564847266, 572585472, 572589595, 572660745, 572917514, 572938118, 581295982, 583116728, 584477771, 585356786, 585510953, 586974440, 588341431, 590260151, 593171510, 600861600, 602587622, 608185550, 608501000, 611172806, 617227910, 620862123, 625412750, 626878575, 627192073, 628675473, 636454657, 644892435, 645708934, 646772532, 650376939, 653264074, 653865504, 654835286, 655274400, 657684596, 657843927, 665654464, 665772443, 667917050, 667982163, 668803663, 678409190, 685972429, 687873546, 699223116, 722349553, 723381066, 723506578, 725289629, 728910939, 728916446, 729301272, 730375222, 731520837, 731524865, 731524893, 733458327, 734942836, 742063133, 744425628, 745118723, 750501894, 753379261, 753585532, 755936840, 755999442, 757164322, 757742871, 758908039, 758927262, 766978617, 767310694, 767319597, 768502512, 775086059, 775783015, 776818569, 777129529, 782249017, 782470551, 782586541, 783225086, 783819749, 787058931, 793173186, 793643539, 793791572, 794069868, 797737785, 801549019, 805476735, 809560577, 810471911, 810660018, 813069363, 813965189, 814609400, 819689086, 822265343, 827811881, 828807618, 840895172, 842670706, 845178939, 849626506, 857304293, 867054787, 875581912, 878480613, 878489001, 888652626, 892902192, 904040802, 904780949, 904781069, 904781208, 904781211, 904781269, 904781270, 904781407, 904781445, 904781469, 904781569, 904781597, 904781741, 904781750, 904781797, 904781798, 907680375, 909542970, 913350787, 915552624, 943105427, 944616168, 945567936, 946059164, 946112067, 950116031, 950459761, 950797941, 950991772, 952407653, 954708706, 954904735, 956279390, 959296218, 959317553, 960000436, 960088334, 964474682, 965248297, 965252181, 968600148, 969495568, 969714387, 969714391, 969714751, 975014436, 976847064, 977515724, 978655375, 985441466, 985451059, 988676432, 989199112, 995754553, 995754557, 998100773, 998582596, 1001682227, 1002897238, 1005026102, 1007267340, 1018029509, 1019292109, 1021170671, 1021615491, 1027478448, 1027904949, 1028176876, 1028524011, 1033544761, 1037073656, 1039464298, 1041396131, 1043364491, 1051084878, 1053049944, 1055328538, 1055480209, 1058862972, 1066609925, 1068948457, 1071874351, 1072134738, 1082834847, 1084511341, 1087693738, 1089012798, 1089634494, 1093384439, 1093825560, 1094815391, 1098082937, 1102471353, 1113642022, 1113846049, 1121249692, 1127953536, 1132317159, 1132485954, 1132585385, 1132689597, 1132723356, 1132858392, 1133501028, 1133636064, 1134046361, 1134351151, 1134824033, 1135467502, 1135737574, 1135775689, 1136782059, 1136883336, 1137085890, 1137173922, 1138138823, 1138714596, 1139072942, 1139153897, 1139221159, 1139981182, 1140405028, 1140510661, 1141246959, 1141280718, 1141381995, 1141584549, 1141719585, 1141874653, 1142159541, 1142193300, 1142260818, 1142366610, 1144440814, 1144457023, 1144667374, 1144802410, 1144975561, 1145579956, 1145625081, 1147135141, 1147314976, 1148184718, 1148522564, 1149131059, 1150514349, 1150729533, 1151393172, 1151494449, 1153073825, 1154465661, 1155177503, 1156094385, 1156940664, 1158572559, 1160038984, 1160487168, 1161167906, 1161578459, 1161965872, 1162013821, 1163255421, 1163472226, 1163645377, 1163777146, 1163979700, 1164916562, 1165010690, 1165068597, 1165937726, 1165940993, 1166410608, 1167096330, 1167193469, 1167260731, 1167598577, 1169823858, 1170720439, 1171147706, 1171150005, 1180230175, 1180849387, 1188216287, 1188228500, 1188701654, 1190334387, 1190352716, 1190641324, 1202600586, 1206718941, 1209302133, 1214814043, 1216095517, 1220486075, 1223892937, 1224444732, 1225577971, 1229986049, 1243738793, 1247471306, 1252266596, 1252792940, 1253960230, 1254127330, 1255848785, 1255859538, 1257563663, 1257583343, 1258195056, 1258213434, 1262993336, 1263908042, 1265512654, 1267283463, 1278475387, 1281229947, 1281889125, 1284797630, 1288585218, 1290240457, 1290513099, 1293031053, 1295516865, 1297095740, 1297597617, 1298827289, 1298832842, 1299380998, 1300818337, 1304310342, 1304455504, 1310534169, 1316956180, 1336232039, 1337809090, 1340075459, 1343684265, 1347737800, 1348149256, 1354685816, 1355025196, 1357282216, 1357301365, 1363667295, 1364395531, 1364732891, 1373278040, 1373514813, 1373685873, 1375205051, 1375419602, 1376146087, 1380234474, 1380513046, 1381723825, 1382632688, 1382645602, 1382709874, 1386126578, 1388184353, 1389190819, 1389902309, 1389912616, 1390104485, 1390958270, 1391687090, 1391699393, 1393151104, 1395748391, 1395924208, 1397018707, 1397022500, 1397827261, 1398423514, 1400330808, 1401462671, 1410284129, 1411428439, 1412479074, 1412717811, 1412831927, 1420822802, 1423109435, 1423890423, 1424552007, 1425040900, 1428131728, 1431817030, 1431897749, 1433480127, 1433483767, 1434457973, 1451286836, 1451565010, 1452211848, 1452224159, 1455851258, 1458060161, 1458176029, 1458620255, 1463365872, 1466302404, 1472319400, 1475303091, 1484355552, 1486115226, 1486401243, 1489893113, 1490054949, 1492145100, 1494001659, 1494630697, 1494690535, 1494695213, 1494714660, 1494714786, 1494714930, 1494889015, 1494990523, 1494992680, 1494997876, 1495466906, 1500014997, 1502962162, 1504548128, 1505655813, 1508029184, 1508045454, 1509815249, 1518807662, 1524160328, 1529373691, 1536802563, 1538089784, 1539586715, 1544812783, 1547140470, 1552392687, 1552405115, 1552405169, 1553111822, 1553462237, 1554120313, 1554158027, 1555241094, 1555436471, 1555595989, 1556675361, 1557492455, 1557696008, 1558835738, 1558865070, 1559582938, 1559928005, 1561078602, 1565016185, 1565113430, 1565407826, 1568314306, 1568314316, 1568317266, 1568696751, 1568699472, 1568940804, 1569248185, 1570879860, 1573625992, 1573800670, 1576869802, 1581247153, 1581398717, 1581675892, 1581718434, 1583510121, 1583803496, 1588886160, 1595292826, 1602148307, 1605015374, 1609481646, 1612153257, 1618209596, 1618218864, 1618873873, 1619384363, 1624861042, 1630153983, 1638526919, 1639454708, 1640524262, 1641042489, 1641812886, 1647303548, 1648240296, 1650468220, 1650500409, 1651513056, 1658862087, 1658979753, 1661301475, 1667470132, 1667473335, 1667728240, 1667806132, 1677105623, 1680875001, 1680882207, 1681660610, 1685495090, 1685495093, 1685495270, 1685495398, 1688394353, 1688567575, 1688665455, 1688778883, 1690751126, 1691125863, 1693300755, 1694472929, 1703388735, 1709297356, 1709313729, 1712511978, 1715661089, 1717927392, 1718114956, 1721373840, 1722360575, 1724823399, 1726408681, 1726606395, 1726645504, 1732927910, 1736066754, 1736347741, 1740486766, 1742215384, 1745377406, 1758824175, 1758930481, 1758975612, 1759122505, 1759143730, 1759143733, 1759227293, 1759313682, 1759313685, 1759412017, 1759432510, 1759498975, 1759505228, 1759507354, 1759515800, 1759642661, 1759864276, 1759893786, 1760159824, 1763810143, 1766750547, 1769211545, 1769618102, 1772590156, 1775156822, 1780760274, 1783870720, 1784406502, 1786353732, 1793007575, 1811810046, 1815656403, 1816569647, 1816866992, 1822574126, 1822868024, 1822868031, 1823268852, 1823275309, 1823288115, 1823390804, 1823768300, 1833535991, 1842420860, 1844031908, 1844296341, 1844524436, 1844853963, 1845272265, 1845433501, 1850725233, 1851761689, 1851765614, 1852766386, 1853687691, 1854177922, 1861204803, 1863593250, 1872674263, 1872992134, 1873841021, 1877281407, 1877305076, 1881597618, 1884316146, 1886743174, 1887188539, 1892879921, 1905997196, 1912353097, 1916296381, 1919640688, 1919643810, 1924325687, 1935798204, 1935801369, 1935813711, 1935815187, 1935818499, 1941710024, 1944260378, 1945210145, 1951157591, 1955955663, 1957378415, 1957388660, 1957444069, 1958153525, 1958153878, 1962799016, 1964448624, 1967235715, 1967514117, 1968334692, 1970709900, 1974828022, 1977445003, 1980811473, 1981302481, 1984866213, 1986874949, 1987285901, 1987558613, 1988913069, 1998855379, 2023930736, 2026542768, 2029442974, 2029502301, 2031253491, 2041190670, 2044176332, 2044519717, 2044521677, 2044845895, 2044862336, 2050748464, 2055299797, 2059226128, 2060744697, 2060874008, 2061631935, 2062602594, 2062613436, 2062713055, 2062721365, 2062782118, 2064194523, 2064289093, 2064667157, 2064835977, 2065546931, 2065580690, 2065783508, 2066019598, 2067177842, 2067640249, 2068518016, 2068619301, 2069026672, 2069773511, 2070805664, 2073324624, 2075547993, 2076314666, 2076760108, 2076927096, 2078661044, 2080078919, 2080126248, 2080270176, 2080768362, 2080948565, 2081049148, 2081811414, 2082081519, 2083365940, 2084275182, 2089789238, 2090043919, 2090165361, 2090287045, 2092471497, 2092773191, 2093281591, 2093290649, 2093484170, 2095261287, 2096596043, 2096775591, 2100685312, 2102866955, 2108433077, 2109903284, 2110249550, 2112026046, 2112754908, 2114424326, 2115251185, 2116737470, 2118764990, 2119510407, 2120903194, 2121183749, 2121530494, 2121539444, 2122085862, 2123968241, 2123974461, 2124038667, 2126585211, 2127702833, 2127711196, 2129393172, 2140172366, 2141043403, 2144163444, 2144352359, 2146552134, 2146559400, 2146579609, 2146771534, 2146787712, 2147192784, 2149214372, 2150227387, 2151276842, 2152677197, 2158829447, 2159124528, 2159550475, 2161337980, 2161361535, 2163722410, 2163917836, 2165826914, 2169168320, 2170868227, 2173022808, 2174751247, 2179048400, 2184998274, 2196541409, 2200622033, 2203412941, 2206322353, 2208794483, 2219653172, 2219657520, 2225010953, 2226828879, 2238722895, 2238722920, 2238723506, 2241976578, 2245936247, 2248375230, 2249276550, 2249625301, 2254065144, 2254179087, 2254183431, 2254275149, 2254449430, 2254449877, 2255178054, 2264880989, 2270863210, 2290294367, 2304704334, 2304866355, 2305219189, 2310350875, 2310486036, 2312897274, 2314773060, 2315564905, 2319231065, 2319463533, 2325240383, 2327016339, 2330482855, 2337919027, 2340169455, 2359883328, 2361871491, 2366081778, 2369823335, 2369831600, 2371523459, 2372759050, 2374977123, 2376431395, 2378889732, 2382890223, 2383755454, 2386589953, 2387052696, 2389856295, 2391789782, 2398718314, 2399324290, 2400888860, 2401211408, 2404756392, 2406557074, 2407241140, 2409418646, 2411497922, 2411691127, 2413846222, 2413908037, 2414944572, 2415208709, 2417936111, 2419639306, 2423159152, 2423360684, 2425978408, 2428076111, 2437572023, 2440527060, 2444775143, 2449407487, 2457428534, 2469735934, 2475146676, 2475744613, 2476033552, 2476112212, 2476147614, 2477393954, 2478803388, 2479415778, 2482075359, 2485317413, 2485370363, 2488499588, 2488699734, 2491415998, 2492607180, 2493496209, 2497515972, 2499072481, 2499532790, 2504383993, 2504870149, 2505121421, 2505147736, 2513647314, 2513693640, 2513701512, 2513706827, 2521253655, 2521398855, 2526527953, 2526528078, 2527291586, 2527292245, 2527666001, 2528098475, 2536669081, 2536933437, 2537106090, 2538335365, 2541170503, 2541170604, 2541177518, 2545965593, 2546249066, 2546819122, 2548278991, 2548782015, 2549421379, 2557808039, 2557863700, 2558865115, 2568950385, 2569073380, 2569341502, 2569405925, 2570837952, 2575053435, 2575619554, 2575627585, 2579451785, 2581687876, 2582936524, 2586547509, 2590439971, 2600983050, 2602643559, 2605946857, 2608238576, 2608504686, 2611889973, 2612202111, 2619739935, 2621175072, 2627204334, 2627570013, 2627677159, 2631480810, 2631901285, 2635187702, 2637430468, 2638897207, 2639751704, 2642390316, 2644459471, 2644532855, 2644906311, 2645171587, 2647433605, 2647443463, 2649904288, 2651288351, 2652440186, 2655263134, 2660229222, 2660362019, 2662714632, 2671981072, 2673085999, 2676359415, 2678218950, 2680015310, 2683201101, 2683726243, 2687071289, 2687546085, 2689958531, 2690565794, 2691049537, 2696922944, 2702278755, 2705586928, 2707450736, 2708750293, 2710694053, 2710777678, 2717039465, 2719746264, 2719953243, 2722365346, 2724396360, 2730361077, 2732178535, 2732249147, 2732255792, 2732453216, 2732465831, 2733162785, 2733179003, 2740913336, 2743326046, 2745816408, 2746770100, 2768031559, 2768594053, 2769743066, 2770453396, 2777301260, 2777413063, 2779047561, 2779131760, 2781151044, 2788878449, 2791114477, 2792266216, 2795123222, 2795130739, 2795148393, 2803000277, 2803220098, 2820015673, 2824852881, 2825063248, 2825297984, 2826183623, 2826618777, 2828159974, 2830840737, 2840364717, 2844137461, 2844192015, 2844331414, 2844474265, 2845536368, 2847702680, 2847708560, 2849875839, 2854691117, 2857021867, 2857111846, 2857167445, 2857291628, 2857718467, 2857718874, 2859609075, 2860369035, 2860944275, 2861234828, 2861431296, 2861773187, 2862323803, 2862729831, 2862789186, 2862818280, 2865000297, 2865536587, 2872917161, 2879220442, 2885591219, 2886256228, 2886266660, 2886337850, 2886340600, 2886347487, 2886358758, 2886559394, 2888553420, 2893735969, 2893987517, 2894277589, 2895201770, 2895970159, 2903889952, 2904798808, 2907566289, 2911967032, 2913775681, 2917443420, 2921648360, 2921994283, 2925162127, 2925540459, 2931480722, 2936112276, 2938485423, 2939997155, 2941295122, 2942568797, 2944555176, 2950549599, 2952067971, 2952072562, 2955690120, 2961421753, 2962144430, 2962519996, 2962841785, 2964270344, 2964373735, 2965548040, 2966852375, 2970298080, 2974400461, 2975755381, 2981996158, 2987922608, 2991195167, 2991625994, 2993771546, 2995901561, 3000958971, 3001281849, 3001388716, 3004478994, 3004479027, 3004479111, 3004479159, 3004479171, 3004479184, 3004479190, 3004479239, 3004479240, 3004479258, 3004479289, 3004479305, 3004479323, 3004479334, 3004479373, 3004479389, 3004479390, 3004479401, 3004479425, 3004479785, 3004479787, 3004479818, 3004479829, 3004479837, 3004479976, 3004479994, 3004480114, 3005847375, 3006723884, 3006726944, 3006727797, 3006731179, 3006737252, 3006744684, 3006811183, 3012299493, 3014399025, 3019017018, 3019072181, 3019996757, 3020108825, 3020133371, 3020188532, 3023885513, 3024558034, 3024589567, 3024626538, 3033483503, 3034109278, 3035739007, 3035887950, 3044634578, 3044797796, 3044821749, 3045244983, 3045788419, 3045876876, 3046124074, 3046256428, 3050244615, 3050333064, 3050334784, 3056297406, 3062281966, 3063798750, 3063849681, 3073445035, 3073797863, 3073848296, 3086119708, 3087786680, 3089398889, 3089451715, 3089454054, 3089461994, 3089735415, 3094552970, 3097888413, 3098875466, 3099276787, 3104375123, 3104503715, 3105798493, 3107144912, 3107146953, 3110631110, 3110681545, 3111601102, 3111601746, 3111606786, 3114815727, 3119543502, 3119594433, 3120807553, 3120857998, 3122897068, 3125786613, 3128821880, 3133975234, 3135838657, 3136281421, 3145164732, 3147940006, 3154068140, 3154152867, 3157412719, 3157501664, 3159380027, 3160589879, 3161016478, 3161897203, 3174437714, 3180245112, 3180300610, 3182786585, 3183126568, 3183293814, 3183325319, 3184294753, 3188347051, 3191217062, 3196370198, 3197567695, 3198643172, 3198783739, 3198824989, 3198841920, 3198930383, 3199640352, 3200095506, 3203439089, 3203573947, 3203579445, 3208441350, 3209729826, 3210506925, 3210514725, 3210570457, 3214383466, 3214394316, 3214653823, 3215790970, 3217760577, 3218901480, 3218928718, 3218996674, 3218997101, 3219339071, 3219427268, 3220535722, 3220543483, 3221757640, 3223098753, 3224727829, 3232284385, 3232339054, 3234508143, 3234559072, 3235473148, 3237969392, 3243142044, 3247991594, 3253953941, 3269910681, 3270985722, 3273573836, 3273628995, 3275986591, 3277061645, 3277112578, 3277868236, 3277980164, 3278129999, 3278154322, 3280832255, 3280992609, 3283017533, 3286262047, 3290414111, 3301409832, 3301494567, 3302526185, 3302610918, 3305712858, 3305866028, 3305950755, 3309540327, 3309590022, 3309595898, 3309596203, 3309660560, 3309660597, 3309937069, 3312550946, 3312639405, 3317007142, 3317095593, 3324397363, 3331028046, 3331525682, 3331580349, 3331802213, 3332642035, 3332696700, 3333929978, 3334870005, 3334920442, 3335058344, 3335315569, 3343940221, 3345496201, 3350023967, 3353092349, 3358586999, 3365687143, 3366763202, 3368167300, 3371155980, 3372842751, 3373802982, 3374003367, 3374007861, 3374013921, 3374033257, 3374071862, 3374072315, 3374075119, 3374222601, 3374506623, 3377952754, 3382868701, 3384928690, 3388197033, 3390931348, 3391051206, 3391063809, 3391068622, 3391334282, 3391402631, 3391423133, 3391432603, 3392425741, 3394879910, 3395277647, 3399311251, 3402270417, 3404440519, 3414226886, 3414277321, 3415566709, 3417045783, 3417060092, 3418683074, 3418733517, 3424453774, 3431921225, 3437307073, 3437430868, 3437705452, 3444401619, 3445590826, 3447374472, 3456431399, 3458638240, 3461359920, 3463272868, 3468986640, 3469121667, 3471246134, 3474393156, 3474446194, 3476056250, 3478543821, 3486841411, 3486906847, 3489097968, 3491201265, 3495569706, 3496705474, 3497897502, 3497994843, 3498252682, 3502149957, 3504414102, 3504826781, 3506839508, 3506948350, 3508950458, 3509210745, 3509498189, 3511959565, 3512025010, 3512493029, 3514111400, 3517669498, 3518790968, 3521920341, 3523035738, 3523862571, 3524226140, 3530307622, 3530358057, 3536335853, 3536792162, 3538712404, 3541452460, 3541507619, 3542648636, 3544416242, 3550676375, 3551025439, 3553383951, 3556498831, 3561501051, 3561585780, 3565016796, 3565023071, 3565174365, 3565227623, 3565288856, 3566089568, 3572109810, 3575114019, 3577841990, 3586425916, 3589694483, 3591020567, 3592221649, 3594125448, 3595182758, 3596128381, 3602035250, 3602533630, 3602552275, 3604829927, 3607233834, 3607322789, 3607604079, 3608554389, 3610981370, 3617629034, 3619761411, 3623812162, 3629877419, 3636237811, 3636292476, 3639577654, 3639632313, 3645953597, 3647523178, 3649784978, 3653883892, 3660676457, 3664234276, 3674197367, 3675513627, 3681233287, 3684650455, 3688377898, 3689406359, 3692544695, 3693437133, 3694959415, 3703294733, 3704443907, 3704956777, 3706490306, 3709178884, 3709268355, 3709272958, 3717182590, 3718660896, 3719413702, 3721853564, 3731122282, 3734934472, 3736397122, 3736397691, 3738359136, 3744502996, 3744505315, 3744515994, 3744516038, 3745225898, 3745403285, 3749377655, 3751498613, 3752631559, 3753565240, 3756319792, 3758308501, 3758308691, 3761682835, 3762386667, 3762488637, 3763193356, 3763904751, 3764062969, 3764739038, 3769398133, 3770065529, 3774076759, 3779092995, 3780318738, 3781089827, 3783201212, 3785420602, 3786786081, 3788364543, 3791375542, 3791430201, 3791912060, 3792007260, 3792147146, 3793208754, 3794029235, 3805317549, 3808957225, 3809652473, 3811984999, 3812594538, 3819295903, 3819351056, 3821104144, 3821104746, 3829518367, 3832811824, 3833121835, 3833171090, 3833706374, 3838812042, 3843969806, 3844552031, 3850681433, 3851222744, 3851541567, 3851602009, 3851679807, 3853676291, 3855415829, 3856249405, 3859110665, 3859972063, 3862928629, 3865386916, 3865396334, 3873108359, 3873163016, 3876524049, 3883472548, 3885986978, 3888196487, 3895773227, 3898366596, 3900605466, 3900796753, 3906034907, 3907036333, 3914330405, 3916906002, 3922403377, 3925982068, 3933039724, 3936549300, 3939824482, 3940957272, 3941201834, 3941535714, 3943160335, 3943296300, 3950173236, 3955179593, 3959867562, 3960938237, 3961299015, 3961303520, 3961836502, 3962329360, 3963273426, 3966271140, 3969493837, 3970184201, 3971378905, 3972349404, 3972404563, 3974206923, 3977375686, 3977639927, 3981851856, 3984175284, 3984369770, 3984383153, 3984388901, 3984577838, 3986753035, 3987449768, 3988320676, 3989122328, 3989124781, 3989300792, 3991957101, 3991978776, 3992246021, 3993156440, 3995285601, 4002046206, 4002059123, 4002298131, 4007368305, 4009075902, 4012314248, 4014272956, 4018800601, 4021398623, 4022152923, 4023242992, 4034787018, 4034837957, 4040007159, 4040507273, 4040558214, 4042630615, 4042667369, 4044815570, 4044899805, 4046325025, 4051504220, 4051593171, 4059166898, 4059387372, 4060969098, 4060986772, 4062588735, 4063625944, 4063736412, 4064813411, 4074640059, 4077930265, 4080197122, 4081731399, 4081736449, 4081740860, 4081761692, 4082508192, 4082648933, 4085037592, 4085499470, 4085741867, 4086206754, 4087477773, 4087973382, 4087974431, 4087975312, 4087977920, 4087977986, 4087982672, 4087983230, 4087984585, 4087984590, 4087984656, 4087988411, 4087993231, 4087993234, 4087993291, 4087993428, 4088004545, 4089941093, 4090379779, 4094838531, 4095533224, 4098180267, 4104794847, 4104808845, 4105491350, 4105500480, 4109580593, 4111598640, 4115797781, 4116207257, 4116258198, 4116322118, 4116406345, 4116912946, 4122262153, 4126221625, 4127308650, 4128209898, 4128210099, 4128224738, 4128228031, 4128452341, 4131804567, 4131859224, 4137741343, 4141029933, 4142953920, 4145022541, 4149201544, 4150566897, 4151710650, 4152474623, 4155185738, 4156445644, 4157556469, 4157644922, 4159136925, 4159401066, 4159780211, 4159864444, 4164601660, 4166043368, 4168091484, 4169450331, 4170161097, 4170579962, 4170925049, 4171014006, 4171016671, 4171029715, 4172482250, 4175353143, 4176008925, 4178981053, 4184703759, 4186748423, 4188894668, 4189635776, 4190045706, 4190142208, 4195146068, 4196943735, 4199824850, 4203521301, 4206809827, 4206944958, 4207535653, 4208164707, 4211585807, 4215346074, 4215356593, 4218114605, 4218115138, 4218132009, 4219656584, 4219999876, 4220379359, 4221957810, 4222018626, 4225873997, 4227433758, 4228171984, 4228217908, 4228360888, 4228368741, 4228368760, 4231583294, 4231662792, 4232149414, 4232629512, 4234942237, 4235762280, 4240864861, 4241320459, 4241740950, 4242647335, 4243702915, 4245105172, 4246629902, 4248741847, 4252833472, 4252840599, 4254781707, 4254799704, 4255058051, 4260594638, 4261873154, 4261894730, 4262104449, 4262374147, 4262375371, 4262499171, 4264253465, 4265048576, 4267292711, 4271528787, 4272039260, 4272350188, 4272417877, 4276136562, 4288066094, 369, 54631547, 68945260, 76317054, 90122581, 107533418, 134757519, 142022835, 149084067, 159782934, 169736776, 205527546, 244603010, 255553804, 262051769, 263431316, 265459661, 284810646, 289494951, 371032970, 373243562, 374621869, 387545720, 391377589, 415171499, 415171548, 415171976, 418990556, 418990602, 425807660, 435420269, 461226423, 483976516, 501379566, 531625563, 553327069, 590191545, 595217502, 649854972, 668816409, 678957092, 680578927, 714686602, 715141614, 717942499, 720960146, 720974524, 720974736, 720975995, 725617684, 744932012, 793535325, 806495002, 817571047, 823641433, 857348365, 862847657, 871542102, 874448701, 877175745, 893771636, 914435801, 931438088, 937200556, 1015486168, 1026348750, 1029964103, 1030875558, 1083568115, 1106088318, 1135523977, 1206251138, 1219433535, 1220725895, 1220852235, 1220852260, 1220852796, 1220852957, 1222628504, 1230410191, 1240508317, 1242746690, 1260212779, 1282239389, 1290343418, 1326192098, 1338160975, 1340954405, 1351436722, 1361325259, 1374669131, 1374800320, 1389489864, 1401511709, 1421711922, 1452449030, 1467196671, 1467386990, 1490648152, 1493005045, 1506058569, 1507763651, 1514073041, 1515782688, 1515784934, 1515785058, 1523142552, 1526329423, 1553174585, 1591300266, 1629584534, 1641166031, 1642384128, 1661678914, 1679178836, 1679485164, 1681545174, 1704277516, 1705410866, 1705908110, 1714538458, 1768636249, 1772526810, 1818263278, 1821800212, 1833750850, 1834601376, 1834613468, 1866278547, 1867401367, 1936236019, 1945296852, 1978039580, 1997464432, 2017904725, 2055461758, 2058918178, 2080694907, 2086814061, 2089989988, 2123843096, 2170766397, 2172738430, 2174442073, 2177527468, 2178512614, 2233637259, 2246941078, 2274844928, 2274845447, 2274845649, 2279046513, 2293400491, 2299670458, 2300280964, 2300527715, 2305877279, 2307152224, 2316307169, 2322963439, 2335588857, 2337430377, 2359562546, 2360555826, 2405952063, 2419834458, 2423179189, 2436862648, 2436862650, 2436862651, 2436862652, 2436862653, 2436862654, 2436862655, 2439178127, 2460729245, 2517521888, 2585317679, 2631335866, 2632842752, 2726667654, 2726667661, 2726667752, 2726667756, 2726667834, 2726667995, 2726668398, 2737177336, 2757711981, 2779759639, 2787445139, 2796817467, 2812190333, 2816464305, 2817592022, 2826795200, 2827908591, 2872823135, 2873905939, 2876785673, 2876785759, 2901134565, 2913059937, 2924726497, 2938670220, 2939089089, 2943360116, 2945389039, 3005172573, 3015670621, 3022308183, 3050185270, 3050185436, 3056015384, 3056015484, 3071839865, 3079506072, 3079929644, 3116612793, 3164097381, 3176996220, 3180729164, 3227651590, 3234391576, 3234432745, 3278041418, 3278041727, 3278041816, 3319967633, 3330642108, 3334769994, 3354637514, 3375261606, 3375312977, 3410106074, 3423153883, 3456106742, 3461071037, 3473412940, 3486684134, 3504293483, 3517650814, 3547292615, 3571189672, 3593285841, 3612407497, 3666061454, 3666061458, 3666061568, 3666061577, 3666061585, 3666061591, 3666061602, 3666061610, 3666061613, 3666061619, 3666061666, 3666061672, 3666061702, 3666061706, 3666061732, 3666061760, 3666061781, 3666061825, 3666061864, 3666061891, 3666061895, 3666061896, 3666061902, 3666061903, 3666061913, 3666062029, 3666062293, 3666062299, 3666062326, 3666062331, 3666062345, 3666062357, 3666062361, 3666062379, 3666062386, 3666062390, 3666062391, 3666062394, 3666062408, 3666062418, 3666062422, 3666062427, 3666062453, 3666062517, 3666062569, 3666062581, 3666062582, 3666062586, 3666062587, 3666099519, 3667007182, 3676644409, 3676644411, 3676644421, 3676644429, 3676644442, 3676644586, 3676644600, 3676644610, 3676644643, 3676644706, 3676644759, 3676644775, 3676644800, 3676644806, 3676644819, 3676644874, 3676644887, 3676644888, 3676644905, 3676644939, 3676644953, 3676644982, 3676645005, 3676645006, 3676645021, 3676645049, 3676645073, 3684315096, 3691777760, 3697941178, 3708654452, 3710369155, 3749170769, 3772863442, 3793240332, 3798969166, 3800169971, 3820675046, 3829710462, 3829710568, 3843370951, 3845152461, 3847111189, 3861225221, 3871154340, 3872238039, 3916589493, 3949265042, 3952274701, 3967179311, 4020468984, 4088042711, 4088042763, 4088043471, 4098608917, 4098609219, 4098704176, 4098704230, 4098775844, 4098776178, 4098815877, 4098816211, 4126370696, 4127380674, 4155818428, 4160021452, 4179162156, 4189349925, 4224941776, 4233200080, 4259920717, 4263023754, 4268562148, 0, 0, 0, 17, 343511425, 1030334438, 1035444912, 1035444966, 1126785220, 1160516735, 2496101809, 2496102373, 2501069285, 2506938014, 2613448893, 2668096359, 2767610756, 2943255975, 3483670337, 3483670995, 4233599295, 4, 989615076, 1348282182, 2372695675, 2793429742, 397, 2315777, 2516160, 11643297, 13203897, 21231554, 35967653, 38712935, 47792331, 72865995, 74144458, 82734700, 83460346, 105527502, 113271207, 133306274, 134752460, 140540365, 149081424, 159784149, 160693466, 187981691, 201714711, 257089230, 271126044, 284628322, 288401789, 293512087, 299470436, 301921344, 303087651, 310748895, 318673258, 321508235, 328967865, 331740776, 333043316, 343618051, 344116268, 349554276, 368842915, 373240553, 380288946, 385653806, 387546555, 391603917, 397299232, 407552584, 411195000, 457925677, 465045723, 466546683, 476300545, 496262010, 508940895, 528158848, 576308682, 599016891, 599034260, 599035482, 617473653, 629010449, 643159709, 649306413, 657763177, 658030821, 663498697, 666920016, 684079208, 730892591, 745170160, 748876721, 748886222, 752803028, 756281027, 761348098, 767592699, 768148470, 771634050, 771637032, 797075449, 798164153, 806496217, 807477757, 814547322, 823640218, 828791723, 830209933, 830328663, 830812219, 831086733, 843422410, 848961657, 871543061, 884068409, 931459402, 935834596, 953760609, 956026316, 973201175, 985556812, 990107236, 1002251210, 1006286666, 1015491227, 1017212284, 1017751931, 1026349709, 1027559288, 1039189287, 1048681185, 1049173028, 1069937338, 1071441344, 1072691903, 1128950639, 1139782538, 1139843834, 1141008431, 1156523661, 1160815779, 1194239092, 1211577197, 1211637010, 1222641289, 1240507358, 1264600767, 1288872441, 1321698432, 1329660539, 1338155660, 1339210968, 1373285759, 1382125974, 1390628516, 1399578255, 1399657308, 1403708559, 1408484449, 1432456391, 1433498959, 1468959011, 1474134153, 1481167509, 1481892069, 1485735468, 1512063165, 1514478145, 1519263375, 1522675342, 1541305645, 1542981532, 1553720283, 1557499238, 1635518266, 1640297675, 1644040136, 1645084619, 1672625515, 1675268949, 1675573659, 1679183895, 1701744405, 1704282831, 1705918154, 1709094170, 1740118996, 1745197398, 1746168006, 1763490076, 1764138250, 1778504542, 1804707890, 1807895638, 1812124962, 1825087480, 1827997201, 1834433178, 1836295865, 1836721468, 1855831597, 1871287494, 1874044309, 1894472089, 1911094612, 1944286571, 1945301911, 1964668429, 1992457158, 2005254865, 2048724462, 2072914399, 2073220142, 2080693816, 2086817070, 2091822363, 2116894487, 2120589916, 2132854800, 2138833857, 2149555928, 2149786502, 2159131792, 2193556503, 2203826663, 2222814745, 2233632200, 2234478015, 2266871804, 2270958851, 2280109123, 2300684501, 2320975486, 2368015199, 2368150205, 2378859099, 2402357659, 2420231640, 2421832104, 2442099500, 2445444524, 2450316872, 2480056360, 2511017726, 2535682339, 2564758885, 2580206998, 2634443356, 2655498207, 2659744440, 2664398480, 2665288759, 2683912382, 2685363948, 2697995386, 2705244823, 2707054618, 2731911143, 2746095604, 2750223108, 2751457001, 2757038073, 2757714990, 2757832374, 2763102979, 2764615893, 2768173321, 2769632227, 2788021838, 2808290141, 2813866328, 2823576784, 2832963785, 2833300206, 2839929991, 2842899363, 2855442276, 2861724882, 2873826097, 2875201553, 2889802328, 2894057006, 2902844704, 2920776771, 2938675535, 2940382413, 2940687092, 2942499160, 2976147113, 2999699036, 3012594373, 3014878073, 3021947486, 3024482894, 3027886950, 3033143700, 3041972547, 3043054392, 3061104959, 3068421535, 3068451149, 3073259213, 3076287128, 3092740204, 3097180103, 3126517186, 3134714387, 3141033517, 3153726305, 3161099645, 3164570023, 3168616586, 3178721795, 3185964212, 3199657339, 3213212569, 3227558031, 3234959359, 3242752110, 3245911312, 3250117513, 3255207552, 3263028169, 3267416959, 3271443733, 3276067803, 3303582289, 3303582897, 3303582994, 3303614961, 3327283712, 3336973745, 3345667381, 3346748653, 3358811093, 3365430328, 3371744816, 3393399711, 3418876414, 3451234301, 3462047339, 3466186248, 3487461167, 3489942689, 3511023565, 3528253833, 3577832733, 3577832874, 3579570991, 3581968529, 3587382024, 3594263141, 3597175734, 3609198260, 3620670314, 3644061745, 3686687805, 3699471696, 3704450806, 3719669200, 3724302375, 3732631655, 3737867596, 3737869333, 3737882439, 3743824089, 3748450386, 3755463030, 3762725071, 3780090414, 3786960458, 3789613664, 3804622433, 3829814476, 3834232417, 3836376093, 3843018675, 3847110230, 3849573984, 3888536498, 3895950835, 3927045026, 3930866393, 3974478460, 3989861270, 3990612749, 3994206764, 3994206767, 4003176468, 4013705057, 4040130402, 4055956024, 4064081091, 4069710253, 4076793042, 4078153021, 4095557691, 4103392506, 4105790268, 4130682685, 4131077260, 4150503708, 4155492542, 4165042016, 4186885299, 4188349987, 4190709408, 4193373567, 4197651626, 4198443983, 4202984206, 4210375752, 4212069506, 4216891535, 4228991204, 4251429164, 4263509307, 4279717352, 0, 0, 0, 2, 898804372, 2420122849, 0, 184, 14034108, 23188555, 69988957, 176179919, 181602757, 234878220, 241015393, 282017655, 286917352, 298380305, 303225044, 333040682, 436746473, 437068413, 449019336, 449464240, 451920903, 472319354, 495318858, 500388520, 512606097, 527005648, 554651161, 561857715, 570474602, 588675343, 615779940, 680838102, 688229624, 722503086, 733631603, 760863762, 768579191, 769161927, 777931472, 804592434, 820388681, 834351359, 838060561, 871806992, 907959623, 917609192, 921095799, 922653385, 936253712, 951807472, 976944213, 1057868108, 1061438860, 1097991931, 1099387701, 1118780323, 1129127307, 1134058690, 1149298066, 1173449599, 1188365042, 1221482277, 1242510922, 1244344576, 1249042959, 1256956692, 1322375458, 1340682260, 1389219463, 1420709285, 1468300758, 1544881072, 1554252850, 1557974723, 1564485910, 1566036640, 1637844009, 1641584834, 1668922875, 1697481902, 1700564263, 1779722906, 1817679755, 1844196310, 1862443027, 1863425670, 1874439438, 1918635827, 1942164974, 1953292144, 1996832610, 2005075462, 2171493616, 2174172768, 2200270403, 2224853335, 2232538822, 2253530761, 2271804726, 2307427283, 2314778321, 2325064176, 2347507979, 2356867634, 2422267260, 2435625787, 2442761119, 2454582508, 2471444403, 2478294033, 2487762682, 2505529649, 2513007594, 2514973059, 2523046044, 2645305307, 2697781106, 2700249759, 2713921343, 2858583336, 2869381059, 2875883974, 2877426354, 2906087318, 2940183875, 2941854634, 2983778787, 2991311078, 3020661286, 3033841873, 3036938981, 3061233249, 3088839886, 3090851000, 3116880000, 3160125774, 3173697968, 3175256934, 3193365922, 3248874150, 3262696949, 3293334302, 3294129343, 3298593000, 3336190368, 3342381501, 3344449059, 3367460946, 3387371732, 3391640312, 3415133140, 3415553447, 3416872467, 3486599559, 3505446608, 3554833241, 3594782899, 3615198865, 3629910769, 3642670614, 3643744473, 3654513786, 3675702820, 3697030868, 3710380917, 3779661543, 3795518186, 3803370028, 3804920752, 3840174405, 3861583079, 3867650596, 3894082090, 3900359633, 3928753122, 3942119031, 3951224511, 4009634354, 4063453845, 4065646590, 4079144597, 4163056211, 4180315949, 4196008531, 4241738188, 4254148468, 4265459019, 4273759132, 0, 0, 0, 0, 0, 5, 1148034389, 1373602048, 2160920720, 2391490885, 2722440867]);
+//# sourceMappingURL=hashes.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js.map b/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js.map
new file mode 100644
index 0000000..f22514c
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/src/data/hashes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../../../src/data/hashes.ts"],"names":[],"mappings":";;AACA,8DAA8D;AAC9D,kBAAe,IAAI,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,EAAE,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,CAAC,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js b/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js
new file mode 100644
index 0000000..08f2085
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js
@@ -0,0 +1,217 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const tldts_core_1 = require("tldts-core");
+const hashes_1 = require("./data/hashes");
+/**
+ * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)
+ * using a binary search algorithm.
+ */
+function binSearch(arr, elt, start, end) {
+ if (start >= end) {
+ return false;
+ }
+ let low = start;
+ let high = end - 1;
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const midVal = arr[mid];
+ if (midVal < elt) {
+ low = mid + 1;
+ }
+ else if (midVal > elt) {
+ high = mid - 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To
+// avoid having to allocate an array to store them at every invocation, we
+// create one global one that can be reused.
+const BUFFER = new Uint32Array(20);
+/**
+ * Iterate on hashes of labels from `hostname` backward (from last label to
+ * first label), stopping after `maximumNumberOfLabels` have been extracted and
+ * calling `cb` on each of them.
+ *
+ * The `maximumNumberOfLabels` argument is typically used to specify the number
+ * of labels seen in the longest public suffix. We do not need to check further
+ * in very long hostnames.
+ */
+function hashHostnameLabelsBackward(hostname, maximumNumberOfLabels) {
+ let hash = 5381;
+ let index = 0;
+ // Compute hash backward, label per label
+ for (let i = hostname.length - 1; i >= 0; i -= 1) {
+ const code = hostname.charCodeAt(i);
+ // Process label
+ if (code === 46 /* '.' */) {
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = i + 1;
+ index += 1;
+ if (index === maximumNumberOfLabels) {
+ return index;
+ }
+ }
+ // Update hash
+ hash = (hash * 33) ^ code;
+ }
+ // Let's not forget about last label
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = 0;
+ index += 1;
+ return index;
+}
+/**
+ * Perform a public suffix lookup for `hostname` using the packed hashes
+ * data-structure. The `options` allows to specify if ICANN/PRIVATE sections
+ * should be considered. By default, both are.
+ *
+ */
+function suffixLookup(hostname, options, out) {
+ if ((0, tldts_core_1.fastPathLookup)(hostname, options, out)) {
+ return;
+ }
+ const { allowIcannDomains, allowPrivateDomains } = options;
+ // Keep track of longest match
+ let matchIndex = -1;
+ let matchKind = 0 /* Result.NO_MATCH */;
+ let matchLabels = 0; // Keep track of number of labels currently matched
+ // Index in the packed array data-structure
+ let index = 1;
+ const numberOfHashes = hashHostnameLabelsBackward(hostname, hashes_1.default[0] /* maximumNumberOfLabels */);
+ for (let label = 0; label < numberOfHashes; label += 1) {
+ const hash = BUFFER[label << 1];
+ const labelStart = BUFFER[(label << 1) + 1];
+ // For each label, matching proceeds in the following way:
+ //
+ // 1. check exceptions
+ // 2. check wildcards
+ // 3. check normal rules
+ //
+ // For each of these, we also perform the lookup in two parts, once for
+ // the ICANN section and one for the PRIVATE section. Both of which are
+ // optional and can be enabled/disabled using the `options` argument.
+ //
+ // We start with exceptions because if an exception is found, we do not
+ // need to continue matching wildcards or normal rules; the exception will
+ // always have priority.
+ //
+ // Similarly, if we find a wildcard match, we do not need to check the
+ // rules for the same label as the wildcard match is always longer (one
+ // more label is matched).
+ //
+ // **WARNING**: the structure of this code follows exactly the structure
+ // of the packed data structure as create in ./bin/builders/hashes.js
+ let match = 0 /* Result.NO_MATCH */;
+ // ========================================================================
+ // Lookup exceptions
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 1 /* Result.ICANN_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains && match === 0 /* Result.NO_MATCH */) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 2 /* Result.PRIVATE_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // ========================================================================
+ // Lookup wildcards
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // ========================================================================
+ // Lookup rules
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(hashes_1.default, hash, index + 1, index + hashes_1.default[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += hashes_1.default[index] + 1;
+ // If we found a match, the longest match that is being tracked for this
+ // hostname. We need to remember which kind of match it was (exception,
+ // wildcard, normal rule), the index where the suffix starts in `hostname`
+ // as well as the number of labels contained in this suffix (this is
+ // important to make sure that we always keep the longest match if there
+ // are both a wildcard and a normal rule matching).
+ if (match !== 0 /* Result.NO_MATCH */) {
+ matchKind = match;
+ matchLabels = label + ((match & 16 /* Result.WILDCARD_MATCH */) !== 0 ? 2 : 1);
+ matchIndex = labelStart;
+ }
+ }
+ out.isIcann = (matchKind & 1 /* Result.ICANN_MATCH */) !== 0;
+ out.isPrivate = (matchKind & 2 /* Result.PRIVATE_MATCH */) !== 0;
+ // No match found
+ if (matchIndex === -1) {
+ out.publicSuffix =
+ numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);
+ return;
+ }
+ // If match is an exception, this means that we need to count less label.
+ // For example, exception rule !foo.com would yield suffix 'com', so we need
+ // to locate the next dot and slice from there.
+ if ((matchKind & 4 /* Result.EXCEPTION_MATCH */) !== 0) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);
+ return;
+ }
+ // If match is a wildcard, we need to match one more label. If wildcard rule
+ // was *.com, we would have stored only 'com' in the packed structure and we
+ // need to take one extra label on the left.
+ if ((matchKind & 16 /* Result.WILDCARD_MATCH */) !== 0) {
+ if (matchLabels < numberOfHashes) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);
+ return;
+ }
+ const parts = hostname.split('.');
+ while (parts.length > matchLabels) {
+ parts.shift();
+ }
+ out.publicSuffix = parts.join('.');
+ return;
+ }
+ // if ((matchKind & Result.NORMAL_MATCH) !== 0)
+ // For normal match, we just slice the hostname at the beginning of suffix.
+ out.publicSuffix = hostname.slice(matchIndex);
+}
+exports.default = suffixLookup;
+//# sourceMappingURL=packed-hashes.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js.map b/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js.map
new file mode 100644
index 0000000..a8896ab
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/src/packed-hashes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"packed-hashes.js","sourceRoot":"","sources":["../../../src/packed-hashes.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/cjs/tsconfig.tsbuildinfo b/client/node_modules/tldts-experimental/dist/cjs/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..d1ca4e4
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/cjs/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../tldts-core/dist/types/src/lookup/interface.d.ts","../../../tldts-core/dist/types/src/options.d.ts","../../../tldts-core/dist/types/src/factory.d.ts","../../../tldts-core/dist/types/src/lookup/fast-path.d.ts","../../../tldts-core/dist/types/index.d.ts","../../src/data/hashes.ts","../../src/packed-hashes.ts","../../index.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc","4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a","45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7","899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941","5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d",{"version":"99ad6b3af53b8ecd1d6d5718ba2fe29275a1502d9e702d0675bbc7588c153acd","signature":"564effd504508d74009e55a851f3a9bd48ee120de9ad1303bb783cf258b1d166"},{"version":"dbbb01bb04c64cc399e355643eb6274cd98e3310e5e03a785ea04aecd35ce03d","signature":"7be3d241db8e8a25a527ccf6c2dd576d8380b6e03327cede059e9e5ce5e8843d"},{"version":"4c60326ce4af26b97277b6dd3628efcfba9c9016008086d176181274c3ffc3e6","signature":"5de310f85a2c8f027298730a918cdd1806092870d86e082720cbc8c23fb5bad3"},{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},"629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"0b3868d3f87c95ea73bdfab380e536843ec3573aa76233b97aac40518494ea24","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","84b8cc86ad19115f2637401cdd220460a25542df478c966a5ffc5eeaf3825299",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab"],"root":[[55,57]],"options":{"composite":true,"declaration":true,"declarationDir":"../types","module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"target":4},"fileIdsList":[[145],[66,145],[102,145],[103,108,136,145],[104,115,116,123,133,144,145],[104,105,115,123,145],[106,145],[107,108,116,124,145],[108,133,141,145],[109,111,115,123,145],[110,145],[111,112,145],[115,145],[113,115,145],[102,115,145],[115,116,117,133,144,145],[115,116,117,130,133,136,145],[100,145,149],[111,115,118,123,133,144,145],[115,116,118,119,123,133,141,144,145],[118,120,133,141,144,145],[66,67,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],[115,121,145],[122,144,145,149],[111,115,123,133,145],[124,145],[125,145],[102,126,145],[127,143,145,149],[128,145],[129,145],[115,130,131,145],[130,132,145,147],[103,115,133,134,135,136,145],[103,133,135,145],[133,134,145],[136,145],[137,145],[102,133,145],[115,139,140,145],[139,140,145],[108,123,133,141,145],[142,145],[123,143,145],[103,118,129,144,145],[108,145],[133,145,146],[122,145,147],[145,148],[103,108,115,117,126,133,144,145,147,149],[133,145,150],[145,156,195],[145,156,180,195],[145,195],[145,156],[145,156,181,195],[145,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],[145,181,195],[77,81,144,145],[77,133,144,145],[72,145],[74,77,141,144,145],[123,141,145],[145,152],[72,145,152],[74,77,123,144,145],[69,70,73,76,103,115,133,144,145],[69,75,145],[73,77,103,136,144,145,152],[103,145,152],[93,103,145,152],[71,72,145,152],[77,145],[71,72,73,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,145],[77,84,85,145],[75,77,85,86,145],[76,145],[69,72,77,145],[77,81,85,86,145],[81,145],[75,77,80,144,145],[69,74,75,77,81,84,145],[103,133,145],[72,77,93,103,145,149,152],[50,51,52,53,145],[50,51,145],[50,145],[54,56,145],[54,55,145],[54]],"referencedMap":[[58,1],[59,1],[60,1],[61,1],[62,1],[63,1],[64,1],[65,1],[66,2],[67,2],[102,3],[103,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,12],[114,13],[113,14],[115,15],[116,16],[117,17],[101,18],[151,1],[118,19],[119,20],[120,21],[152,22],[121,23],[122,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,32],[132,33],[133,34],[135,35],[134,36],[136,37],[137,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[153,1],[154,1],[155,1],[180,52],[181,53],[156,54],[159,54],[178,52],[179,52],[169,52],[168,55],[166,52],[161,52],[174,52],[172,52],[176,52],[160,52],[173,52],[177,52],[162,52],[163,52],[175,52],[157,52],[164,52],[165,52],[167,52],[171,52],[182,56],[170,52],[158,52],[195,57],[194,1],[189,56],[191,58],[190,56],[183,56],[184,56],[186,56],[188,56],[192,58],[193,58],[185,58],[187,58],[68,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[84,59],[91,60],[83,59],[98,61],[75,62],[74,63],[97,64],[92,65],[95,66],[77,67],[76,68],[72,69],[71,70],[94,71],[73,72],[78,73],[79,1],[82,73],[69,1],[100,74],[99,73],[86,75],[87,76],[89,77],[85,78],[88,79],[93,64],[80,80],[81,81],[90,82],[70,83],[96,84],[54,85],[52,86],[53,87],[50,1],[51,1],[57,88],[55,1],[56,89]],"exportedModulesMap":[[58,1],[59,1],[60,1],[61,1],[62,1],[63,1],[64,1],[65,1],[66,2],[67,2],[102,3],[103,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,12],[114,13],[113,14],[115,15],[116,16],[117,17],[101,18],[151,1],[118,19],[119,20],[120,21],[152,22],[121,23],[122,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,32],[132,33],[133,34],[135,35],[134,36],[136,37],[137,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[153,1],[154,1],[155,1],[180,52],[181,53],[156,54],[159,54],[178,52],[179,52],[169,52],[168,55],[166,52],[161,52],[174,52],[172,52],[176,52],[160,52],[173,52],[177,52],[162,52],[163,52],[175,52],[157,52],[164,52],[165,52],[167,52],[171,52],[182,56],[170,52],[158,52],[195,57],[194,1],[189,56],[191,58],[190,56],[183,56],[184,56],[186,56],[188,56],[192,58],[193,58],[185,58],[187,58],[68,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[84,59],[91,60],[83,59],[98,61],[75,62],[74,63],[97,64],[92,65],[95,66],[77,67],[76,68],[72,69],[71,70],[94,71],[73,72],[78,73],[79,1],[82,73],[69,1],[100,74],[99,73],[86,75],[87,76],[89,77],[85,78],[88,79],[93,64],[80,80],[81,81],[90,82],[70,83],[96,84],[54,85],[52,86],[53,87],[50,1],[51,1],[57,90],[56,90]],"semanticDiagnosticsPerFile":[58,59,60,61,62,63,64,65,66,67,102,103,104,105,106,107,108,109,110,111,112,114,113,115,116,117,101,151,118,119,120,152,121,122,123,124,125,126,127,128,129,130,131,132,133,135,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,153,154,155,180,181,156,159,178,179,169,168,166,161,174,172,176,160,173,177,162,163,175,157,164,165,167,171,182,170,158,195,194,189,191,190,183,184,186,188,192,193,185,187,68,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,84,91,83,98,75,74,97,92,95,77,76,72,71,94,73,78,79,82,69,100,99,86,87,89,85,88,93,80,81,90,70,96,54,52,53,50,51,57,55,56],"latestChangedDtsFile":"../types/index.d.ts"},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/index.js b/client/node_modules/tldts-experimental/dist/es6/index.js
new file mode 100644
index 0000000..a8ced78
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/index.js
@@ -0,0 +1,33 @@
+import { getEmptyResult, parseImpl, resetResult, } from 'tldts-core';
+import suffixLookup from './src/packed-hashes';
+// For all methods but 'parse', it does not make sense to allocate an object
+// every single time to only return the value of a specific attribute. To avoid
+// this un-necessary allocation, we use a global object which is re-used.
+const RESULT = getEmptyResult();
+export function parse(url, options = {}) {
+ return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, getEmptyResult());
+}
+export function getHostname(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 0 /* FLAG.HOSTNAME */, suffixLookup, options, RESULT).hostname;
+}
+export function getPublicSuffix(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 2 /* FLAG.PUBLIC_SUFFIX */, suffixLookup, options, RESULT)
+ .publicSuffix;
+}
+export function getDomain(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 3 /* FLAG.DOMAIN */, suffixLookup, options, RESULT).domain;
+}
+export function getSubdomain(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 4 /* FLAG.SUB_DOMAIN */, suffixLookup, options, RESULT)
+ .subdomain;
+}
+export function getDomainWithoutSuffix(url, options = {}) {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, RESULT)
+ .domainWithoutSuffix;
+}
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/index.js.map b/client/node_modules/tldts-experimental/dist/es6/index.js.map
new file mode 100644
index 0000000..10379c2
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGd,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,4EAA4E;AAC5E,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,MAAM,GAAY,cAAc,EAAE,CAAC;AAEzC,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,UAA6B,EAAE;IAChE,OAAO,SAAS,CAAC,GAAG,oBAAY,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,UAA6B,EAAE;IAE/B,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,GAAG,yBAAiB,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,UAA6B,EAAE;IAE/B,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,GAAG,8BAAsB,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;SACrE,YAAY,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,UAA6B,EAAE;IAE/B,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,GAAG,uBAAe,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,UAA6B,EAAE;IAE/B,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,GAAG,2BAAmB,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;SAClE,SAAS,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,GAAW,EACX,UAA6B,EAAE;IAE/B,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,GAAG,oBAAY,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;SAC3D,mBAAmB,CAAC;AACzB,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js b/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js
new file mode 100644
index 0000000..8d2e346
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js
@@ -0,0 +1,3 @@
+// Code automatically generated using ./bin/builders/hashes.ts
+export default new Uint32Array([6, 0, 0, 9, 5860739, 5860978, 5861026, 5861029, 5861126, 5861352, 5861357, 5861403, 5861586, 0, 0, 0, 1, 1850179732, 0, 9, 328184559, 1866923597, 2123501943, 2282562397, 2795346450, 3130446446, 3136607046, 3453334789, 4194175729, 59, 3156266, 20989895, 65021741, 101876503, 179500755, 311298055, 460682395, 582839475, 819014943, 819028732, 870639071, 1075688039, 1139486022, 1241916785, 1335010188, 1370787547, 1370800824, 1431231509, 1498275876, 1522025464, 1544104458, 1554653742, 1570707647, 1626814538, 1630208269, 1675555530, 1679919230, 1687232530, 1730108052, 1789539963, 1893848785, 2001752368, 2023201532, 2182413090, 2391299855, 2419619562, 2445171142, 2496327381, 2525245455, 2573179642, 2703420555, 2709520566, 2762771525, 2921343336, 2989808530, 3000405309, 3015527775, 3047607849, 3382460164, 3420815319, 3461355676, 3498015045, 3738715095, 3810061811, 3843717774, 3934774481, 4085096371, 4146774829, 4208486561, 3692, 100835, 372942, 373596, 399643, 403867, 589540, 737224, 1210028, 1861414, 2424682, 2658901, 2946999, 3329363, 3333156, 6942202, 9086062, 9095117, 9267209, 9340158, 9485932, 11010102, 11406846, 16314893, 17546564, 18146303, 18331450, 19211200, 20314441, 20797457, 25057869, 26663359, 28320278, 30499151, 30585840, 36605120, 36775470, 36775473, 36990037, 39275208, 41892561, 42049478, 42538024, 45214788, 47656662, 50173535, 53599326, 53858455, 54537430, 63815836, 64422985, 64643127, 64831187, 69971116, 73517283, 73904368, 75706244, 78793775, 78794171, 79558910, 80324123, 84993902, 87977581, 87978853, 87978860, 93811268, 95641381, 95641777, 96671837, 100511481, 100947456, 108215410, 108929491, 110526112, 110662188, 112311307, 114507832, 116811054, 120488259, 122521550, 133427701, 134012911, 141513861, 141517490, 144349377, 144362028, 144550088, 144770230, 147205859, 147810002, 147989623, 149598895, 150736276, 150856054, 152379730, 156555774, 164189124, 164189258, 164189262, 164189691, 164189842, 164560958, 165069166, 165106627, 165107021, 165339368, 165444557, 165444558, 165444615, 165444629, 165444745, 165444749, 165445368, 165512129, 165512527, 165749053, 165749188, 165749299, 165749435, 165749535, 165779060, 167155067, 169909265, 169909275, 169909419, 169909512, 169909517, 169909531, 169909608, 169909724, 169909733, 169909734, 169909738, 169909857, 169910036, 169910195, 169910226, 169938982, 169939075, 169939172, 169939304, 169939334, 169939474, 169939481, 169939680, 169939682, 169939793, 169977029, 169977163, 170281136, 170281250, 170281253, 170281258, 170281275, 170281382, 170281390, 170281415, 170281447, 170281457, 170281473, 170281497, 170281511, 170281522, 170281525, 170281528, 170281579, 170281589, 170281687, 170281689, 170281699, 170281742, 170281776, 170281812, 170281852, 170281902, 170281972, 170311352, 170649202, 170649385, 170649596, 171188220, 172078401, 172145927, 172484120, 172484301, 172788260, 172788689, 172788693, 172788754, 172788809, 172788827, 173118530, 173118924, 173456648, 173591948, 173930212, 173930286, 174129293, 174306499, 174306893, 174307245, 174307439, 174358551, 174374100, 174407806, 174410098, 174488250, 174509317, 174577099, 174644617, 174843632, 174844030, 174847160, 175181758, 175524135, 175524873, 176843304, 176948764, 178529610, 178530165, 178530256, 178530299, 178530303, 178530355, 178868363, 178868576, 178868974, 179274397, 179274476, 179379459, 179379616, 179379624, 179379849, 179379853, 179380220, 179657877, 179692651, 179714168, 179913714, 180090112, 180090244, 180090304, 180090314, 180090337, 180090372, 180090450, 180090510, 180090525, 180090526, 180090587, 180090702, 180091049, 180091118, 180091210, 180091228, 180091258, 180091259, 180283722, 180292996, 180293014, 180293036, 180293067, 180293093, 180293105, 180293124, 180293152, 180293156, 180293169, 180293179, 180293199, 180293253, 180293290, 180293294, 180293300, 180293302, 180293304, 180293317, 180293344, 180293346, 180293381, 180293447, 180293487, 180293501, 180293503, 180293522, 180293535, 180293716, 180293796, 180293819, 180293997, 180294000, 180294004, 180294009, 180428032, 180902137, 180969265, 180969566, 180969653, 180969723, 181240259, 181240353, 181240367, 181240371, 181240391, 181240392, 181240393, 181240398, 181240404, 181240451, 181240474, 181240479, 181240483, 181240490, 181240509, 181240515, 181240844, 181240853, 181240956, 181241149, 181241165, 181241168, 181244839, 181375748, 181548621, 181548644, 181548727, 181548873, 181549108, 181549176, 181949900, 181950639, 182056031, 182385920, 182419943, 182893167, 182893283, 182893394, 182893788, 183163149, 183163151, 183163155, 183163168, 183163169, 183163171, 183163181, 183163182, 183163183, 183163186, 183163188, 183163233, 183163248, 183163251, 183163252, 183163254, 183163270, 183163303, 183163314, 183163317, 183163334, 183163335, 183163336, 183163340, 183163345, 183163347, 183163350, 183163362, 183163363, 183163365, 183163366, 183163367, 183163371, 183163375, 183163376, 183163378, 183163380, 183163383, 183163630, 183163631, 183163644, 183163649, 183163651, 183163653, 183163655, 183163664, 183163668, 183163669, 183163678, 183163679, 183163682, 183163687, 183163713, 183163715, 183163728, 183163731, 183163735, 183163742, 183163777, 183163779, 183163780, 183163781, 183163783, 183163796, 183163797, 183163801, 183163843, 183163845, 183163847, 183163859, 183163864, 183163865, 183163874, 183163895, 183163897, 183163913, 183163922, 183163933, 183163960, 183163961, 183163963, 183163977, 183163978, 183163979, 183163981, 183163988, 183163989, 183163991, 183163992, 183163994, 183163995, 183163998, 183164008, 183164010, 183164012, 183164021, 183164025, 183164026, 183164027, 183164029, 183164041, 183164044, 183164045, 183164047, 183164050, 183164051, 183164057, 183164060, 183164061, 183164093, 184080938, 184081253, 184081673, 184081677, 184081778, 184246330, 184246511, 184486318, 184486865, 184487263, 184828195, 184828212, 184844696, 184844824, 184848486, 184848491, 184849029, 184849387, 184859173, 184869208, 184869819, 184994607, 185163947, 185216284, 185289081, 185292632, 185295605, 185501943, 185502073, 185502077, 185772974, 186723357, 186723671, 186723801, 186763265, 186771866, 186840059, 186858006, 186875993, 186950941, 186953244, 186994101, 186994720, 187011432, 187022814, 187064894, 187067400, 187076090, 187078647, 187088813, 187161171, 187188812, 187203075, 187219343, 187222314, 187251332, 187328908, 187332203, 187378741, 187385256, 187386889, 187403121, 187403860, 187404132, 187409119, 187410536, 187415116, 187415841, 187417183, 187453423, 187455618, 187483569, 187506658, 187521457, 187531575, 187554851, 187557872, 187932036, 187932044, 187932595, 187932730, 187932752, 187932756, 187932794, 187932985, 187932989, 189851312, 190236828, 190304994, 190305388, 190372512, 190372516, 190372621, 190372839, 190373457, 190575460, 190575594, 190879986, 191043224, 191246659, 191458643, 191459037, 191524213, 193856736, 193857103, 193857114, 193857243, 193991787, 194363750, 194498585, 194498630, 194498988, 194499056, 194499063, 194532263, 194532626, 194532630, 194532693, 194532760, 194532936, 194533115, 194802308, 194802313, 194802316, 194802351, 194802818, 194802832, 194802974, 194803141, 194803143, 194803161, 194803226, 194803230, 194836546, 194870589, 194870610, 194871004, 195040013, 195040230, 195040360, 195077902, 195078025, 195078028, 195078034, 195078035, 195078038, 195078058, 195078062, 195078071, 195078081, 195078095, 195078112, 195078119, 195078120, 195078149, 195078150, 195078156, 195078185, 195078215, 195078217, 195078250, 195078251, 195078272, 195078273, 195078277, 195078283, 195078287, 195078298, 195078299, 195078300, 195078368, 195078372, 195078375, 195078394, 195078464, 195078474, 195078493, 195078531, 195078554, 195078559, 195078687, 195078710, 195078753, 195078828, 195078837, 195078892, 195078895, 195078900, 195078906, 195078959, 195078960, 195078974, 195078995, 195078997, 195079007, 195146051, 195817892, 195817910, 195818040, 196653590, 197775763, 198219289, 198248729, 198354195, 198354632, 202063369, 203326381, 203326382, 203326695, 203326709, 203326825, 203326829, 203327047, 203327192, 203360584, 203427712, 203428110, 203563443, 203563837, 203664976, 203665374, 203762913, 203901612, 204069808, 206121592, 207568995, 208227118, 218659706, 219797064, 231775478, 232791016, 232866163, 232870916, 237059472, 238230825, 238671321, 241611072, 245880244, 249954601, 256262487, 257210252, 257542887, 259829097, 260353797, 260353928, 260353938, 260354380, 260381156, 260390354, 271387034, 274691435, 279382168, 280527902, 280532777, 280535076, 280542659, 281931451, 292827804, 295209043, 296292341, 297619746, 305011770, 306510696, 313583000, 314643431, 320313766, 320318114, 321023689, 321141002, 321447655, 325454853, 326762411, 337081594, 338040061, 339830659, 340010259, 341833935, 342149828, 342665371, 356194258, 359223603, 359276554, 360327984, 368215882, 370146306, 370150662, 373255328, 373394720, 374785091, 376173808, 377307531, 377336144, 377652210, 379825795, 380248845, 380316586, 381874529, 381884647, 382049883, 382486912, 382598847, 389069795, 389909922, 392084057, 393290800, 395076177, 395140257, 402724451, 403769719, 404122044, 410188633, 413977571, 418962805, 419080649, 423458772, 430711818, 430784915, 431116435, 431157415, 431370962, 431390595, 431489022, 431585240, 431586828, 431608121, 433686700, 442888655, 442922019, 445176561, 449218512, 449424719, 451217894, 451870618, 459172225, 459395692, 464626711, 464765206, 464834904, 469098393, 471052880, 478642118, 480635114, 480636362, 480638119, 480638181, 480638612, 480653244, 480658155, 480658807, 484603510, 484645735, 486805732, 490264076, 490274093, 493445761, 511578298, 513731936, 514111995, 514955151, 515474792, 515491843, 515593995, 518161197, 520595267, 522631343, 523234636, 525872321, 527144416, 531427447, 533682535, 533847771, 534396735, 545433338, 547443445, 550462929, 551440509, 557981738, 559064708, 560636591, 572640614, 572652435, 572800203, 572833146, 572867160, 575127842, 575742406, 575835832, 576106402, 576590271, 577168455, 582462766, 583917065, 583936789, 584490345, 587768078, 588145733, 596395114, 596517435, 602054693, 609523853, 627471386, 630686153, 632559259, 635121653, 635859009, 637007260, 643488605, 643663853, 648304671, 650538190, 656171171, 656243914, 656640963, 665693626, 667797222, 678076451, 679253935, 684522993, 684536293, 689172736, 689202009, 693611235, 694324728, 695649196, 703142796, 706540885, 707132367, 715533184, 722903474, 725879070, 728415570, 731964179, 733989474, 744440632, 745674128, 752520493, 752687122, 752687226, 752699150, 752938578, 753314817, 762792020, 766278458, 771168358, 772916985, 785945688, 787032422, 793080342, 794341423, 794638681, 799598398, 803443550, 803504423, 803576910, 803750530, 804899040, 810638083, 813049915, 813882670, 813882809, 821390609, 822184173, 824372117, 826639012, 826993974, 827624512, 831815016, 834750300, 834856638, 834963202, 835666250, 838463501, 843454848, 845393562, 845537310, 846032279, 853098265, 855980394, 858467853, 869651422, 878524814, 881613818, 885943745, 896206971, 896253025, 900375831, 900562876, 904696072, 907903147, 911040096, 912288153, 912452591, 913046780, 914761571, 915088911, 915769822, 915838470, 919008564, 919376364, 928343570, 933141848, 935240483, 936096500, 939243980, 939281294, 939375524, 939697158, 939922440, 940027871, 942743627, 943328481, 943363810, 947022624, 950098348, 954017396, 958817278, 959069811, 961909457, 961915153, 962363178, 962549619, 963013768, 968961134, 973306633, 973587946, 973591516, 973595243, 973613934, 973618563, 976871270, 977251657, 983929219, 983931665, 983936021, 984542401, 985854160, 994961720, 1002154839, 1005485664, 1005660307, 1005931709, 1008280710, 1009678005, 1015938248, 1018008327, 1024510565, 1027688850, 1033879086, 1034357170, 1038843968, 1039500800, 1043537387, 1043742405, 1044060157, 1045601283, 1046273911, 1046743273, 1046756254, 1048099261, 1052311686, 1052441930, 1052883806, 1055187548, 1056740120, 1058016469, 1059921109, 1068743400, 1072264613, 1080832696, 1083646554, 1084662717, 1086607170, 1086818213, 1086839634, 1087030220, 1087432248, 1087540767, 1088313455, 1101657937, 1101658065, 1102136407, 1102691201, 1104888372, 1107574816, 1107604513, 1107608406, 1114346722, 1115517588, 1116603570, 1116886791, 1121068214, 1121069468, 1123274870, 1123277038, 1123281470, 1123286137, 1123300855, 1135543458, 1135544712, 1135545955, 1135553917, 1135559494, 1135563376, 1141006631, 1141018311, 1142918810, 1143019669, 1145288372, 1146787097, 1149112251, 1151589762, 1152383075, 1153556935, 1153560693, 1153560855, 1153576209, 1153582928, 1155609853, 1158010336, 1158014282, 1158019276, 1158022529, 1158025585, 1158030151, 1158040127, 1158040853, 1158043091, 1160141196, 1160245697, 1160246728, 1160253683, 1160271099, 1160271446, 1160272445, 1160277399, 1161223806, 1161235355, 1162489113, 1166908086, 1166937977, 1166949933, 1166952503, 1166953757, 1166959964, 1169030529, 1169037994, 1169039382, 1169046802, 1169046815, 1169048548, 1169054036, 1169994302, 1171270800, 1171270813, 1172775704, 1174042111, 1174752677, 1174762471, 1175721241, 1175725254, 1175726508, 1175727467, 1175727495, 1175735444, 1175735449, 1175736592, 1175738385, 1175738578, 1175738760, 1175746250, 1175746252, 1175749986, 1175793566, 1181427747, 1181429001, 1181435208, 1181446765, 1181453654, 1181460959, 1185692184, 1189090107, 1193567716, 1194400508, 1204258276, 1204470469, 1207765705, 1207825797, 1208230324, 1208517393, 1208911775, 1211364607, 1212671635, 1214258492, 1217924538, 1220965831, 1229000062, 1229783327, 1232816452, 1237771172, 1237773393, 1237773841, 1245899123, 1247245722, 1257366451, 1260762188, 1261854970, 1265324777, 1265669119, 1273073240, 1280280379, 1280768035, 1291368159, 1295085673, 1296518360, 1297048848, 1300364681, 1303650868, 1304687455, 1304781392, 1304918086, 1305056028, 1306968125, 1306972554, 1306973586, 1307665177, 1308558601, 1308559744, 1308574194, 1308583254, 1308584508, 1308585495, 1310785148, 1310799239, 1310800921, 1310801269, 1310803416, 1310807041, 1310808370, 1311349087, 1313021694, 1313023237, 1313030377, 1314270973, 1314287001, 1314293208, 1321085506, 1324313259, 1324313985, 1324320704, 1324322270, 1324332261, 1324636022, 1325293061, 1325300526, 1325303158, 1325308368, 1325309334, 1325309339, 1325310241, 1325310486, 1325311328, 1325311482, 1326707500, 1328209699, 1328777903, 1328778629, 1328785348, 1328786906, 1328789635, 1328794451, 1328797153, 1329963165, 1329987910, 1330666198, 1330807345, 1330903052, 1331009222, 1331010221, 1331013633, 1331015175, 1331019352, 1331025251, 1331026645, 1331028446, 1331143849, 1335892543, 1336436046, 1336436772, 1336437775, 1336438057, 1336439236, 1336443338, 1336449024, 1336456660, 1336460266, 1336462620, 1336463768, 1336469142, 1341018428, 1341081128, 1341091249, 1341179896, 1342001696, 1344411053, 1344426134, 1344436952, 1344437939, 1344444146, 1346529166, 1349466130, 1350170659, 1350170661, 1350356518, 1350356534, 1350620578, 1351056251, 1351154191, 1351382419, 1351445663, 1354447091, 1354448055, 1354464484, 1354467042, 1354475004, 1354584300, 1355466970, 1355483586, 1355607656, 1355929695, 1355947655, 1356150953, 1356150969, 1356150973, 1356457867, 1356471002, 1356757572, 1357692080, 1357876668, 1357880232, 1360043731, 1360220638, 1362168625, 1362262729, 1362271868, 1362285703, 1362326863, 1362506071, 1362656266, 1365811994, 1367692098, 1367811071, 1368820926, 1369663049, 1377739598, 1378565283, 1379014609, 1383613953, 1383613964, 1383629111, 1383647122, 1385857457, 1385879444, 1388074128, 1388078600, 1388084119, 1388086017, 1388094003, 1388104573, 1388109527, 1388111766, 1390304957, 1390318095, 1390319238, 1390327192, 1390328435, 1390329689, 1391292472, 1391295130, 1391298115, 1391299402, 1391302044, 1391307254, 1391308253, 1392560940, 1396553940, 1397006395, 1397007527, 1397007872, 1397007885, 1397015305, 1397016949, 1397022431, 1400354688, 1400355947, 1400356673, 1400360856, 1400364702, 1400366245, 1401741660, 1407053336, 1407067683, 1409840426, 1410939834, 1414623055, 1417953492, 1417953925, 1417969521, 1417971248, 1418042854, 1418666866, 1422407147, 1422418384, 1422432926, 1422434165, 1422435892, 1423090882, 1425971467, 1426162994, 1426865884, 1426871783, 1426872814, 1426880658, 1426881913, 1426884152, 1428612014, 1429098926, 1429105132, 1429112250, 1430623854, 1433558874, 1433568865, 1433577620, 1433578879, 1435862377, 1444705448, 1444706435, 1444707945, 1444708598, 1444713016, 1444718265, 1444720166, 1444723003, 1444725453, 1444731199, 1444731564, 1444731950, 1444732047, 1444732342, 1444732347, 1444738453, 1448052138, 1448052864, 1448054123, 1448067662, 1448078965, 1449172589, 1452091461, 1453961462, 1457037634, 1457145422, 1457156469, 1457178704, 1459376581, 1459377857, 1459377868, 1459384567, 1459385707, 1459403577, 1459405260, 1459408531, 1463053013, 1463840740, 1463842504, 1463849459, 1463849797, 1463867222, 1463868221, 1463873175, 1464819582, 1464821125, 1464829402, 1464830128, 1464831131, 1465838987, 1466068861, 1466074694, 1466091096, 1466403701, 1467047928, 1467061763, 1467063453, 1467065948, 1467070902, 1468307140, 1468314970, 1468321435, 1469284474, 1469285761, 1469294772, 1469295775, 1471526086, 1474720970, 1474751199, 1474796155, 1474852365, 1474856386, 1474857640, 1474858627, 1474866589, 1474867476, 1474871748, 1474880870, 1482183211, 1482187228, 1482389973, 1486003341, 1486005836, 1486010790, 1486021608, 1486029338, 1486036499, 1486036510, 1491300687, 1492905126, 1495099017, 1496999162, 1497335658, 1497338257, 1497341434, 1497353781, 1497360500, 1497361503, 1503214457, 1504022303, 1504024292, 1504032122, 1504033105, 1504038587, 1509379857, 1510741574, 1511059454, 1514359714, 1514604870, 1517410020, 1517415502, 1517416485, 1517424315, 1517426048, 1519466742, 1519486936, 1521633706, 1524564715, 1526518672, 1534242148, 1535379077, 1535411852, 1535416972, 1535418272, 1535419013, 1535426999, 1535427585, 1535429447, 1535437817, 1535442771, 1535445010, 1538631370, 1539876488, 1539883905, 1539891891, 1539902461, 1539907415, 1539909654, 1540853566, 1540863813, 1540865371, 1540871834, 1540872816, 1540972285, 1544565822, 1547523228, 1548000883, 1548203684, 1548662272, 1548668010, 1548668993, 1548676831, 1548677846, 1548686756, 1550655859, 1551291701, 1552780862, 1554083280, 1554160502, 1556617220, 1556618479, 1556619205, 1556627226, 1556629025, 1571587981, 1572843623, 1577978899, 1578737375, 1579027766, 1580891870, 1580902117, 1580903020, 1580910138, 1580910864, 1581061599, 1584242651, 1584252576, 1584258687, 1584260414, 1584261397, 1594150134, 1594318433, 1594644051, 1595762332, 1596345927, 1596503336, 1599871881, 1600554193, 1600562964, 1600967980, 1600968967, 1600970477, 1600988233, 1600993979, 1600994866, 1600997301, 1601541268, 1602995891, 1603061457, 1604314670, 1604316655, 1604330442, 1604341489, 1604342648, 1605183784, 1605406132, 1605908391, 1607689728, 1607689741, 1607690628, 1607701062, 1607701276, 1607705078, 1607710365, 1607715640, 1607716607, 1607716627, 1608344260, 1610313759, 1610666926, 1611239998, 1611396088, 1614382839, 1614530679, 1615167003, 1615172374, 1615640392, 1615647347, 1615658840, 1615665110, 1615666109, 1615671063, 1620094847, 1620095619, 1620095929, 1620105028, 1620113841, 1620119323, 1620795340, 1621082362, 1621083649, 1621092660, 1622329964, 1622331641, 1622337218, 1622353628, 1623408910, 1624559739, 1624569664, 1624577502, 1624577906, 1624578485, 1626556599, 1628470609, 1630022199, 1632310642, 1633163415, 1635568907, 1635591150, 1635593749, 1635643420, 1635994183, 1635994320, 1641006393, 1645672758, 1645785364, 1645803376, 1645808858, 1645809841, 1646891621, 1646892908, 1646907799, 1646910247, 1646917618, 1646918617, 1648006829, 1648007716, 1648013185, 1648013984, 1648016015, 1648021910, 1648025704, 1648032728, 1648033439, 1648033715, 1648035901, 1648039922, 1648043240, 1649119056, 1649454738, 1649581121, 1652486802, 1652497372, 1652504566, 1652932064, 1652936599, 1653583645, 1653598182, 1653599929, 1653606136, 1653607123, 1654697756, 1654712103, 1654713134, 1654716280, 1654721234, 1654722233, 1656168200, 1659162648, 1659176739, 1659180924, 1659185878, 1659186877, 1659695250, 1660874915, 1664393911, 1666510724, 1668155429, 1669474757, 1673661122, 1673662353, 1673671436, 1673686839, 1673856704, 1674136053, 1674769898, 1674770881, 1674776363, 1674793871, 1675780006, 1676641114, 1677004461, 1677008482, 1677010668, 1677010688, 1677011655, 1677022217, 1677030942, 1677037554, 1679194024, 1679234542, 1679234666, 1679237897, 1679241007, 1679252114, 1679258763, 1679261552, 1679266928, 1681499983, 1681500998, 1681504918, 1681510964, 1681520272, 1681526010, 1681526993, 1682221833, 1682359277, 1685960411, 1685962398, 1685964612, 1685965520, 1685965569, 1685965582, 1685965890, 1685967499, 1685968865, 1685974082, 1685987547, 1685988215, 1685988552, 1685991645, 1686112357, 1686592668, 1686670946, 1687209740, 1690419670, 1690419852, 1690423356, 1690429255, 1690430286, 1690438386, 1690439385, 1690439477, 1691674376, 1691689779, 1691700349, 1691705303, 1691707542, 1691739899, 1692242488, 1693900733, 1693904467, 1693911703, 1693913871, 1693915014, 1693915019, 1693922968, 1693923252, 1693924211, 1693925465, 1696514991, 1697110779, 1697112784, 1697112842, 1697116346, 1697119048, 1697126337, 1697127463, 1697127903, 1697134366, 1697135348, 1699859798, 1705948764, 1706596362, 1707661217, 1709380801, 1709397036, 1709401602, 1709403991, 1709403994, 1709715630, 1709719753, 1710553669, 1710842194, 1711349139, 1711911296, 1712862856, 1712864099, 1712865353, 1712874413, 1712889750, 1715042583, 1716067791, 1716074254, 1716075236, 1716090026, 1716093784, 1716101073, 1716987897, 1717046504, 1717344945, 1717458342, 1717567159, 1717665490, 1720424110, 1720435157, 1720448732, 1720448944, 1720449947, 1720450929, 1722611952, 1723770733, 1723771620, 1723777366, 1723796376, 1723797619, 1723869014, 1724144999, 1724360630, 1724888746, 1724891334, 1724900049, 1724902970, 1724913368, 1724913588, 1724914591, 1724915573, 1727744610, 1733044570, 1737465416, 1740104597, 1740108386, 1741479646, 1741618915, 1741621154, 1741622153, 1741631292, 1741636935, 1741709977, 1742216984, 1743089654, 1744959211, 1744968590, 1744969829, 1744971556, 1744977659, 1744987840, 1745343269, 1745488513, 1746392299, 1747200908, 1747202151, 1747210105, 1747211248, 1747212978, 1747215938, 1747219291, 1747533677, 1747671543, 1747762259, 1748301224, 1748301648, 1748302211, 1748318651, 1748321229, 1748327140, 1748327340, 1748328118, 1748329946, 1749416322, 1749419816, 1749422630, 1749422974, 1749423815, 1749423848, 1749423862, 1749423980, 1749432545, 1749435316, 1749435457, 1749435956, 1749437829, 1749437986, 1749440303, 1749441388, 1749442296, 1749442361, 1749443256, 1749443576, 1749444398, 1749445477, 1749445739, 1749750164, 1749955965, 1752768365, 1753028168, 1753430927, 1753880966, 1753882221, 1753900232, 1753906931, 1756680747, 1759105063, 1762715404, 1763952265, 1763967858, 1763978172, 1763979159, 1765274516, 1768132013, 1774870841, 1775278057, 1776446407, 1778765218, 1779479261, 1779706923, 1779707649, 1779709525, 1779713177, 1779714057, 1779714368, 1779715934, 1779715971, 1779725925, 1779730307, 1779731494, 1780768183, 1781938242, 1781939241, 1781944195, 1781948380, 1781954023, 1781961852, 1783657515, 1785147288, 1785152492, 1785564290, 1786402886, 1786403885, 1786408839, 1786413016, 1786418915, 1786422601, 1793085197, 1793091404, 1793103209, 1793109842, 1794311882, 1796513490, 1798682988, 1799934413, 1800873944, 1804734874, 1804986274, 1805201900, 1805201909, 1805381533, 1805390218, 1805394927, 1805396070, 1805397817, 1805404024, 1805410294, 1808346875, 1809278593, 1809846425, 1809852765, 1809854826, 1809860706, 1809868668, 1809869655, 1809909084, 1810126394, 1810162729, 1811189710, 1812804641, 1813167465, 1818860644, 1819164253, 1824377544, 1826567786, 1826567942, 1826568769, 1826574251, 1826586852, 1826591759, 1826593533, 1826594804, 1826595685, 1826597041, 1826838298, 1830073720, 1832102940, 1835526804, 1835527882, 1835530317, 1835531888, 1835536950, 1835540435, 1835541852, 1835548479, 1835548755, 1835552425, 1835554706, 1835556216, 1836706536, 1838062951, 1839007628, 1839021100, 1839022775, 1839033593, 1839038547, 1839040786, 1839994953, 1840001842, 1840013399, 1840019350, 1840019827, 1840020860, 1843076481, 1845608978, 1846070315, 1848013570, 1854921046, 1859450748, 1859510931, 1859511204, 1860240647, 1860312281, 1860334137, 1861101595, 1863024310, 1866891339, 1866893066, 1866896736, 1866908847, 1866910185, 1866914026, 1867191437, 1867861768, 1867865679, 1867867083, 1867872142, 1867873124, 1867876289, 1867885376, 1867885466, 1867887914, 1867892691, 1867897750, 1867898961, 1867899162, 1873521117, 1875950626, 1878219696, 1883713830, 1883718737, 1883722494, 1883726489, 1883992567, 1884025074, 1889208808, 1889317056, 1890185274, 1890552293, 1891315242, 1893129355, 1894534152, 1894535395, 1894543357, 1894548934, 1895822736, 1896748195, 1896864381, 1896883495, 1896884690, 1896893413, 1897086584, 1897144569, 1897150382, 1897161336, 1898308423, 1899713189, 1903920486, 1903920882, 1906518923, 1906815088, 1907758428, 1907908343, 1907910446, 1907911172, 1907924055, 1907926218, 1907937265, 1910568778, 1912588116, 1912664290, 1912773142, 1919704439, 1919708663, 1925589573, 1928014104, 1931786446, 1933270769, 1933847987, 1934282690, 1935832225, 1937137824, 1940180687, 1941545223, 1944881831, 1944883085, 1944889292, 1944901097, 1944907730, 1944915291, 1947690884, 1949378607, 1949381140, 1949385828, 1949388221, 1949404634, 1953208595, 1957126749, 1965980590, 1966393263, 1967560433, 1968030901, 1968344522, 1968345101, 1968353343, 1968354820, 1969952988, 1969953274, 1970271924, 1982830318, 1982831301, 1982836783, 1982854539, 1982856313, 1982857328, 1982862253, 1982863214, 1983945412, 1983946415, 1983946627, 1983953134, 1983957025, 1983968650, 1983971249, 1983972408, 1983977373, 1985096774, 1985106740, 1985116048, 1985122769, 1987638584, 1989155232, 1991785536, 1991792841, 1991799730, 1991811287, 1991817238, 1991817715, 1991818748, 1994019132, 1994026062, 1994028952, 1994613365, 2000627256, 2002587178, 2002703477, 2004080420, 2007546240, 2007547499, 2007556254, 2007557797, 2009780252, 2013938002, 2016158046, 2016458632, 2016459875, 2016461129, 2016470189, 2016476340, 2016482461, 2016485526, 2019785049, 2023148389, 2023153871, 2023155598, 2023156002, 2023157760, 2023171627, 2023174160, 2023812622, 2029256230, 2029286951, 2029296544, 2037064184, 2042215210, 2042272668, 2042423451, 2043073993, 2044012869, 2046744295, 2047386704, 2047490213, 2047625030, 2047828609, 2051192703, 2052284669, 2056364987, 2056365175, 2056459861, 2057257910, 2058376024, 2058382302, 2058436464, 2058440319, 2058445367, 2058448694, 2058452545, 2058552215, 2058569521, 2058573621, 2058924197, 2058929805, 2058958371, 2058984507, 2058988863, 2059003240, 2059051015, 2059075746, 2059422408, 2059824807, 2061714098, 2062014471, 2063260135, 2063415690, 2063627333, 2063814283, 2064238717, 2064313581, 2064484772, 2064499575, 2064635107, 2064635452, 2064635773, 2064639428, 2064639883, 2064648773, 2064654772, 2064655646, 2065476844, 2065542420, 2065542544, 2065543022, 2065727011, 2066567940, 2066734284, 2066828553, 2066833534, 2067202738, 2067233317, 2068031208, 2068725531, 2068831008, 2068854498, 2068854512, 2068858196, 2068859575, 2068860177, 2068862627, 2068863232, 2068869021, 2068950273, 2068994789, 2068994807, 2069062998, 2069102686, 2069161595, 2069263945, 2069338842, 2069365704, 2069468800, 2069558220, 2069561350, 2069566268, 2069591394, 2069593072, 2069595618, 2069600040, 2069600946, 2069600957, 2069604100, 2069765192, 2069904166, 2069904305, 2071035931, 2071149679, 2071643658, 2073289171, 2073308845, 2073310709, 2073312474, 2073322881, 2073335784, 2073440452, 2073448514, 2073457247, 2073500084, 2073509625, 2073523923, 2073533208, 2073640292, 2073794194, 2073803151, 2073803461, 2073808229, 2073811616, 2073811996, 2073815760, 2073826308, 2073826688, 2073827152, 2073830759, 2073831593, 2073831601, 2074299520, 2075044848, 2075423284, 2075693433, 2078935992, 2078936931, 2078937889, 2078937913, 2078938163, 2078938295, 2078944407, 2078944555, 2078944613, 2078944933, 2081181239, 2082063743, 2082285629, 2082430948, 2084946688, 2086083080, 2087431076, 2087431077, 2087431079, 2087431080, 2087431081, 2087431082, 2087431085, 2087431086, 2087431087, 2087431088, 2087431089, 2087431090, 2087431091, 2087431092, 2087431093, 2087431094, 2087431096, 2087431097, 2087431098, 2087431099, 2087431100, 2087431102, 2087431103, 2087617590, 2087617591, 2087617592, 2087617593, 2087617594, 2087617595, 2087617596, 2087617597, 2087617598, 2087617599, 2087617632, 2087617633, 2087617634, 2087617635, 2087617636, 2087617637, 2087617638, 2087617639, 2087617640, 2087617641, 2087617642, 2087617643, 2087617644, 2087617645, 2087617647, 2087617652, 2087617654, 2087617655, 2087617656, 2087617657, 2087617658, 2087617659, 2087617660, 2087617661, 2087617662, 2087617663, 2087629931, 2087822490, 2088302297, 2088726760, 2088953542, 2090213881, 2090218574, 2090297888, 2090298020, 2090439875, 2090439900, 2091225604, 2092577468, 2092702023, 2092715579, 2092766986, 2092957042, 2093991393, 2093995617, 2093995632, 2097113374, 2098599777, 2098599792, 2099138174, 2102249573, 2102285158, 2102285168, 2102285285, 2102285374, 2102286572, 2102291553, 2102297313, 2102301463, 2102304381, 2102311282, 2102312281, 2102313468, 2102315379, 2102317235, 2102322718, 2103529616, 2105684477, 2105873178, 2106751208, 2106757636, 2106766355, 2106769656, 2106775467, 2106775926, 2106776925, 2106781879, 2118750891, 2119037299, 2119037310, 2119041270, 2119043865, 2119381911, 2119891962, 2120136928, 2120142410, 2120143393, 2120151231, 2120152708, 2121629990, 2122433548, 2123414271, 2123472843, 2123472936, 2123472941, 2123472990, 2123479292, 2123481132, 2123481326, 2123481391, 2123481939, 2123481960, 2123482409, 2123482928, 2123482935, 2123485221, 2123485512, 2123485548, 2123486092, 2123487587, 2123487602, 2123487868, 2123488061, 2123488218, 2123489049, 2123491458, 2123491494, 2123491502, 2123491940, 2123491950, 2123491964, 2123492067, 2123492380, 2123492410, 2123492613, 2123492943, 2123493403, 2123494323, 2123494721, 2123494806, 2123495205, 2123495222, 2123495263, 2123495538, 2123495599, 2123495615, 2123495829, 2123496707, 2123496945, 2123497027, 2123497539, 2123498152, 2123498482, 2123498621, 2123498738, 2123499337, 2123499387, 2123499393, 2123499675, 2123499817, 2123499823, 2123500085, 2123500670, 2123501043, 2123501651, 2123501946, 2123502012, 2123502614, 2123502618, 2123502909, 2123502931, 2123502972, 2123503489, 2123503580, 2123503633, 2123503639, 2123503645, 2123503683, 2123503690, 2123503871, 2123503914, 2123503925, 2123506021, 2123508761, 2123508887, 2123508888, 2123509104, 2123509367, 2123510210, 2126830924, 2126831627, 2126831911, 2126831915, 2126834731, 2126838118, 2126839865, 2126841008, 2126851442, 2126854146, 2127933481, 2127939688, 2127940675, 2127945958, 2127950989, 2127966582, 2130163562, 2130164545, 2130170027, 2130187535, 2130190580, 2131286378, 2132327224, 2132331087, 2132359596, 2133546426, 2134655216, 2135730753, 2135744303, 2135751022, 2135766376, 2135766538, 2136033383, 2136198665, 2140379406, 2140382005, 2140404240, 2140405499, 2140406225, 2141369520, 2141378580, 2141384318, 2142607534, 2142608862, 2142616598, 2142619146, 2143588731, 2143590729, 2143592861, 2143597618, 2143609175, 2143615126, 2143616636, 2144000095, 2144838611, 2144844042, 2144846897, 2144858266, 2144868884, 2144870143, 2144870869, 2157945278, 2158338411, 2160318468, 2160324206, 2160325189, 2160333019, 2160343200, 2161569257, 2161578129, 2161578140, 2161592231, 2161595735, 2165898261, 2166038855, 2166996811, 2167003274, 2167004256, 2167015877, 2167018798, 2167213797, 2167993101, 2169327252, 2170481633, 2170487115, 2170488842, 2170504623, 2170507412, 2174946277, 2174951759, 2174953486, 2174953890, 2174969515, 2174972048, 2176528068, 2179101309, 2180545870, 2191744103, 2191744212, 2191821366, 2191883015, 2192566334, 2193960351, 2195897610, 2195898849, 2195906687, 2195916612, 2195922100, 2196631346, 2205406696, 2211506222, 2216825796, 2219145843, 2221394610, 2225058301, 2225061335, 2225064134, 2225071439, 2225073075, 2225080536, 2226037368, 2226044042, 2226051203, 2226052893, 2226055388, 2226060342, 2226419862, 2229788675, 2230793522, 2230840997, 2231615745, 2231617728, 2231623210, 2231628742, 2231632031, 2231633170, 2231633764, 2231638049, 2231729235, 2231751291, 2231760201, 2231761216, 2231769054, 2231770037, 2231775519, 2233884981, 2235097422, 2235100587, 2235101313, 2235108032, 2235109598, 2235116887, 2235119589, 2236869449, 2241796550, 2241797549, 2241806680, 2241812579, 2242828527, 2246244298, 2246245281, 2246250763, 2246260079, 2246271316, 2247223374, 2247249937, 2247251096, 2248592412, 2250708942, 2250715407, 2250719552, 2250724971, 2250725805, 2250733692, 2250734937, 2250735952, 2258665553, 2258878642, 2264886749, 2266447633, 2267607000, 2274782645, 2282544968, 2285662351, 2290599544, 2292158595, 2293175691, 2293351636, 2296071446, 2299255515, 2301040846, 2306079466, 2307580553, 2313241363, 2313504811, 2318220358, 2320224028, 2325476095, 2337176745, 2339504386, 2344847762, 2345345412, 2345556981, 2346482211, 2346482871, 2351498341, 2352240646, 2352738840, 2358991500, 2361087993, 2364634824, 2371011349, 2373457221, 2375393789, 2376425283, 2379512524, 2379580075, 2390286898, 2390518325, 2390736011, 2392516839, 2392521063, 2400874900, 2400879124, 2402335630, 2404974948, 2405102721, 2405117283, 2405120727, 2414810349, 2415093005, 2415923742, 2415925541, 2415935547, 2415976346, 2418152088, 2422623072, 2422625395, 2422631927, 2422634373, 2422636295, 2422636392, 2425962056, 2425963043, 2425969250, 2425969487, 2425971892, 2425985030, 2428197348, 2428202830, 2428203813, 2428211643, 2428212914, 2428213376, 2428240545, 2430223084, 2433759338, 2433759634, 2433760321, 2433765803, 2433783311, 2433785126, 2433786356, 2433788522, 2435993901, 2436000108, 2436001095, 2436011657, 2436026994, 2439339076, 2439340079, 2439340291, 2439346798, 2439350689, 2439362314, 2439364913, 2439366072, 2439371037, 2439876345, 2440431898, 2440444045, 2440449369, 2444112661, 2447928023, 2452264162, 2454797153, 2458316286, 2459819944, 2462285242, 2462802458, 2463186757, 2466741694, 2466758807, 2467213089, 2467545358, 2467601561, 2467655846, 2467686484, 2467740953, 2473985870, 2474042431, 2474150919, 2474285829, 2474577412, 2474661520, 2475343068, 2475470210, 2475772433, 2475877012, 2475877016, 2475892298, 2476213365, 2476552306, 2479517659, 2489453909, 2489531547, 2498555779, 2501597440, 2507278661, 2510852110, 2511694664, 2512156190, 2540805343, 2543008264, 2547140668, 2553182506, 2558063998, 2558416820, 2560726248, 2564751176, 2566787042, 2569608194, 2572602371, 2577853220, 2579803386, 2583084289, 2586020617, 2600402029, 2604613571, 2614694552, 2616608417, 2623678483, 2624091113, 2626979216, 2627765050, 2629831661, 2630340943, 2630577386, 2637047575, 2637160117, 2637393619, 2637589507, 2639283063, 2642320383, 2657728452, 2661288721, 2663538084, 2673250796, 2673678071, 2673953045, 2683622002, 2686768508, 2689921282, 2691751732, 2691869931, 2692015714, 2693065457, 2693628719, 2694158948, 2699054734, 2699567323, 2701589506, 2708247797, 2710218932, 2712973569, 2713114330, 2714570818, 2714658156, 2715859111, 2716538256, 2717691085, 2718235570, 2719851426, 2722275573, 2728431851, 2731033959, 2733567145, 2745064373, 2747735009, 2748168364, 2748310006, 2753354596, 2761147374, 2762813598, 2767767034, 2769808878, 2775691349, 2789347571, 2792452218, 2793624174, 2794767436, 2795183554, 2795185357, 2795205893, 2798224110, 2803597621, 2804113804, 2807804736, 2809486328, 2813025413, 2815428841, 2815585428, 2816618421, 2819662823, 2822221150, 2824682484, 2828575765, 2828866516, 2829935276, 2834927579, 2836892761, 2839658405, 2844621372, 2844815106, 2845489684, 2845638303, 2857193006, 2860702321, 2870435535, 2874906565, 2880233005, 2885526550, 2889073982, 2893961579, 2896115089, 2896360091, 2896815948, 2898520762, 2898642745, 2908250170, 2908376536, 2911135641, 2915014315, 2918403731, 2918486269, 2919235927, 2920587887, 2922468503, 2922493886, 2923084706, 2929584080, 2931398379, 2931402541, 2934893225, 2937779198, 2941551192, 2942859576, 2948690168, 2948867989, 2949433359, 2951266128, 2954570766, 2956489777, 2960184498, 2960188722, 2960612931, 2962892549, 2963032843, 2966548328, 2976545290, 2976620947, 2978924197, 2982913903, 2986096991, 2987284613, 2988637881, 2993692642, 2996709992, 2999106536, 3000568496, 3005531064, 3005732955, 3007175865, 3007286028, 3008753857, 3010444860, 3010880247, 3017258218, 3019938621, 3020499579, 3022866914, 3023311759, 3024482653, 3024795687, 3024807531, 3027071777, 3029820267, 3032088673, 3032839979, 3033043261, 3033965900, 3036878933, 3037343835, 3038234864, 3051293097, 3052701732, 3055037923, 3056484673, 3060407188, 3061523114, 3071254387, 3071254500, 3071254881, 3073058130, 3074871971, 3074935051, 3075008146, 3075048985, 3075285442, 3075422693, 3075548305, 3075766008, 3075860343, 3075962648, 3076097045, 3077391764, 3079190285, 3085252246, 3091553195, 3103424085, 3107541791, 3107727924, 3107749241, 3107778469, 3107783354, 3107787446, 3107790299, 3107948057, 3107956419, 3107974264, 3107984588, 3107991466, 3108296169, 3111583245, 3113459538, 3116256345, 3116975703, 3117043431, 3121647752, 3123411243, 3123445549, 3123737595, 3127243644, 3131616468, 3134139083, 3134716611, 3141709512, 3148676509, 3154082174, 3155375542, 3160028447, 3163162577, 3163167462, 3163515572, 3163650864, 3172095015, 3178395499, 3179705353, 3183658699, 3187099641, 3187299343, 3189362935, 3189614929, 3189845278, 3191231848, 3191324353, 3196795314, 3196799538, 3197664642, 3200115829, 3202732235, 3206363778, 3207294280, 3218691622, 3224832477, 3226582088, 3231960701, 3231960825, 3238444781, 3240506687, 3241127686, 3245505639, 3246685420, 3255250502, 3255475289, 3255493270, 3258010725, 3259268259, 3259708744, 3272088211, 3277477189, 3287497511, 3289363789, 3294281816, 3300709686, 3302430666, 3307080284, 3310372188, 3310580422, 3313110325, 3317570505, 3321771963, 3323504524, 3331794938, 3332552236, 3344936763, 3351242611, 3354164541, 3356161036, 3357443896, 3358280978, 3360549707, 3361435146, 3362509089, 3362630778, 3366341181, 3366920760, 3372160500, 3373297021, 3374596217, 3375285141, 3377755895, 3379029866, 3380241983, 3380595728, 3381834713, 3385946526, 3386125251, 3388057612, 3393544563, 3404840083, 3405857857, 3407191084, 3408814815, 3408819560, 3409018494, 3409457570, 3410577155, 3411051814, 3411102162, 3413983999, 3416635233, 3418887913, 3424150275, 3426036948, 3426656604, 3429124000, 3430316367, 3430320824, 3430870942, 3431771155, 3432731814, 3434192147, 3440930072, 3441289467, 3448289841, 3448536520, 3452859864, 3455445539, 3455973701, 3456106851, 3456282588, 3457601666, 3463597433, 3467469261, 3473077716, 3481649290, 3487446962, 3488816292, 3495434909, 3503723552, 3503962589, 3503975251, 3504086267, 3504111353, 3504116046, 3504274912, 3506277065, 3508805241, 3509081590, 3511319965, 3513566261, 3515728076, 3515960057, 3516630755, 3523519258, 3526432473, 3530287752, 3530798581, 3531066474, 3531601080, 3532265658, 3532567787, 3533680386, 3538145547, 3540002868, 3540019679, 3541120058, 3551826674, 3554146688, 3557238629, 3557288966, 3560409651, 3560721423, 3560755308, 3560772904, 3560776799, 3560843986, 3563273081, 3564677062, 3564681286, 3567399383, 3582031081, 3584271853, 3584286131, 3585048866, 3585049834, 3585528102, 3593775985, 3599378282, 3602300234, 3607509617, 3611661676, 3611790203, 3621964687, 3621965124, 3621966081, 3621966083, 3621968414, 3621969916, 3621970585, 3621975893, 3622095083, 3622538650, 3627671724, 3631197772, 3636965307, 3639447013, 3650032210, 3667545339, 3668394990, 3668555001, 3668632957, 3671699945, 3674122558, 3682693088, 3690182854, 3691035506, 3691048605, 3691317036, 3693068020, 3697923226, 3699114476, 3702342894, 3706900355, 3708334595, 3709045244, 3712703179, 3712728440, 3712733478, 3718845099, 3718930524, 3720827503, 3728968422, 3729352785, 3730027878, 3734185373, 3735541918, 3737224996, 3738382782, 3738387349, 3738389800, 3738389990, 3738390006, 3738390241, 3738390427, 3738394220, 3738394620, 3738394722, 3738394744, 3738394859, 3738396519, 3738397033, 3738399064, 3738400460, 3738887202, 3738887334, 3739466542, 3743223168, 3743289449, 3744330913, 3745299015, 3748385635, 3749221030, 3756564018, 3766265917, 3766587032, 3767014136, 3767872686, 3768672199, 3771941409, 3772113601, 3772128853, 3772772804, 3776028623, 3776032376, 3777321837, 3777702607, 3777706691, 3777840696, 3778052019, 3778877784, 3788596678, 3788641118, 3789096147, 3790949066, 3792555306, 3792675197, 3794434962, 3795445637, 3799396589, 3802359444, 3802425981, 3802900168, 3803509878, 3803533553, 3803824710, 3817195077, 3825134626, 3831783888, 3836226283, 3837130236, 3839963077, 3842564401, 3842605521, 3845461162, 3845489549, 3848928610, 3854658802, 3856336918, 3857323999, 3858008723, 3859684851, 3862352064, 3867966833, 3870049918, 3871085378, 3871829833, 3872291932, 3872427595, 3873740388, 3875975886, 3876231871, 3878080222, 3881750832, 3882302039, 3886373040, 3890622701, 3890644440, 3890892359, 3896043913, 3896689307, 3899279503, 3900747045, 3906847659, 3911916015, 3927826024, 3935292304, 3943337509, 3944324480, 3944448839, 3945529821, 3947301018, 3949488650, 3950159753, 3952494101, 3960241116, 3960376152, 3961917741, 3963099658, 3963421060, 3963723254, 3967007952, 3967259205, 3969124422, 3970612783, 3970678261, 3973713485, 3975040093, 3975243357, 3975693785, 3987058095, 3990704705, 3992681822, 3994071046, 3995478227, 3998971354, 3999298006, 4000670401, 4000993351, 4001099777, 4001277861, 4001735503, 4002465742, 4003357293, 4005356768, 4007925342, 4011050686, 4011066530, 4011075332, 4011273939, 4011552428, 4011788459, 4012217148, 4012217259, 4024186918, 4027830515, 4028975169, 4029110469, 4029583348, 4030423947, 4031498693, 4031499367, 4031499504, 4031509172, 4031928713, 4032208645, 4032479130, 4033316487, 4036743247, 4038287798, 4038545865, 4040900190, 4042024153, 4059950647, 4061045790, 4064482362, 4064482494, 4064686007, 4068398139, 4074270800, 4074270919, 4074308286, 4075674315, 4075712516, 4075885548, 4078878227, 4080178633, 4081049105, 4089654486, 4090206590, 4090679933, 4091412422, 4095259202, 4095274203, 4097043581, 4097047544, 4097047888, 4097050487, 4097053538, 4097079538, 4097094723, 4097094855, 4097218811, 4097289420, 4097298261, 4097355529, 4097358800, 4097358806, 4097359478, 4097365147, 4097365569, 4097368351, 4097368475, 4097373732, 4097381131, 4097390898, 4097493023, 4097494448, 4097500420, 4097504860, 4097508952, 4097518447, 4097523657, 4097528230, 4097528249, 4097565588, 4097595928, 4097769515, 4097769660, 4097770040, 4097900631, 4097993352, 4097993363, 4098078311, 4098093255, 4098096816, 4098101881, 4098102013, 4098120408, 4099257624, 4099391059, 4100119818, 4101141701, 4101990706, 4102099355, 4102141580, 4102295291, 4103385373, 4104416776, 4108421678, 4108481771, 4113654278, 4120143040, 4120573143, 4120685305, 4120832270, 4121323786, 4122797449, 4123137490, 4123141719, 4123166778, 4123237466, 4124517918, 4124852870, 4126190390, 4126265264, 4126330058, 4126584791, 4128561486, 4130538182, 4130665595, 4135804702, 4138805004, 4138959002, 4142649353, 4143010615, 4143011353, 4149276818, 4149741566, 4155964946, 4160851306, 4165043845, 4165602674, 4166101816, 4168666626, 4168671212, 4169534192, 4169538416, 4175499442, 4178182706, 4179726175, 4180321577, 4180398911, 4180437564, 4180584501, 4180592595, 4180655876, 4182610142, 4190427894, 4190436241, 4190438903, 4190464587, 4190536489, 4191350062, 4197904504, 4208748285, 4213114634, 4213114766, 4213115878, 4213133169, 4213139443, 4216213600, 4229539334, 4230260404, 4236039784, 4239211903, 4244301284, 4244359264, 4244636840, 4244650461, 4244697370, 4246504751, 4248927363, 4249781266, 4250093591, 4255547342, 4269915810, 4271230391, 4273205904, 4280822506, 4281987205, 4281991429, 4288642117, 4290818353, 4290862694, 4290938088, 4291163255, 4291519114, 4292375442, 1641, 113029, 2431109, 6154799, 9085905, 10454523, 11833936, 15005411, 29369909, 32348563, 32392946, 34831997, 35241656, 35407085, 41719852, 42040525, 44148994, 49751269, 54657448, 54829135, 61297674, 64616140, 64792746, 65243007, 69912355, 73497087, 75564691, 84754216, 85474843, 88950783, 95227810, 97671606, 97869711, 98556036, 111529024, 112714201, 113832573, 118457586, 119013459, 129204800, 129504899, 132934253, 133576354, 140643360, 141325108, 142928709, 144351849, 147399388, 148485881, 153516070, 159755595, 162751717, 164324227, 164324569, 164324664, 164324791, 165338893, 166383271, 169804649, 169909381, 170281316, 170281555, 170281599, 170281747, 170281951, 172221532, 172281217, 172281369, 172281601, 172281701, 172281789, 172615247, 173287589, 173592416, 173930363, 174306514, 176844018, 177079695, 177080427, 177147671, 177148014, 177148020, 177546706, 179139641, 179379875, 179569944, 180056941, 180259371, 181198501, 181205574, 181240422, 181950714, 182150488, 183096195, 183096537, 183468910, 183469260, 183603589, 183603872, 186043176, 187501046, 187763081, 189174183, 190912115, 191031927, 191069908, 191103669, 193357074, 193420201, 194024818, 195040318, 195040605, 195184107, 195615400, 195788148, 195817845, 196491587, 197098180, 197098196, 197098242, 197098387, 197098716, 197098773, 197098834, 198219090, 201802654, 203969128, 204000291, 204003102, 205844479, 208540214, 211702237, 213315812, 216404638, 221220686, 223633303, 225036633, 231228447, 233832515, 235585683, 236122625, 238349947, 244953360, 253603556, 254556119, 268305044, 270508724, 279497384, 282260013, 286117940, 288337735, 294222691, 294944592, 297796540, 299806932, 301175958, 305396028, 309814229, 316711416, 319659866, 321667918, 323472705, 329290740, 333539694, 336073493, 344556873, 345150446, 346582968, 348240977, 352942917, 361618841, 362641227, 363650316, 368392429, 371447569, 379018060, 379803748, 381683792, 382346929, 390037588, 392534911, 393050977, 398079720, 401473592, 404580880, 408076405, 409551689, 412923104, 413523569, 417762611, 418389794, 418643706, 419980117, 420076057, 430774757, 431420666, 431463230, 433047970, 433960232, 434424313, 439016491, 446595824, 448347366, 453082265, 459993498, 461991320, 467355959, 468677861, 471325996, 478194174, 481007914, 483933287, 492579864, 492820046, 493239087, 495294245, 500922416, 501132892, 502571724, 503870109, 505520155, 505540840, 505547348, 507674743, 507704542, 508155006, 508732896, 524499536, 528698966, 533082472, 536472645, 536606854, 536706420, 544035780, 545100578, 547829195, 548068662, 550157112, 554422931, 557980541, 558904957, 566123574, 569085212, 574052622, 575078226, 579214441, 582810837, 583362052, 583453417, 594063106, 598128236, 601157755, 601161740, 601948346, 602413319, 603986209, 605582466, 609198625, 610045978, 617827459, 620396524, 626039263, 626988485, 629099694, 630452394, 635400744, 640415961, 643558590, 645257576, 652659119, 656273907, 665354414, 666296511, 667333922, 668403785, 669730879, 669929645, 674175725, 680972003, 682364285, 684524418, 689215333, 704136516, 706383966, 708808466, 710978465, 712995495, 713788357, 717519098, 722655660, 722956329, 725449644, 727209749, 729977159, 734622016, 735035205, 737142807, 737152212, 737166334, 737644692, 737837074, 739516787, 739566545, 739985822, 741816033, 742252614, 742260586, 745092996, 747930588, 750219296, 750508933, 752522257, 753857751, 754000708, 757807602, 758478444, 761228031, 762067870, 762641736, 764248075, 764320946, 764825188, 766296725, 766355544, 766643209, 766774330, 767540529, 772363084, 774299734, 777688891, 787564577, 792068311, 792844833, 796739176, 800010738, 800087019, 809563086, 810061706, 810813298, 811092091, 817847511, 819009519, 826260124, 833658992, 834470340, 839856739, 842147301, 847675799, 861294299, 862950715, 867021650, 867036335, 867732810, 870151875, 874296659, 875096251, 875944810, 876149555, 884498580, 887482102, 893652881, 894264732, 896104248, 896979123, 897240751, 902139830, 911653942, 912249299, 919599881, 927052135, 933697266, 933746041, 939098524, 939114841, 948752149, 955130439, 955354780, 955942299, 956480228, 958121442, 966830075, 970076747, 972273212, 976381303, 978919739, 981829565, 984418838, 997412732, 1001458257, 1001637783, 1001651627, 1005191377, 1008948875, 1010556097, 1016009727, 1016348317, 1023879932, 1024317101, 1027786481, 1027856392, 1032266307, 1033049924, 1035709107, 1038486906, 1041294385, 1043437244, 1049779946, 1051535617, 1053737172, 1054370922, 1056150770, 1056645919, 1056720884, 1063952736, 1064732809, 1064857294, 1065290596, 1079732589, 1080478458, 1081536009, 1086069586, 1088535269, 1094421058, 1095718313, 1096687866, 1100372480, 1101043104, 1102004406, 1104733017, 1110237878, 1112959177, 1113096701, 1114972095, 1117545303, 1118952562, 1125668821, 1130216203, 1132104794, 1132534664, 1132579070, 1132598106, 1135683888, 1135892328, 1136018325, 1138287902, 1145147923, 1145899518, 1146523166, 1149204820, 1151262913, 1152056864, 1154446700, 1154536715, 1154542665, 1155367440, 1155994599, 1161218045, 1164964007, 1166033123, 1167024992, 1167025137, 1174582808, 1174756828, 1179004234, 1181469438, 1183829925, 1186977866, 1187653498, 1188208310, 1189560180, 1191923730, 1192723278, 1195304992, 1199133859, 1199554249, 1199600208, 1202045876, 1204911535, 1208429990, 1210779948, 1210807525, 1220586092, 1221782335, 1221920801, 1236932222, 1238449939, 1243532105, 1246474378, 1257626414, 1257876060, 1258346504, 1259689738, 1260836076, 1261324364, 1266641105, 1268763191, 1271531819, 1273274467, 1276658942, 1282928227, 1283757717, 1290537388, 1296032318, 1296235125, 1301946320, 1305140481, 1308857550, 1310807544, 1310899277, 1312163653, 1316036626, 1316125796, 1324285266, 1324310094, 1324331646, 1324337571, 1324579984, 1325750278, 1326569216, 1333842476, 1349684561, 1351415139, 1351558342, 1351862653, 1351880550, 1354386923, 1356250756, 1356331589, 1357629674, 1362165018, 1363404812, 1364008114, 1364487272, 1365133140, 1365599531, 1365623138, 1366730785, 1366987615, 1372241226, 1372705460, 1372794328, 1373871548, 1375834117, 1377641421, 1378253217, 1385859280, 1391291390, 1391293134, 1391299074, 1391300548, 1393577155, 1394469288, 1394469303, 1394469473, 1394469866, 1394470005, 1394470066, 1396870772, 1399867662, 1410090536, 1413067533, 1423547895, 1430902259, 1431096661, 1433581041, 1435770227, 1436788950, 1441443055, 1441473969, 1443172426, 1444705872, 1444722875, 1444727957, 1445594238, 1447082963, 1448082324, 1455246557, 1457519039, 1458084479, 1458493639, 1458555099, 1459794391, 1460930084, 1465058743, 1465974914, 1465976327, 1465976425, 1465976436, 1465976550, 1465976555, 1465976625, 1465976632, 1465976696, 1465976747, 1465976870, 1465976979, 1465976985, 1465976986, 1465976991, 1465977196, 1465977261, 1465977271, 1465977274, 1465977303, 1465977323, 1474444421, 1478092049, 1478716185, 1481566528, 1482522967, 1489772937, 1494181387, 1504535254, 1509029106, 1510450262, 1511907991, 1515598870, 1519441587, 1522685369, 1525831150, 1526085253, 1527459723, 1529619411, 1532042759, 1533712942, 1537663939, 1539902893, 1541073018, 1541496652, 1542773859, 1549199388, 1549209224, 1549210203, 1552284203, 1553692884, 1555806428, 1561102750, 1568416773, 1570561776, 1573188605, 1576134740, 1582406800, 1582529544, 1585380899, 1587251606, 1592687509, 1594093747, 1601662530, 1602151715, 1602222565, 1602416912, 1604312683, 1604313702, 1604341906, 1605478605, 1610069144, 1610724928, 1613430619, 1616149762, 1616623247, 1616826805, 1622345684, 1624120544, 1624575040, 1631446240, 1634840328, 1635306209, 1637735434, 1639041637, 1643893360, 1645239134, 1645714411, 1646967505, 1647763648, 1648026812, 1648459154, 1652482428, 1654623339, 1659538076, 1660752253, 1661285202, 1662950537, 1675032552, 1676328914, 1681382184, 1682444281, 1683407715, 1684605451, 1684964181, 1686375531, 1686572406, 1686834359, 1687225102, 1687228988, 1687238599, 1687241697, 1693905970, 1693924649, 1694678234, 1696017211, 1697022103, 1698247372, 1700196518, 1700874190, 1702743585, 1705191422, 1705572464, 1705775316, 1708553688, 1709604401, 1711224201, 1712893263, 1713051167, 1713095897, 1715999558, 1716074224, 1716087943, 1716947524, 1721557559, 1722492001, 1723859941, 1728197301, 1730461660, 1732377833, 1740500925, 1740503023, 1747349646, 1747349737, 1747349747, 1747349811, 1747350242, 1747350353, 1747350383, 1747350483, 1747350570, 1757625214, 1758838683, 1759487629, 1759488516, 1759498393, 1759499821, 1759502442, 1759502966, 1759512274, 1759512283, 1759513528, 1759514495, 1759514515, 1759516437, 1759524172, 1759589336, 1760335250, 1762975960, 1762992044, 1763004314, 1763977119, 1771261987, 1772061961, 1772164204, 1782043531, 1789421301, 1792792037, 1793905730, 1800839994, 1801396125, 1804673412, 1806579373, 1807671676, 1813955111, 1814430790, 1817436421, 1822787251, 1823557150, 1828043124, 1839996532, 1839996844, 1841030555, 1842560365, 1844448916, 1844480213, 1846724376, 1860761623, 1861064328, 1863000850, 1867708596, 1873769763, 1873773882, 1874142716, 1875798230, 1880233189, 1882601503, 1885862630, 1890372289, 1890379225, 1891031342, 1891205640, 1891938925, 1894539933, 1896919160, 1896919227, 1896919294, 1897898461, 1899147627, 1900573373, 1901379444, 1902628941, 1905060165, 1906789934, 1906790006, 1906790139, 1906796594, 1906797455, 1906801573, 1906801694, 1906806837, 1906810233, 1906810485, 1906811690, 1906817274, 1906818921, 1906820915, 1906820924, 1906823423, 1925206882, 1927020241, 1928994000, 1935386784, 1936188797, 1939298330, 1939994885, 1941474619, 1944071536, 1945201987, 1946130305, 1946324244, 1947055740, 1949193282, 1951127334, 1956200886, 1960661844, 1964294607, 1971670426, 1975660003, 1977074332, 1979063800, 1986972074, 1987660949, 1991785763, 1992080509, 1995174355, 1995890751, 2001507875, 2004488903, 2015900220, 2018783243, 2021213332, 2023260368, 2025018361, 2025037989, 2025039155, 2026543248, 2027114414, 2034028822, 2034497157, 2034927376, 2035815698, 2037403782, 2037552632, 2038238057, 2038463378, 2038609522, 2039595722, 2040354520, 2040943501, 2041028464, 2044842550, 2047340057, 2047377876, 2047791608, 2047824538, 2050823774, 2050838609, 2051525062, 2051827668, 2052255777, 2052901511, 2053206810, 2053240934, 2053337172, 2053478875, 2053493456, 2053853373, 2054449324, 2055229681, 2055578022, 2056180496, 2057710300, 2058751811, 2059048621, 2061275137, 2066721635, 2067699997, 2071301924, 2075934693, 2077460241, 2077463931, 2082279457, 2082350395, 2082490504, 2083899515, 2084905908, 2087506861, 2087556005, 2087568425, 2087595516, 2092046651, 2092301721, 2097381010, 2097529923, 2100199727, 2103470828, 2105481502, 2107063121, 2107436658, 2111314048, 2113664954, 2116750738, 2117068897, 2119040128, 2122563214, 2122618177, 2124668692, 2132271390, 2134191641, 2134715695, 2138049165, 2138494997, 2144770101, 2151094932, 2151644274, 2163712208, 2163898589, 2170508442, 2176727539, 2177318798, 2178944930, 2179027416, 2184528600, 2186571792, 2187374596, 2190645414, 2190660247, 2190897184, 2195413098, 2195424198, 2198290764, 2203121973, 2208876632, 2209276004, 2211529485, 2216861598, 2219976143, 2224936471, 2229389306, 2229428098, 2233205867, 2235535537, 2238302643, 2241998064, 2243922068, 2245744882, 2246095470, 2246624423, 2249578444, 2251500542, 2256423319, 2257131811, 2259407586, 2265403416, 2277922362, 2278366865, 2281444864, 2284221844, 2290521795, 2298483014, 2298859942, 2303709693, 2305684069, 2306183534, 2310688315, 2315634657, 2319104481, 2323978889, 2326416557, 2327685947, 2331542577, 2334488740, 2335980755, 2343955873, 2343987387, 2344051572, 2344081298, 2353017729, 2357782940, 2360233424, 2372460029, 2372478071, 2376327406, 2380959235, 2384339112, 2391410598, 2392072803, 2393811335, 2399346319, 2399822664, 2401643245, 2401782259, 2403261116, 2407789481, 2409182571, 2417084170, 2417165267, 2417652035, 2419411749, 2419417423, 2422324904, 2423117096, 2424431334, 2424771770, 2432634086, 2435584133, 2436015021, 2441679501, 2441854846, 2444838503, 2451024601, 2451094457, 2453483137, 2454448917, 2456215407, 2459247176, 2463271525, 2463506842, 2467234433, 2469945372, 2473920266, 2486666796, 2489018185, 2489169796, 2490847830, 2492970238, 2497220049, 2503042985, 2512844015, 2518379243, 2518777282, 2525588137, 2525608018, 2528358668, 2528706848, 2531896313, 2536602755, 2539686262, 2551310943, 2554772601, 2556085817, 2558131228, 2564231467, 2565836498, 2569358076, 2571159128, 2572746788, 2575905107, 2579846032, 2582295686, 2585286228, 2585297154, 2587884409, 2590263013, 2592032772, 2597156358, 2600208325, 2600311538, 2609976564, 2614031703, 2619619987, 2622453927, 2622601193, 2622997773, 2630676340, 2635726130, 2636739119, 2637611531, 2637745410, 2637827916, 2639832942, 2646831691, 2652889161, 2656916375, 2658971428, 2660417858, 2667387895, 2669967601, 2671812960, 2675377616, 2680331975, 2692646873, 2694622232, 2697812844, 2707358863, 2708256980, 2708843581, 2721005193, 2723132333, 2723449219, 2727613517, 2729386864, 2732129495, 2739504392, 2742067873, 2743561936, 2745053658, 2748129339, 2755346949, 2756835810, 2762308724, 2762732310, 2772048233, 2773342582, 2773916239, 2774237802, 2777215669, 2780442125, 2780969136, 2784038323, 2786612080, 2787145966, 2787151566, 2791623281, 2792656912, 2793820597, 2793843165, 2794535853, 2794558276, 2794571602, 2794589073, 2794607684, 2794781905, 2794812897, 2794904579, 2795201682, 2795215251, 2795316793, 2795413889, 2795489178, 2795518714, 2795546979, 2795547152, 2795551511, 2795554576, 2795555553, 2795567189, 2795581043, 2795588603, 2796767057, 2797512177, 2798111293, 2798512509, 2799526810, 2799947922, 2802973072, 2804403738, 2804874542, 2805637755, 2805753744, 2812187177, 2812916202, 2815541885, 2820491263, 2822394574, 2829422945, 2831048350, 2832237259, 2834623189, 2837348717, 2839650695, 2840525902, 2841159353, 2842490055, 2844781614, 2846385194, 2846982791, 2849860412, 2850213786, 2852028874, 2852573181, 2854701866, 2855519660, 2857974075, 2859686627, 2864766480, 2865932173, 2873369054, 2873382924, 2877054650, 2878248977, 2880150758, 2882016813, 2894321712, 2896549226, 2900972274, 2907164383, 2909422460, 2910191497, 2914081458, 2914744694, 2914938714, 2915009556, 2917041430, 2918571873, 2929237742, 2930384385, 2931708704, 2933052029, 2935350303, 2939956665, 2941858877, 2943539162, 2944562948, 2945364171, 2947166646, 2953041500, 2953600606, 2958695479, 2959025464, 2963193938, 2963907974, 2964323647, 2969439522, 2972958854, 2976622717, 2978201778, 2982085395, 2985605450, 2996423818, 2999691650, 3008190733, 3008855969, 3016122305, 3017646001, 3023766416, 3029366772, 3032047068, 3036119914, 3036992672, 3039024727, 3042813479, 3043904968, 3050467218, 3051886594, 3053067553, 3056188564, 3057812794, 3065938060, 3066185554, 3067801157, 3067842181, 3068762275, 3077857486, 3080857101, 3087114209, 3087935921, 3088190003, 3089015336, 3091255985, 3095401268, 3096813247, 3098725318, 3105671535, 3117883740, 3118052513, 3118932015, 3119183299, 3121944857, 3124496054, 3126706525, 3129135980, 3130262956, 3136193853, 3146277579, 3150523560, 3154412692, 3159557566, 3164499075, 3164706839, 3168577861, 3173559921, 3174529089, 3176196996, 3176871024, 3180039849, 3180784320, 3181226348, 3184223807, 3185392090, 3186278865, 3187205025, 3189849017, 3192015124, 3201052817, 3206103617, 3212240200, 3229338204, 3231038915, 3232995840, 3236363663, 3236684869, 3240062262, 3241501460, 3243217472, 3245554401, 3249410406, 3254464708, 3257959952, 3274402918, 3276160836, 3276196901, 3278107133, 3290502878, 3291450742, 3293286977, 3293297241, 3296419295, 3299472058, 3299767442, 3301223392, 3301309499, 3301391192, 3304599725, 3306064327, 3313552392, 3321637504, 3331885553, 3332277580, 3333914252, 3337182013, 3337858974, 3341471161, 3347209717, 3350345047, 3350816321, 3351869587, 3352060268, 3355691995, 3356175586, 3356927752, 3366755503, 3367073048, 3367944003, 3372319994, 3375346812, 3376868662, 3381262072, 3382258705, 3385088233, 3389287501, 3392485763, 3403435361, 3403782237, 3406109171, 3406111906, 3407122639, 3411575670, 3424242744, 3426100153, 3426523263, 3431675506, 3431798787, 3432725491, 3433958809, 3443103158, 3445734210, 3450482982, 3453219838, 3455171543, 3455975626, 3458629656, 3459326184, 3460835389, 3468111852, 3471910127, 3473608107, 3474158466, 3478804050, 3479897537, 3480605972, 3480868929, 3481097537, 3485240025, 3491815953, 3492209950, 3494777461, 3500328283, 3503925212, 3506796962, 3514565086, 3514565812, 3518469610, 3519725933, 3524188747, 3529349528, 3542452078, 3546487756, 3550700124, 3550989552, 3551573749, 3553442167, 3554781799, 3556847596, 3557221487, 3557691349, 3558264087, 3560824248, 3563344816, 3565186253, 3565418379, 3566074326, 3568626956, 3569886279, 3570187564, 3574536814, 3576593305, 3584104748, 3586564634, 3588013803, 3590119076, 3594126223, 3605649145, 3607964178, 3610130320, 3611466472, 3615937331, 3618863110, 3629119210, 3629792790, 3635135986, 3635459541, 3636074310, 3638424639, 3640911628, 3642130958, 3642225062, 3647798063, 3656108419, 3657615451, 3659534155, 3659611370, 3659667263, 3660545348, 3660867367, 3671487562, 3678946749, 3680027665, 3684023399, 3686613485, 3686646984, 3691543485, 3691543777, 3694814128, 3695175653, 3698130051, 3700803863, 3704722354, 3717443225, 3718851041, 3722297297, 3724304421, 3727535579, 3735382080, 3740438523, 3740440657, 3745910284, 3748112414, 3748157778, 3751765724, 3751843037, 3758548269, 3759175702, 3760229117, 3767579376, 3767636566, 3774416951, 3774620406, 3775107448, 3777554302, 3784459817, 3789001045, 3789217359, 3790213466, 3791430232, 3792756850, 3797275201, 3797334865, 3797547975, 3797752814, 3798120765, 3799727891, 3800284920, 3803890887, 3807736858, 3811590943, 3812650457, 3813081457, 3814583456, 3816238011, 3818244185, 3820433217, 3821631768, 3824973847, 3830752599, 3831121452, 3831131041, 3837373870, 3839962587, 3842157165, 3849728326, 3849729892, 3849734551, 3849787726, 3849792721, 3849819373, 3853184002, 3854490492, 3856121458, 3860607422, 3861431943, 3861926244, 3867504094, 3869648625, 3871255217, 3879613384, 3888702999, 3902486573, 3909678524, 3911290870, 3914258422, 3919568627, 3924938673, 3928836058, 3929271846, 3932881151, 3932899585, 3934007962, 3942901813, 3950379841, 3960912026, 3973890763, 3976040035, 3981060932, 3981985710, 3991078309, 3992022849, 3992259208, 4010941807, 4012569891, 4013412307, 4021161495, 4025854722, 4027536004, 4033312623, 4036094574, 4037300319, 4043405137, 4048222256, 4048420974, 4049948378, 4051811237, 4052267313, 4054558966, 4064836207, 4066383490, 4070580503, 4073707968, 4100786237, 4104807039, 4115427659, 4116271014, 4117626035, 4127381498, 4128299636, 4132054341, 4132795027, 4133480683, 4136878052, 4138452493, 4138537192, 4138587115, 4138850346, 4138930624, 4148483014, 4149140792, 4149626272, 4149641566, 4149809179, 4152090640, 4152153727, 4156628388, 4159166567, 4161006924, 4161031359, 4167095051, 4168702437, 4168921085, 4175490343, 4178043127, 4179607399, 4182917435, 4196816243, 4201195770, 4201710836, 4204344500, 4212065046, 4216249688, 4218603456, 4220181346, 4230252988, 4230808631, 4235216564, 4245730359, 4250048329, 4251017064, 4254397175, 4261049438, 4265986719, 4266150865, 4270257086, 4272517612, 4285995571, 4287809158, 4287924367, 4293141634, 4293320049, 7, 171252454, 314658260, 1911007288, 2310391087, 2705648135, 3085052283, 4199583372, 0, 0, 30, 66987915, 366428436, 366991379, 487687151, 649399193, 716916462, 900018457, 911616432, 914855142, 981141093, 981156754, 1068454171, 1213136917, 1357549542, 1437166305, 1491010671, 1491010869, 2035443912, 2098925819, 2412701058, 2447973967, 2572472237, 2572499572, 2572504631, 2734871983, 2873757688, 3229893628, 3628727675, 3840638318, 4020469118, 1985, 3609572, 4707302, 4731941, 7066741, 12732264, 12733869, 12874473, 12898727, 15239865, 15443925, 15464989, 17770158, 18806137, 22641470, 34805542, 37254453, 38352510, 47103897, 47124528, 47160482, 47264668, 47270558, 47521880, 47670735, 47682584, 48206184, 54052064, 55399270, 55790429, 57861540, 64629239, 65951659, 73540622, 74816563, 79005572, 79010572, 79432449, 79977826, 80960607, 90941114, 91781471, 93732497, 101061895, 101792620, 105281118, 114635485, 121111459, 126395821, 127613999, 134819976, 135124399, 135156325, 135512978, 139443164, 140195744, 146403274, 147165318, 147311351, 147680945, 154712981, 156193153, 157683252, 162021680, 165184869, 165682351, 167795310, 169177047, 169285407, 170248114, 175536255, 176298648, 181584625, 186190871, 188366635, 190461039, 190805290, 190817793, 191644192, 193330267, 200367649, 204872798, 208246903, 213994908, 222038678, 222914983, 226753977, 227658815, 230657663, 231976681, 232418677, 234224516, 235125560, 235385397, 235630461, 235880887, 236100347, 237106084, 237695302, 243768879, 244905302, 245221564, 245221621, 245248688, 246957980, 247379872, 247404538, 247547714, 249186148, 249832804, 250298968, 252007821, 252166643, 254498243, 256250975, 256734086, 257675257, 258276240, 260078806, 269653037, 270614174, 270803459, 279865482, 290747254, 296104342, 296106331, 296214241, 297365588, 297388265, 297388314, 297395043, 297872731, 297875338, 305678573, 310113063, 317059542, 318726251, 320983337, 321380700, 329390871, 340233049, 343985311, 368331859, 368339983, 374202536, 374729119, 377042975, 377218502, 377330983, 379160277, 387137528, 390536878, 397426025, 410462833, 410898354, 411028646, 415359567, 418289923, 418809394, 420699727, 422768411, 423087664, 434374676, 434499530, 439966930, 443910462, 444881445, 446735168, 470802373, 473022090, 475752042, 480190019, 481797890, 482141996, 493334140, 493996949, 494002753, 494111972, 496668263, 497004637, 505642028, 513006918, 520166698, 522732652, 524323805, 524791178, 525296785, 532366388, 537994409, 538156652, 539123093, 539125333, 540384923, 545724556, 546598380, 552815312, 564847266, 572585472, 572589595, 572660745, 572917514, 572938118, 581295982, 583116728, 584477771, 585356786, 585510953, 586974440, 588341431, 590260151, 593171510, 600861600, 602587622, 608185550, 608501000, 611172806, 617227910, 620862123, 625412750, 626878575, 627192073, 628675473, 636454657, 644892435, 645708934, 646772532, 650376939, 653264074, 653865504, 654835286, 655274400, 657684596, 657843927, 665654464, 665772443, 667917050, 667982163, 668803663, 678409190, 685972429, 687873546, 699223116, 722349553, 723381066, 723506578, 725289629, 728910939, 728916446, 729301272, 730375222, 731520837, 731524865, 731524893, 733458327, 734942836, 742063133, 744425628, 745118723, 750501894, 753379261, 753585532, 755936840, 755999442, 757164322, 757742871, 758908039, 758927262, 766978617, 767310694, 767319597, 768502512, 775086059, 775783015, 776818569, 777129529, 782249017, 782470551, 782586541, 783225086, 783819749, 787058931, 793173186, 793643539, 793791572, 794069868, 797737785, 801549019, 805476735, 809560577, 810471911, 810660018, 813069363, 813965189, 814609400, 819689086, 822265343, 827811881, 828807618, 840895172, 842670706, 845178939, 849626506, 857304293, 867054787, 875581912, 878480613, 878489001, 888652626, 892902192, 904040802, 904780949, 904781069, 904781208, 904781211, 904781269, 904781270, 904781407, 904781445, 904781469, 904781569, 904781597, 904781741, 904781750, 904781797, 904781798, 907680375, 909542970, 913350787, 915552624, 943105427, 944616168, 945567936, 946059164, 946112067, 950116031, 950459761, 950797941, 950991772, 952407653, 954708706, 954904735, 956279390, 959296218, 959317553, 960000436, 960088334, 964474682, 965248297, 965252181, 968600148, 969495568, 969714387, 969714391, 969714751, 975014436, 976847064, 977515724, 978655375, 985441466, 985451059, 988676432, 989199112, 995754553, 995754557, 998100773, 998582596, 1001682227, 1002897238, 1005026102, 1007267340, 1018029509, 1019292109, 1021170671, 1021615491, 1027478448, 1027904949, 1028176876, 1028524011, 1033544761, 1037073656, 1039464298, 1041396131, 1043364491, 1051084878, 1053049944, 1055328538, 1055480209, 1058862972, 1066609925, 1068948457, 1071874351, 1072134738, 1082834847, 1084511341, 1087693738, 1089012798, 1089634494, 1093384439, 1093825560, 1094815391, 1098082937, 1102471353, 1113642022, 1113846049, 1121249692, 1127953536, 1132317159, 1132485954, 1132585385, 1132689597, 1132723356, 1132858392, 1133501028, 1133636064, 1134046361, 1134351151, 1134824033, 1135467502, 1135737574, 1135775689, 1136782059, 1136883336, 1137085890, 1137173922, 1138138823, 1138714596, 1139072942, 1139153897, 1139221159, 1139981182, 1140405028, 1140510661, 1141246959, 1141280718, 1141381995, 1141584549, 1141719585, 1141874653, 1142159541, 1142193300, 1142260818, 1142366610, 1144440814, 1144457023, 1144667374, 1144802410, 1144975561, 1145579956, 1145625081, 1147135141, 1147314976, 1148184718, 1148522564, 1149131059, 1150514349, 1150729533, 1151393172, 1151494449, 1153073825, 1154465661, 1155177503, 1156094385, 1156940664, 1158572559, 1160038984, 1160487168, 1161167906, 1161578459, 1161965872, 1162013821, 1163255421, 1163472226, 1163645377, 1163777146, 1163979700, 1164916562, 1165010690, 1165068597, 1165937726, 1165940993, 1166410608, 1167096330, 1167193469, 1167260731, 1167598577, 1169823858, 1170720439, 1171147706, 1171150005, 1180230175, 1180849387, 1188216287, 1188228500, 1188701654, 1190334387, 1190352716, 1190641324, 1202600586, 1206718941, 1209302133, 1214814043, 1216095517, 1220486075, 1223892937, 1224444732, 1225577971, 1229986049, 1243738793, 1247471306, 1252266596, 1252792940, 1253960230, 1254127330, 1255848785, 1255859538, 1257563663, 1257583343, 1258195056, 1258213434, 1262993336, 1263908042, 1265512654, 1267283463, 1278475387, 1281229947, 1281889125, 1284797630, 1288585218, 1290240457, 1290513099, 1293031053, 1295516865, 1297095740, 1297597617, 1298827289, 1298832842, 1299380998, 1300818337, 1304310342, 1304455504, 1310534169, 1316956180, 1336232039, 1337809090, 1340075459, 1343684265, 1347737800, 1348149256, 1354685816, 1355025196, 1357282216, 1357301365, 1363667295, 1364395531, 1364732891, 1373278040, 1373514813, 1373685873, 1375205051, 1375419602, 1376146087, 1380234474, 1380513046, 1381723825, 1382632688, 1382645602, 1382709874, 1386126578, 1388184353, 1389190819, 1389902309, 1389912616, 1390104485, 1390958270, 1391687090, 1391699393, 1393151104, 1395748391, 1395924208, 1397018707, 1397022500, 1397827261, 1398423514, 1400330808, 1401462671, 1410284129, 1411428439, 1412479074, 1412717811, 1412831927, 1420822802, 1423109435, 1423890423, 1424552007, 1425040900, 1428131728, 1431817030, 1431897749, 1433480127, 1433483767, 1434457973, 1451286836, 1451565010, 1452211848, 1452224159, 1455851258, 1458060161, 1458176029, 1458620255, 1463365872, 1466302404, 1472319400, 1475303091, 1484355552, 1486115226, 1486401243, 1489893113, 1490054949, 1492145100, 1494001659, 1494630697, 1494690535, 1494695213, 1494714660, 1494714786, 1494714930, 1494889015, 1494990523, 1494992680, 1494997876, 1495466906, 1500014997, 1502962162, 1504548128, 1505655813, 1508029184, 1508045454, 1509815249, 1518807662, 1524160328, 1529373691, 1536802563, 1538089784, 1539586715, 1544812783, 1547140470, 1552392687, 1552405115, 1552405169, 1553111822, 1553462237, 1554120313, 1554158027, 1555241094, 1555436471, 1555595989, 1556675361, 1557492455, 1557696008, 1558835738, 1558865070, 1559582938, 1559928005, 1561078602, 1565016185, 1565113430, 1565407826, 1568314306, 1568314316, 1568317266, 1568696751, 1568699472, 1568940804, 1569248185, 1570879860, 1573625992, 1573800670, 1576869802, 1581247153, 1581398717, 1581675892, 1581718434, 1583510121, 1583803496, 1588886160, 1595292826, 1602148307, 1605015374, 1609481646, 1612153257, 1618209596, 1618218864, 1618873873, 1619384363, 1624861042, 1630153983, 1638526919, 1639454708, 1640524262, 1641042489, 1641812886, 1647303548, 1648240296, 1650468220, 1650500409, 1651513056, 1658862087, 1658979753, 1661301475, 1667470132, 1667473335, 1667728240, 1667806132, 1677105623, 1680875001, 1680882207, 1681660610, 1685495090, 1685495093, 1685495270, 1685495398, 1688394353, 1688567575, 1688665455, 1688778883, 1690751126, 1691125863, 1693300755, 1694472929, 1703388735, 1709297356, 1709313729, 1712511978, 1715661089, 1717927392, 1718114956, 1721373840, 1722360575, 1724823399, 1726408681, 1726606395, 1726645504, 1732927910, 1736066754, 1736347741, 1740486766, 1742215384, 1745377406, 1758824175, 1758930481, 1758975612, 1759122505, 1759143730, 1759143733, 1759227293, 1759313682, 1759313685, 1759412017, 1759432510, 1759498975, 1759505228, 1759507354, 1759515800, 1759642661, 1759864276, 1759893786, 1760159824, 1763810143, 1766750547, 1769211545, 1769618102, 1772590156, 1775156822, 1780760274, 1783870720, 1784406502, 1786353732, 1793007575, 1811810046, 1815656403, 1816569647, 1816866992, 1822574126, 1822868024, 1822868031, 1823268852, 1823275309, 1823288115, 1823390804, 1823768300, 1833535991, 1842420860, 1844031908, 1844296341, 1844524436, 1844853963, 1845272265, 1845433501, 1850725233, 1851761689, 1851765614, 1852766386, 1853687691, 1854177922, 1861204803, 1863593250, 1872674263, 1872992134, 1873841021, 1877281407, 1877305076, 1881597618, 1884316146, 1886743174, 1887188539, 1892879921, 1905997196, 1912353097, 1916296381, 1919640688, 1919643810, 1924325687, 1935798204, 1935801369, 1935813711, 1935815187, 1935818499, 1941710024, 1944260378, 1945210145, 1951157591, 1955955663, 1957378415, 1957388660, 1957444069, 1958153525, 1958153878, 1962799016, 1964448624, 1967235715, 1967514117, 1968334692, 1970709900, 1974828022, 1977445003, 1980811473, 1981302481, 1984866213, 1986874949, 1987285901, 1987558613, 1988913069, 1998855379, 2023930736, 2026542768, 2029442974, 2029502301, 2031253491, 2041190670, 2044176332, 2044519717, 2044521677, 2044845895, 2044862336, 2050748464, 2055299797, 2059226128, 2060744697, 2060874008, 2061631935, 2062602594, 2062613436, 2062713055, 2062721365, 2062782118, 2064194523, 2064289093, 2064667157, 2064835977, 2065546931, 2065580690, 2065783508, 2066019598, 2067177842, 2067640249, 2068518016, 2068619301, 2069026672, 2069773511, 2070805664, 2073324624, 2075547993, 2076314666, 2076760108, 2076927096, 2078661044, 2080078919, 2080126248, 2080270176, 2080768362, 2080948565, 2081049148, 2081811414, 2082081519, 2083365940, 2084275182, 2089789238, 2090043919, 2090165361, 2090287045, 2092471497, 2092773191, 2093281591, 2093290649, 2093484170, 2095261287, 2096596043, 2096775591, 2100685312, 2102866955, 2108433077, 2109903284, 2110249550, 2112026046, 2112754908, 2114424326, 2115251185, 2116737470, 2118764990, 2119510407, 2120903194, 2121183749, 2121530494, 2121539444, 2122085862, 2123968241, 2123974461, 2124038667, 2126585211, 2127702833, 2127711196, 2129393172, 2140172366, 2141043403, 2144163444, 2144352359, 2146552134, 2146559400, 2146579609, 2146771534, 2146787712, 2147192784, 2149214372, 2150227387, 2151276842, 2152677197, 2158829447, 2159124528, 2159550475, 2161337980, 2161361535, 2163722410, 2163917836, 2165826914, 2169168320, 2170868227, 2173022808, 2174751247, 2179048400, 2184998274, 2196541409, 2200622033, 2203412941, 2206322353, 2208794483, 2219653172, 2219657520, 2225010953, 2226828879, 2238722895, 2238722920, 2238723506, 2241976578, 2245936247, 2248375230, 2249276550, 2249625301, 2254065144, 2254179087, 2254183431, 2254275149, 2254449430, 2254449877, 2255178054, 2264880989, 2270863210, 2290294367, 2304704334, 2304866355, 2305219189, 2310350875, 2310486036, 2312897274, 2314773060, 2315564905, 2319231065, 2319463533, 2325240383, 2327016339, 2330482855, 2337919027, 2340169455, 2359883328, 2361871491, 2366081778, 2369823335, 2369831600, 2371523459, 2372759050, 2374977123, 2376431395, 2378889732, 2382890223, 2383755454, 2386589953, 2387052696, 2389856295, 2391789782, 2398718314, 2399324290, 2400888860, 2401211408, 2404756392, 2406557074, 2407241140, 2409418646, 2411497922, 2411691127, 2413846222, 2413908037, 2414944572, 2415208709, 2417936111, 2419639306, 2423159152, 2423360684, 2425978408, 2428076111, 2437572023, 2440527060, 2444775143, 2449407487, 2457428534, 2469735934, 2475146676, 2475744613, 2476033552, 2476112212, 2476147614, 2477393954, 2478803388, 2479415778, 2482075359, 2485317413, 2485370363, 2488499588, 2488699734, 2491415998, 2492607180, 2493496209, 2497515972, 2499072481, 2499532790, 2504383993, 2504870149, 2505121421, 2505147736, 2513647314, 2513693640, 2513701512, 2513706827, 2521253655, 2521398855, 2526527953, 2526528078, 2527291586, 2527292245, 2527666001, 2528098475, 2536669081, 2536933437, 2537106090, 2538335365, 2541170503, 2541170604, 2541177518, 2545965593, 2546249066, 2546819122, 2548278991, 2548782015, 2549421379, 2557808039, 2557863700, 2558865115, 2568950385, 2569073380, 2569341502, 2569405925, 2570837952, 2575053435, 2575619554, 2575627585, 2579451785, 2581687876, 2582936524, 2586547509, 2590439971, 2600983050, 2602643559, 2605946857, 2608238576, 2608504686, 2611889973, 2612202111, 2619739935, 2621175072, 2627204334, 2627570013, 2627677159, 2631480810, 2631901285, 2635187702, 2637430468, 2638897207, 2639751704, 2642390316, 2644459471, 2644532855, 2644906311, 2645171587, 2647433605, 2647443463, 2649904288, 2651288351, 2652440186, 2655263134, 2660229222, 2660362019, 2662714632, 2671981072, 2673085999, 2676359415, 2678218950, 2680015310, 2683201101, 2683726243, 2687071289, 2687546085, 2689958531, 2690565794, 2691049537, 2696922944, 2702278755, 2705586928, 2707450736, 2708750293, 2710694053, 2710777678, 2717039465, 2719746264, 2719953243, 2722365346, 2724396360, 2730361077, 2732178535, 2732249147, 2732255792, 2732453216, 2732465831, 2733162785, 2733179003, 2740913336, 2743326046, 2745816408, 2746770100, 2768031559, 2768594053, 2769743066, 2770453396, 2777301260, 2777413063, 2779047561, 2779131760, 2781151044, 2788878449, 2791114477, 2792266216, 2795123222, 2795130739, 2795148393, 2803000277, 2803220098, 2820015673, 2824852881, 2825063248, 2825297984, 2826183623, 2826618777, 2828159974, 2830840737, 2840364717, 2844137461, 2844192015, 2844331414, 2844474265, 2845536368, 2847702680, 2847708560, 2849875839, 2854691117, 2857021867, 2857111846, 2857167445, 2857291628, 2857718467, 2857718874, 2859609075, 2860369035, 2860944275, 2861234828, 2861431296, 2861773187, 2862323803, 2862729831, 2862789186, 2862818280, 2865000297, 2865536587, 2872917161, 2879220442, 2885591219, 2886256228, 2886266660, 2886337850, 2886340600, 2886347487, 2886358758, 2886559394, 2888553420, 2893735969, 2893987517, 2894277589, 2895201770, 2895970159, 2903889952, 2904798808, 2907566289, 2911967032, 2913775681, 2917443420, 2921648360, 2921994283, 2925162127, 2925540459, 2931480722, 2936112276, 2938485423, 2939997155, 2941295122, 2942568797, 2944555176, 2950549599, 2952067971, 2952072562, 2955690120, 2961421753, 2962144430, 2962519996, 2962841785, 2964270344, 2964373735, 2965548040, 2966852375, 2970298080, 2974400461, 2975755381, 2981996158, 2987922608, 2991195167, 2991625994, 2993771546, 2995901561, 3000958971, 3001281849, 3001388716, 3004478994, 3004479027, 3004479111, 3004479159, 3004479171, 3004479184, 3004479190, 3004479239, 3004479240, 3004479258, 3004479289, 3004479305, 3004479323, 3004479334, 3004479373, 3004479389, 3004479390, 3004479401, 3004479425, 3004479785, 3004479787, 3004479818, 3004479829, 3004479837, 3004479976, 3004479994, 3004480114, 3005847375, 3006723884, 3006726944, 3006727797, 3006731179, 3006737252, 3006744684, 3006811183, 3012299493, 3014399025, 3019017018, 3019072181, 3019996757, 3020108825, 3020133371, 3020188532, 3023885513, 3024558034, 3024589567, 3024626538, 3033483503, 3034109278, 3035739007, 3035887950, 3044634578, 3044797796, 3044821749, 3045244983, 3045788419, 3045876876, 3046124074, 3046256428, 3050244615, 3050333064, 3050334784, 3056297406, 3062281966, 3063798750, 3063849681, 3073445035, 3073797863, 3073848296, 3086119708, 3087786680, 3089398889, 3089451715, 3089454054, 3089461994, 3089735415, 3094552970, 3097888413, 3098875466, 3099276787, 3104375123, 3104503715, 3105798493, 3107144912, 3107146953, 3110631110, 3110681545, 3111601102, 3111601746, 3111606786, 3114815727, 3119543502, 3119594433, 3120807553, 3120857998, 3122897068, 3125786613, 3128821880, 3133975234, 3135838657, 3136281421, 3145164732, 3147940006, 3154068140, 3154152867, 3157412719, 3157501664, 3159380027, 3160589879, 3161016478, 3161897203, 3174437714, 3180245112, 3180300610, 3182786585, 3183126568, 3183293814, 3183325319, 3184294753, 3188347051, 3191217062, 3196370198, 3197567695, 3198643172, 3198783739, 3198824989, 3198841920, 3198930383, 3199640352, 3200095506, 3203439089, 3203573947, 3203579445, 3208441350, 3209729826, 3210506925, 3210514725, 3210570457, 3214383466, 3214394316, 3214653823, 3215790970, 3217760577, 3218901480, 3218928718, 3218996674, 3218997101, 3219339071, 3219427268, 3220535722, 3220543483, 3221757640, 3223098753, 3224727829, 3232284385, 3232339054, 3234508143, 3234559072, 3235473148, 3237969392, 3243142044, 3247991594, 3253953941, 3269910681, 3270985722, 3273573836, 3273628995, 3275986591, 3277061645, 3277112578, 3277868236, 3277980164, 3278129999, 3278154322, 3280832255, 3280992609, 3283017533, 3286262047, 3290414111, 3301409832, 3301494567, 3302526185, 3302610918, 3305712858, 3305866028, 3305950755, 3309540327, 3309590022, 3309595898, 3309596203, 3309660560, 3309660597, 3309937069, 3312550946, 3312639405, 3317007142, 3317095593, 3324397363, 3331028046, 3331525682, 3331580349, 3331802213, 3332642035, 3332696700, 3333929978, 3334870005, 3334920442, 3335058344, 3335315569, 3343940221, 3345496201, 3350023967, 3353092349, 3358586999, 3365687143, 3366763202, 3368167300, 3371155980, 3372842751, 3373802982, 3374003367, 3374007861, 3374013921, 3374033257, 3374071862, 3374072315, 3374075119, 3374222601, 3374506623, 3377952754, 3382868701, 3384928690, 3388197033, 3390931348, 3391051206, 3391063809, 3391068622, 3391334282, 3391402631, 3391423133, 3391432603, 3392425741, 3394879910, 3395277647, 3399311251, 3402270417, 3404440519, 3414226886, 3414277321, 3415566709, 3417045783, 3417060092, 3418683074, 3418733517, 3424453774, 3431921225, 3437307073, 3437430868, 3437705452, 3444401619, 3445590826, 3447374472, 3456431399, 3458638240, 3461359920, 3463272868, 3468986640, 3469121667, 3471246134, 3474393156, 3474446194, 3476056250, 3478543821, 3486841411, 3486906847, 3489097968, 3491201265, 3495569706, 3496705474, 3497897502, 3497994843, 3498252682, 3502149957, 3504414102, 3504826781, 3506839508, 3506948350, 3508950458, 3509210745, 3509498189, 3511959565, 3512025010, 3512493029, 3514111400, 3517669498, 3518790968, 3521920341, 3523035738, 3523862571, 3524226140, 3530307622, 3530358057, 3536335853, 3536792162, 3538712404, 3541452460, 3541507619, 3542648636, 3544416242, 3550676375, 3551025439, 3553383951, 3556498831, 3561501051, 3561585780, 3565016796, 3565023071, 3565174365, 3565227623, 3565288856, 3566089568, 3572109810, 3575114019, 3577841990, 3586425916, 3589694483, 3591020567, 3592221649, 3594125448, 3595182758, 3596128381, 3602035250, 3602533630, 3602552275, 3604829927, 3607233834, 3607322789, 3607604079, 3608554389, 3610981370, 3617629034, 3619761411, 3623812162, 3629877419, 3636237811, 3636292476, 3639577654, 3639632313, 3645953597, 3647523178, 3649784978, 3653883892, 3660676457, 3664234276, 3674197367, 3675513627, 3681233287, 3684650455, 3688377898, 3689406359, 3692544695, 3693437133, 3694959415, 3703294733, 3704443907, 3704956777, 3706490306, 3709178884, 3709268355, 3709272958, 3717182590, 3718660896, 3719413702, 3721853564, 3731122282, 3734934472, 3736397122, 3736397691, 3738359136, 3744502996, 3744505315, 3744515994, 3744516038, 3745225898, 3745403285, 3749377655, 3751498613, 3752631559, 3753565240, 3756319792, 3758308501, 3758308691, 3761682835, 3762386667, 3762488637, 3763193356, 3763904751, 3764062969, 3764739038, 3769398133, 3770065529, 3774076759, 3779092995, 3780318738, 3781089827, 3783201212, 3785420602, 3786786081, 3788364543, 3791375542, 3791430201, 3791912060, 3792007260, 3792147146, 3793208754, 3794029235, 3805317549, 3808957225, 3809652473, 3811984999, 3812594538, 3819295903, 3819351056, 3821104144, 3821104746, 3829518367, 3832811824, 3833121835, 3833171090, 3833706374, 3838812042, 3843969806, 3844552031, 3850681433, 3851222744, 3851541567, 3851602009, 3851679807, 3853676291, 3855415829, 3856249405, 3859110665, 3859972063, 3862928629, 3865386916, 3865396334, 3873108359, 3873163016, 3876524049, 3883472548, 3885986978, 3888196487, 3895773227, 3898366596, 3900605466, 3900796753, 3906034907, 3907036333, 3914330405, 3916906002, 3922403377, 3925982068, 3933039724, 3936549300, 3939824482, 3940957272, 3941201834, 3941535714, 3943160335, 3943296300, 3950173236, 3955179593, 3959867562, 3960938237, 3961299015, 3961303520, 3961836502, 3962329360, 3963273426, 3966271140, 3969493837, 3970184201, 3971378905, 3972349404, 3972404563, 3974206923, 3977375686, 3977639927, 3981851856, 3984175284, 3984369770, 3984383153, 3984388901, 3984577838, 3986753035, 3987449768, 3988320676, 3989122328, 3989124781, 3989300792, 3991957101, 3991978776, 3992246021, 3993156440, 3995285601, 4002046206, 4002059123, 4002298131, 4007368305, 4009075902, 4012314248, 4014272956, 4018800601, 4021398623, 4022152923, 4023242992, 4034787018, 4034837957, 4040007159, 4040507273, 4040558214, 4042630615, 4042667369, 4044815570, 4044899805, 4046325025, 4051504220, 4051593171, 4059166898, 4059387372, 4060969098, 4060986772, 4062588735, 4063625944, 4063736412, 4064813411, 4074640059, 4077930265, 4080197122, 4081731399, 4081736449, 4081740860, 4081761692, 4082508192, 4082648933, 4085037592, 4085499470, 4085741867, 4086206754, 4087477773, 4087973382, 4087974431, 4087975312, 4087977920, 4087977986, 4087982672, 4087983230, 4087984585, 4087984590, 4087984656, 4087988411, 4087993231, 4087993234, 4087993291, 4087993428, 4088004545, 4089941093, 4090379779, 4094838531, 4095533224, 4098180267, 4104794847, 4104808845, 4105491350, 4105500480, 4109580593, 4111598640, 4115797781, 4116207257, 4116258198, 4116322118, 4116406345, 4116912946, 4122262153, 4126221625, 4127308650, 4128209898, 4128210099, 4128224738, 4128228031, 4128452341, 4131804567, 4131859224, 4137741343, 4141029933, 4142953920, 4145022541, 4149201544, 4150566897, 4151710650, 4152474623, 4155185738, 4156445644, 4157556469, 4157644922, 4159136925, 4159401066, 4159780211, 4159864444, 4164601660, 4166043368, 4168091484, 4169450331, 4170161097, 4170579962, 4170925049, 4171014006, 4171016671, 4171029715, 4172482250, 4175353143, 4176008925, 4178981053, 4184703759, 4186748423, 4188894668, 4189635776, 4190045706, 4190142208, 4195146068, 4196943735, 4199824850, 4203521301, 4206809827, 4206944958, 4207535653, 4208164707, 4211585807, 4215346074, 4215356593, 4218114605, 4218115138, 4218132009, 4219656584, 4219999876, 4220379359, 4221957810, 4222018626, 4225873997, 4227433758, 4228171984, 4228217908, 4228360888, 4228368741, 4228368760, 4231583294, 4231662792, 4232149414, 4232629512, 4234942237, 4235762280, 4240864861, 4241320459, 4241740950, 4242647335, 4243702915, 4245105172, 4246629902, 4248741847, 4252833472, 4252840599, 4254781707, 4254799704, 4255058051, 4260594638, 4261873154, 4261894730, 4262104449, 4262374147, 4262375371, 4262499171, 4264253465, 4265048576, 4267292711, 4271528787, 4272039260, 4272350188, 4272417877, 4276136562, 4288066094, 369, 54631547, 68945260, 76317054, 90122581, 107533418, 134757519, 142022835, 149084067, 159782934, 169736776, 205527546, 244603010, 255553804, 262051769, 263431316, 265459661, 284810646, 289494951, 371032970, 373243562, 374621869, 387545720, 391377589, 415171499, 415171548, 415171976, 418990556, 418990602, 425807660, 435420269, 461226423, 483976516, 501379566, 531625563, 553327069, 590191545, 595217502, 649854972, 668816409, 678957092, 680578927, 714686602, 715141614, 717942499, 720960146, 720974524, 720974736, 720975995, 725617684, 744932012, 793535325, 806495002, 817571047, 823641433, 857348365, 862847657, 871542102, 874448701, 877175745, 893771636, 914435801, 931438088, 937200556, 1015486168, 1026348750, 1029964103, 1030875558, 1083568115, 1106088318, 1135523977, 1206251138, 1219433535, 1220725895, 1220852235, 1220852260, 1220852796, 1220852957, 1222628504, 1230410191, 1240508317, 1242746690, 1260212779, 1282239389, 1290343418, 1326192098, 1338160975, 1340954405, 1351436722, 1361325259, 1374669131, 1374800320, 1389489864, 1401511709, 1421711922, 1452449030, 1467196671, 1467386990, 1490648152, 1493005045, 1506058569, 1507763651, 1514073041, 1515782688, 1515784934, 1515785058, 1523142552, 1526329423, 1553174585, 1591300266, 1629584534, 1641166031, 1642384128, 1661678914, 1679178836, 1679485164, 1681545174, 1704277516, 1705410866, 1705908110, 1714538458, 1768636249, 1772526810, 1818263278, 1821800212, 1833750850, 1834601376, 1834613468, 1866278547, 1867401367, 1936236019, 1945296852, 1978039580, 1997464432, 2017904725, 2055461758, 2058918178, 2080694907, 2086814061, 2089989988, 2123843096, 2170766397, 2172738430, 2174442073, 2177527468, 2178512614, 2233637259, 2246941078, 2274844928, 2274845447, 2274845649, 2279046513, 2293400491, 2299670458, 2300280964, 2300527715, 2305877279, 2307152224, 2316307169, 2322963439, 2335588857, 2337430377, 2359562546, 2360555826, 2405952063, 2419834458, 2423179189, 2436862648, 2436862650, 2436862651, 2436862652, 2436862653, 2436862654, 2436862655, 2439178127, 2460729245, 2517521888, 2585317679, 2631335866, 2632842752, 2726667654, 2726667661, 2726667752, 2726667756, 2726667834, 2726667995, 2726668398, 2737177336, 2757711981, 2779759639, 2787445139, 2796817467, 2812190333, 2816464305, 2817592022, 2826795200, 2827908591, 2872823135, 2873905939, 2876785673, 2876785759, 2901134565, 2913059937, 2924726497, 2938670220, 2939089089, 2943360116, 2945389039, 3005172573, 3015670621, 3022308183, 3050185270, 3050185436, 3056015384, 3056015484, 3071839865, 3079506072, 3079929644, 3116612793, 3164097381, 3176996220, 3180729164, 3227651590, 3234391576, 3234432745, 3278041418, 3278041727, 3278041816, 3319967633, 3330642108, 3334769994, 3354637514, 3375261606, 3375312977, 3410106074, 3423153883, 3456106742, 3461071037, 3473412940, 3486684134, 3504293483, 3517650814, 3547292615, 3571189672, 3593285841, 3612407497, 3666061454, 3666061458, 3666061568, 3666061577, 3666061585, 3666061591, 3666061602, 3666061610, 3666061613, 3666061619, 3666061666, 3666061672, 3666061702, 3666061706, 3666061732, 3666061760, 3666061781, 3666061825, 3666061864, 3666061891, 3666061895, 3666061896, 3666061902, 3666061903, 3666061913, 3666062029, 3666062293, 3666062299, 3666062326, 3666062331, 3666062345, 3666062357, 3666062361, 3666062379, 3666062386, 3666062390, 3666062391, 3666062394, 3666062408, 3666062418, 3666062422, 3666062427, 3666062453, 3666062517, 3666062569, 3666062581, 3666062582, 3666062586, 3666062587, 3666099519, 3667007182, 3676644409, 3676644411, 3676644421, 3676644429, 3676644442, 3676644586, 3676644600, 3676644610, 3676644643, 3676644706, 3676644759, 3676644775, 3676644800, 3676644806, 3676644819, 3676644874, 3676644887, 3676644888, 3676644905, 3676644939, 3676644953, 3676644982, 3676645005, 3676645006, 3676645021, 3676645049, 3676645073, 3684315096, 3691777760, 3697941178, 3708654452, 3710369155, 3749170769, 3772863442, 3793240332, 3798969166, 3800169971, 3820675046, 3829710462, 3829710568, 3843370951, 3845152461, 3847111189, 3861225221, 3871154340, 3872238039, 3916589493, 3949265042, 3952274701, 3967179311, 4020468984, 4088042711, 4088042763, 4088043471, 4098608917, 4098609219, 4098704176, 4098704230, 4098775844, 4098776178, 4098815877, 4098816211, 4126370696, 4127380674, 4155818428, 4160021452, 4179162156, 4189349925, 4224941776, 4233200080, 4259920717, 4263023754, 4268562148, 0, 0, 0, 17, 343511425, 1030334438, 1035444912, 1035444966, 1126785220, 1160516735, 2496101809, 2496102373, 2501069285, 2506938014, 2613448893, 2668096359, 2767610756, 2943255975, 3483670337, 3483670995, 4233599295, 4, 989615076, 1348282182, 2372695675, 2793429742, 397, 2315777, 2516160, 11643297, 13203897, 21231554, 35967653, 38712935, 47792331, 72865995, 74144458, 82734700, 83460346, 105527502, 113271207, 133306274, 134752460, 140540365, 149081424, 159784149, 160693466, 187981691, 201714711, 257089230, 271126044, 284628322, 288401789, 293512087, 299470436, 301921344, 303087651, 310748895, 318673258, 321508235, 328967865, 331740776, 333043316, 343618051, 344116268, 349554276, 368842915, 373240553, 380288946, 385653806, 387546555, 391603917, 397299232, 407552584, 411195000, 457925677, 465045723, 466546683, 476300545, 496262010, 508940895, 528158848, 576308682, 599016891, 599034260, 599035482, 617473653, 629010449, 643159709, 649306413, 657763177, 658030821, 663498697, 666920016, 684079208, 730892591, 745170160, 748876721, 748886222, 752803028, 756281027, 761348098, 767592699, 768148470, 771634050, 771637032, 797075449, 798164153, 806496217, 807477757, 814547322, 823640218, 828791723, 830209933, 830328663, 830812219, 831086733, 843422410, 848961657, 871543061, 884068409, 931459402, 935834596, 953760609, 956026316, 973201175, 985556812, 990107236, 1002251210, 1006286666, 1015491227, 1017212284, 1017751931, 1026349709, 1027559288, 1039189287, 1048681185, 1049173028, 1069937338, 1071441344, 1072691903, 1128950639, 1139782538, 1139843834, 1141008431, 1156523661, 1160815779, 1194239092, 1211577197, 1211637010, 1222641289, 1240507358, 1264600767, 1288872441, 1321698432, 1329660539, 1338155660, 1339210968, 1373285759, 1382125974, 1390628516, 1399578255, 1399657308, 1403708559, 1408484449, 1432456391, 1433498959, 1468959011, 1474134153, 1481167509, 1481892069, 1485735468, 1512063165, 1514478145, 1519263375, 1522675342, 1541305645, 1542981532, 1553720283, 1557499238, 1635518266, 1640297675, 1644040136, 1645084619, 1672625515, 1675268949, 1675573659, 1679183895, 1701744405, 1704282831, 1705918154, 1709094170, 1740118996, 1745197398, 1746168006, 1763490076, 1764138250, 1778504542, 1804707890, 1807895638, 1812124962, 1825087480, 1827997201, 1834433178, 1836295865, 1836721468, 1855831597, 1871287494, 1874044309, 1894472089, 1911094612, 1944286571, 1945301911, 1964668429, 1992457158, 2005254865, 2048724462, 2072914399, 2073220142, 2080693816, 2086817070, 2091822363, 2116894487, 2120589916, 2132854800, 2138833857, 2149555928, 2149786502, 2159131792, 2193556503, 2203826663, 2222814745, 2233632200, 2234478015, 2266871804, 2270958851, 2280109123, 2300684501, 2320975486, 2368015199, 2368150205, 2378859099, 2402357659, 2420231640, 2421832104, 2442099500, 2445444524, 2450316872, 2480056360, 2511017726, 2535682339, 2564758885, 2580206998, 2634443356, 2655498207, 2659744440, 2664398480, 2665288759, 2683912382, 2685363948, 2697995386, 2705244823, 2707054618, 2731911143, 2746095604, 2750223108, 2751457001, 2757038073, 2757714990, 2757832374, 2763102979, 2764615893, 2768173321, 2769632227, 2788021838, 2808290141, 2813866328, 2823576784, 2832963785, 2833300206, 2839929991, 2842899363, 2855442276, 2861724882, 2873826097, 2875201553, 2889802328, 2894057006, 2902844704, 2920776771, 2938675535, 2940382413, 2940687092, 2942499160, 2976147113, 2999699036, 3012594373, 3014878073, 3021947486, 3024482894, 3027886950, 3033143700, 3041972547, 3043054392, 3061104959, 3068421535, 3068451149, 3073259213, 3076287128, 3092740204, 3097180103, 3126517186, 3134714387, 3141033517, 3153726305, 3161099645, 3164570023, 3168616586, 3178721795, 3185964212, 3199657339, 3213212569, 3227558031, 3234959359, 3242752110, 3245911312, 3250117513, 3255207552, 3263028169, 3267416959, 3271443733, 3276067803, 3303582289, 3303582897, 3303582994, 3303614961, 3327283712, 3336973745, 3345667381, 3346748653, 3358811093, 3365430328, 3371744816, 3393399711, 3418876414, 3451234301, 3462047339, 3466186248, 3487461167, 3489942689, 3511023565, 3528253833, 3577832733, 3577832874, 3579570991, 3581968529, 3587382024, 3594263141, 3597175734, 3609198260, 3620670314, 3644061745, 3686687805, 3699471696, 3704450806, 3719669200, 3724302375, 3732631655, 3737867596, 3737869333, 3737882439, 3743824089, 3748450386, 3755463030, 3762725071, 3780090414, 3786960458, 3789613664, 3804622433, 3829814476, 3834232417, 3836376093, 3843018675, 3847110230, 3849573984, 3888536498, 3895950835, 3927045026, 3930866393, 3974478460, 3989861270, 3990612749, 3994206764, 3994206767, 4003176468, 4013705057, 4040130402, 4055956024, 4064081091, 4069710253, 4076793042, 4078153021, 4095557691, 4103392506, 4105790268, 4130682685, 4131077260, 4150503708, 4155492542, 4165042016, 4186885299, 4188349987, 4190709408, 4193373567, 4197651626, 4198443983, 4202984206, 4210375752, 4212069506, 4216891535, 4228991204, 4251429164, 4263509307, 4279717352, 0, 0, 0, 2, 898804372, 2420122849, 0, 184, 14034108, 23188555, 69988957, 176179919, 181602757, 234878220, 241015393, 282017655, 286917352, 298380305, 303225044, 333040682, 436746473, 437068413, 449019336, 449464240, 451920903, 472319354, 495318858, 500388520, 512606097, 527005648, 554651161, 561857715, 570474602, 588675343, 615779940, 680838102, 688229624, 722503086, 733631603, 760863762, 768579191, 769161927, 777931472, 804592434, 820388681, 834351359, 838060561, 871806992, 907959623, 917609192, 921095799, 922653385, 936253712, 951807472, 976944213, 1057868108, 1061438860, 1097991931, 1099387701, 1118780323, 1129127307, 1134058690, 1149298066, 1173449599, 1188365042, 1221482277, 1242510922, 1244344576, 1249042959, 1256956692, 1322375458, 1340682260, 1389219463, 1420709285, 1468300758, 1544881072, 1554252850, 1557974723, 1564485910, 1566036640, 1637844009, 1641584834, 1668922875, 1697481902, 1700564263, 1779722906, 1817679755, 1844196310, 1862443027, 1863425670, 1874439438, 1918635827, 1942164974, 1953292144, 1996832610, 2005075462, 2171493616, 2174172768, 2200270403, 2224853335, 2232538822, 2253530761, 2271804726, 2307427283, 2314778321, 2325064176, 2347507979, 2356867634, 2422267260, 2435625787, 2442761119, 2454582508, 2471444403, 2478294033, 2487762682, 2505529649, 2513007594, 2514973059, 2523046044, 2645305307, 2697781106, 2700249759, 2713921343, 2858583336, 2869381059, 2875883974, 2877426354, 2906087318, 2940183875, 2941854634, 2983778787, 2991311078, 3020661286, 3033841873, 3036938981, 3061233249, 3088839886, 3090851000, 3116880000, 3160125774, 3173697968, 3175256934, 3193365922, 3248874150, 3262696949, 3293334302, 3294129343, 3298593000, 3336190368, 3342381501, 3344449059, 3367460946, 3387371732, 3391640312, 3415133140, 3415553447, 3416872467, 3486599559, 3505446608, 3554833241, 3594782899, 3615198865, 3629910769, 3642670614, 3643744473, 3654513786, 3675702820, 3697030868, 3710380917, 3779661543, 3795518186, 3803370028, 3804920752, 3840174405, 3861583079, 3867650596, 3894082090, 3900359633, 3928753122, 3942119031, 3951224511, 4009634354, 4063453845, 4065646590, 4079144597, 4163056211, 4180315949, 4196008531, 4241738188, 4254148468, 4265459019, 4273759132, 0, 0, 0, 0, 0, 5, 1148034389, 1373602048, 2160920720, 2391490885, 2722440867]);
+//# sourceMappingURL=hashes.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js.map b/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js.map
new file mode 100644
index 0000000..372666d
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/src/data/hashes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../../../src/data/hashes.ts"],"names":[],"mappings":"AACA,8DAA8D;AAC9D,eAAe,IAAI,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,EAAE,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,GAAG,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,SAAS,EAAC,UAAU,EAAC,CAAC,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js b/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js
new file mode 100644
index 0000000..e938995
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js
@@ -0,0 +1,214 @@
+import { fastPathLookup, } from 'tldts-core';
+import packed from './data/hashes';
+/**
+ * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)
+ * using a binary search algorithm.
+ */
+function binSearch(arr, elt, start, end) {
+ if (start >= end) {
+ return false;
+ }
+ let low = start;
+ let high = end - 1;
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const midVal = arr[mid];
+ if (midVal < elt) {
+ low = mid + 1;
+ }
+ else if (midVal > elt) {
+ high = mid - 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To
+// avoid having to allocate an array to store them at every invocation, we
+// create one global one that can be reused.
+const BUFFER = new Uint32Array(20);
+/**
+ * Iterate on hashes of labels from `hostname` backward (from last label to
+ * first label), stopping after `maximumNumberOfLabels` have been extracted and
+ * calling `cb` on each of them.
+ *
+ * The `maximumNumberOfLabels` argument is typically used to specify the number
+ * of labels seen in the longest public suffix. We do not need to check further
+ * in very long hostnames.
+ */
+function hashHostnameLabelsBackward(hostname, maximumNumberOfLabels) {
+ let hash = 5381;
+ let index = 0;
+ // Compute hash backward, label per label
+ for (let i = hostname.length - 1; i >= 0; i -= 1) {
+ const code = hostname.charCodeAt(i);
+ // Process label
+ if (code === 46 /* '.' */) {
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = i + 1;
+ index += 1;
+ if (index === maximumNumberOfLabels) {
+ return index;
+ }
+ }
+ // Update hash
+ hash = (hash * 33) ^ code;
+ }
+ // Let's not forget about last label
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = 0;
+ index += 1;
+ return index;
+}
+/**
+ * Perform a public suffix lookup for `hostname` using the packed hashes
+ * data-structure. The `options` allows to specify if ICANN/PRIVATE sections
+ * should be considered. By default, both are.
+ *
+ */
+export default function suffixLookup(hostname, options, out) {
+ if (fastPathLookup(hostname, options, out)) {
+ return;
+ }
+ const { allowIcannDomains, allowPrivateDomains } = options;
+ // Keep track of longest match
+ let matchIndex = -1;
+ let matchKind = 0 /* Result.NO_MATCH */;
+ let matchLabels = 0; // Keep track of number of labels currently matched
+ // Index in the packed array data-structure
+ let index = 1;
+ const numberOfHashes = hashHostnameLabelsBackward(hostname, packed[0] /* maximumNumberOfLabels */);
+ for (let label = 0; label < numberOfHashes; label += 1) {
+ const hash = BUFFER[label << 1];
+ const labelStart = BUFFER[(label << 1) + 1];
+ // For each label, matching proceeds in the following way:
+ //
+ // 1. check exceptions
+ // 2. check wildcards
+ // 3. check normal rules
+ //
+ // For each of these, we also perform the lookup in two parts, once for
+ // the ICANN section and one for the PRIVATE section. Both of which are
+ // optional and can be enabled/disabled using the `options` argument.
+ //
+ // We start with exceptions because if an exception is found, we do not
+ // need to continue matching wildcards or normal rules; the exception will
+ // always have priority.
+ //
+ // Similarly, if we find a wildcard match, we do not need to check the
+ // rules for the same label as the wildcard match is always longer (one
+ // more label is matched).
+ //
+ // **WARNING**: the structure of this code follows exactly the structure
+ // of the packed data structure as create in ./bin/builders/hashes.js
+ let match = 0 /* Result.NO_MATCH */;
+ // ========================================================================
+ // Lookup exceptions
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 1 /* Result.ICANN_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains && match === 0 /* Result.NO_MATCH */) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 2 /* Result.PRIVATE_MATCH */ | 4 /* Result.EXCEPTION_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // ========================================================================
+ // Lookup wildcards
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 16 /* Result.WILDCARD_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // ========================================================================
+ // Lookup rules
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 1 /* Result.ICANN_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // PRIVATE
+ if (allowPrivateDomains &&
+ match === 0 /* Result.NO_MATCH */ &&
+ (matchKind & 4 /* Result.EXCEPTION_MATCH */) === 0 &&
+ matchLabels <= label) {
+ match = binSearch(packed, hash, index + 1, index + packed[index] + 1)
+ ? 8 /* Result.NORMAL_MATCH */ | 2 /* Result.PRIVATE_MATCH */
+ : 0 /* Result.NO_MATCH */;
+ }
+ index += packed[index] + 1;
+ // If we found a match, the longest match that is being tracked for this
+ // hostname. We need to remember which kind of match it was (exception,
+ // wildcard, normal rule), the index where the suffix starts in `hostname`
+ // as well as the number of labels contained in this suffix (this is
+ // important to make sure that we always keep the longest match if there
+ // are both a wildcard and a normal rule matching).
+ if (match !== 0 /* Result.NO_MATCH */) {
+ matchKind = match;
+ matchLabels = label + ((match & 16 /* Result.WILDCARD_MATCH */) !== 0 ? 2 : 1);
+ matchIndex = labelStart;
+ }
+ }
+ out.isIcann = (matchKind & 1 /* Result.ICANN_MATCH */) !== 0;
+ out.isPrivate = (matchKind & 2 /* Result.PRIVATE_MATCH */) !== 0;
+ // No match found
+ if (matchIndex === -1) {
+ out.publicSuffix =
+ numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);
+ return;
+ }
+ // If match is an exception, this means that we need to count less label.
+ // For example, exception rule !foo.com would yield suffix 'com', so we need
+ // to locate the next dot and slice from there.
+ if ((matchKind & 4 /* Result.EXCEPTION_MATCH */) !== 0) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);
+ return;
+ }
+ // If match is a wildcard, we need to match one more label. If wildcard rule
+ // was *.com, we would have stored only 'com' in the packed structure and we
+ // need to take one extra label on the left.
+ if ((matchKind & 16 /* Result.WILDCARD_MATCH */) !== 0) {
+ if (matchLabels < numberOfHashes) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);
+ return;
+ }
+ const parts = hostname.split('.');
+ while (parts.length > matchLabels) {
+ parts.shift();
+ }
+ out.publicSuffix = parts.join('.');
+ return;
+ }
+ // if ((matchKind & Result.NORMAL_MATCH) !== 0)
+ // For normal match, we just slice the hostname at the beginning of suffix.
+ out.publicSuffix = hostname.slice(matchIndex);
+}
+//# sourceMappingURL=packed-hashes.js.map \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js.map b/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js.map
new file mode 100644
index 0000000..4a6e39e
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/src/packed-hashes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"packed-hashes.js","sourceRoot":"","sources":["../../../src/packed-hashes.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/es6/tsconfig.bundle.tsbuildinfo b/client/node_modules/tldts-experimental/dist/es6/tsconfig.bundle.tsbuildinfo
new file mode 100644
index 0000000..e9d9ca4
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/es6/tsconfig.bundle.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../../tldts-core/dist/types/src/lookup/interface.d.ts","../../../tldts-core/dist/types/src/options.d.ts","../../../tldts-core/dist/types/src/factory.d.ts","../../../tldts-core/dist/types/src/lookup/fast-path.d.ts","../../../tldts-core/dist/types/index.d.ts","../../src/data/hashes.ts","../../src/packed-hashes.ts","../../index.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/command-line-args/index.d.ts","../../../../node_modules/@types/command-line-usage/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/resolve/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"994c234848afc14a2586b6565777f4c0b05dc479ede0a041bfd5becf6dceb586","863cbb90fdbdd1d4d46722580a9648a44732bbbca2ca36655f0951a872154ccc","4ed6832518a6e057aca6c6861a7d86f432064a49b1cb6c960e472bcc2404e82a","45c1b68819be5f90018e54b257c0fff392fa02224db1622d9eecd31649ffade7","899c62c52e9f287a86c1c4dd1281495fd80c652ccc578d93b976fa6c1efa1941","5e5c1ae2c2698f3029c0ed9f2b7fc3a72d155d04fe5d845fa04f657aa14e156d","99ad6b3af53b8ecd1d6d5718ba2fe29275a1502d9e702d0675bbc7588c153acd","dbbb01bb04c64cc399e355643eb6274cd98e3310e5e03a785ea04aecd35ce03d","4c60326ce4af26b97277b6dd3628efcfba9c9016008086d176181274c3ffc3e6",{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true},"629766229f541d92210f30a92b6038568ec165fab14b7ee53bdf13667da37ca3","29193c018378ca9c8033eaa974c02c1f503e8fcd8a2bf406057c53f7d3fa17a8","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"46d317b6ee5a27bed0c9553bbadaedd710ab334606e6a5b1aaba4fe0b31d899d","affectsGlobalScope":true},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"0b3868d3f87c95ea73bdfab380e536843ec3573aa76233b97aac40518494ea24","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","84b8cc86ad19115f2637401cdd220460a25542df478c966a5ffc5eeaf3825299",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab"],"root":[[55,57]],"options":{"composite":false,"declaration":false,"declarationDir":"../..","declarationMap":false,"module":5,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"target":4},"fileIdsList":[[145],[66,145],[102,145],[103,108,136,145],[104,115,116,123,133,144,145],[104,105,115,123,145],[106,145],[107,108,116,124,145],[108,133,141,145],[109,111,115,123,145],[110,145],[111,112,145],[115,145],[113,115,145],[102,115,145],[115,116,117,133,144,145],[115,116,117,130,133,136,145],[100,145,149],[111,115,118,123,133,144,145],[115,116,118,119,123,133,141,144,145],[118,120,133,141,144,145],[66,67,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],[115,121,145],[122,144,145,149],[111,115,123,133,145],[124,145],[125,145],[102,126,145],[127,143,145,149],[128,145],[129,145],[115,130,131,145],[130,132,145,147],[103,115,133,134,135,136,145],[103,133,135,145],[133,134,145],[136,145],[137,145],[102,133,145],[115,139,140,145],[139,140,145],[108,123,133,141,145],[142,145],[123,143,145],[103,118,129,144,145],[108,145],[133,145,146],[122,145,147],[145,148],[103,108,115,117,126,133,144,145,147,149],[133,145,150],[145,156,195],[145,156,180,195],[145,195],[145,156],[145,156,181,195],[145,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],[145,181,195],[77,81,144,145],[77,133,144,145],[72,145],[74,77,141,144,145],[123,141,145],[145,152],[72,145,152],[74,77,123,144,145],[69,70,73,76,103,115,133,144,145],[69,75,145],[73,77,103,136,144,145,152],[103,145,152],[93,103,145,152],[71,72,145,152],[77,145],[71,72,73,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,145],[77,84,85,145],[75,77,85,86,145],[76,145],[69,72,77,145],[77,81,85,86,145],[81,145],[75,77,80,144,145],[69,74,75,77,81,84,145],[103,133,145],[72,77,93,103,145,149,152],[50,51,52,53,145],[50,51,145],[50,145],[54,56,145],[54,55,145]],"referencedMap":[[58,1],[59,1],[60,1],[61,1],[62,1],[63,1],[64,1],[65,1],[66,2],[67,2],[102,3],[103,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,12],[114,13],[113,14],[115,15],[116,16],[117,17],[101,18],[151,1],[118,19],[119,20],[120,21],[152,22],[121,23],[122,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,32],[132,33],[133,34],[135,35],[134,36],[136,37],[137,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[153,1],[154,1],[155,1],[180,52],[181,53],[156,54],[159,54],[178,52],[179,52],[169,52],[168,55],[166,52],[161,52],[174,52],[172,52],[176,52],[160,52],[173,52],[177,52],[162,52],[163,52],[175,52],[157,52],[164,52],[165,52],[167,52],[171,52],[182,56],[170,52],[158,52],[195,57],[194,1],[189,56],[191,58],[190,56],[183,56],[184,56],[186,56],[188,56],[192,58],[193,58],[185,58],[187,58],[68,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[84,59],[91,60],[83,59],[98,61],[75,62],[74,63],[97,64],[92,65],[95,66],[77,67],[76,68],[72,69],[71,70],[94,71],[73,72],[78,73],[79,1],[82,73],[69,1],[100,74],[99,73],[86,75],[87,76],[89,77],[85,78],[88,79],[93,64],[80,80],[81,81],[90,82],[70,83],[96,84],[54,85],[52,86],[53,87],[50,1],[51,1],[57,88],[55,1],[56,89]],"exportedModulesMap":[[58,1],[59,1],[60,1],[61,1],[62,1],[63,1],[64,1],[65,1],[66,2],[67,2],[102,3],[103,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,12],[114,13],[113,14],[115,15],[116,16],[117,17],[101,18],[151,1],[118,19],[119,20],[120,21],[152,22],[121,23],[122,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,32],[132,33],[133,34],[135,35],[134,36],[136,37],[137,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[153,1],[154,1],[155,1],[180,52],[181,53],[156,54],[159,54],[178,52],[179,52],[169,52],[168,55],[166,52],[161,52],[174,52],[172,52],[176,52],[160,52],[173,52],[177,52],[162,52],[163,52],[175,52],[157,52],[164,52],[165,52],[167,52],[171,52],[182,56],[170,52],[158,52],[195,57],[194,1],[189,56],[191,58],[190,56],[183,56],[184,56],[186,56],[188,56],[192,58],[193,58],[185,58],[187,58],[68,1],[47,1],[48,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[22,1],[49,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[46,1],[11,1],[10,1],[84,59],[91,60],[83,59],[98,61],[75,62],[74,63],[97,64],[92,65],[95,66],[77,67],[76,68],[72,69],[71,70],[94,71],[73,72],[78,73],[79,1],[82,73],[69,1],[100,74],[99,73],[86,75],[87,76],[89,77],[85,78],[88,79],[93,64],[80,80],[81,81],[90,82],[70,83],[96,84],[54,85],[52,86],[53,87],[50,1],[51,1],[57,88],[55,1],[56,89]],"semanticDiagnosticsPerFile":[58,59,60,61,62,63,64,65,66,67,102,103,104,105,106,107,108,109,110,111,112,114,113,115,116,117,101,151,118,119,120,152,121,122,123,124,125,126,127,128,129,130,131,132,133,135,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,153,154,155,180,181,156,159,178,179,169,168,166,161,174,172,176,160,173,177,162,163,175,157,164,165,167,171,182,170,158,195,194,189,191,190,183,184,186,188,192,193,185,187,68,47,48,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,22,49,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,1,46,11,10,84,91,83,98,75,74,97,92,95,77,76,72,71,94,73,78,79,82,69,100,99,86,87,89,85,88,93,80,81,90,70,96,54,52,53,50,51,57,55,56]},"version":"5.2.2"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/index.cjs.min.js b/client/node_modules/tldts-experimental/dist/index.cjs.min.js
new file mode 100644
index 0000000..26c2bdc
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.cjs.min.js
@@ -0,0 +1,2 @@
+"use strict";function n(n,t){let i=0,e=n.length,l=!1;if(!t){if(n.startsWith("data:"))return null;for(;i<n.length&&n.charCodeAt(i)<=32;)i+=1;for(;e>i+1&&n.charCodeAt(e-1)<=32;)e-=1;if(47===n.charCodeAt(i)&&47===n.charCodeAt(i+1))i+=2;else{const t=n.indexOf(":/",i);if(-1!==t){const e=t-i,l=n.charCodeAt(i),u=n.charCodeAt(i+1),o=n.charCodeAt(i+2),a=n.charCodeAt(i+3),r=n.charCodeAt(i+4);if(5===e&&104===l&&116===u&&116===o&&112===a&&115===r);else if(4===e&&104===l&&116===u&&116===o&&112===a);else if(3===e&&119===l&&115===u&&115===o);else if(2===e&&119===l&&115===u);else for(let e=i;e<t;e+=1){const t=32|n.charCodeAt(e);if(!(t>=97&&t<=122||t>=48&&t<=57||46===t||45===t||43===t))return null}for(i=t+2;47===n.charCodeAt(i);)i+=1}}let t=-1,u=-1,o=-1;for(let a=i;a<e;a+=1){const i=n.charCodeAt(a);if(35===i||47===i||63===i){e=a;break}64===i?t=a:93===i?u=a:58===i?o=a:i>=65&&i<=90&&(l=!0)}if(-1!==t&&t>i&&t<e&&(i=t+1),91===n.charCodeAt(i))return-1!==u?n.slice(i+1,u).toLowerCase():null;-1!==o&&o>i&&o<e&&(e=o)}for(;e>i+1&&46===n.charCodeAt(e-1);)e-=1;const u=0!==i||e!==n.length?n.slice(i,e):n;return l?u.toLowerCase():u}function t(n){return n>=97&&n<=122||n>=48&&n<=57||n>127}function i(n){if(n.length>255)return!1;if(0===n.length)return!1;if(!t(n.charCodeAt(0))&&46!==n.charCodeAt(0)&&95!==n.charCodeAt(0))return!1;let i=-1,e=-1;const l=n.length;for(let u=0;u<l;u+=1){const l=n.charCodeAt(u);if(46===l){if(u-i>64||46===e||45===e||95===e)return!1;i=u}else if(!t(l)&&45!==l&&95!==l)return!1;e=l}return l-i-1<=63&&45!==e}const e=function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:e=!0,mixedInputs:l=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:e,mixedInputs:l,validHosts:u,validateHostname:o}}({});function l(t,l,u,o,a){const r=function(n){return void 0===n?e:function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:e=!0,mixedInputs:l=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:e,mixedInputs:l,validHosts:u,validateHostname:o}}(n)}(o);return"string"!=typeof t?a:(r.extractHostname?r.mixedInputs?a.hostname=n(t,i(t)):a.hostname=n(t,!1):a.hostname=t,0===l||null===a.hostname||r.detectIp&&(a.isIp=function(n){if(n.length<3)return!1;let t=n.startsWith("[")?1:0,i=n.length;if("]"===n[i-1]&&(i-=1),i-t>39)return!1;let e=!1;for(;t<i;t+=1){const i=n.charCodeAt(t);if(58===i)e=!0;else if(!(i>=48&&i<=57||i>=97&&i<=102||i>=65&&i<=90))return!1}return e}(s=a.hostname)||function(n){if(n.length<7)return!1;if(n.length>15)return!1;let t=0;for(let i=0;i<n.length;i+=1){const e=n.charCodeAt(i);if(46===e)t+=1;else if(e<48||e>57)return!1}return 3===t&&46!==n.charCodeAt(0)&&46!==n.charCodeAt(n.length-1)}(s),a.isIp)?a:r.validateHostname&&r.extractHostname&&!i(a.hostname)?(a.hostname=null,a):(u(a.hostname,r,a),2===l||null===a.publicSuffix?a:(a.domain=function(n,t,i){if(null!==i.validHosts){const n=i.validHosts;for(const i of n)if(function(n,t){return!!n.endsWith(t)&&(n.length===t.length||"."===n[n.length-t.length-1])}(t,i))return i}let e=0;if(t.startsWith("."))for(;e<t.length&&"."===t[e];)e+=1;return n.length===t.length-e?null:function(n,t){const i=n.length-t.length-2,e=n.lastIndexOf(".",i);return-1===e?n:n.slice(e+1)}(t,n)}(a.publicSuffix,a.hostname,r),3===l||null===a.domain?a:(a.subdomain=function(n,t){return t.length===n.length?"":n.slice(0,-t.length-1)}(a.hostname,a.domain),4===l||(a.domainWithoutSuffix=(f=a.domain,c=a.publicSuffix,f.slice(0,-c.length-1))),a))));var s,f,c}var u=new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294e3,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583e3,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607e3,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124e3,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994e3,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501e3,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195e3,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851e3,311688e4,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593e3,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);function o(n,t,i,e){if(i>=e)return!1;let l=i,u=e-1;for(;l<=u;){const i=l+u>>>1,e=n[i];if(e<t)l=i+1;else{if(!(e>t))return!0;u=i-1}}return!1}const a=new Uint32Array(20);function r(n,t,i){if(function(n,t,i){if(!t.allowPrivateDomains&&n.length>3){const t=n.length-1,e=n.charCodeAt(t),l=n.charCodeAt(t-1),u=n.charCodeAt(t-2),o=n.charCodeAt(t-3);if(109===e&&111===l&&99===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(103===e&&114===l&&111===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(117===e&&100===l&&101===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(118===e&&111===l&&103===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(116===e&&101===l&&110===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(101===e&&100===l&&46===u)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}(n,t,i))return;const{allowIcannDomains:e,allowPrivateDomains:l}=t;let r=-1,s=0,f=0,c=1;const h=function(n,t){let i=5381,e=0;for(let l=n.length-1;l>=0;l-=1){const u=n.charCodeAt(l);if(46===u&&(a[e<<1]=i>>>0,a[1+(e<<1)]=l+1,e+=1,e===t))return e;i=33*i^u}return a[e<<1]=i>>>0,a[1+(e<<1)]=0,e+=1,e}(n,u[0]);for(let n=0;n<h;n+=1){const t=a[n<<1],i=a[1+(n<<1)];let h=0;e&&(h=o(u,t,c+1,c+u[c]+1)?5:0),c+=u[c]+1,l&&0===h&&(h=o(u,t,c+1,c+u[c]+1)?6:0),c+=u[c]+1,e&&0===h&&0==(4&s)&&(h=o(u,t,c+1,c+u[c]+1)?17:0),c+=u[c]+1,l&&0===h&&0==(4&s)&&(h=o(u,t,c+1,c+u[c]+1)?18:0),c+=u[c]+1,e&&0===h&&0==(4&s)&&f<=n&&(h=o(u,t,c+1,c+u[c]+1)?9:0),c+=u[c]+1,l&&0===h&&0==(4&s)&&f<=n&&(h=o(u,t,c+1,c+u[c]+1)?10:0),c+=u[c]+1,0!==h&&(s=h,f=n+(0!=(16&h)?2:1),r=i)}if(i.isIcann=0!=(1&s),i.isPrivate=0!=(2&s),-1!==r)if(0==(4&s))if(0==(16&s))i.publicSuffix=n.slice(r);else{if(f<h)return void(i.publicSuffix=n.slice(a[1+(f-1<<1)]));const t=n.split(".");for(;t.length>f;)t.shift();i.publicSuffix=t.join(".")}else i.publicSuffix=n.slice(a[1+(f-2<<1)]);else i.publicSuffix=1===h?n:n.slice(a[1])}const s={domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null};exports.getDomain=function(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,l(n,3,r,t,s).domain},exports.getDomainWithoutSuffix=function(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,l(n,5,r,t,s).domainWithoutSuffix},exports.getHostname=function(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,l(n,0,r,t,s).hostname},exports.getPublicSuffix=function(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,l(n,2,r,t,s).publicSuffix},exports.getSubdomain=function(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,l(n,4,r,t,s).subdomain},exports.parse=function(n,t={}){return l(n,5,r,t,{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null})};
+//# sourceMappingURL=index.cjs.min.js.map
diff --git a/client/node_modules/tldts-experimental/dist/index.cjs.min.js.map b/client/node_modules/tldts-experimental/dist/index.cjs.min.js.map
new file mode 100644
index 0000000..4b387d6
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.cjs.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.cjs.min.js","sources":["../../tldts-core/src/extract-hostname.ts","../../tldts-core/src/is-valid.ts","../../tldts-core/src/options.ts","../../tldts-core/src/factory.ts","../../tldts-core/src/is-ip.ts","../../tldts-core/src/domain.ts","../../tldts-core/src/subdomain.ts","../../tldts-core/src/domain-without-suffix.ts","../src/data/hashes.ts","../src/packed-hashes.ts","../../tldts-core/src/lookup/fast-path.ts","../index.ts"],"sourcesContent":["/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","\n// Code automatically generated using ./bin/builders/hashes.ts\nexport default new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195000,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851000,3116880000,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593000,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport packed from './data/hashes';\n\n/**\n * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)\n * using a binary search algorithm.\n */\nfunction binSearch(\n arr: Uint32Array,\n elt: number,\n start: number,\n end: number,\n): boolean {\n if (start >= end) {\n return false;\n }\n\n let low = start;\n let high = end - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid]!;\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return true;\n }\n }\n\n return false;\n}\n\n// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To\n// avoid having to allocate an array to store them at every invocation, we\n// create one global one that can be reused.\nconst BUFFER = new Uint32Array(20);\n\n/**\n * Iterate on hashes of labels from `hostname` backward (from last label to\n * first label), stopping after `maximumNumberOfLabels` have been extracted and\n * calling `cb` on each of them.\n *\n * The `maximumNumberOfLabels` argument is typically used to specify the number\n * of labels seen in the longest public suffix. We do not need to check further\n * in very long hostnames.\n */\nfunction hashHostnameLabelsBackward(\n hostname: string,\n maximumNumberOfLabels: number,\n): number {\n let hash = 5381;\n let index = 0;\n\n // Compute hash backward, label per label\n for (let i = hostname.length - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n // Process label\n if (code === 46 /* '.' */) {\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = i + 1;\n index += 1;\n\n if (index === maximumNumberOfLabels) {\n return index;\n }\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n // Let's not forget about last label\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = 0;\n index += 1;\n\n return index;\n}\n\nconst enum Result {\n NO_MATCH = 0,\n ICANN_MATCH = 1,\n PRIVATE_MATCH = 2,\n EXCEPTION_MATCH = 4,\n NORMAL_MATCH = 8,\n WILDCARD_MATCH = 16,\n}\n\n/**\n * Perform a public suffix lookup for `hostname` using the packed hashes\n * data-structure. The `options` allows to specify if ICANN/PRIVATE sections\n * should be considered. By default, both are.\n *\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const { allowIcannDomains, allowPrivateDomains } = options;\n\n // Keep track of longest match\n let matchIndex = -1;\n let matchKind = Result.NO_MATCH;\n let matchLabels = 0; // Keep track of number of labels currently matched\n\n // Index in the packed array data-structure\n let index = 1;\n\n const numberOfHashes = hashHostnameLabelsBackward(\n hostname,\n packed[0]! /* maximumNumberOfLabels */,\n );\n\n for (let label = 0; label < numberOfHashes; label += 1) {\n const hash = BUFFER[label << 1]!;\n const labelStart = BUFFER[(label << 1) + 1]!;\n // For each label, matching proceeds in the following way:\n //\n // 1. check exceptions\n // 2. check wildcards\n // 3. check normal rules\n //\n // For each of these, we also perform the lookup in two parts, once for\n // the ICANN section and one for the PRIVATE section. Both of which are\n // optional and can be enabled/disabled using the `options` argument.\n //\n // We start with exceptions because if an exception is found, we do not\n // need to continue matching wildcards or normal rules; the exception will\n // always have priority.\n //\n // Similarly, if we find a wildcard match, we do not need to check the\n // rules for the same label as the wildcard match is always longer (one\n // more label is matched).\n //\n // **WARNING**: the structure of this code follows exactly the structure\n // of the packed data structure as create in ./bin/builders/hashes.js\n\n let match = Result.NO_MATCH;\n\n // ========================================================================\n // Lookup exceptions\n // ========================================================================\n // ICANN\n if (allowIcannDomains) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (allowPrivateDomains && match === Result.NO_MATCH) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup wildcards\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup rules\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // If we found a match, the longest match that is being tracked for this\n // hostname. We need to remember which kind of match it was (exception,\n // wildcard, normal rule), the index where the suffix starts in `hostname`\n // as well as the number of labels contained in this suffix (this is\n // important to make sure that we always keep the longest match if there\n // are both a wildcard and a normal rule matching).\n if (match !== Result.NO_MATCH) {\n matchKind = match;\n matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);\n matchIndex = labelStart;\n }\n }\n\n out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;\n out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;\n\n // No match found\n if (matchIndex === -1) {\n out.publicSuffix =\n numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);\n return;\n }\n\n // If match is an exception, this means that we need to count less label.\n // For example, exception rule !foo.com would yield suffix 'com', so we need\n // to locate the next dot and slice from there.\n if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);\n return;\n }\n\n // If match is a wildcard, we need to match one more label. If wildcard rule\n // was *.com, we would have stored only 'com' in the packed structure and we\n // need to take one extra label on the left.\n if ((matchKind & Result.WILDCARD_MATCH) !== 0) {\n if (matchLabels < numberOfHashes) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);\n return;\n }\n\n const parts = hostname.split('.');\n while (parts.length > matchLabels) {\n parts.shift();\n }\n out.publicSuffix = parts.join('.');\n return;\n }\n\n // if ((matchKind & Result.NORMAL_MATCH) !== 0)\n // For normal match, we just slice the hostname at the beginning of suffix.\n out.publicSuffix = hostname.slice(matchIndex);\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/packed-hashes';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial<IOptions> = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n"],"names":["extractHostname","url","urlIsValidHostname","start","end","length","hasUpper","startsWith","charCodeAt","indexOfProtocol","indexOf","protocolSize","c0","c1","c2","c3","c4","i","lowerCaseCode","indexOfIdentifier","indexOfClosingBracket","indexOfPort","code","slice","toLowerCase","hostname","isValidAscii","isValidHostname","lastDotIndex","lastCharCode","len","DEFAULT_OPTIONS","allowIcannDomains","allowPrivateDomains","detectIp","mixedInputs","validHosts","validateHostname","setDefaultsImpl","parseImpl","step","suffixLookup","partialOptions","result","options","undefined","setDefaults","isIp","hasColon","isProbablyIpv6","numberOfDots","isProbablyIpv4","publicSuffix","domain","suffix","vhost","endsWith","shareSameDomainSuffix","numberOfLeadingDots","publicSuffixIndex","lastDotBeforeSuffixIndex","lastIndexOf","extractDomainWithSuffix","getDomain","subdomain","getSubdomain","domainWithoutSuffix","packed","Uint32Array","binSearch","arr","elt","low","high","mid","midVal","BUFFER","out","last","isIcann","isPrivate","fastPathLookup","matchIndex","matchKind","matchLabels","index","numberOfHashes","maximumNumberOfLabels","hash","hashHostnameLabelsBackward","label","labelStart","match","parts","split","shift","join","RESULT"],"mappings":"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UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,GAAG,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,IAAI,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,GAAG,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,WAAW,WAAW,WAAW,IAAI,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,WAAW,EAAE,IAAI,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/index.esm.min.js b/client/node_modules/tldts-experimental/dist/index.esm.min.js
new file mode 100644
index 0000000..a77db88
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.esm.min.js
@@ -0,0 +1,2 @@
+function n(n,t){let i=0,l=n.length,e=!1;if(!t){if(n.startsWith("data:"))return null;for(;i<n.length&&n.charCodeAt(i)<=32;)i+=1;for(;l>i+1&&n.charCodeAt(l-1)<=32;)l-=1;if(47===n.charCodeAt(i)&&47===n.charCodeAt(i+1))i+=2;else{const t=n.indexOf(":/",i);if(-1!==t){const l=t-i,e=n.charCodeAt(i),u=n.charCodeAt(i+1),o=n.charCodeAt(i+2),a=n.charCodeAt(i+3),r=n.charCodeAt(i+4);if(5===l&&104===e&&116===u&&116===o&&112===a&&115===r);else if(4===l&&104===e&&116===u&&116===o&&112===a);else if(3===l&&119===e&&115===u&&115===o);else if(2===l&&119===e&&115===u);else for(let l=i;l<t;l+=1){const t=32|n.charCodeAt(l);if(!(t>=97&&t<=122||t>=48&&t<=57||46===t||45===t||43===t))return null}for(i=t+2;47===n.charCodeAt(i);)i+=1}}let t=-1,u=-1,o=-1;for(let a=i;a<l;a+=1){const i=n.charCodeAt(a);if(35===i||47===i||63===i){l=a;break}64===i?t=a:93===i?u=a:58===i?o=a:i>=65&&i<=90&&(e=!0)}if(-1!==t&&t>i&&t<l&&(i=t+1),91===n.charCodeAt(i))return-1!==u?n.slice(i+1,u).toLowerCase():null;-1!==o&&o>i&&o<l&&(l=o)}for(;l>i+1&&46===n.charCodeAt(l-1);)l-=1;const u=0!==i||l!==n.length?n.slice(i,l):n;return e?u.toLowerCase():u}function t(n){return n>=97&&n<=122||n>=48&&n<=57||n>127}function i(n){if(n.length>255)return!1;if(0===n.length)return!1;if(!t(n.charCodeAt(0))&&46!==n.charCodeAt(0)&&95!==n.charCodeAt(0))return!1;let i=-1,l=-1;const e=n.length;for(let u=0;u<e;u+=1){const e=n.charCodeAt(u);if(46===e){if(u-i>64||46===l||45===l||95===l)return!1;i=u}else if(!t(e)&&45!==e&&95!==e)return!1;l=e}return e-i-1<=63&&45!==l}const l=function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:l=!0,mixedInputs:e=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:l,mixedInputs:e,validHosts:u,validateHostname:o}}({});function e(t,e,u,o,a){const r=function(n){return void 0===n?l:function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:l=!0,mixedInputs:e=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:l,mixedInputs:e,validHosts:u,validateHostname:o}}(n)}(o);return"string"!=typeof t?a:(r.extractHostname?r.mixedInputs?a.hostname=n(t,i(t)):a.hostname=n(t,!1):a.hostname=t,0===e||null===a.hostname||r.detectIp&&(a.isIp=function(n){if(n.length<3)return!1;let t=n.startsWith("[")?1:0,i=n.length;if("]"===n[i-1]&&(i-=1),i-t>39)return!1;let l=!1;for(;t<i;t+=1){const i=n.charCodeAt(t);if(58===i)l=!0;else if(!(i>=48&&i<=57||i>=97&&i<=102||i>=65&&i<=90))return!1}return l}(s=a.hostname)||function(n){if(n.length<7)return!1;if(n.length>15)return!1;let t=0;for(let i=0;i<n.length;i+=1){const l=n.charCodeAt(i);if(46===l)t+=1;else if(l<48||l>57)return!1}return 3===t&&46!==n.charCodeAt(0)&&46!==n.charCodeAt(n.length-1)}(s),a.isIp)?a:r.validateHostname&&r.extractHostname&&!i(a.hostname)?(a.hostname=null,a):(u(a.hostname,r,a),2===e||null===a.publicSuffix?a:(a.domain=function(n,t,i){if(null!==i.validHosts){const n=i.validHosts;for(const i of n)if(function(n,t){return!!n.endsWith(t)&&(n.length===t.length||"."===n[n.length-t.length-1])}(t,i))return i}let l=0;if(t.startsWith("."))for(;l<t.length&&"."===t[l];)l+=1;return n.length===t.length-l?null:function(n,t){const i=n.length-t.length-2,l=n.lastIndexOf(".",i);return-1===l?n:n.slice(l+1)}(t,n)}(a.publicSuffix,a.hostname,r),3===e||null===a.domain?a:(a.subdomain=function(n,t){return t.length===n.length?"":n.slice(0,-t.length-1)}(a.hostname,a.domain),4===e||(a.domainWithoutSuffix=(f=a.domain,c=a.publicSuffix,f.slice(0,-c.length-1))),a))));var s,f,c}var u=new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294e3,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583e3,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607e3,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124e3,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994e3,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501e3,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195e3,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851e3,311688e4,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593e3,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);function o(n,t,i,l){if(i>=l)return!1;let e=i,u=l-1;for(;e<=u;){const i=e+u>>>1,l=n[i];if(l<t)e=i+1;else{if(!(l>t))return!0;u=i-1}}return!1}const a=new Uint32Array(20);function r(n,t,i){if(function(n,t,i){if(!t.allowPrivateDomains&&n.length>3){const t=n.length-1,l=n.charCodeAt(t),e=n.charCodeAt(t-1),u=n.charCodeAt(t-2),o=n.charCodeAt(t-3);if(109===l&&111===e&&99===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(103===l&&114===e&&111===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(117===l&&100===e&&101===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(118===l&&111===e&&103===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(116===l&&101===e&&110===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(101===l&&100===e&&46===u)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}(n,t,i))return;const{allowIcannDomains:l,allowPrivateDomains:e}=t;let r=-1,s=0,f=0,c=1;const h=function(n,t){let i=5381,l=0;for(let e=n.length-1;e>=0;e-=1){const u=n.charCodeAt(e);if(46===u&&(a[l<<1]=i>>>0,a[1+(l<<1)]=e+1,l+=1,l===t))return l;i=33*i^u}return a[l<<1]=i>>>0,a[1+(l<<1)]=0,l+=1,l}(n,u[0]);for(let n=0;n<h;n+=1){const t=a[n<<1],i=a[1+(n<<1)];let h=0;l&&(h=o(u,t,c+1,c+u[c]+1)?5:0),c+=u[c]+1,e&&0===h&&(h=o(u,t,c+1,c+u[c]+1)?6:0),c+=u[c]+1,l&&0===h&&0==(4&s)&&(h=o(u,t,c+1,c+u[c]+1)?17:0),c+=u[c]+1,e&&0===h&&0==(4&s)&&(h=o(u,t,c+1,c+u[c]+1)?18:0),c+=u[c]+1,l&&0===h&&0==(4&s)&&f<=n&&(h=o(u,t,c+1,c+u[c]+1)?9:0),c+=u[c]+1,e&&0===h&&0==(4&s)&&f<=n&&(h=o(u,t,c+1,c+u[c]+1)?10:0),c+=u[c]+1,0!==h&&(s=h,f=n+(0!=(16&h)?2:1),r=i)}if(i.isIcann=0!=(1&s),i.isPrivate=0!=(2&s),-1!==r)if(0==(4&s))if(0==(16&s))i.publicSuffix=n.slice(r);else{if(f<h)return void(i.publicSuffix=n.slice(a[1+(f-1<<1)]));const t=n.split(".");for(;t.length>f;)t.shift();i.publicSuffix=t.join(".")}else i.publicSuffix=n.slice(a[1+(f-2<<1)]);else i.publicSuffix=1===h?n:n.slice(a[1])}const s={domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null};function f(n,t={}){return e(n,5,r,t,{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null})}function c(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,e(n,0,r,t,s).hostname}function h(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,e(n,2,r,t,s).publicSuffix}function d(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,e(n,3,r,t,s).domain}function m(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,e(n,4,r,t,s).subdomain}function x(n,t={}){var i;return(i=s).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,e(n,5,r,t,s).domainWithoutSuffix}export{d as getDomain,x as getDomainWithoutSuffix,c as getHostname,h as getPublicSuffix,m as getSubdomain,f as parse};
+//# sourceMappingURL=index.esm.min.js.map
diff --git a/client/node_modules/tldts-experimental/dist/index.esm.min.js.map b/client/node_modules/tldts-experimental/dist/index.esm.min.js.map
new file mode 100644
index 0000000..707adc8
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.esm.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.esm.min.js","sources":["../../tldts-core/src/extract-hostname.ts","../../tldts-core/src/is-valid.ts","../../tldts-core/src/options.ts","../../tldts-core/src/factory.ts","../../tldts-core/src/is-ip.ts","../../tldts-core/src/domain.ts","../../tldts-core/src/subdomain.ts","../../tldts-core/src/domain-without-suffix.ts","../src/data/hashes.ts","../src/packed-hashes.ts","../../tldts-core/src/lookup/fast-path.ts","../index.ts"],"sourcesContent":["/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","\n// Code automatically generated using ./bin/builders/hashes.ts\nexport default new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195000,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851000,3116880000,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593000,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport packed from './data/hashes';\n\n/**\n * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)\n * using a binary search algorithm.\n */\nfunction binSearch(\n arr: Uint32Array,\n elt: number,\n start: number,\n end: number,\n): boolean {\n if (start >= end) {\n return false;\n }\n\n let low = start;\n let high = end - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid]!;\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return true;\n }\n }\n\n return false;\n}\n\n// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To\n// avoid having to allocate an array to store them at every invocation, we\n// create one global one that can be reused.\nconst BUFFER = new Uint32Array(20);\n\n/**\n * Iterate on hashes of labels from `hostname` backward (from last label to\n * first label), stopping after `maximumNumberOfLabels` have been extracted and\n * calling `cb` on each of them.\n *\n * The `maximumNumberOfLabels` argument is typically used to specify the number\n * of labels seen in the longest public suffix. We do not need to check further\n * in very long hostnames.\n */\nfunction hashHostnameLabelsBackward(\n hostname: string,\n maximumNumberOfLabels: number,\n): number {\n let hash = 5381;\n let index = 0;\n\n // Compute hash backward, label per label\n for (let i = hostname.length - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n // Process label\n if (code === 46 /* '.' */) {\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = i + 1;\n index += 1;\n\n if (index === maximumNumberOfLabels) {\n return index;\n }\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n // Let's not forget about last label\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = 0;\n index += 1;\n\n return index;\n}\n\nconst enum Result {\n NO_MATCH = 0,\n ICANN_MATCH = 1,\n PRIVATE_MATCH = 2,\n EXCEPTION_MATCH = 4,\n NORMAL_MATCH = 8,\n WILDCARD_MATCH = 16,\n}\n\n/**\n * Perform a public suffix lookup for `hostname` using the packed hashes\n * data-structure. The `options` allows to specify if ICANN/PRIVATE sections\n * should be considered. By default, both are.\n *\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const { allowIcannDomains, allowPrivateDomains } = options;\n\n // Keep track of longest match\n let matchIndex = -1;\n let matchKind = Result.NO_MATCH;\n let matchLabels = 0; // Keep track of number of labels currently matched\n\n // Index in the packed array data-structure\n let index = 1;\n\n const numberOfHashes = hashHostnameLabelsBackward(\n hostname,\n packed[0]! /* maximumNumberOfLabels */,\n );\n\n for (let label = 0; label < numberOfHashes; label += 1) {\n const hash = BUFFER[label << 1]!;\n const labelStart = BUFFER[(label << 1) + 1]!;\n // For each label, matching proceeds in the following way:\n //\n // 1. check exceptions\n // 2. check wildcards\n // 3. check normal rules\n //\n // For each of these, we also perform the lookup in two parts, once for\n // the ICANN section and one for the PRIVATE section. Both of which are\n // optional and can be enabled/disabled using the `options` argument.\n //\n // We start with exceptions because if an exception is found, we do not\n // need to continue matching wildcards or normal rules; the exception will\n // always have priority.\n //\n // Similarly, if we find a wildcard match, we do not need to check the\n // rules for the same label as the wildcard match is always longer (one\n // more label is matched).\n //\n // **WARNING**: the structure of this code follows exactly the structure\n // of the packed data structure as create in ./bin/builders/hashes.js\n\n let match = Result.NO_MATCH;\n\n // ========================================================================\n // Lookup exceptions\n // ========================================================================\n // ICANN\n if (allowIcannDomains) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (allowPrivateDomains && match === Result.NO_MATCH) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup wildcards\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup rules\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // If we found a match, the longest match that is being tracked for this\n // hostname. We need to remember which kind of match it was (exception,\n // wildcard, normal rule), the index where the suffix starts in `hostname`\n // as well as the number of labels contained in this suffix (this is\n // important to make sure that we always keep the longest match if there\n // are both a wildcard and a normal rule matching).\n if (match !== Result.NO_MATCH) {\n matchKind = match;\n matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);\n matchIndex = labelStart;\n }\n }\n\n out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;\n out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;\n\n // No match found\n if (matchIndex === -1) {\n out.publicSuffix =\n numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);\n return;\n }\n\n // If match is an exception, this means that we need to count less label.\n // For example, exception rule !foo.com would yield suffix 'com', so we need\n // to locate the next dot and slice from there.\n if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);\n return;\n }\n\n // If match is a wildcard, we need to match one more label. If wildcard rule\n // was *.com, we would have stored only 'com' in the packed structure and we\n // need to take one extra label on the left.\n if ((matchKind & Result.WILDCARD_MATCH) !== 0) {\n if (matchLabels < numberOfHashes) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);\n return;\n }\n\n const parts = hostname.split('.');\n while (parts.length > matchLabels) {\n parts.shift();\n }\n out.publicSuffix = parts.join('.');\n return;\n }\n\n // if ((matchKind & Result.NORMAL_MATCH) !== 0)\n // For normal match, we just slice the hostname at the beginning of suffix.\n out.publicSuffix = hostname.slice(matchIndex);\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/packed-hashes';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial<IOptions> = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n"],"names":["extractHostname","url","urlIsValidHostname","start","end","length","hasUpper","startsWith","charCodeAt","indexOfProtocol","indexOf","protocolSize","c0","c1","c2","c3","c4","i","lowerCaseCode","indexOfIdentifier","indexOfClosingBracket","indexOfPort","code","slice","toLowerCase","hostname","isValidAscii","isValidHostname","lastDotIndex","lastCharCode","len","DEFAULT_OPTIONS","allowIcannDomains","allowPrivateDomains","detectIp","mixedInputs","validHosts","validateHostname","setDefaultsImpl","parseImpl","step","suffixLookup","partialOptions","result","options","undefined","setDefaults","isIp","hasColon","isProbablyIpv6","numberOfDots","isProbablyIpv4","publicSuffix","domain","suffix","vhost","endsWith","shareSameDomainSuffix","numberOfLeadingDots","publicSuffixIndex","lastDotBeforeSuffixIndex","lastIndexOf","extractDomainWithSuffix","getDomain","subdomain","getSubdomain","domainWithoutSuffix","packed","Uint32Array","binSearch","arr","elt","low","high","mid","midVal","BUFFER","out","last","isIcann","isPrivate","fastPathLookup","matchIndex","matchKind","matchLabels","index","numberOfHashes","maximumNumberOfLabels","hash","hashHostnameLabelsBackward","label","labelStart","match","parts","split","shift","join","RESULT","parse","getHostname","getPublicSuffix","getDomainWithoutSuffix"],"mappings":"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UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,GAAG,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,IAAI,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,GAAG,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,WAAW,WAAW,WAAW,IAAI,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,WAAW,EAAE,IAAI,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/index.umd.min.js b/client/node_modules/tldts-experimental/dist/index.umd.min.js
new file mode 100644
index 0000000..dddad28
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.umd.min.js
@@ -0,0 +1,2 @@
+!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).tldts={})}(this,(function(n){"use strict";function t(n,t){let i=0,e=n.length,l=!1;if(!t){if(n.startsWith("data:"))return null;for(;i<n.length&&n.charCodeAt(i)<=32;)i+=1;for(;e>i+1&&n.charCodeAt(e-1)<=32;)e-=1;if(47===n.charCodeAt(i)&&47===n.charCodeAt(i+1))i+=2;else{const t=n.indexOf(":/",i);if(-1!==t){const e=t-i,l=n.charCodeAt(i),u=n.charCodeAt(i+1),o=n.charCodeAt(i+2),a=n.charCodeAt(i+3),r=n.charCodeAt(i+4);if(5===e&&104===l&&116===u&&116===o&&112===a&&115===r);else if(4===e&&104===l&&116===u&&116===o&&112===a);else if(3===e&&119===l&&115===u&&115===o);else if(2===e&&119===l&&115===u);else for(let e=i;e<t;e+=1){const t=32|n.charCodeAt(e);if(!(t>=97&&t<=122||t>=48&&t<=57||46===t||45===t||43===t))return null}for(i=t+2;47===n.charCodeAt(i);)i+=1}}let t=-1,u=-1,o=-1;for(let a=i;a<e;a+=1){const i=n.charCodeAt(a);if(35===i||47===i||63===i){e=a;break}64===i?t=a:93===i?u=a:58===i?o=a:i>=65&&i<=90&&(l=!0)}if(-1!==t&&t>i&&t<e&&(i=t+1),91===n.charCodeAt(i))return-1!==u?n.slice(i+1,u).toLowerCase():null;-1!==o&&o>i&&o<e&&(e=o)}for(;e>i+1&&46===n.charCodeAt(e-1);)e-=1;const u=0!==i||e!==n.length?n.slice(i,e):n;return l?u.toLowerCase():u}function i(n){return n>=97&&n<=122||n>=48&&n<=57||n>127}function e(n){if(n.length>255)return!1;if(0===n.length)return!1;if(!i(n.charCodeAt(0))&&46!==n.charCodeAt(0)&&95!==n.charCodeAt(0))return!1;let t=-1,e=-1;const l=n.length;for(let u=0;u<l;u+=1){const l=n.charCodeAt(u);if(46===l){if(u-t>64||46===e||45===e||95===e)return!1;t=u}else if(!i(l)&&45!==l&&95!==l)return!1;e=l}return l-t-1<=63&&45!==e}const l=function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:e=!0,mixedInputs:l=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:e,mixedInputs:l,validHosts:u,validateHostname:o}}({});function u(n,i,u,o,a){const r=function(n){return void 0===n?l:function({allowIcannDomains:n=!0,allowPrivateDomains:t=!1,detectIp:i=!0,extractHostname:e=!0,mixedInputs:l=!0,validHosts:u=null,validateHostname:o=!0}){return{allowIcannDomains:n,allowPrivateDomains:t,detectIp:i,extractHostname:e,mixedInputs:l,validHosts:u,validateHostname:o}}(n)}(o);return"string"!=typeof n?a:(r.extractHostname?r.mixedInputs?a.hostname=t(n,e(n)):a.hostname=t(n,!1):a.hostname=n,0===i||null===a.hostname||r.detectIp&&(a.isIp=function(n){if(n.length<3)return!1;let t=n.startsWith("[")?1:0,i=n.length;if("]"===n[i-1]&&(i-=1),i-t>39)return!1;let e=!1;for(;t<i;t+=1){const i=n.charCodeAt(t);if(58===i)e=!0;else if(!(i>=48&&i<=57||i>=97&&i<=102||i>=65&&i<=90))return!1}return e}(s=a.hostname)||function(n){if(n.length<7)return!1;if(n.length>15)return!1;let t=0;for(let i=0;i<n.length;i+=1){const e=n.charCodeAt(i);if(46===e)t+=1;else if(e<48||e>57)return!1}return 3===t&&46!==n.charCodeAt(0)&&46!==n.charCodeAt(n.length-1)}(s),a.isIp)?a:r.validateHostname&&r.extractHostname&&!e(a.hostname)?(a.hostname=null,a):(u(a.hostname,r,a),2===i||null===a.publicSuffix?a:(a.domain=function(n,t,i){if(null!==i.validHosts){const n=i.validHosts;for(const i of n)if(function(n,t){return!!n.endsWith(t)&&(n.length===t.length||"."===n[n.length-t.length-1])}(t,i))return i}let e=0;if(t.startsWith("."))for(;e<t.length&&"."===t[e];)e+=1;return n.length===t.length-e?null:function(n,t){const i=n.length-t.length-2,e=n.lastIndexOf(".",i);return-1===e?n:n.slice(e+1)}(t,n)}(a.publicSuffix,a.hostname,r),3===i||null===a.domain?a:(a.subdomain=function(n,t){return t.length===n.length?"":n.slice(0,-t.length-1)}(a.hostname,a.domain),4===i||(a.domainWithoutSuffix=(f=a.domain,c=a.publicSuffix,f.slice(0,-c.length-1))),a))));var s,f,c}var o=new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294e3,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583e3,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607e3,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124e3,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994e3,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501e3,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195e3,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851e3,311688e4,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593e3,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);function a(n,t,i,e){if(i>=e)return!1;let l=i,u=e-1;for(;l<=u;){const i=l+u>>>1,e=n[i];if(e<t)l=i+1;else{if(!(e>t))return!0;u=i-1}}return!1}const r=new Uint32Array(20);function s(n,t,i){if(function(n,t,i){if(!t.allowPrivateDomains&&n.length>3){const t=n.length-1,e=n.charCodeAt(t),l=n.charCodeAt(t-1),u=n.charCodeAt(t-2),o=n.charCodeAt(t-3);if(109===e&&111===l&&99===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(103===e&&114===l&&111===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(117===e&&100===l&&101===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(118===e&&111===l&&103===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(116===e&&101===l&&110===u&&46===o)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(101===e&&100===l&&46===u)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}(n,t,i))return;const{allowIcannDomains:e,allowPrivateDomains:l}=t;let u=-1,s=0,f=0,c=1;const d=function(n,t){let i=5381,e=0;for(let l=n.length-1;l>=0;l-=1){const u=n.charCodeAt(l);if(46===u&&(r[e<<1]=i>>>0,r[1+(e<<1)]=l+1,e+=1,e===t))return e;i=33*i^u}return r[e<<1]=i>>>0,r[1+(e<<1)]=0,e+=1,e}(n,o[0]);for(let n=0;n<d;n+=1){const t=r[n<<1],i=r[1+(n<<1)];let d=0;e&&(d=a(o,t,c+1,c+o[c]+1)?5:0),c+=o[c]+1,l&&0===d&&(d=a(o,t,c+1,c+o[c]+1)?6:0),c+=o[c]+1,e&&0===d&&0==(4&s)&&(d=a(o,t,c+1,c+o[c]+1)?17:0),c+=o[c]+1,l&&0===d&&0==(4&s)&&(d=a(o,t,c+1,c+o[c]+1)?18:0),c+=o[c]+1,e&&0===d&&0==(4&s)&&f<=n&&(d=a(o,t,c+1,c+o[c]+1)?9:0),c+=o[c]+1,l&&0===d&&0==(4&s)&&f<=n&&(d=a(o,t,c+1,c+o[c]+1)?10:0),c+=o[c]+1,0!==d&&(s=d,f=n+(0!=(16&d)?2:1),u=i)}if(i.isIcann=0!=(1&s),i.isPrivate=0!=(2&s),-1!==u)if(0==(4&s))if(0==(16&s))i.publicSuffix=n.slice(u);else{if(f<d)return void(i.publicSuffix=n.slice(r[1+(f-1<<1)]));const t=n.split(".");for(;t.length>f;)t.shift();i.publicSuffix=t.join(".")}else i.publicSuffix=n.slice(r[1+(f-2<<1)]);else i.publicSuffix=1===d?n:n.slice(r[1])}const f={domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null};n.getDomain=function(n,t={}){var i;return(i=f).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,u(n,3,s,t,f).domain},n.getDomainWithoutSuffix=function(n,t={}){var i;return(i=f).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,u(n,5,s,t,f).domainWithoutSuffix},n.getHostname=function(n,t={}){var i;return(i=f).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,u(n,0,s,t,f).hostname},n.getPublicSuffix=function(n,t={}){var i;return(i=f).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,u(n,2,s,t,f).publicSuffix},n.getSubdomain=function(n,t={}){var i;return(i=f).domain=null,i.domainWithoutSuffix=null,i.hostname=null,i.isIcann=null,i.isIp=null,i.isPrivate=null,i.publicSuffix=null,i.subdomain=null,u(n,4,s,t,f).subdomain},n.parse=function(n,t={}){return u(n,5,s,t,{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null})}}));
+//# sourceMappingURL=index.umd.min.js.map
diff --git a/client/node_modules/tldts-experimental/dist/index.umd.min.js.map b/client/node_modules/tldts-experimental/dist/index.umd.min.js.map
new file mode 100644
index 0000000..1a62ddd
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/index.umd.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.umd.min.js","sources":["../../tldts-core/src/extract-hostname.ts","../../tldts-core/src/is-valid.ts","../../tldts-core/src/options.ts","../../tldts-core/src/factory.ts","../../tldts-core/src/is-ip.ts","../../tldts-core/src/domain.ts","../../tldts-core/src/subdomain.ts","../../tldts-core/src/domain-without-suffix.ts","../src/data/hashes.ts","../src/packed-hashes.ts","../../tldts-core/src/lookup/fast-path.ts","../index.ts"],"sourcesContent":["/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial<IOptions>): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial<IOptions>): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial<IOptions>,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","\n// Code automatically generated using ./bin/builders/hashes.ts\nexport default new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195000,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851000,3116880000,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593000,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport packed from './data/hashes';\n\n/**\n * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)\n * using a binary search algorithm.\n */\nfunction binSearch(\n arr: Uint32Array,\n elt: number,\n start: number,\n end: number,\n): boolean {\n if (start >= end) {\n return false;\n }\n\n let low = start;\n let high = end - 1;\n\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const midVal = arr[mid]!;\n if (midVal < elt) {\n low = mid + 1;\n } else if (midVal > elt) {\n high = mid - 1;\n } else {\n return true;\n }\n }\n\n return false;\n}\n\n// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To\n// avoid having to allocate an array to store them at every invocation, we\n// create one global one that can be reused.\nconst BUFFER = new Uint32Array(20);\n\n/**\n * Iterate on hashes of labels from `hostname` backward (from last label to\n * first label), stopping after `maximumNumberOfLabels` have been extracted and\n * calling `cb` on each of them.\n *\n * The `maximumNumberOfLabels` argument is typically used to specify the number\n * of labels seen in the longest public suffix. We do not need to check further\n * in very long hostnames.\n */\nfunction hashHostnameLabelsBackward(\n hostname: string,\n maximumNumberOfLabels: number,\n): number {\n let hash = 5381;\n let index = 0;\n\n // Compute hash backward, label per label\n for (let i = hostname.length - 1; i >= 0; i -= 1) {\n const code = hostname.charCodeAt(i);\n // Process label\n if (code === 46 /* '.' */) {\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = i + 1;\n index += 1;\n\n if (index === maximumNumberOfLabels) {\n return index;\n }\n }\n\n // Update hash\n hash = (hash * 33) ^ code;\n }\n\n // Let's not forget about last label\n BUFFER[index << 1] = hash >>> 0;\n BUFFER[(index << 1) + 1] = 0;\n index += 1;\n\n return index;\n}\n\nconst enum Result {\n NO_MATCH = 0,\n ICANN_MATCH = 1,\n PRIVATE_MATCH = 2,\n EXCEPTION_MATCH = 4,\n NORMAL_MATCH = 8,\n WILDCARD_MATCH = 16,\n}\n\n/**\n * Perform a public suffix lookup for `hostname` using the packed hashes\n * data-structure. The `options` allows to specify if ICANN/PRIVATE sections\n * should be considered. By default, both are.\n *\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const { allowIcannDomains, allowPrivateDomains } = options;\n\n // Keep track of longest match\n let matchIndex = -1;\n let matchKind = Result.NO_MATCH;\n let matchLabels = 0; // Keep track of number of labels currently matched\n\n // Index in the packed array data-structure\n let index = 1;\n\n const numberOfHashes = hashHostnameLabelsBackward(\n hostname,\n packed[0]! /* maximumNumberOfLabels */,\n );\n\n for (let label = 0; label < numberOfHashes; label += 1) {\n const hash = BUFFER[label << 1]!;\n const labelStart = BUFFER[(label << 1) + 1]!;\n // For each label, matching proceeds in the following way:\n //\n // 1. check exceptions\n // 2. check wildcards\n // 3. check normal rules\n //\n // For each of these, we also perform the lookup in two parts, once for\n // the ICANN section and one for the PRIVATE section. Both of which are\n // optional and can be enabled/disabled using the `options` argument.\n //\n // We start with exceptions because if an exception is found, we do not\n // need to continue matching wildcards or normal rules; the exception will\n // always have priority.\n //\n // Similarly, if we find a wildcard match, we do not need to check the\n // rules for the same label as the wildcard match is always longer (one\n // more label is matched).\n //\n // **WARNING**: the structure of this code follows exactly the structure\n // of the packed data structure as create in ./bin/builders/hashes.js\n\n let match = Result.NO_MATCH;\n\n // ========================================================================\n // Lookup exceptions\n // ========================================================================\n // ICANN\n if (allowIcannDomains) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (allowPrivateDomains && match === Result.NO_MATCH) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup wildcards\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // ========================================================================\n // Lookup rules\n // ========================================================================\n // ICANN\n if (\n allowIcannDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.ICANN_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // PRIVATE\n if (\n allowPrivateDomains &&\n match === Result.NO_MATCH &&\n (matchKind & Result.EXCEPTION_MATCH) === 0 &&\n matchLabels <= label\n ) {\n match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)\n ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH\n : Result.NO_MATCH;\n }\n index += packed[index]! + 1;\n\n // If we found a match, the longest match that is being tracked for this\n // hostname. We need to remember which kind of match it was (exception,\n // wildcard, normal rule), the index where the suffix starts in `hostname`\n // as well as the number of labels contained in this suffix (this is\n // important to make sure that we always keep the longest match if there\n // are both a wildcard and a normal rule matching).\n if (match !== Result.NO_MATCH) {\n matchKind = match;\n matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);\n matchIndex = labelStart;\n }\n }\n\n out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;\n out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;\n\n // No match found\n if (matchIndex === -1) {\n out.publicSuffix =\n numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);\n return;\n }\n\n // If match is an exception, this means that we need to count less label.\n // For example, exception rule !foo.com would yield suffix 'com', so we need\n // to locate the next dot and slice from there.\n if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);\n return;\n }\n\n // If match is a wildcard, we need to match one more label. If wildcard rule\n // was *.com, we would have stored only 'com' in the packed structure and we\n // need to take one extra label on the left.\n if ((matchKind & Result.WILDCARD_MATCH) !== 0) {\n if (matchLabels < numberOfHashes) {\n out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);\n return;\n }\n\n const parts = hostname.split('.');\n while (parts.length > matchLabels) {\n parts.shift();\n }\n out.publicSuffix = parts.join('.');\n return;\n }\n\n // if ((matchKind & Result.NORMAL_MATCH) !== 0)\n // For normal match, we just slice the hostname at the beginning of suffix.\n out.publicSuffix = hostname.slice(matchIndex);\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/packed-hashes';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial<IOptions> = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial<IOptions> = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n"],"names":["extractHostname","url","urlIsValidHostname","start","end","length","hasUpper","startsWith","charCodeAt","indexOfProtocol","indexOf","protocolSize","c0","c1","c2","c3","c4","i","lowerCaseCode","indexOfIdentifier","indexOfClosingBracket","indexOfPort","code","slice","toLowerCase","hostname","isValidAscii","isValidHostname","lastDotIndex","lastCharCode","len","DEFAULT_OPTIONS","allowIcannDomains","allowPrivateDomains","detectIp","mixedInputs","validHosts","validateHostname","setDefaultsImpl","parseImpl","step","suffixLookup","partialOptions","result","options","undefined","setDefaults","isIp","hasColon","isProbablyIpv6","numberOfDots","isProbablyIpv4","publicSuffix","domain","suffix","vhost","endsWith","shareSameDomainSuffix","numberOfLeadingDots","publicSuffixIndex","lastDotBeforeSuffixIndex","lastIndexOf","extractDomainWithSuffix","getDomain","subdomain","getSubdomain","domainWithoutSuffix","packed","Uint32Array","binSearch","arr","elt","low","high","mid","midVal","BUFFER","out","last","isIcann","isPrivate","fastPathLookup","matchIndex","matchKind","matchLabels","index","numberOfHashes","maximumNumberOfLabels","hash","hashHostnameLabelsBackward","label","labelStart","match","parts","split","shift","join","RESULT"],"mappings":"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,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,GAAG,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,IAAI,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,GAAG,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,UAAU,WAAW,WAAW,WAAW,IAAI,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,WAAW,EAAE,IAAI,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW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"} \ No newline at end of file
diff --git a/client/node_modules/tldts-experimental/dist/types/index.d.ts b/client/node_modules/tldts-experimental/dist/types/index.d.ts
new file mode 100644
index 0000000..fdac7e2
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/types/index.d.ts
@@ -0,0 +1,7 @@
+import { IOptions, IResult } from 'tldts-core';
+export declare function parse(url: string, options?: Partial<IOptions>): IResult;
+export declare function getHostname(url: string, options?: Partial<IOptions>): string | null;
+export declare function getPublicSuffix(url: string, options?: Partial<IOptions>): string | null;
+export declare function getDomain(url: string, options?: Partial<IOptions>): string | null;
+export declare function getSubdomain(url: string, options?: Partial<IOptions>): string | null;
+export declare function getDomainWithoutSuffix(url: string, options?: Partial<IOptions>): string | null;
diff --git a/client/node_modules/tldts-experimental/dist/types/src/data/hashes.d.ts b/client/node_modules/tldts-experimental/dist/types/src/data/hashes.d.ts
new file mode 100644
index 0000000..335ccd2
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/types/src/data/hashes.d.ts
@@ -0,0 +1,2 @@
+declare const _default: Uint32Array;
+export default _default;
diff --git a/client/node_modules/tldts-experimental/dist/types/src/packed-hashes.d.ts b/client/node_modules/tldts-experimental/dist/types/src/packed-hashes.d.ts
new file mode 100644
index 0000000..db7f975
--- /dev/null
+++ b/client/node_modules/tldts-experimental/dist/types/src/packed-hashes.d.ts
@@ -0,0 +1,8 @@
+import { IPublicSuffix, ISuffixLookupOptions } from 'tldts-core';
+/**
+ * Perform a public suffix lookup for `hostname` using the packed hashes
+ * data-structure. The `options` allows to specify if ICANN/PRIVATE sections
+ * should be considered. By default, both are.
+ *
+ */
+export default function suffixLookup(hostname: string, options: ISuffixLookupOptions, out: IPublicSuffix): void;
diff --git a/client/node_modules/tldts-experimental/index.ts b/client/node_modules/tldts-experimental/index.ts
new file mode 100644
index 0000000..7d8b35f
--- /dev/null
+++ b/client/node_modules/tldts-experimental/index.ts
@@ -0,0 +1,62 @@
+import {
+ FLAG,
+ getEmptyResult,
+ IOptions,
+ IResult,
+ parseImpl,
+ resetResult,
+} from 'tldts-core';
+
+import suffixLookup from './src/packed-hashes';
+
+// For all methods but 'parse', it does not make sense to allocate an object
+// every single time to only return the value of a specific attribute. To avoid
+// this un-necessary allocation, we use a global object which is re-used.
+const RESULT: IResult = getEmptyResult();
+
+export function parse(url: string, options: Partial<IOptions> = {}): IResult {
+ return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());
+}
+
+export function getHostname(
+ url: string,
+ options: Partial<IOptions> = {},
+): string | null {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;
+}
+
+export function getPublicSuffix(
+ url: string,
+ options: Partial<IOptions> = {},
+): string | null {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)
+ .publicSuffix;
+}
+
+export function getDomain(
+ url: string,
+ options: Partial<IOptions> = {},
+): string | null {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;
+}
+
+export function getSubdomain(
+ url: string,
+ options: Partial<IOptions> = {},
+): string | null {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)
+ .subdomain;
+}
+
+export function getDomainWithoutSuffix(
+ url: string,
+ options: Partial<IOptions> = {},
+): string | null {
+ /*@__INLINE__*/ resetResult(RESULT);
+ return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)
+ .domainWithoutSuffix;
+}
diff --git a/client/node_modules/tldts-experimental/package.json b/client/node_modules/tldts-experimental/package.json
new file mode 100644
index 0000000..0c0dc0b
--- /dev/null
+++ b/client/node_modules/tldts-experimental/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "tldts-experimental",
+ "version": "6.0.21",
+ "description": "Library to work against complex domain names, subdomains and URIs.",
+ "author": {
+ "name": "Rémi Berson"
+ },
+ "contributors": [
+ "Alexei <alexeiatyahoodotcom@gmail.com>",
+ "Alexey <kureev-mail@ya.ru>",
+ "Andrew <chefandrew@seomoz.org>",
+ "Johannes Ewald <johannes.ewald@peerigon.com>",
+ "Jérôme Desboeufs <jerome.desboeufs@gmail.com>",
+ "Kelly Campbell <kelly.a.campbell@gmail.com>",
+ "Kiko Beats <josefrancisco.verdu@gmail.com>",
+ "Kris Reeves <krisreeves@searchfanatics.com>",
+ "Krzysztof Jan Modras <chrmod@chrmod.net>",
+ "Olivier Melcher <olivier.melcher@gmail.com>",
+ "Rémi Berson <remi.berson@pm.me>",
+ "Saad Rashid <srashid@lendinghome.com>",
+ "Thomas Parisot <hi@oncletom.io>",
+ "Timo Tijhof <krinklemail@gmail.com>",
+ "Xavier Damman <xdamman@gmail.com>",
+ "Yehezkiel Syamsuhadi <yehezkielbs@gmail.com>"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "license": "MIT",
+ "homepage": "https://github.com/remusao/tldts#readme",
+ "bugs": {
+ "url": "https://github.com/remusao/tldts/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/remusao/tldts.git"
+ },
+ "main": "dist/cjs/index.js",
+ "module": "dist/es6/index.js",
+ "types": "dist/types/index.d.ts",
+ "files": [
+ "dist",
+ "src",
+ "index.ts"
+ ],
+ "scripts": {
+ "clean": "rimraf dist coverage",
+ "build": "tsc --build ./tsconfig.json",
+ "bundle": "tsc --build ./tsconfig.bundle.json && rollup --config ./rollup.config.mjs",
+ "prepack": "yarn run bundle",
+ "test": "mocha --config ../../.mocharc.js"
+ },
+ "devDependencies": {
+ "@rollup/plugin-node-resolve": "^15.0.1",
+ "@rollup/plugin-terser": "^0.4.0",
+ "@rollup/plugin-typescript": "^11.0.0",
+ "@types/chai": "^4.2.18",
+ "@types/mocha": "^10.0.0",
+ "@types/node": "^20.2.3",
+ "chai": "^4.2.0",
+ "mocha": "^10.1.0",
+ "nyc": "^15.0.1",
+ "rimraf": "^5.0.1",
+ "rollup": "^4.1.0",
+ "rollup-plugin-sourcemaps": "^0.6.1",
+ "tldts-tests": "^6.0.21",
+ "typescript": "^5.0.4"
+ },
+ "dependencies": {
+ "tldts-core": "^6.0.21"
+ },
+ "keywords": [
+ "tld",
+ "sld",
+ "domain",
+ "subdomain",
+ "subdomain",
+ "hostname",
+ "browser",
+ "uri",
+ "url",
+ "domain name",
+ "public suffix",
+ "url parsing",
+ "typescript"
+ ],
+ "gitHead": "e750d0dbfc0539a7a0cce4614b25718204a5c529"
+}
diff --git a/client/node_modules/tldts-experimental/src/data/hashes.ts b/client/node_modules/tldts-experimental/src/data/hashes.ts
new file mode 100644
index 0000000..ae444b5
--- /dev/null
+++ b/client/node_modules/tldts-experimental/src/data/hashes.ts
@@ -0,0 +1,3 @@
+
+// Code automatically generated using ./bin/builders/hashes.ts
+export default new Uint32Array([6,0,0,9,5860739,5860978,5861026,5861029,5861126,5861352,5861357,5861403,5861586,0,0,0,1,1850179732,0,9,328184559,1866923597,2123501943,2282562397,2795346450,3130446446,3136607046,3453334789,4194175729,59,3156266,20989895,65021741,101876503,179500755,311298055,460682395,582839475,819014943,819028732,870639071,1075688039,1139486022,1241916785,1335010188,1370787547,1370800824,1431231509,1498275876,1522025464,1544104458,1554653742,1570707647,1626814538,1630208269,1675555530,1679919230,1687232530,1730108052,1789539963,1893848785,2001752368,2023201532,2182413090,2391299855,2419619562,2445171142,2496327381,2525245455,2573179642,2703420555,2709520566,2762771525,2921343336,2989808530,3000405309,3015527775,3047607849,3382460164,3420815319,3461355676,3498015045,3738715095,3810061811,3843717774,3934774481,4085096371,4146774829,4208486561,3692,100835,372942,373596,399643,403867,589540,737224,1210028,1861414,2424682,2658901,2946999,3329363,3333156,6942202,9086062,9095117,9267209,9340158,9485932,11010102,11406846,16314893,17546564,18146303,18331450,19211200,20314441,20797457,25057869,26663359,28320278,30499151,30585840,36605120,36775470,36775473,36990037,39275208,41892561,42049478,42538024,45214788,47656662,50173535,53599326,53858455,54537430,63815836,64422985,64643127,64831187,69971116,73517283,73904368,75706244,78793775,78794171,79558910,80324123,84993902,87977581,87978853,87978860,93811268,95641381,95641777,96671837,100511481,100947456,108215410,108929491,110526112,110662188,112311307,114507832,116811054,120488259,122521550,133427701,134012911,141513861,141517490,144349377,144362028,144550088,144770230,147205859,147810002,147989623,149598895,150736276,150856054,152379730,156555774,164189124,164189258,164189262,164189691,164189842,164560958,165069166,165106627,165107021,165339368,165444557,165444558,165444615,165444629,165444745,165444749,165445368,165512129,165512527,165749053,165749188,165749299,165749435,165749535,165779060,167155067,169909265,169909275,169909419,169909512,169909517,169909531,169909608,169909724,169909733,169909734,169909738,169909857,169910036,169910195,169910226,169938982,169939075,169939172,169939304,169939334,169939474,169939481,169939680,169939682,169939793,169977029,169977163,170281136,170281250,170281253,170281258,170281275,170281382,170281390,170281415,170281447,170281457,170281473,170281497,170281511,170281522,170281525,170281528,170281579,170281589,170281687,170281689,170281699,170281742,170281776,170281812,170281852,170281902,170281972,170311352,170649202,170649385,170649596,171188220,172078401,172145927,172484120,172484301,172788260,172788689,172788693,172788754,172788809,172788827,173118530,173118924,173456648,173591948,173930212,173930286,174129293,174306499,174306893,174307245,174307439,174358551,174374100,174407806,174410098,174488250,174509317,174577099,174644617,174843632,174844030,174847160,175181758,175524135,175524873,176843304,176948764,178529610,178530165,178530256,178530299,178530303,178530355,178868363,178868576,178868974,179274397,179274476,179379459,179379616,179379624,179379849,179379853,179380220,179657877,179692651,179714168,179913714,180090112,180090244,180090304,180090314,180090337,180090372,180090450,180090510,180090525,180090526,180090587,180090702,180091049,180091118,180091210,180091228,180091258,180091259,180283722,180292996,180293014,180293036,180293067,180293093,180293105,180293124,180293152,180293156,180293169,180293179,180293199,180293253,180293290,180293294,180293300,180293302,180293304,180293317,180293344,180293346,180293381,180293447,180293487,180293501,180293503,180293522,180293535,180293716,180293796,180293819,180293997,180294000,180294004,180294009,180428032,180902137,180969265,180969566,180969653,180969723,181240259,181240353,181240367,181240371,181240391,181240392,181240393,181240398,181240404,181240451,181240474,181240479,181240483,181240490,181240509,181240515,181240844,181240853,181240956,181241149,181241165,181241168,181244839,181375748,181548621,181548644,181548727,181548873,181549108,181549176,181949900,181950639,182056031,182385920,182419943,182893167,182893283,182893394,182893788,183163149,183163151,183163155,183163168,183163169,183163171,183163181,183163182,183163183,183163186,183163188,183163233,183163248,183163251,183163252,183163254,183163270,183163303,183163314,183163317,183163334,183163335,183163336,183163340,183163345,183163347,183163350,183163362,183163363,183163365,183163366,183163367,183163371,183163375,183163376,183163378,183163380,183163383,183163630,183163631,183163644,183163649,183163651,183163653,183163655,183163664,183163668,183163669,183163678,183163679,183163682,183163687,183163713,183163715,183163728,183163731,183163735,183163742,183163777,183163779,183163780,183163781,183163783,183163796,183163797,183163801,183163843,183163845,183163847,183163859,183163864,183163865,183163874,183163895,183163897,183163913,183163922,183163933,183163960,183163961,183163963,183163977,183163978,183163979,183163981,183163988,183163989,183163991,183163992,183163994,183163995,183163998,183164008,183164010,183164012,183164021,183164025,183164026,183164027,183164029,183164041,183164044,183164045,183164047,183164050,183164051,183164057,183164060,183164061,183164093,184080938,184081253,184081673,184081677,184081778,184246330,184246511,184486318,184486865,184487263,184828195,184828212,184844696,184844824,184848486,184848491,184849029,184849387,184859173,184869208,184869819,184994607,185163947,185216284,185289081,185292632,185295605,185501943,185502073,185502077,185772974,186723357,186723671,186723801,186763265,186771866,186840059,186858006,186875993,186950941,186953244,186994101,186994720,187011432,187022814,187064894,187067400,187076090,187078647,187088813,187161171,187188812,187203075,187219343,187222314,187251332,187328908,187332203,187378741,187385256,187386889,187403121,187403860,187404132,187409119,187410536,187415116,187415841,187417183,187453423,187455618,187483569,187506658,187521457,187531575,187554851,187557872,187932036,187932044,187932595,187932730,187932752,187932756,187932794,187932985,187932989,189851312,190236828,190304994,190305388,190372512,190372516,190372621,190372839,190373457,190575460,190575594,190879986,191043224,191246659,191458643,191459037,191524213,193856736,193857103,193857114,193857243,193991787,194363750,194498585,194498630,194498988,194499056,194499063,194532263,194532626,194532630,194532693,194532760,194532936,194533115,194802308,194802313,194802316,194802351,194802818,194802832,194802974,194803141,194803143,194803161,194803226,194803230,194836546,194870589,194870610,194871004,195040013,195040230,195040360,195077902,195078025,195078028,195078034,195078035,195078038,195078058,195078062,195078071,195078081,195078095,195078112,195078119,195078120,195078149,195078150,195078156,195078185,195078215,195078217,195078250,195078251,195078272,195078273,195078277,195078283,195078287,195078298,195078299,195078300,195078368,195078372,195078375,195078394,195078464,195078474,195078493,195078531,195078554,195078559,195078687,195078710,195078753,195078828,195078837,195078892,195078895,195078900,195078906,195078959,195078960,195078974,195078995,195078997,195079007,195146051,195817892,195817910,195818040,196653590,197775763,198219289,198248729,198354195,198354632,202063369,203326381,203326382,203326695,203326709,203326825,203326829,203327047,203327192,203360584,203427712,203428110,203563443,203563837,203664976,203665374,203762913,203901612,204069808,206121592,207568995,208227118,218659706,219797064,231775478,232791016,232866163,232870916,237059472,238230825,238671321,241611072,245880244,249954601,256262487,257210252,257542887,259829097,260353797,260353928,260353938,260354380,260381156,260390354,271387034,274691435,279382168,280527902,280532777,280535076,280542659,281931451,292827804,295209043,296292341,297619746,305011770,306510696,313583000,314643431,320313766,320318114,321023689,321141002,321447655,325454853,326762411,337081594,338040061,339830659,340010259,341833935,342149828,342665371,356194258,359223603,359276554,360327984,368215882,370146306,370150662,373255328,373394720,374785091,376173808,377307531,377336144,377652210,379825795,380248845,380316586,381874529,381884647,382049883,382486912,382598847,389069795,389909922,392084057,393290800,395076177,395140257,402724451,403769719,404122044,410188633,413977571,418962805,419080649,423458772,430711818,430784915,431116435,431157415,431370962,431390595,431489022,431585240,431586828,431608121,433686700,442888655,442922019,445176561,449218512,449424719,451217894,451870618,459172225,459395692,464626711,464765206,464834904,469098393,471052880,478642118,480635114,480636362,480638119,480638181,480638612,480653244,480658155,480658807,484603510,484645735,486805732,490264076,490274093,493445761,511578298,513731936,514111995,514955151,515474792,515491843,515593995,518161197,520595267,522631343,523234636,525872321,527144416,531427447,533682535,533847771,534396735,545433338,547443445,550462929,551440509,557981738,559064708,560636591,572640614,572652435,572800203,572833146,572867160,575127842,575742406,575835832,576106402,576590271,577168455,582462766,583917065,583936789,584490345,587768078,588145733,596395114,596517435,602054693,609523853,627471386,630686153,632559259,635121653,635859009,637007260,643488605,643663853,648304671,650538190,656171171,656243914,656640963,665693626,667797222,678076451,679253935,684522993,684536293,689172736,689202009,693611235,694324728,695649196,703142796,706540885,707132367,715533184,722903474,725879070,728415570,731964179,733989474,744440632,745674128,752520493,752687122,752687226,752699150,752938578,753314817,762792020,766278458,771168358,772916985,785945688,787032422,793080342,794341423,794638681,799598398,803443550,803504423,803576910,803750530,804899040,810638083,813049915,813882670,813882809,821390609,822184173,824372117,826639012,826993974,827624512,831815016,834750300,834856638,834963202,835666250,838463501,843454848,845393562,845537310,846032279,853098265,855980394,858467853,869651422,878524814,881613818,885943745,896206971,896253025,900375831,900562876,904696072,907903147,911040096,912288153,912452591,913046780,914761571,915088911,915769822,915838470,919008564,919376364,928343570,933141848,935240483,936096500,939243980,939281294,939375524,939697158,939922440,940027871,942743627,943328481,943363810,947022624,950098348,954017396,958817278,959069811,961909457,961915153,962363178,962549619,963013768,968961134,973306633,973587946,973591516,973595243,973613934,973618563,976871270,977251657,983929219,983931665,983936021,984542401,985854160,994961720,1002154839,1005485664,1005660307,1005931709,1008280710,1009678005,1015938248,1018008327,1024510565,1027688850,1033879086,1034357170,1038843968,1039500800,1043537387,1043742405,1044060157,1045601283,1046273911,1046743273,1046756254,1048099261,1052311686,1052441930,1052883806,1055187548,1056740120,1058016469,1059921109,1068743400,1072264613,1080832696,1083646554,1084662717,1086607170,1086818213,1086839634,1087030220,1087432248,1087540767,1088313455,1101657937,1101658065,1102136407,1102691201,1104888372,1107574816,1107604513,1107608406,1114346722,1115517588,1116603570,1116886791,1121068214,1121069468,1123274870,1123277038,1123281470,1123286137,1123300855,1135543458,1135544712,1135545955,1135553917,1135559494,1135563376,1141006631,1141018311,1142918810,1143019669,1145288372,1146787097,1149112251,1151589762,1152383075,1153556935,1153560693,1153560855,1153576209,1153582928,1155609853,1158010336,1158014282,1158019276,1158022529,1158025585,1158030151,1158040127,1158040853,1158043091,1160141196,1160245697,1160246728,1160253683,1160271099,1160271446,1160272445,1160277399,1161223806,1161235355,1162489113,1166908086,1166937977,1166949933,1166952503,1166953757,1166959964,1169030529,1169037994,1169039382,1169046802,1169046815,1169048548,1169054036,1169994302,1171270800,1171270813,1172775704,1174042111,1174752677,1174762471,1175721241,1175725254,1175726508,1175727467,1175727495,1175735444,1175735449,1175736592,1175738385,1175738578,1175738760,1175746250,1175746252,1175749986,1175793566,1181427747,1181429001,1181435208,1181446765,1181453654,1181460959,1185692184,1189090107,1193567716,1194400508,1204258276,1204470469,1207765705,1207825797,1208230324,1208517393,1208911775,1211364607,1212671635,1214258492,1217924538,1220965831,1229000062,1229783327,1232816452,1237771172,1237773393,1237773841,1245899123,1247245722,1257366451,1260762188,1261854970,1265324777,1265669119,1273073240,1280280379,1280768035,1291368159,1295085673,1296518360,1297048848,1300364681,1303650868,1304687455,1304781392,1304918086,1305056028,1306968125,1306972554,1306973586,1307665177,1308558601,1308559744,1308574194,1308583254,1308584508,1308585495,1310785148,1310799239,1310800921,1310801269,1310803416,1310807041,1310808370,1311349087,1313021694,1313023237,1313030377,1314270973,1314287001,1314293208,1321085506,1324313259,1324313985,1324320704,1324322270,1324332261,1324636022,1325293061,1325300526,1325303158,1325308368,1325309334,1325309339,1325310241,1325310486,1325311328,1325311482,1326707500,1328209699,1328777903,1328778629,1328785348,1328786906,1328789635,1328794451,1328797153,1329963165,1329987910,1330666198,1330807345,1330903052,1331009222,1331010221,1331013633,1331015175,1331019352,1331025251,1331026645,1331028446,1331143849,1335892543,1336436046,1336436772,1336437775,1336438057,1336439236,1336443338,1336449024,1336456660,1336460266,1336462620,1336463768,1336469142,1341018428,1341081128,1341091249,1341179896,1342001696,1344411053,1344426134,1344436952,1344437939,1344444146,1346529166,1349466130,1350170659,1350170661,1350356518,1350356534,1350620578,1351056251,1351154191,1351382419,1351445663,1354447091,1354448055,1354464484,1354467042,1354475004,1354584300,1355466970,1355483586,1355607656,1355929695,1355947655,1356150953,1356150969,1356150973,1356457867,1356471002,1356757572,1357692080,1357876668,1357880232,1360043731,1360220638,1362168625,1362262729,1362271868,1362285703,1362326863,1362506071,1362656266,1365811994,1367692098,1367811071,1368820926,1369663049,1377739598,1378565283,1379014609,1383613953,1383613964,1383629111,1383647122,1385857457,1385879444,1388074128,1388078600,1388084119,1388086017,1388094003,1388104573,1388109527,1388111766,1390304957,1390318095,1390319238,1390327192,1390328435,1390329689,1391292472,1391295130,1391298115,1391299402,1391302044,1391307254,1391308253,1392560940,1396553940,1397006395,1397007527,1397007872,1397007885,1397015305,1397016949,1397022431,1400354688,1400355947,1400356673,1400360856,1400364702,1400366245,1401741660,1407053336,1407067683,1409840426,1410939834,1414623055,1417953492,1417953925,1417969521,1417971248,1418042854,1418666866,1422407147,1422418384,1422432926,1422434165,1422435892,1423090882,1425971467,1426162994,1426865884,1426871783,1426872814,1426880658,1426881913,1426884152,1428612014,1429098926,1429105132,1429112250,1430623854,1433558874,1433568865,1433577620,1433578879,1435862377,1444705448,1444706435,1444707945,1444708598,1444713016,1444718265,1444720166,1444723003,1444725453,1444731199,1444731564,1444731950,1444732047,1444732342,1444732347,1444738453,1448052138,1448052864,1448054123,1448067662,1448078965,1449172589,1452091461,1453961462,1457037634,1457145422,1457156469,1457178704,1459376581,1459377857,1459377868,1459384567,1459385707,1459403577,1459405260,1459408531,1463053013,1463840740,1463842504,1463849459,1463849797,1463867222,1463868221,1463873175,1464819582,1464821125,1464829402,1464830128,1464831131,1465838987,1466068861,1466074694,1466091096,1466403701,1467047928,1467061763,1467063453,1467065948,1467070902,1468307140,1468314970,1468321435,1469284474,1469285761,1469294772,1469295775,1471526086,1474720970,1474751199,1474796155,1474852365,1474856386,1474857640,1474858627,1474866589,1474867476,1474871748,1474880870,1482183211,1482187228,1482389973,1486003341,1486005836,1486010790,1486021608,1486029338,1486036499,1486036510,1491300687,1492905126,1495099017,1496999162,1497335658,1497338257,1497341434,1497353781,1497360500,1497361503,1503214457,1504022303,1504024292,1504032122,1504033105,1504038587,1509379857,1510741574,1511059454,1514359714,1514604870,1517410020,1517415502,1517416485,1517424315,1517426048,1519466742,1519486936,1521633706,1524564715,1526518672,1534242148,1535379077,1535411852,1535416972,1535418272,1535419013,1535426999,1535427585,1535429447,1535437817,1535442771,1535445010,1538631370,1539876488,1539883905,1539891891,1539902461,1539907415,1539909654,1540853566,1540863813,1540865371,1540871834,1540872816,1540972285,1544565822,1547523228,1548000883,1548203684,1548662272,1548668010,1548668993,1548676831,1548677846,1548686756,1550655859,1551291701,1552780862,1554083280,1554160502,1556617220,1556618479,1556619205,1556627226,1556629025,1571587981,1572843623,1577978899,1578737375,1579027766,1580891870,1580902117,1580903020,1580910138,1580910864,1581061599,1584242651,1584252576,1584258687,1584260414,1584261397,1594150134,1594318433,1594644051,1595762332,1596345927,1596503336,1599871881,1600554193,1600562964,1600967980,1600968967,1600970477,1600988233,1600993979,1600994866,1600997301,1601541268,1602995891,1603061457,1604314670,1604316655,1604330442,1604341489,1604342648,1605183784,1605406132,1605908391,1607689728,1607689741,1607690628,1607701062,1607701276,1607705078,1607710365,1607715640,1607716607,1607716627,1608344260,1610313759,1610666926,1611239998,1611396088,1614382839,1614530679,1615167003,1615172374,1615640392,1615647347,1615658840,1615665110,1615666109,1615671063,1620094847,1620095619,1620095929,1620105028,1620113841,1620119323,1620795340,1621082362,1621083649,1621092660,1622329964,1622331641,1622337218,1622353628,1623408910,1624559739,1624569664,1624577502,1624577906,1624578485,1626556599,1628470609,1630022199,1632310642,1633163415,1635568907,1635591150,1635593749,1635643420,1635994183,1635994320,1641006393,1645672758,1645785364,1645803376,1645808858,1645809841,1646891621,1646892908,1646907799,1646910247,1646917618,1646918617,1648006829,1648007716,1648013185,1648013984,1648016015,1648021910,1648025704,1648032728,1648033439,1648033715,1648035901,1648039922,1648043240,1649119056,1649454738,1649581121,1652486802,1652497372,1652504566,1652932064,1652936599,1653583645,1653598182,1653599929,1653606136,1653607123,1654697756,1654712103,1654713134,1654716280,1654721234,1654722233,1656168200,1659162648,1659176739,1659180924,1659185878,1659186877,1659695250,1660874915,1664393911,1666510724,1668155429,1669474757,1673661122,1673662353,1673671436,1673686839,1673856704,1674136053,1674769898,1674770881,1674776363,1674793871,1675780006,1676641114,1677004461,1677008482,1677010668,1677010688,1677011655,1677022217,1677030942,1677037554,1679194024,1679234542,1679234666,1679237897,1679241007,1679252114,1679258763,1679261552,1679266928,1681499983,1681500998,1681504918,1681510964,1681520272,1681526010,1681526993,1682221833,1682359277,1685960411,1685962398,1685964612,1685965520,1685965569,1685965582,1685965890,1685967499,1685968865,1685974082,1685987547,1685988215,1685988552,1685991645,1686112357,1686592668,1686670946,1687209740,1690419670,1690419852,1690423356,1690429255,1690430286,1690438386,1690439385,1690439477,1691674376,1691689779,1691700349,1691705303,1691707542,1691739899,1692242488,1693900733,1693904467,1693911703,1693913871,1693915014,1693915019,1693922968,1693923252,1693924211,1693925465,1696514991,1697110779,1697112784,1697112842,1697116346,1697119048,1697126337,1697127463,1697127903,1697134366,1697135348,1699859798,1705948764,1706596362,1707661217,1709380801,1709397036,1709401602,1709403991,1709403994,1709715630,1709719753,1710553669,1710842194,1711349139,1711911296,1712862856,1712864099,1712865353,1712874413,1712889750,1715042583,1716067791,1716074254,1716075236,1716090026,1716093784,1716101073,1716987897,1717046504,1717344945,1717458342,1717567159,1717665490,1720424110,1720435157,1720448732,1720448944,1720449947,1720450929,1722611952,1723770733,1723771620,1723777366,1723796376,1723797619,1723869014,1724144999,1724360630,1724888746,1724891334,1724900049,1724902970,1724913368,1724913588,1724914591,1724915573,1727744610,1733044570,1737465416,1740104597,1740108386,1741479646,1741618915,1741621154,1741622153,1741631292,1741636935,1741709977,1742216984,1743089654,1744959211,1744968590,1744969829,1744971556,1744977659,1744987840,1745343269,1745488513,1746392299,1747200908,1747202151,1747210105,1747211248,1747212978,1747215938,1747219291,1747533677,1747671543,1747762259,1748301224,1748301648,1748302211,1748318651,1748321229,1748327140,1748327340,1748328118,1748329946,1749416322,1749419816,1749422630,1749422974,1749423815,1749423848,1749423862,1749423980,1749432545,1749435316,1749435457,1749435956,1749437829,1749437986,1749440303,1749441388,1749442296,1749442361,1749443256,1749443576,1749444398,1749445477,1749445739,1749750164,1749955965,1752768365,1753028168,1753430927,1753880966,1753882221,1753900232,1753906931,1756680747,1759105063,1762715404,1763952265,1763967858,1763978172,1763979159,1765274516,1768132013,1774870841,1775278057,1776446407,1778765218,1779479261,1779706923,1779707649,1779709525,1779713177,1779714057,1779714368,1779715934,1779715971,1779725925,1779730307,1779731494,1780768183,1781938242,1781939241,1781944195,1781948380,1781954023,1781961852,1783657515,1785147288,1785152492,1785564290,1786402886,1786403885,1786408839,1786413016,1786418915,1786422601,1793085197,1793091404,1793103209,1793109842,1794311882,1796513490,1798682988,1799934413,1800873944,1804734874,1804986274,1805201900,1805201909,1805381533,1805390218,1805394927,1805396070,1805397817,1805404024,1805410294,1808346875,1809278593,1809846425,1809852765,1809854826,1809860706,1809868668,1809869655,1809909084,1810126394,1810162729,1811189710,1812804641,1813167465,1818860644,1819164253,1824377544,1826567786,1826567942,1826568769,1826574251,1826586852,1826591759,1826593533,1826594804,1826595685,1826597041,1826838298,1830073720,1832102940,1835526804,1835527882,1835530317,1835531888,1835536950,1835540435,1835541852,1835548479,1835548755,1835552425,1835554706,1835556216,1836706536,1838062951,1839007628,1839021100,1839022775,1839033593,1839038547,1839040786,1839994953,1840001842,1840013399,1840019350,1840019827,1840020860,1843076481,1845608978,1846070315,1848013570,1854921046,1859450748,1859510931,1859511204,1860240647,1860312281,1860334137,1861101595,1863024310,1866891339,1866893066,1866896736,1866908847,1866910185,1866914026,1867191437,1867861768,1867865679,1867867083,1867872142,1867873124,1867876289,1867885376,1867885466,1867887914,1867892691,1867897750,1867898961,1867899162,1873521117,1875950626,1878219696,1883713830,1883718737,1883722494,1883726489,1883992567,1884025074,1889208808,1889317056,1890185274,1890552293,1891315242,1893129355,1894534152,1894535395,1894543357,1894548934,1895822736,1896748195,1896864381,1896883495,1896884690,1896893413,1897086584,1897144569,1897150382,1897161336,1898308423,1899713189,1903920486,1903920882,1906518923,1906815088,1907758428,1907908343,1907910446,1907911172,1907924055,1907926218,1907937265,1910568778,1912588116,1912664290,1912773142,1919704439,1919708663,1925589573,1928014104,1931786446,1933270769,1933847987,1934282690,1935832225,1937137824,1940180687,1941545223,1944881831,1944883085,1944889292,1944901097,1944907730,1944915291,1947690884,1949378607,1949381140,1949385828,1949388221,1949404634,1953208595,1957126749,1965980590,1966393263,1967560433,1968030901,1968344522,1968345101,1968353343,1968354820,1969952988,1969953274,1970271924,1982830318,1982831301,1982836783,1982854539,1982856313,1982857328,1982862253,1982863214,1983945412,1983946415,1983946627,1983953134,1983957025,1983968650,1983971249,1983972408,1983977373,1985096774,1985106740,1985116048,1985122769,1987638584,1989155232,1991785536,1991792841,1991799730,1991811287,1991817238,1991817715,1991818748,1994019132,1994026062,1994028952,1994613365,2000627256,2002587178,2002703477,2004080420,2007546240,2007547499,2007556254,2007557797,2009780252,2013938002,2016158046,2016458632,2016459875,2016461129,2016470189,2016476340,2016482461,2016485526,2019785049,2023148389,2023153871,2023155598,2023156002,2023157760,2023171627,2023174160,2023812622,2029256230,2029286951,2029296544,2037064184,2042215210,2042272668,2042423451,2043073993,2044012869,2046744295,2047386704,2047490213,2047625030,2047828609,2051192703,2052284669,2056364987,2056365175,2056459861,2057257910,2058376024,2058382302,2058436464,2058440319,2058445367,2058448694,2058452545,2058552215,2058569521,2058573621,2058924197,2058929805,2058958371,2058984507,2058988863,2059003240,2059051015,2059075746,2059422408,2059824807,2061714098,2062014471,2063260135,2063415690,2063627333,2063814283,2064238717,2064313581,2064484772,2064499575,2064635107,2064635452,2064635773,2064639428,2064639883,2064648773,2064654772,2064655646,2065476844,2065542420,2065542544,2065543022,2065727011,2066567940,2066734284,2066828553,2066833534,2067202738,2067233317,2068031208,2068725531,2068831008,2068854498,2068854512,2068858196,2068859575,2068860177,2068862627,2068863232,2068869021,2068950273,2068994789,2068994807,2069062998,2069102686,2069161595,2069263945,2069338842,2069365704,2069468800,2069558220,2069561350,2069566268,2069591394,2069593072,2069595618,2069600040,2069600946,2069600957,2069604100,2069765192,2069904166,2069904305,2071035931,2071149679,2071643658,2073289171,2073308845,2073310709,2073312474,2073322881,2073335784,2073440452,2073448514,2073457247,2073500084,2073509625,2073523923,2073533208,2073640292,2073794194,2073803151,2073803461,2073808229,2073811616,2073811996,2073815760,2073826308,2073826688,2073827152,2073830759,2073831593,2073831601,2074299520,2075044848,2075423284,2075693433,2078935992,2078936931,2078937889,2078937913,2078938163,2078938295,2078944407,2078944555,2078944613,2078944933,2081181239,2082063743,2082285629,2082430948,2084946688,2086083080,2087431076,2087431077,2087431079,2087431080,2087431081,2087431082,2087431085,2087431086,2087431087,2087431088,2087431089,2087431090,2087431091,2087431092,2087431093,2087431094,2087431096,2087431097,2087431098,2087431099,2087431100,2087431102,2087431103,2087617590,2087617591,2087617592,2087617593,2087617594,2087617595,2087617596,2087617597,2087617598,2087617599,2087617632,2087617633,2087617634,2087617635,2087617636,2087617637,2087617638,2087617639,2087617640,2087617641,2087617642,2087617643,2087617644,2087617645,2087617647,2087617652,2087617654,2087617655,2087617656,2087617657,2087617658,2087617659,2087617660,2087617661,2087617662,2087617663,2087629931,2087822490,2088302297,2088726760,2088953542,2090213881,2090218574,2090297888,2090298020,2090439875,2090439900,2091225604,2092577468,2092702023,2092715579,2092766986,2092957042,2093991393,2093995617,2093995632,2097113374,2098599777,2098599792,2099138174,2102249573,2102285158,2102285168,2102285285,2102285374,2102286572,2102291553,2102297313,2102301463,2102304381,2102311282,2102312281,2102313468,2102315379,2102317235,2102322718,2103529616,2105684477,2105873178,2106751208,2106757636,2106766355,2106769656,2106775467,2106775926,2106776925,2106781879,2118750891,2119037299,2119037310,2119041270,2119043865,2119381911,2119891962,2120136928,2120142410,2120143393,2120151231,2120152708,2121629990,2122433548,2123414271,2123472843,2123472936,2123472941,2123472990,2123479292,2123481132,2123481326,2123481391,2123481939,2123481960,2123482409,2123482928,2123482935,2123485221,2123485512,2123485548,2123486092,2123487587,2123487602,2123487868,2123488061,2123488218,2123489049,2123491458,2123491494,2123491502,2123491940,2123491950,2123491964,2123492067,2123492380,2123492410,2123492613,2123492943,2123493403,2123494323,2123494721,2123494806,2123495205,2123495222,2123495263,2123495538,2123495599,2123495615,2123495829,2123496707,2123496945,2123497027,2123497539,2123498152,2123498482,2123498621,2123498738,2123499337,2123499387,2123499393,2123499675,2123499817,2123499823,2123500085,2123500670,2123501043,2123501651,2123501946,2123502012,2123502614,2123502618,2123502909,2123502931,2123502972,2123503489,2123503580,2123503633,2123503639,2123503645,2123503683,2123503690,2123503871,2123503914,2123503925,2123506021,2123508761,2123508887,2123508888,2123509104,2123509367,2123510210,2126830924,2126831627,2126831911,2126831915,2126834731,2126838118,2126839865,2126841008,2126851442,2126854146,2127933481,2127939688,2127940675,2127945958,2127950989,2127966582,2130163562,2130164545,2130170027,2130187535,2130190580,2131286378,2132327224,2132331087,2132359596,2133546426,2134655216,2135730753,2135744303,2135751022,2135766376,2135766538,2136033383,2136198665,2140379406,2140382005,2140404240,2140405499,2140406225,2141369520,2141378580,2141384318,2142607534,2142608862,2142616598,2142619146,2143588731,2143590729,2143592861,2143597618,2143609175,2143615126,2143616636,2144000095,2144838611,2144844042,2144846897,2144858266,2144868884,2144870143,2144870869,2157945278,2158338411,2160318468,2160324206,2160325189,2160333019,2160343200,2161569257,2161578129,2161578140,2161592231,2161595735,2165898261,2166038855,2166996811,2167003274,2167004256,2167015877,2167018798,2167213797,2167993101,2169327252,2170481633,2170487115,2170488842,2170504623,2170507412,2174946277,2174951759,2174953486,2174953890,2174969515,2174972048,2176528068,2179101309,2180545870,2191744103,2191744212,2191821366,2191883015,2192566334,2193960351,2195897610,2195898849,2195906687,2195916612,2195922100,2196631346,2205406696,2211506222,2216825796,2219145843,2221394610,2225058301,2225061335,2225064134,2225071439,2225073075,2225080536,2226037368,2226044042,2226051203,2226052893,2226055388,2226060342,2226419862,2229788675,2230793522,2230840997,2231615745,2231617728,2231623210,2231628742,2231632031,2231633170,2231633764,2231638049,2231729235,2231751291,2231760201,2231761216,2231769054,2231770037,2231775519,2233884981,2235097422,2235100587,2235101313,2235108032,2235109598,2235116887,2235119589,2236869449,2241796550,2241797549,2241806680,2241812579,2242828527,2246244298,2246245281,2246250763,2246260079,2246271316,2247223374,2247249937,2247251096,2248592412,2250708942,2250715407,2250719552,2250724971,2250725805,2250733692,2250734937,2250735952,2258665553,2258878642,2264886749,2266447633,2267607000,2274782645,2282544968,2285662351,2290599544,2292158595,2293175691,2293351636,2296071446,2299255515,2301040846,2306079466,2307580553,2313241363,2313504811,2318220358,2320224028,2325476095,2337176745,2339504386,2344847762,2345345412,2345556981,2346482211,2346482871,2351498341,2352240646,2352738840,2358991500,2361087993,2364634824,2371011349,2373457221,2375393789,2376425283,2379512524,2379580075,2390286898,2390518325,2390736011,2392516839,2392521063,2400874900,2400879124,2402335630,2404974948,2405102721,2405117283,2405120727,2414810349,2415093005,2415923742,2415925541,2415935547,2415976346,2418152088,2422623072,2422625395,2422631927,2422634373,2422636295,2422636392,2425962056,2425963043,2425969250,2425969487,2425971892,2425985030,2428197348,2428202830,2428203813,2428211643,2428212914,2428213376,2428240545,2430223084,2433759338,2433759634,2433760321,2433765803,2433783311,2433785126,2433786356,2433788522,2435993901,2436000108,2436001095,2436011657,2436026994,2439339076,2439340079,2439340291,2439346798,2439350689,2439362314,2439364913,2439366072,2439371037,2439876345,2440431898,2440444045,2440449369,2444112661,2447928023,2452264162,2454797153,2458316286,2459819944,2462285242,2462802458,2463186757,2466741694,2466758807,2467213089,2467545358,2467601561,2467655846,2467686484,2467740953,2473985870,2474042431,2474150919,2474285829,2474577412,2474661520,2475343068,2475470210,2475772433,2475877012,2475877016,2475892298,2476213365,2476552306,2479517659,2489453909,2489531547,2498555779,2501597440,2507278661,2510852110,2511694664,2512156190,2540805343,2543008264,2547140668,2553182506,2558063998,2558416820,2560726248,2564751176,2566787042,2569608194,2572602371,2577853220,2579803386,2583084289,2586020617,2600402029,2604613571,2614694552,2616608417,2623678483,2624091113,2626979216,2627765050,2629831661,2630340943,2630577386,2637047575,2637160117,2637393619,2637589507,2639283063,2642320383,2657728452,2661288721,2663538084,2673250796,2673678071,2673953045,2683622002,2686768508,2689921282,2691751732,2691869931,2692015714,2693065457,2693628719,2694158948,2699054734,2699567323,2701589506,2708247797,2710218932,2712973569,2713114330,2714570818,2714658156,2715859111,2716538256,2717691085,2718235570,2719851426,2722275573,2728431851,2731033959,2733567145,2745064373,2747735009,2748168364,2748310006,2753354596,2761147374,2762813598,2767767034,2769808878,2775691349,2789347571,2792452218,2793624174,2794767436,2795183554,2795185357,2795205893,2798224110,2803597621,2804113804,2807804736,2809486328,2813025413,2815428841,2815585428,2816618421,2819662823,2822221150,2824682484,2828575765,2828866516,2829935276,2834927579,2836892761,2839658405,2844621372,2844815106,2845489684,2845638303,2857193006,2860702321,2870435535,2874906565,2880233005,2885526550,2889073982,2893961579,2896115089,2896360091,2896815948,2898520762,2898642745,2908250170,2908376536,2911135641,2915014315,2918403731,2918486269,2919235927,2920587887,2922468503,2922493886,2923084706,2929584080,2931398379,2931402541,2934893225,2937779198,2941551192,2942859576,2948690168,2948867989,2949433359,2951266128,2954570766,2956489777,2960184498,2960188722,2960612931,2962892549,2963032843,2966548328,2976545290,2976620947,2978924197,2982913903,2986096991,2987284613,2988637881,2993692642,2996709992,2999106536,3000568496,3005531064,3005732955,3007175865,3007286028,3008753857,3010444860,3010880247,3017258218,3019938621,3020499579,3022866914,3023311759,3024482653,3024795687,3024807531,3027071777,3029820267,3032088673,3032839979,3033043261,3033965900,3036878933,3037343835,3038234864,3051293097,3052701732,3055037923,3056484673,3060407188,3061523114,3071254387,3071254500,3071254881,3073058130,3074871971,3074935051,3075008146,3075048985,3075285442,3075422693,3075548305,3075766008,3075860343,3075962648,3076097045,3077391764,3079190285,3085252246,3091553195,3103424085,3107541791,3107727924,3107749241,3107778469,3107783354,3107787446,3107790299,3107948057,3107956419,3107974264,3107984588,3107991466,3108296169,3111583245,3113459538,3116256345,3116975703,3117043431,3121647752,3123411243,3123445549,3123737595,3127243644,3131616468,3134139083,3134716611,3141709512,3148676509,3154082174,3155375542,3160028447,3163162577,3163167462,3163515572,3163650864,3172095015,3178395499,3179705353,3183658699,3187099641,3187299343,3189362935,3189614929,3189845278,3191231848,3191324353,3196795314,3196799538,3197664642,3200115829,3202732235,3206363778,3207294280,3218691622,3224832477,3226582088,3231960701,3231960825,3238444781,3240506687,3241127686,3245505639,3246685420,3255250502,3255475289,3255493270,3258010725,3259268259,3259708744,3272088211,3277477189,3287497511,3289363789,3294281816,3300709686,3302430666,3307080284,3310372188,3310580422,3313110325,3317570505,3321771963,3323504524,3331794938,3332552236,3344936763,3351242611,3354164541,3356161036,3357443896,3358280978,3360549707,3361435146,3362509089,3362630778,3366341181,3366920760,3372160500,3373297021,3374596217,3375285141,3377755895,3379029866,3380241983,3380595728,3381834713,3385946526,3386125251,3388057612,3393544563,3404840083,3405857857,3407191084,3408814815,3408819560,3409018494,3409457570,3410577155,3411051814,3411102162,3413983999,3416635233,3418887913,3424150275,3426036948,3426656604,3429124000,3430316367,3430320824,3430870942,3431771155,3432731814,3434192147,3440930072,3441289467,3448289841,3448536520,3452859864,3455445539,3455973701,3456106851,3456282588,3457601666,3463597433,3467469261,3473077716,3481649290,3487446962,3488816292,3495434909,3503723552,3503962589,3503975251,3504086267,3504111353,3504116046,3504274912,3506277065,3508805241,3509081590,3511319965,3513566261,3515728076,3515960057,3516630755,3523519258,3526432473,3530287752,3530798581,3531066474,3531601080,3532265658,3532567787,3533680386,3538145547,3540002868,3540019679,3541120058,3551826674,3554146688,3557238629,3557288966,3560409651,3560721423,3560755308,3560772904,3560776799,3560843986,3563273081,3564677062,3564681286,3567399383,3582031081,3584271853,3584286131,3585048866,3585049834,3585528102,3593775985,3599378282,3602300234,3607509617,3611661676,3611790203,3621964687,3621965124,3621966081,3621966083,3621968414,3621969916,3621970585,3621975893,3622095083,3622538650,3627671724,3631197772,3636965307,3639447013,3650032210,3667545339,3668394990,3668555001,3668632957,3671699945,3674122558,3682693088,3690182854,3691035506,3691048605,3691317036,3693068020,3697923226,3699114476,3702342894,3706900355,3708334595,3709045244,3712703179,3712728440,3712733478,3718845099,3718930524,3720827503,3728968422,3729352785,3730027878,3734185373,3735541918,3737224996,3738382782,3738387349,3738389800,3738389990,3738390006,3738390241,3738390427,3738394220,3738394620,3738394722,3738394744,3738394859,3738396519,3738397033,3738399064,3738400460,3738887202,3738887334,3739466542,3743223168,3743289449,3744330913,3745299015,3748385635,3749221030,3756564018,3766265917,3766587032,3767014136,3767872686,3768672199,3771941409,3772113601,3772128853,3772772804,3776028623,3776032376,3777321837,3777702607,3777706691,3777840696,3778052019,3778877784,3788596678,3788641118,3789096147,3790949066,3792555306,3792675197,3794434962,3795445637,3799396589,3802359444,3802425981,3802900168,3803509878,3803533553,3803824710,3817195077,3825134626,3831783888,3836226283,3837130236,3839963077,3842564401,3842605521,3845461162,3845489549,3848928610,3854658802,3856336918,3857323999,3858008723,3859684851,3862352064,3867966833,3870049918,3871085378,3871829833,3872291932,3872427595,3873740388,3875975886,3876231871,3878080222,3881750832,3882302039,3886373040,3890622701,3890644440,3890892359,3896043913,3896689307,3899279503,3900747045,3906847659,3911916015,3927826024,3935292304,3943337509,3944324480,3944448839,3945529821,3947301018,3949488650,3950159753,3952494101,3960241116,3960376152,3961917741,3963099658,3963421060,3963723254,3967007952,3967259205,3969124422,3970612783,3970678261,3973713485,3975040093,3975243357,3975693785,3987058095,3990704705,3992681822,3994071046,3995478227,3998971354,3999298006,4000670401,4000993351,4001099777,4001277861,4001735503,4002465742,4003357293,4005356768,4007925342,4011050686,4011066530,4011075332,4011273939,4011552428,4011788459,4012217148,4012217259,4024186918,4027830515,4028975169,4029110469,4029583348,4030423947,4031498693,4031499367,4031499504,4031509172,4031928713,4032208645,4032479130,4033316487,4036743247,4038287798,4038545865,4040900190,4042024153,4059950647,4061045790,4064482362,4064482494,4064686007,4068398139,4074270800,4074270919,4074308286,4075674315,4075712516,4075885548,4078878227,4080178633,4081049105,4089654486,4090206590,4090679933,4091412422,4095259202,4095274203,4097043581,4097047544,4097047888,4097050487,4097053538,4097079538,4097094723,4097094855,4097218811,4097289420,4097298261,4097355529,4097358800,4097358806,4097359478,4097365147,4097365569,4097368351,4097368475,4097373732,4097381131,4097390898,4097493023,4097494448,4097500420,4097504860,4097508952,4097518447,4097523657,4097528230,4097528249,4097565588,4097595928,4097769515,4097769660,4097770040,4097900631,4097993352,4097993363,4098078311,4098093255,4098096816,4098101881,4098102013,4098120408,4099257624,4099391059,4100119818,4101141701,4101990706,4102099355,4102141580,4102295291,4103385373,4104416776,4108421678,4108481771,4113654278,4120143040,4120573143,4120685305,4120832270,4121323786,4122797449,4123137490,4123141719,4123166778,4123237466,4124517918,4124852870,4126190390,4126265264,4126330058,4126584791,4128561486,4130538182,4130665595,4135804702,4138805004,4138959002,4142649353,4143010615,4143011353,4149276818,4149741566,4155964946,4160851306,4165043845,4165602674,4166101816,4168666626,4168671212,4169534192,4169538416,4175499442,4178182706,4179726175,4180321577,4180398911,4180437564,4180584501,4180592595,4180655876,4182610142,4190427894,4190436241,4190438903,4190464587,4190536489,4191350062,4197904504,4208748285,4213114634,4213114766,4213115878,4213133169,4213139443,4216213600,4229539334,4230260404,4236039784,4239211903,4244301284,4244359264,4244636840,4244650461,4244697370,4246504751,4248927363,4249781266,4250093591,4255547342,4269915810,4271230391,4273205904,4280822506,4281987205,4281991429,4288642117,4290818353,4290862694,4290938088,4291163255,4291519114,4292375442,1641,113029,2431109,6154799,9085905,10454523,11833936,15005411,29369909,32348563,32392946,34831997,35241656,35407085,41719852,42040525,44148994,49751269,54657448,54829135,61297674,64616140,64792746,65243007,69912355,73497087,75564691,84754216,85474843,88950783,95227810,97671606,97869711,98556036,111529024,112714201,113832573,118457586,119013459,129204800,129504899,132934253,133576354,140643360,141325108,142928709,144351849,147399388,148485881,153516070,159755595,162751717,164324227,164324569,164324664,164324791,165338893,166383271,169804649,169909381,170281316,170281555,170281599,170281747,170281951,172221532,172281217,172281369,172281601,172281701,172281789,172615247,173287589,173592416,173930363,174306514,176844018,177079695,177080427,177147671,177148014,177148020,177546706,179139641,179379875,179569944,180056941,180259371,181198501,181205574,181240422,181950714,182150488,183096195,183096537,183468910,183469260,183603589,183603872,186043176,187501046,187763081,189174183,190912115,191031927,191069908,191103669,193357074,193420201,194024818,195040318,195040605,195184107,195615400,195788148,195817845,196491587,197098180,197098196,197098242,197098387,197098716,197098773,197098834,198219090,201802654,203969128,204000291,204003102,205844479,208540214,211702237,213315812,216404638,221220686,223633303,225036633,231228447,233832515,235585683,236122625,238349947,244953360,253603556,254556119,268305044,270508724,279497384,282260013,286117940,288337735,294222691,294944592,297796540,299806932,301175958,305396028,309814229,316711416,319659866,321667918,323472705,329290740,333539694,336073493,344556873,345150446,346582968,348240977,352942917,361618841,362641227,363650316,368392429,371447569,379018060,379803748,381683792,382346929,390037588,392534911,393050977,398079720,401473592,404580880,408076405,409551689,412923104,413523569,417762611,418389794,418643706,419980117,420076057,430774757,431420666,431463230,433047970,433960232,434424313,439016491,446595824,448347366,453082265,459993498,461991320,467355959,468677861,471325996,478194174,481007914,483933287,492579864,492820046,493239087,495294245,500922416,501132892,502571724,503870109,505520155,505540840,505547348,507674743,507704542,508155006,508732896,524499536,528698966,533082472,536472645,536606854,536706420,544035780,545100578,547829195,548068662,550157112,554422931,557980541,558904957,566123574,569085212,574052622,575078226,579214441,582810837,583362052,583453417,594063106,598128236,601157755,601161740,601948346,602413319,603986209,605582466,609198625,610045978,617827459,620396524,626039263,626988485,629099694,630452394,635400744,640415961,643558590,645257576,652659119,656273907,665354414,666296511,667333922,668403785,669730879,669929645,674175725,680972003,682364285,684524418,689215333,704136516,706383966,708808466,710978465,712995495,713788357,717519098,722655660,722956329,725449644,727209749,729977159,734622016,735035205,737142807,737152212,737166334,737644692,737837074,739516787,739566545,739985822,741816033,742252614,742260586,745092996,747930588,750219296,750508933,752522257,753857751,754000708,757807602,758478444,761228031,762067870,762641736,764248075,764320946,764825188,766296725,766355544,766643209,766774330,767540529,772363084,774299734,777688891,787564577,792068311,792844833,796739176,800010738,800087019,809563086,810061706,810813298,811092091,817847511,819009519,826260124,833658992,834470340,839856739,842147301,847675799,861294299,862950715,867021650,867036335,867732810,870151875,874296659,875096251,875944810,876149555,884498580,887482102,893652881,894264732,896104248,896979123,897240751,902139830,911653942,912249299,919599881,927052135,933697266,933746041,939098524,939114841,948752149,955130439,955354780,955942299,956480228,958121442,966830075,970076747,972273212,976381303,978919739,981829565,984418838,997412732,1001458257,1001637783,1001651627,1005191377,1008948875,1010556097,1016009727,1016348317,1023879932,1024317101,1027786481,1027856392,1032266307,1033049924,1035709107,1038486906,1041294385,1043437244,1049779946,1051535617,1053737172,1054370922,1056150770,1056645919,1056720884,1063952736,1064732809,1064857294,1065290596,1079732589,1080478458,1081536009,1086069586,1088535269,1094421058,1095718313,1096687866,1100372480,1101043104,1102004406,1104733017,1110237878,1112959177,1113096701,1114972095,1117545303,1118952562,1125668821,1130216203,1132104794,1132534664,1132579070,1132598106,1135683888,1135892328,1136018325,1138287902,1145147923,1145899518,1146523166,1149204820,1151262913,1152056864,1154446700,1154536715,1154542665,1155367440,1155994599,1161218045,1164964007,1166033123,1167024992,1167025137,1174582808,1174756828,1179004234,1181469438,1183829925,1186977866,1187653498,1188208310,1189560180,1191923730,1192723278,1195304992,1199133859,1199554249,1199600208,1202045876,1204911535,1208429990,1210779948,1210807525,1220586092,1221782335,1221920801,1236932222,1238449939,1243532105,1246474378,1257626414,1257876060,1258346504,1259689738,1260836076,1261324364,1266641105,1268763191,1271531819,1273274467,1276658942,1282928227,1283757717,1290537388,1296032318,1296235125,1301946320,1305140481,1308857550,1310807544,1310899277,1312163653,1316036626,1316125796,1324285266,1324310094,1324331646,1324337571,1324579984,1325750278,1326569216,1333842476,1349684561,1351415139,1351558342,1351862653,1351880550,1354386923,1356250756,1356331589,1357629674,1362165018,1363404812,1364008114,1364487272,1365133140,1365599531,1365623138,1366730785,1366987615,1372241226,1372705460,1372794328,1373871548,1375834117,1377641421,1378253217,1385859280,1391291390,1391293134,1391299074,1391300548,1393577155,1394469288,1394469303,1394469473,1394469866,1394470005,1394470066,1396870772,1399867662,1410090536,1413067533,1423547895,1430902259,1431096661,1433581041,1435770227,1436788950,1441443055,1441473969,1443172426,1444705872,1444722875,1444727957,1445594238,1447082963,1448082324,1455246557,1457519039,1458084479,1458493639,1458555099,1459794391,1460930084,1465058743,1465974914,1465976327,1465976425,1465976436,1465976550,1465976555,1465976625,1465976632,1465976696,1465976747,1465976870,1465976979,1465976985,1465976986,1465976991,1465977196,1465977261,1465977271,1465977274,1465977303,1465977323,1474444421,1478092049,1478716185,1481566528,1482522967,1489772937,1494181387,1504535254,1509029106,1510450262,1511907991,1515598870,1519441587,1522685369,1525831150,1526085253,1527459723,1529619411,1532042759,1533712942,1537663939,1539902893,1541073018,1541496652,1542773859,1549199388,1549209224,1549210203,1552284203,1553692884,1555806428,1561102750,1568416773,1570561776,1573188605,1576134740,1582406800,1582529544,1585380899,1587251606,1592687509,1594093747,1601662530,1602151715,1602222565,1602416912,1604312683,1604313702,1604341906,1605478605,1610069144,1610724928,1613430619,1616149762,1616623247,1616826805,1622345684,1624120544,1624575040,1631446240,1634840328,1635306209,1637735434,1639041637,1643893360,1645239134,1645714411,1646967505,1647763648,1648026812,1648459154,1652482428,1654623339,1659538076,1660752253,1661285202,1662950537,1675032552,1676328914,1681382184,1682444281,1683407715,1684605451,1684964181,1686375531,1686572406,1686834359,1687225102,1687228988,1687238599,1687241697,1693905970,1693924649,1694678234,1696017211,1697022103,1698247372,1700196518,1700874190,1702743585,1705191422,1705572464,1705775316,1708553688,1709604401,1711224201,1712893263,1713051167,1713095897,1715999558,1716074224,1716087943,1716947524,1721557559,1722492001,1723859941,1728197301,1730461660,1732377833,1740500925,1740503023,1747349646,1747349737,1747349747,1747349811,1747350242,1747350353,1747350383,1747350483,1747350570,1757625214,1758838683,1759487629,1759488516,1759498393,1759499821,1759502442,1759502966,1759512274,1759512283,1759513528,1759514495,1759514515,1759516437,1759524172,1759589336,1760335250,1762975960,1762992044,1763004314,1763977119,1771261987,1772061961,1772164204,1782043531,1789421301,1792792037,1793905730,1800839994,1801396125,1804673412,1806579373,1807671676,1813955111,1814430790,1817436421,1822787251,1823557150,1828043124,1839996532,1839996844,1841030555,1842560365,1844448916,1844480213,1846724376,1860761623,1861064328,1863000850,1867708596,1873769763,1873773882,1874142716,1875798230,1880233189,1882601503,1885862630,1890372289,1890379225,1891031342,1891205640,1891938925,1894539933,1896919160,1896919227,1896919294,1897898461,1899147627,1900573373,1901379444,1902628941,1905060165,1906789934,1906790006,1906790139,1906796594,1906797455,1906801573,1906801694,1906806837,1906810233,1906810485,1906811690,1906817274,1906818921,1906820915,1906820924,1906823423,1925206882,1927020241,1928994000,1935386784,1936188797,1939298330,1939994885,1941474619,1944071536,1945201987,1946130305,1946324244,1947055740,1949193282,1951127334,1956200886,1960661844,1964294607,1971670426,1975660003,1977074332,1979063800,1986972074,1987660949,1991785763,1992080509,1995174355,1995890751,2001507875,2004488903,2015900220,2018783243,2021213332,2023260368,2025018361,2025037989,2025039155,2026543248,2027114414,2034028822,2034497157,2034927376,2035815698,2037403782,2037552632,2038238057,2038463378,2038609522,2039595722,2040354520,2040943501,2041028464,2044842550,2047340057,2047377876,2047791608,2047824538,2050823774,2050838609,2051525062,2051827668,2052255777,2052901511,2053206810,2053240934,2053337172,2053478875,2053493456,2053853373,2054449324,2055229681,2055578022,2056180496,2057710300,2058751811,2059048621,2061275137,2066721635,2067699997,2071301924,2075934693,2077460241,2077463931,2082279457,2082350395,2082490504,2083899515,2084905908,2087506861,2087556005,2087568425,2087595516,2092046651,2092301721,2097381010,2097529923,2100199727,2103470828,2105481502,2107063121,2107436658,2111314048,2113664954,2116750738,2117068897,2119040128,2122563214,2122618177,2124668692,2132271390,2134191641,2134715695,2138049165,2138494997,2144770101,2151094932,2151644274,2163712208,2163898589,2170508442,2176727539,2177318798,2178944930,2179027416,2184528600,2186571792,2187374596,2190645414,2190660247,2190897184,2195413098,2195424198,2198290764,2203121973,2208876632,2209276004,2211529485,2216861598,2219976143,2224936471,2229389306,2229428098,2233205867,2235535537,2238302643,2241998064,2243922068,2245744882,2246095470,2246624423,2249578444,2251500542,2256423319,2257131811,2259407586,2265403416,2277922362,2278366865,2281444864,2284221844,2290521795,2298483014,2298859942,2303709693,2305684069,2306183534,2310688315,2315634657,2319104481,2323978889,2326416557,2327685947,2331542577,2334488740,2335980755,2343955873,2343987387,2344051572,2344081298,2353017729,2357782940,2360233424,2372460029,2372478071,2376327406,2380959235,2384339112,2391410598,2392072803,2393811335,2399346319,2399822664,2401643245,2401782259,2403261116,2407789481,2409182571,2417084170,2417165267,2417652035,2419411749,2419417423,2422324904,2423117096,2424431334,2424771770,2432634086,2435584133,2436015021,2441679501,2441854846,2444838503,2451024601,2451094457,2453483137,2454448917,2456215407,2459247176,2463271525,2463506842,2467234433,2469945372,2473920266,2486666796,2489018185,2489169796,2490847830,2492970238,2497220049,2503042985,2512844015,2518379243,2518777282,2525588137,2525608018,2528358668,2528706848,2531896313,2536602755,2539686262,2551310943,2554772601,2556085817,2558131228,2564231467,2565836498,2569358076,2571159128,2572746788,2575905107,2579846032,2582295686,2585286228,2585297154,2587884409,2590263013,2592032772,2597156358,2600208325,2600311538,2609976564,2614031703,2619619987,2622453927,2622601193,2622997773,2630676340,2635726130,2636739119,2637611531,2637745410,2637827916,2639832942,2646831691,2652889161,2656916375,2658971428,2660417858,2667387895,2669967601,2671812960,2675377616,2680331975,2692646873,2694622232,2697812844,2707358863,2708256980,2708843581,2721005193,2723132333,2723449219,2727613517,2729386864,2732129495,2739504392,2742067873,2743561936,2745053658,2748129339,2755346949,2756835810,2762308724,2762732310,2772048233,2773342582,2773916239,2774237802,2777215669,2780442125,2780969136,2784038323,2786612080,2787145966,2787151566,2791623281,2792656912,2793820597,2793843165,2794535853,2794558276,2794571602,2794589073,2794607684,2794781905,2794812897,2794904579,2795201682,2795215251,2795316793,2795413889,2795489178,2795518714,2795546979,2795547152,2795551511,2795554576,2795555553,2795567189,2795581043,2795588603,2796767057,2797512177,2798111293,2798512509,2799526810,2799947922,2802973072,2804403738,2804874542,2805637755,2805753744,2812187177,2812916202,2815541885,2820491263,2822394574,2829422945,2831048350,2832237259,2834623189,2837348717,2839650695,2840525902,2841159353,2842490055,2844781614,2846385194,2846982791,2849860412,2850213786,2852028874,2852573181,2854701866,2855519660,2857974075,2859686627,2864766480,2865932173,2873369054,2873382924,2877054650,2878248977,2880150758,2882016813,2894321712,2896549226,2900972274,2907164383,2909422460,2910191497,2914081458,2914744694,2914938714,2915009556,2917041430,2918571873,2929237742,2930384385,2931708704,2933052029,2935350303,2939956665,2941858877,2943539162,2944562948,2945364171,2947166646,2953041500,2953600606,2958695479,2959025464,2963193938,2963907974,2964323647,2969439522,2972958854,2976622717,2978201778,2982085395,2985605450,2996423818,2999691650,3008190733,3008855969,3016122305,3017646001,3023766416,3029366772,3032047068,3036119914,3036992672,3039024727,3042813479,3043904968,3050467218,3051886594,3053067553,3056188564,3057812794,3065938060,3066185554,3067801157,3067842181,3068762275,3077857486,3080857101,3087114209,3087935921,3088190003,3089015336,3091255985,3095401268,3096813247,3098725318,3105671535,3117883740,3118052513,3118932015,3119183299,3121944857,3124496054,3126706525,3129135980,3130262956,3136193853,3146277579,3150523560,3154412692,3159557566,3164499075,3164706839,3168577861,3173559921,3174529089,3176196996,3176871024,3180039849,3180784320,3181226348,3184223807,3185392090,3186278865,3187205025,3189849017,3192015124,3201052817,3206103617,3212240200,3229338204,3231038915,3232995840,3236363663,3236684869,3240062262,3241501460,3243217472,3245554401,3249410406,3254464708,3257959952,3274402918,3276160836,3276196901,3278107133,3290502878,3291450742,3293286977,3293297241,3296419295,3299472058,3299767442,3301223392,3301309499,3301391192,3304599725,3306064327,3313552392,3321637504,3331885553,3332277580,3333914252,3337182013,3337858974,3341471161,3347209717,3350345047,3350816321,3351869587,3352060268,3355691995,3356175586,3356927752,3366755503,3367073048,3367944003,3372319994,3375346812,3376868662,3381262072,3382258705,3385088233,3389287501,3392485763,3403435361,3403782237,3406109171,3406111906,3407122639,3411575670,3424242744,3426100153,3426523263,3431675506,3431798787,3432725491,3433958809,3443103158,3445734210,3450482982,3453219838,3455171543,3455975626,3458629656,3459326184,3460835389,3468111852,3471910127,3473608107,3474158466,3478804050,3479897537,3480605972,3480868929,3481097537,3485240025,3491815953,3492209950,3494777461,3500328283,3503925212,3506796962,3514565086,3514565812,3518469610,3519725933,3524188747,3529349528,3542452078,3546487756,3550700124,3550989552,3551573749,3553442167,3554781799,3556847596,3557221487,3557691349,3558264087,3560824248,3563344816,3565186253,3565418379,3566074326,3568626956,3569886279,3570187564,3574536814,3576593305,3584104748,3586564634,3588013803,3590119076,3594126223,3605649145,3607964178,3610130320,3611466472,3615937331,3618863110,3629119210,3629792790,3635135986,3635459541,3636074310,3638424639,3640911628,3642130958,3642225062,3647798063,3656108419,3657615451,3659534155,3659611370,3659667263,3660545348,3660867367,3671487562,3678946749,3680027665,3684023399,3686613485,3686646984,3691543485,3691543777,3694814128,3695175653,3698130051,3700803863,3704722354,3717443225,3718851041,3722297297,3724304421,3727535579,3735382080,3740438523,3740440657,3745910284,3748112414,3748157778,3751765724,3751843037,3758548269,3759175702,3760229117,3767579376,3767636566,3774416951,3774620406,3775107448,3777554302,3784459817,3789001045,3789217359,3790213466,3791430232,3792756850,3797275201,3797334865,3797547975,3797752814,3798120765,3799727891,3800284920,3803890887,3807736858,3811590943,3812650457,3813081457,3814583456,3816238011,3818244185,3820433217,3821631768,3824973847,3830752599,3831121452,3831131041,3837373870,3839962587,3842157165,3849728326,3849729892,3849734551,3849787726,3849792721,3849819373,3853184002,3854490492,3856121458,3860607422,3861431943,3861926244,3867504094,3869648625,3871255217,3879613384,3888702999,3902486573,3909678524,3911290870,3914258422,3919568627,3924938673,3928836058,3929271846,3932881151,3932899585,3934007962,3942901813,3950379841,3960912026,3973890763,3976040035,3981060932,3981985710,3991078309,3992022849,3992259208,4010941807,4012569891,4013412307,4021161495,4025854722,4027536004,4033312623,4036094574,4037300319,4043405137,4048222256,4048420974,4049948378,4051811237,4052267313,4054558966,4064836207,4066383490,4070580503,4073707968,4100786237,4104807039,4115427659,4116271014,4117626035,4127381498,4128299636,4132054341,4132795027,4133480683,4136878052,4138452493,4138537192,4138587115,4138850346,4138930624,4148483014,4149140792,4149626272,4149641566,4149809179,4152090640,4152153727,4156628388,4159166567,4161006924,4161031359,4167095051,4168702437,4168921085,4175490343,4178043127,4179607399,4182917435,4196816243,4201195770,4201710836,4204344500,4212065046,4216249688,4218603456,4220181346,4230252988,4230808631,4235216564,4245730359,4250048329,4251017064,4254397175,4261049438,4265986719,4266150865,4270257086,4272517612,4285995571,4287809158,4287924367,4293141634,4293320049,7,171252454,314658260,1911007288,2310391087,2705648135,3085052283,4199583372,0,0,30,66987915,366428436,366991379,487687151,649399193,716916462,900018457,911616432,914855142,981141093,981156754,1068454171,1213136917,1357549542,1437166305,1491010671,1491010869,2035443912,2098925819,2412701058,2447973967,2572472237,2572499572,2572504631,2734871983,2873757688,3229893628,3628727675,3840638318,4020469118,1985,3609572,4707302,4731941,7066741,12732264,12733869,12874473,12898727,15239865,15443925,15464989,17770158,18806137,22641470,34805542,37254453,38352510,47103897,47124528,47160482,47264668,47270558,47521880,47670735,47682584,48206184,54052064,55399270,55790429,57861540,64629239,65951659,73540622,74816563,79005572,79010572,79432449,79977826,80960607,90941114,91781471,93732497,101061895,101792620,105281118,114635485,121111459,126395821,127613999,134819976,135124399,135156325,135512978,139443164,140195744,146403274,147165318,147311351,147680945,154712981,156193153,157683252,162021680,165184869,165682351,167795310,169177047,169285407,170248114,175536255,176298648,181584625,186190871,188366635,190461039,190805290,190817793,191644192,193330267,200367649,204872798,208246903,213994908,222038678,222914983,226753977,227658815,230657663,231976681,232418677,234224516,235125560,235385397,235630461,235880887,236100347,237106084,237695302,243768879,244905302,245221564,245221621,245248688,246957980,247379872,247404538,247547714,249186148,249832804,250298968,252007821,252166643,254498243,256250975,256734086,257675257,258276240,260078806,269653037,270614174,270803459,279865482,290747254,296104342,296106331,296214241,297365588,297388265,297388314,297395043,297872731,297875338,305678573,310113063,317059542,318726251,320983337,321380700,329390871,340233049,343985311,368331859,368339983,374202536,374729119,377042975,377218502,377330983,379160277,387137528,390536878,397426025,410462833,410898354,411028646,415359567,418289923,418809394,420699727,422768411,423087664,434374676,434499530,439966930,443910462,444881445,446735168,470802373,473022090,475752042,480190019,481797890,482141996,493334140,493996949,494002753,494111972,496668263,497004637,505642028,513006918,520166698,522732652,524323805,524791178,525296785,532366388,537994409,538156652,539123093,539125333,540384923,545724556,546598380,552815312,564847266,572585472,572589595,572660745,572917514,572938118,581295982,583116728,584477771,585356786,585510953,586974440,588341431,590260151,593171510,600861600,602587622,608185550,608501000,611172806,617227910,620862123,625412750,626878575,627192073,628675473,636454657,644892435,645708934,646772532,650376939,653264074,653865504,654835286,655274400,657684596,657843927,665654464,665772443,667917050,667982163,668803663,678409190,685972429,687873546,699223116,722349553,723381066,723506578,725289629,728910939,728916446,729301272,730375222,731520837,731524865,731524893,733458327,734942836,742063133,744425628,745118723,750501894,753379261,753585532,755936840,755999442,757164322,757742871,758908039,758927262,766978617,767310694,767319597,768502512,775086059,775783015,776818569,777129529,782249017,782470551,782586541,783225086,783819749,787058931,793173186,793643539,793791572,794069868,797737785,801549019,805476735,809560577,810471911,810660018,813069363,813965189,814609400,819689086,822265343,827811881,828807618,840895172,842670706,845178939,849626506,857304293,867054787,875581912,878480613,878489001,888652626,892902192,904040802,904780949,904781069,904781208,904781211,904781269,904781270,904781407,904781445,904781469,904781569,904781597,904781741,904781750,904781797,904781798,907680375,909542970,913350787,915552624,943105427,944616168,945567936,946059164,946112067,950116031,950459761,950797941,950991772,952407653,954708706,954904735,956279390,959296218,959317553,960000436,960088334,964474682,965248297,965252181,968600148,969495568,969714387,969714391,969714751,975014436,976847064,977515724,978655375,985441466,985451059,988676432,989199112,995754553,995754557,998100773,998582596,1001682227,1002897238,1005026102,1007267340,1018029509,1019292109,1021170671,1021615491,1027478448,1027904949,1028176876,1028524011,1033544761,1037073656,1039464298,1041396131,1043364491,1051084878,1053049944,1055328538,1055480209,1058862972,1066609925,1068948457,1071874351,1072134738,1082834847,1084511341,1087693738,1089012798,1089634494,1093384439,1093825560,1094815391,1098082937,1102471353,1113642022,1113846049,1121249692,1127953536,1132317159,1132485954,1132585385,1132689597,1132723356,1132858392,1133501028,1133636064,1134046361,1134351151,1134824033,1135467502,1135737574,1135775689,1136782059,1136883336,1137085890,1137173922,1138138823,1138714596,1139072942,1139153897,1139221159,1139981182,1140405028,1140510661,1141246959,1141280718,1141381995,1141584549,1141719585,1141874653,1142159541,1142193300,1142260818,1142366610,1144440814,1144457023,1144667374,1144802410,1144975561,1145579956,1145625081,1147135141,1147314976,1148184718,1148522564,1149131059,1150514349,1150729533,1151393172,1151494449,1153073825,1154465661,1155177503,1156094385,1156940664,1158572559,1160038984,1160487168,1161167906,1161578459,1161965872,1162013821,1163255421,1163472226,1163645377,1163777146,1163979700,1164916562,1165010690,1165068597,1165937726,1165940993,1166410608,1167096330,1167193469,1167260731,1167598577,1169823858,1170720439,1171147706,1171150005,1180230175,1180849387,1188216287,1188228500,1188701654,1190334387,1190352716,1190641324,1202600586,1206718941,1209302133,1214814043,1216095517,1220486075,1223892937,1224444732,1225577971,1229986049,1243738793,1247471306,1252266596,1252792940,1253960230,1254127330,1255848785,1255859538,1257563663,1257583343,1258195056,1258213434,1262993336,1263908042,1265512654,1267283463,1278475387,1281229947,1281889125,1284797630,1288585218,1290240457,1290513099,1293031053,1295516865,1297095740,1297597617,1298827289,1298832842,1299380998,1300818337,1304310342,1304455504,1310534169,1316956180,1336232039,1337809090,1340075459,1343684265,1347737800,1348149256,1354685816,1355025196,1357282216,1357301365,1363667295,1364395531,1364732891,1373278040,1373514813,1373685873,1375205051,1375419602,1376146087,1380234474,1380513046,1381723825,1382632688,1382645602,1382709874,1386126578,1388184353,1389190819,1389902309,1389912616,1390104485,1390958270,1391687090,1391699393,1393151104,1395748391,1395924208,1397018707,1397022500,1397827261,1398423514,1400330808,1401462671,1410284129,1411428439,1412479074,1412717811,1412831927,1420822802,1423109435,1423890423,1424552007,1425040900,1428131728,1431817030,1431897749,1433480127,1433483767,1434457973,1451286836,1451565010,1452211848,1452224159,1455851258,1458060161,1458176029,1458620255,1463365872,1466302404,1472319400,1475303091,1484355552,1486115226,1486401243,1489893113,1490054949,1492145100,1494001659,1494630697,1494690535,1494695213,1494714660,1494714786,1494714930,1494889015,1494990523,1494992680,1494997876,1495466906,1500014997,1502962162,1504548128,1505655813,1508029184,1508045454,1509815249,1518807662,1524160328,1529373691,1536802563,1538089784,1539586715,1544812783,1547140470,1552392687,1552405115,1552405169,1553111822,1553462237,1554120313,1554158027,1555241094,1555436471,1555595989,1556675361,1557492455,1557696008,1558835738,1558865070,1559582938,1559928005,1561078602,1565016185,1565113430,1565407826,1568314306,1568314316,1568317266,1568696751,1568699472,1568940804,1569248185,1570879860,1573625992,1573800670,1576869802,1581247153,1581398717,1581675892,1581718434,1583510121,1583803496,1588886160,1595292826,1602148307,1605015374,1609481646,1612153257,1618209596,1618218864,1618873873,1619384363,1624861042,1630153983,1638526919,1639454708,1640524262,1641042489,1641812886,1647303548,1648240296,1650468220,1650500409,1651513056,1658862087,1658979753,1661301475,1667470132,1667473335,1667728240,1667806132,1677105623,1680875001,1680882207,1681660610,1685495090,1685495093,1685495270,1685495398,1688394353,1688567575,1688665455,1688778883,1690751126,1691125863,1693300755,1694472929,1703388735,1709297356,1709313729,1712511978,1715661089,1717927392,1718114956,1721373840,1722360575,1724823399,1726408681,1726606395,1726645504,1732927910,1736066754,1736347741,1740486766,1742215384,1745377406,1758824175,1758930481,1758975612,1759122505,1759143730,1759143733,1759227293,1759313682,1759313685,1759412017,1759432510,1759498975,1759505228,1759507354,1759515800,1759642661,1759864276,1759893786,1760159824,1763810143,1766750547,1769211545,1769618102,1772590156,1775156822,1780760274,1783870720,1784406502,1786353732,1793007575,1811810046,1815656403,1816569647,1816866992,1822574126,1822868024,1822868031,1823268852,1823275309,1823288115,1823390804,1823768300,1833535991,1842420860,1844031908,1844296341,1844524436,1844853963,1845272265,1845433501,1850725233,1851761689,1851765614,1852766386,1853687691,1854177922,1861204803,1863593250,1872674263,1872992134,1873841021,1877281407,1877305076,1881597618,1884316146,1886743174,1887188539,1892879921,1905997196,1912353097,1916296381,1919640688,1919643810,1924325687,1935798204,1935801369,1935813711,1935815187,1935818499,1941710024,1944260378,1945210145,1951157591,1955955663,1957378415,1957388660,1957444069,1958153525,1958153878,1962799016,1964448624,1967235715,1967514117,1968334692,1970709900,1974828022,1977445003,1980811473,1981302481,1984866213,1986874949,1987285901,1987558613,1988913069,1998855379,2023930736,2026542768,2029442974,2029502301,2031253491,2041190670,2044176332,2044519717,2044521677,2044845895,2044862336,2050748464,2055299797,2059226128,2060744697,2060874008,2061631935,2062602594,2062613436,2062713055,2062721365,2062782118,2064194523,2064289093,2064667157,2064835977,2065546931,2065580690,2065783508,2066019598,2067177842,2067640249,2068518016,2068619301,2069026672,2069773511,2070805664,2073324624,2075547993,2076314666,2076760108,2076927096,2078661044,2080078919,2080126248,2080270176,2080768362,2080948565,2081049148,2081811414,2082081519,2083365940,2084275182,2089789238,2090043919,2090165361,2090287045,2092471497,2092773191,2093281591,2093290649,2093484170,2095261287,2096596043,2096775591,2100685312,2102866955,2108433077,2109903284,2110249550,2112026046,2112754908,2114424326,2115251185,2116737470,2118764990,2119510407,2120903194,2121183749,2121530494,2121539444,2122085862,2123968241,2123974461,2124038667,2126585211,2127702833,2127711196,2129393172,2140172366,2141043403,2144163444,2144352359,2146552134,2146559400,2146579609,2146771534,2146787712,2147192784,2149214372,2150227387,2151276842,2152677197,2158829447,2159124528,2159550475,2161337980,2161361535,2163722410,2163917836,2165826914,2169168320,2170868227,2173022808,2174751247,2179048400,2184998274,2196541409,2200622033,2203412941,2206322353,2208794483,2219653172,2219657520,2225010953,2226828879,2238722895,2238722920,2238723506,2241976578,2245936247,2248375230,2249276550,2249625301,2254065144,2254179087,2254183431,2254275149,2254449430,2254449877,2255178054,2264880989,2270863210,2290294367,2304704334,2304866355,2305219189,2310350875,2310486036,2312897274,2314773060,2315564905,2319231065,2319463533,2325240383,2327016339,2330482855,2337919027,2340169455,2359883328,2361871491,2366081778,2369823335,2369831600,2371523459,2372759050,2374977123,2376431395,2378889732,2382890223,2383755454,2386589953,2387052696,2389856295,2391789782,2398718314,2399324290,2400888860,2401211408,2404756392,2406557074,2407241140,2409418646,2411497922,2411691127,2413846222,2413908037,2414944572,2415208709,2417936111,2419639306,2423159152,2423360684,2425978408,2428076111,2437572023,2440527060,2444775143,2449407487,2457428534,2469735934,2475146676,2475744613,2476033552,2476112212,2476147614,2477393954,2478803388,2479415778,2482075359,2485317413,2485370363,2488499588,2488699734,2491415998,2492607180,2493496209,2497515972,2499072481,2499532790,2504383993,2504870149,2505121421,2505147736,2513647314,2513693640,2513701512,2513706827,2521253655,2521398855,2526527953,2526528078,2527291586,2527292245,2527666001,2528098475,2536669081,2536933437,2537106090,2538335365,2541170503,2541170604,2541177518,2545965593,2546249066,2546819122,2548278991,2548782015,2549421379,2557808039,2557863700,2558865115,2568950385,2569073380,2569341502,2569405925,2570837952,2575053435,2575619554,2575627585,2579451785,2581687876,2582936524,2586547509,2590439971,2600983050,2602643559,2605946857,2608238576,2608504686,2611889973,2612202111,2619739935,2621175072,2627204334,2627570013,2627677159,2631480810,2631901285,2635187702,2637430468,2638897207,2639751704,2642390316,2644459471,2644532855,2644906311,2645171587,2647433605,2647443463,2649904288,2651288351,2652440186,2655263134,2660229222,2660362019,2662714632,2671981072,2673085999,2676359415,2678218950,2680015310,2683201101,2683726243,2687071289,2687546085,2689958531,2690565794,2691049537,2696922944,2702278755,2705586928,2707450736,2708750293,2710694053,2710777678,2717039465,2719746264,2719953243,2722365346,2724396360,2730361077,2732178535,2732249147,2732255792,2732453216,2732465831,2733162785,2733179003,2740913336,2743326046,2745816408,2746770100,2768031559,2768594053,2769743066,2770453396,2777301260,2777413063,2779047561,2779131760,2781151044,2788878449,2791114477,2792266216,2795123222,2795130739,2795148393,2803000277,2803220098,2820015673,2824852881,2825063248,2825297984,2826183623,2826618777,2828159974,2830840737,2840364717,2844137461,2844192015,2844331414,2844474265,2845536368,2847702680,2847708560,2849875839,2854691117,2857021867,2857111846,2857167445,2857291628,2857718467,2857718874,2859609075,2860369035,2860944275,2861234828,2861431296,2861773187,2862323803,2862729831,2862789186,2862818280,2865000297,2865536587,2872917161,2879220442,2885591219,2886256228,2886266660,2886337850,2886340600,2886347487,2886358758,2886559394,2888553420,2893735969,2893987517,2894277589,2895201770,2895970159,2903889952,2904798808,2907566289,2911967032,2913775681,2917443420,2921648360,2921994283,2925162127,2925540459,2931480722,2936112276,2938485423,2939997155,2941295122,2942568797,2944555176,2950549599,2952067971,2952072562,2955690120,2961421753,2962144430,2962519996,2962841785,2964270344,2964373735,2965548040,2966852375,2970298080,2974400461,2975755381,2981996158,2987922608,2991195167,2991625994,2993771546,2995901561,3000958971,3001281849,3001388716,3004478994,3004479027,3004479111,3004479159,3004479171,3004479184,3004479190,3004479239,3004479240,3004479258,3004479289,3004479305,3004479323,3004479334,3004479373,3004479389,3004479390,3004479401,3004479425,3004479785,3004479787,3004479818,3004479829,3004479837,3004479976,3004479994,3004480114,3005847375,3006723884,3006726944,3006727797,3006731179,3006737252,3006744684,3006811183,3012299493,3014399025,3019017018,3019072181,3019996757,3020108825,3020133371,3020188532,3023885513,3024558034,3024589567,3024626538,3033483503,3034109278,3035739007,3035887950,3044634578,3044797796,3044821749,3045244983,3045788419,3045876876,3046124074,3046256428,3050244615,3050333064,3050334784,3056297406,3062281966,3063798750,3063849681,3073445035,3073797863,3073848296,3086119708,3087786680,3089398889,3089451715,3089454054,3089461994,3089735415,3094552970,3097888413,3098875466,3099276787,3104375123,3104503715,3105798493,3107144912,3107146953,3110631110,3110681545,3111601102,3111601746,3111606786,3114815727,3119543502,3119594433,3120807553,3120857998,3122897068,3125786613,3128821880,3133975234,3135838657,3136281421,3145164732,3147940006,3154068140,3154152867,3157412719,3157501664,3159380027,3160589879,3161016478,3161897203,3174437714,3180245112,3180300610,3182786585,3183126568,3183293814,3183325319,3184294753,3188347051,3191217062,3196370198,3197567695,3198643172,3198783739,3198824989,3198841920,3198930383,3199640352,3200095506,3203439089,3203573947,3203579445,3208441350,3209729826,3210506925,3210514725,3210570457,3214383466,3214394316,3214653823,3215790970,3217760577,3218901480,3218928718,3218996674,3218997101,3219339071,3219427268,3220535722,3220543483,3221757640,3223098753,3224727829,3232284385,3232339054,3234508143,3234559072,3235473148,3237969392,3243142044,3247991594,3253953941,3269910681,3270985722,3273573836,3273628995,3275986591,3277061645,3277112578,3277868236,3277980164,3278129999,3278154322,3280832255,3280992609,3283017533,3286262047,3290414111,3301409832,3301494567,3302526185,3302610918,3305712858,3305866028,3305950755,3309540327,3309590022,3309595898,3309596203,3309660560,3309660597,3309937069,3312550946,3312639405,3317007142,3317095593,3324397363,3331028046,3331525682,3331580349,3331802213,3332642035,3332696700,3333929978,3334870005,3334920442,3335058344,3335315569,3343940221,3345496201,3350023967,3353092349,3358586999,3365687143,3366763202,3368167300,3371155980,3372842751,3373802982,3374003367,3374007861,3374013921,3374033257,3374071862,3374072315,3374075119,3374222601,3374506623,3377952754,3382868701,3384928690,3388197033,3390931348,3391051206,3391063809,3391068622,3391334282,3391402631,3391423133,3391432603,3392425741,3394879910,3395277647,3399311251,3402270417,3404440519,3414226886,3414277321,3415566709,3417045783,3417060092,3418683074,3418733517,3424453774,3431921225,3437307073,3437430868,3437705452,3444401619,3445590826,3447374472,3456431399,3458638240,3461359920,3463272868,3468986640,3469121667,3471246134,3474393156,3474446194,3476056250,3478543821,3486841411,3486906847,3489097968,3491201265,3495569706,3496705474,3497897502,3497994843,3498252682,3502149957,3504414102,3504826781,3506839508,3506948350,3508950458,3509210745,3509498189,3511959565,3512025010,3512493029,3514111400,3517669498,3518790968,3521920341,3523035738,3523862571,3524226140,3530307622,3530358057,3536335853,3536792162,3538712404,3541452460,3541507619,3542648636,3544416242,3550676375,3551025439,3553383951,3556498831,3561501051,3561585780,3565016796,3565023071,3565174365,3565227623,3565288856,3566089568,3572109810,3575114019,3577841990,3586425916,3589694483,3591020567,3592221649,3594125448,3595182758,3596128381,3602035250,3602533630,3602552275,3604829927,3607233834,3607322789,3607604079,3608554389,3610981370,3617629034,3619761411,3623812162,3629877419,3636237811,3636292476,3639577654,3639632313,3645953597,3647523178,3649784978,3653883892,3660676457,3664234276,3674197367,3675513627,3681233287,3684650455,3688377898,3689406359,3692544695,3693437133,3694959415,3703294733,3704443907,3704956777,3706490306,3709178884,3709268355,3709272958,3717182590,3718660896,3719413702,3721853564,3731122282,3734934472,3736397122,3736397691,3738359136,3744502996,3744505315,3744515994,3744516038,3745225898,3745403285,3749377655,3751498613,3752631559,3753565240,3756319792,3758308501,3758308691,3761682835,3762386667,3762488637,3763193356,3763904751,3764062969,3764739038,3769398133,3770065529,3774076759,3779092995,3780318738,3781089827,3783201212,3785420602,3786786081,3788364543,3791375542,3791430201,3791912060,3792007260,3792147146,3793208754,3794029235,3805317549,3808957225,3809652473,3811984999,3812594538,3819295903,3819351056,3821104144,3821104746,3829518367,3832811824,3833121835,3833171090,3833706374,3838812042,3843969806,3844552031,3850681433,3851222744,3851541567,3851602009,3851679807,3853676291,3855415829,3856249405,3859110665,3859972063,3862928629,3865386916,3865396334,3873108359,3873163016,3876524049,3883472548,3885986978,3888196487,3895773227,3898366596,3900605466,3900796753,3906034907,3907036333,3914330405,3916906002,3922403377,3925982068,3933039724,3936549300,3939824482,3940957272,3941201834,3941535714,3943160335,3943296300,3950173236,3955179593,3959867562,3960938237,3961299015,3961303520,3961836502,3962329360,3963273426,3966271140,3969493837,3970184201,3971378905,3972349404,3972404563,3974206923,3977375686,3977639927,3981851856,3984175284,3984369770,3984383153,3984388901,3984577838,3986753035,3987449768,3988320676,3989122328,3989124781,3989300792,3991957101,3991978776,3992246021,3993156440,3995285601,4002046206,4002059123,4002298131,4007368305,4009075902,4012314248,4014272956,4018800601,4021398623,4022152923,4023242992,4034787018,4034837957,4040007159,4040507273,4040558214,4042630615,4042667369,4044815570,4044899805,4046325025,4051504220,4051593171,4059166898,4059387372,4060969098,4060986772,4062588735,4063625944,4063736412,4064813411,4074640059,4077930265,4080197122,4081731399,4081736449,4081740860,4081761692,4082508192,4082648933,4085037592,4085499470,4085741867,4086206754,4087477773,4087973382,4087974431,4087975312,4087977920,4087977986,4087982672,4087983230,4087984585,4087984590,4087984656,4087988411,4087993231,4087993234,4087993291,4087993428,4088004545,4089941093,4090379779,4094838531,4095533224,4098180267,4104794847,4104808845,4105491350,4105500480,4109580593,4111598640,4115797781,4116207257,4116258198,4116322118,4116406345,4116912946,4122262153,4126221625,4127308650,4128209898,4128210099,4128224738,4128228031,4128452341,4131804567,4131859224,4137741343,4141029933,4142953920,4145022541,4149201544,4150566897,4151710650,4152474623,4155185738,4156445644,4157556469,4157644922,4159136925,4159401066,4159780211,4159864444,4164601660,4166043368,4168091484,4169450331,4170161097,4170579962,4170925049,4171014006,4171016671,4171029715,4172482250,4175353143,4176008925,4178981053,4184703759,4186748423,4188894668,4189635776,4190045706,4190142208,4195146068,4196943735,4199824850,4203521301,4206809827,4206944958,4207535653,4208164707,4211585807,4215346074,4215356593,4218114605,4218115138,4218132009,4219656584,4219999876,4220379359,4221957810,4222018626,4225873997,4227433758,4228171984,4228217908,4228360888,4228368741,4228368760,4231583294,4231662792,4232149414,4232629512,4234942237,4235762280,4240864861,4241320459,4241740950,4242647335,4243702915,4245105172,4246629902,4248741847,4252833472,4252840599,4254781707,4254799704,4255058051,4260594638,4261873154,4261894730,4262104449,4262374147,4262375371,4262499171,4264253465,4265048576,4267292711,4271528787,4272039260,4272350188,4272417877,4276136562,4288066094,369,54631547,68945260,76317054,90122581,107533418,134757519,142022835,149084067,159782934,169736776,205527546,244603010,255553804,262051769,263431316,265459661,284810646,289494951,371032970,373243562,374621869,387545720,391377589,415171499,415171548,415171976,418990556,418990602,425807660,435420269,461226423,483976516,501379566,531625563,553327069,590191545,595217502,649854972,668816409,678957092,680578927,714686602,715141614,717942499,720960146,720974524,720974736,720975995,725617684,744932012,793535325,806495002,817571047,823641433,857348365,862847657,871542102,874448701,877175745,893771636,914435801,931438088,937200556,1015486168,1026348750,1029964103,1030875558,1083568115,1106088318,1135523977,1206251138,1219433535,1220725895,1220852235,1220852260,1220852796,1220852957,1222628504,1230410191,1240508317,1242746690,1260212779,1282239389,1290343418,1326192098,1338160975,1340954405,1351436722,1361325259,1374669131,1374800320,1389489864,1401511709,1421711922,1452449030,1467196671,1467386990,1490648152,1493005045,1506058569,1507763651,1514073041,1515782688,1515784934,1515785058,1523142552,1526329423,1553174585,1591300266,1629584534,1641166031,1642384128,1661678914,1679178836,1679485164,1681545174,1704277516,1705410866,1705908110,1714538458,1768636249,1772526810,1818263278,1821800212,1833750850,1834601376,1834613468,1866278547,1867401367,1936236019,1945296852,1978039580,1997464432,2017904725,2055461758,2058918178,2080694907,2086814061,2089989988,2123843096,2170766397,2172738430,2174442073,2177527468,2178512614,2233637259,2246941078,2274844928,2274845447,2274845649,2279046513,2293400491,2299670458,2300280964,2300527715,2305877279,2307152224,2316307169,2322963439,2335588857,2337430377,2359562546,2360555826,2405952063,2419834458,2423179189,2436862648,2436862650,2436862651,2436862652,2436862653,2436862654,2436862655,2439178127,2460729245,2517521888,2585317679,2631335866,2632842752,2726667654,2726667661,2726667752,2726667756,2726667834,2726667995,2726668398,2737177336,2757711981,2779759639,2787445139,2796817467,2812190333,2816464305,2817592022,2826795200,2827908591,2872823135,2873905939,2876785673,2876785759,2901134565,2913059937,2924726497,2938670220,2939089089,2943360116,2945389039,3005172573,3015670621,3022308183,3050185270,3050185436,3056015384,3056015484,3071839865,3079506072,3079929644,3116612793,3164097381,3176996220,3180729164,3227651590,3234391576,3234432745,3278041418,3278041727,3278041816,3319967633,3330642108,3334769994,3354637514,3375261606,3375312977,3410106074,3423153883,3456106742,3461071037,3473412940,3486684134,3504293483,3517650814,3547292615,3571189672,3593285841,3612407497,3666061454,3666061458,3666061568,3666061577,3666061585,3666061591,3666061602,3666061610,3666061613,3666061619,3666061666,3666061672,3666061702,3666061706,3666061732,3666061760,3666061781,3666061825,3666061864,3666061891,3666061895,3666061896,3666061902,3666061903,3666061913,3666062029,3666062293,3666062299,3666062326,3666062331,3666062345,3666062357,3666062361,3666062379,3666062386,3666062390,3666062391,3666062394,3666062408,3666062418,3666062422,3666062427,3666062453,3666062517,3666062569,3666062581,3666062582,3666062586,3666062587,3666099519,3667007182,3676644409,3676644411,3676644421,3676644429,3676644442,3676644586,3676644600,3676644610,3676644643,3676644706,3676644759,3676644775,3676644800,3676644806,3676644819,3676644874,3676644887,3676644888,3676644905,3676644939,3676644953,3676644982,3676645005,3676645006,3676645021,3676645049,3676645073,3684315096,3691777760,3697941178,3708654452,3710369155,3749170769,3772863442,3793240332,3798969166,3800169971,3820675046,3829710462,3829710568,3843370951,3845152461,3847111189,3861225221,3871154340,3872238039,3916589493,3949265042,3952274701,3967179311,4020468984,4088042711,4088042763,4088043471,4098608917,4098609219,4098704176,4098704230,4098775844,4098776178,4098815877,4098816211,4126370696,4127380674,4155818428,4160021452,4179162156,4189349925,4224941776,4233200080,4259920717,4263023754,4268562148,0,0,0,17,343511425,1030334438,1035444912,1035444966,1126785220,1160516735,2496101809,2496102373,2501069285,2506938014,2613448893,2668096359,2767610756,2943255975,3483670337,3483670995,4233599295,4,989615076,1348282182,2372695675,2793429742,397,2315777,2516160,11643297,13203897,21231554,35967653,38712935,47792331,72865995,74144458,82734700,83460346,105527502,113271207,133306274,134752460,140540365,149081424,159784149,160693466,187981691,201714711,257089230,271126044,284628322,288401789,293512087,299470436,301921344,303087651,310748895,318673258,321508235,328967865,331740776,333043316,343618051,344116268,349554276,368842915,373240553,380288946,385653806,387546555,391603917,397299232,407552584,411195000,457925677,465045723,466546683,476300545,496262010,508940895,528158848,576308682,599016891,599034260,599035482,617473653,629010449,643159709,649306413,657763177,658030821,663498697,666920016,684079208,730892591,745170160,748876721,748886222,752803028,756281027,761348098,767592699,768148470,771634050,771637032,797075449,798164153,806496217,807477757,814547322,823640218,828791723,830209933,830328663,830812219,831086733,843422410,848961657,871543061,884068409,931459402,935834596,953760609,956026316,973201175,985556812,990107236,1002251210,1006286666,1015491227,1017212284,1017751931,1026349709,1027559288,1039189287,1048681185,1049173028,1069937338,1071441344,1072691903,1128950639,1139782538,1139843834,1141008431,1156523661,1160815779,1194239092,1211577197,1211637010,1222641289,1240507358,1264600767,1288872441,1321698432,1329660539,1338155660,1339210968,1373285759,1382125974,1390628516,1399578255,1399657308,1403708559,1408484449,1432456391,1433498959,1468959011,1474134153,1481167509,1481892069,1485735468,1512063165,1514478145,1519263375,1522675342,1541305645,1542981532,1553720283,1557499238,1635518266,1640297675,1644040136,1645084619,1672625515,1675268949,1675573659,1679183895,1701744405,1704282831,1705918154,1709094170,1740118996,1745197398,1746168006,1763490076,1764138250,1778504542,1804707890,1807895638,1812124962,1825087480,1827997201,1834433178,1836295865,1836721468,1855831597,1871287494,1874044309,1894472089,1911094612,1944286571,1945301911,1964668429,1992457158,2005254865,2048724462,2072914399,2073220142,2080693816,2086817070,2091822363,2116894487,2120589916,2132854800,2138833857,2149555928,2149786502,2159131792,2193556503,2203826663,2222814745,2233632200,2234478015,2266871804,2270958851,2280109123,2300684501,2320975486,2368015199,2368150205,2378859099,2402357659,2420231640,2421832104,2442099500,2445444524,2450316872,2480056360,2511017726,2535682339,2564758885,2580206998,2634443356,2655498207,2659744440,2664398480,2665288759,2683912382,2685363948,2697995386,2705244823,2707054618,2731911143,2746095604,2750223108,2751457001,2757038073,2757714990,2757832374,2763102979,2764615893,2768173321,2769632227,2788021838,2808290141,2813866328,2823576784,2832963785,2833300206,2839929991,2842899363,2855442276,2861724882,2873826097,2875201553,2889802328,2894057006,2902844704,2920776771,2938675535,2940382413,2940687092,2942499160,2976147113,2999699036,3012594373,3014878073,3021947486,3024482894,3027886950,3033143700,3041972547,3043054392,3061104959,3068421535,3068451149,3073259213,3076287128,3092740204,3097180103,3126517186,3134714387,3141033517,3153726305,3161099645,3164570023,3168616586,3178721795,3185964212,3199657339,3213212569,3227558031,3234959359,3242752110,3245911312,3250117513,3255207552,3263028169,3267416959,3271443733,3276067803,3303582289,3303582897,3303582994,3303614961,3327283712,3336973745,3345667381,3346748653,3358811093,3365430328,3371744816,3393399711,3418876414,3451234301,3462047339,3466186248,3487461167,3489942689,3511023565,3528253833,3577832733,3577832874,3579570991,3581968529,3587382024,3594263141,3597175734,3609198260,3620670314,3644061745,3686687805,3699471696,3704450806,3719669200,3724302375,3732631655,3737867596,3737869333,3737882439,3743824089,3748450386,3755463030,3762725071,3780090414,3786960458,3789613664,3804622433,3829814476,3834232417,3836376093,3843018675,3847110230,3849573984,3888536498,3895950835,3927045026,3930866393,3974478460,3989861270,3990612749,3994206764,3994206767,4003176468,4013705057,4040130402,4055956024,4064081091,4069710253,4076793042,4078153021,4095557691,4103392506,4105790268,4130682685,4131077260,4150503708,4155492542,4165042016,4186885299,4188349987,4190709408,4193373567,4197651626,4198443983,4202984206,4210375752,4212069506,4216891535,4228991204,4251429164,4263509307,4279717352,0,0,0,2,898804372,2420122849,0,184,14034108,23188555,69988957,176179919,181602757,234878220,241015393,282017655,286917352,298380305,303225044,333040682,436746473,437068413,449019336,449464240,451920903,472319354,495318858,500388520,512606097,527005648,554651161,561857715,570474602,588675343,615779940,680838102,688229624,722503086,733631603,760863762,768579191,769161927,777931472,804592434,820388681,834351359,838060561,871806992,907959623,917609192,921095799,922653385,936253712,951807472,976944213,1057868108,1061438860,1097991931,1099387701,1118780323,1129127307,1134058690,1149298066,1173449599,1188365042,1221482277,1242510922,1244344576,1249042959,1256956692,1322375458,1340682260,1389219463,1420709285,1468300758,1544881072,1554252850,1557974723,1564485910,1566036640,1637844009,1641584834,1668922875,1697481902,1700564263,1779722906,1817679755,1844196310,1862443027,1863425670,1874439438,1918635827,1942164974,1953292144,1996832610,2005075462,2171493616,2174172768,2200270403,2224853335,2232538822,2253530761,2271804726,2307427283,2314778321,2325064176,2347507979,2356867634,2422267260,2435625787,2442761119,2454582508,2471444403,2478294033,2487762682,2505529649,2513007594,2514973059,2523046044,2645305307,2697781106,2700249759,2713921343,2858583336,2869381059,2875883974,2877426354,2906087318,2940183875,2941854634,2983778787,2991311078,3020661286,3033841873,3036938981,3061233249,3088839886,3090851000,3116880000,3160125774,3173697968,3175256934,3193365922,3248874150,3262696949,3293334302,3294129343,3298593000,3336190368,3342381501,3344449059,3367460946,3387371732,3391640312,3415133140,3415553447,3416872467,3486599559,3505446608,3554833241,3594782899,3615198865,3629910769,3642670614,3643744473,3654513786,3675702820,3697030868,3710380917,3779661543,3795518186,3803370028,3804920752,3840174405,3861583079,3867650596,3894082090,3900359633,3928753122,3942119031,3951224511,4009634354,4063453845,4065646590,4079144597,4163056211,4180315949,4196008531,4241738188,4254148468,4265459019,4273759132,0,0,0,0,0,5,1148034389,1373602048,2160920720,2391490885,2722440867]);
diff --git a/client/node_modules/tldts-experimental/src/packed-hashes.ts b/client/node_modules/tldts-experimental/src/packed-hashes.ts
new file mode 100644
index 0000000..5987b36
--- /dev/null
+++ b/client/node_modules/tldts-experimental/src/packed-hashes.ts
@@ -0,0 +1,278 @@
+import {
+ fastPathLookup,
+ IPublicSuffix,
+ ISuffixLookupOptions,
+} from 'tldts-core';
+import packed from './data/hashes';
+
+/**
+ * Find `elt` in `arr` between indices `start` (included) and `end` (excluded)
+ * using a binary search algorithm.
+ */
+function binSearch(
+ arr: Uint32Array,
+ elt: number,
+ start: number,
+ end: number,
+): boolean {
+ if (start >= end) {
+ return false;
+ }
+
+ let low = start;
+ let high = end - 1;
+
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const midVal = arr[mid]!;
+ if (midVal < elt) {
+ low = mid + 1;
+ } else if (midVal > elt) {
+ high = mid - 1;
+ } else {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// Packed hash algorithm makes use of a rolling hash to lookup suffixes. To
+// avoid having to allocate an array to store them at every invocation, we
+// create one global one that can be reused.
+const BUFFER = new Uint32Array(20);
+
+/**
+ * Iterate on hashes of labels from `hostname` backward (from last label to
+ * first label), stopping after `maximumNumberOfLabels` have been extracted and
+ * calling `cb` on each of them.
+ *
+ * The `maximumNumberOfLabels` argument is typically used to specify the number
+ * of labels seen in the longest public suffix. We do not need to check further
+ * in very long hostnames.
+ */
+function hashHostnameLabelsBackward(
+ hostname: string,
+ maximumNumberOfLabels: number,
+): number {
+ let hash = 5381;
+ let index = 0;
+
+ // Compute hash backward, label per label
+ for (let i = hostname.length - 1; i >= 0; i -= 1) {
+ const code = hostname.charCodeAt(i);
+ // Process label
+ if (code === 46 /* '.' */) {
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = i + 1;
+ index += 1;
+
+ if (index === maximumNumberOfLabels) {
+ return index;
+ }
+ }
+
+ // Update hash
+ hash = (hash * 33) ^ code;
+ }
+
+ // Let's not forget about last label
+ BUFFER[index << 1] = hash >>> 0;
+ BUFFER[(index << 1) + 1] = 0;
+ index += 1;
+
+ return index;
+}
+
+const enum Result {
+ NO_MATCH = 0,
+ ICANN_MATCH = 1,
+ PRIVATE_MATCH = 2,
+ EXCEPTION_MATCH = 4,
+ NORMAL_MATCH = 8,
+ WILDCARD_MATCH = 16,
+}
+
+/**
+ * Perform a public suffix lookup for `hostname` using the packed hashes
+ * data-structure. The `options` allows to specify if ICANN/PRIVATE sections
+ * should be considered. By default, both are.
+ *
+ */
+export default function suffixLookup(
+ hostname: string,
+ options: ISuffixLookupOptions,
+ out: IPublicSuffix,
+): void {
+ if (fastPathLookup(hostname, options, out)) {
+ return;
+ }
+
+ const { allowIcannDomains, allowPrivateDomains } = options;
+
+ // Keep track of longest match
+ let matchIndex = -1;
+ let matchKind = Result.NO_MATCH;
+ let matchLabels = 0; // Keep track of number of labels currently matched
+
+ // Index in the packed array data-structure
+ let index = 1;
+
+ const numberOfHashes = hashHostnameLabelsBackward(
+ hostname,
+ packed[0]! /* maximumNumberOfLabels */,
+ );
+
+ for (let label = 0; label < numberOfHashes; label += 1) {
+ const hash = BUFFER[label << 1]!;
+ const labelStart = BUFFER[(label << 1) + 1]!;
+ // For each label, matching proceeds in the following way:
+ //
+ // 1. check exceptions
+ // 2. check wildcards
+ // 3. check normal rules
+ //
+ // For each of these, we also perform the lookup in two parts, once for
+ // the ICANN section and one for the PRIVATE section. Both of which are
+ // optional and can be enabled/disabled using the `options` argument.
+ //
+ // We start with exceptions because if an exception is found, we do not
+ // need to continue matching wildcards or normal rules; the exception will
+ // always have priority.
+ //
+ // Similarly, if we find a wildcard match, we do not need to check the
+ // rules for the same label as the wildcard match is always longer (one
+ // more label is matched).
+ //
+ // **WARNING**: the structure of this code follows exactly the structure
+ // of the packed data structure as create in ./bin/builders/hashes.js
+
+ let match = Result.NO_MATCH;
+
+ // ========================================================================
+ // Lookup exceptions
+ // ========================================================================
+ // ICANN
+ if (allowIcannDomains) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.ICANN_MATCH | Result.EXCEPTION_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // PRIVATE
+ if (allowPrivateDomains && match === Result.NO_MATCH) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.PRIVATE_MATCH | Result.EXCEPTION_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // ========================================================================
+ // Lookup wildcards
+ // ========================================================================
+ // ICANN
+ if (
+ allowIcannDomains &&
+ match === Result.NO_MATCH &&
+ (matchKind & Result.EXCEPTION_MATCH) === 0
+ ) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.WILDCARD_MATCH | Result.ICANN_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // PRIVATE
+ if (
+ allowPrivateDomains &&
+ match === Result.NO_MATCH &&
+ (matchKind & Result.EXCEPTION_MATCH) === 0
+ ) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.WILDCARD_MATCH | Result.PRIVATE_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // ========================================================================
+ // Lookup rules
+ // ========================================================================
+ // ICANN
+ if (
+ allowIcannDomains &&
+ match === Result.NO_MATCH &&
+ (matchKind & Result.EXCEPTION_MATCH) === 0 &&
+ matchLabels <= label
+ ) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.NORMAL_MATCH | Result.ICANN_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // PRIVATE
+ if (
+ allowPrivateDomains &&
+ match === Result.NO_MATCH &&
+ (matchKind & Result.EXCEPTION_MATCH) === 0 &&
+ matchLabels <= label
+ ) {
+ match = binSearch(packed, hash, index + 1, index + packed[index]! + 1)
+ ? Result.NORMAL_MATCH | Result.PRIVATE_MATCH
+ : Result.NO_MATCH;
+ }
+ index += packed[index]! + 1;
+
+ // If we found a match, the longest match that is being tracked for this
+ // hostname. We need to remember which kind of match it was (exception,
+ // wildcard, normal rule), the index where the suffix starts in `hostname`
+ // as well as the number of labels contained in this suffix (this is
+ // important to make sure that we always keep the longest match if there
+ // are both a wildcard and a normal rule matching).
+ if (match !== Result.NO_MATCH) {
+ matchKind = match;
+ matchLabels = label + ((match & Result.WILDCARD_MATCH) !== 0 ? 2 : 1);
+ matchIndex = labelStart;
+ }
+ }
+
+ out.isIcann = (matchKind & Result.ICANN_MATCH) !== 0;
+ out.isPrivate = (matchKind & Result.PRIVATE_MATCH) !== 0;
+
+ // No match found
+ if (matchIndex === -1) {
+ out.publicSuffix =
+ numberOfHashes === 1 ? hostname : hostname.slice(BUFFER[1]);
+ return;
+ }
+
+ // If match is an exception, this means that we need to count less label.
+ // For example, exception rule !foo.com would yield suffix 'com', so we need
+ // to locate the next dot and slice from there.
+ if ((matchKind & Result.EXCEPTION_MATCH) !== 0) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 2) << 1) + 1]);
+ return;
+ }
+
+ // If match is a wildcard, we need to match one more label. If wildcard rule
+ // was *.com, we would have stored only 'com' in the packed structure and we
+ // need to take one extra label on the left.
+ if ((matchKind & Result.WILDCARD_MATCH) !== 0) {
+ if (matchLabels < numberOfHashes) {
+ out.publicSuffix = hostname.slice(BUFFER[((matchLabels - 1) << 1) + 1]);
+ return;
+ }
+
+ const parts = hostname.split('.');
+ while (parts.length > matchLabels) {
+ parts.shift();
+ }
+ out.publicSuffix = parts.join('.');
+ return;
+ }
+
+ // if ((matchKind & Result.NORMAL_MATCH) !== 0)
+ // For normal match, we just slice the hostname at the beginning of suffix.
+ out.publicSuffix = hostname.slice(matchIndex);
+}
diff --git a/client/node_modules/tr46/.npmignore b/client/node_modules/tr46/.npmignore
new file mode 100644
index 0000000..96e9161
--- /dev/null
+++ b/client/node_modules/tr46/.npmignore
@@ -0,0 +1,4 @@
+scripts/
+test/
+
+!lib/mapping_table.json
diff --git a/client/node_modules/tr46/index.js b/client/node_modules/tr46/index.js
new file mode 100644
index 0000000..9ce12ca
--- /dev/null
+++ b/client/node_modules/tr46/index.js
@@ -0,0 +1,193 @@
+"use strict";
+
+var punycode = require("punycode");
+var mappingTable = require("./lib/mappingTable.json");
+
+var PROCESSING_OPTIONS = {
+ TRANSITIONAL: 0,
+ NONTRANSITIONAL: 1
+};
+
+function normalize(str) { // fix bug in v8
+ return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
+}
+
+function findStatus(val) {
+ var start = 0;
+ var end = mappingTable.length - 1;
+
+ while (start <= end) {
+ var mid = Math.floor((start + end) / 2);
+
+ var target = mappingTable[mid];
+ if (target[0][0] <= val && target[0][1] >= val) {
+ return target;
+ } else if (target[0][0] > val) {
+ end = mid - 1;
+ } else {
+ start = mid + 1;
+ }
+ }
+
+ return null;
+}
+
+var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+
+function countSymbols(string) {
+ return string
+ // replace every surrogate pair with a BMP symbol
+ .replace(regexAstralSymbols, '_')
+ // then get the length
+ .length;
+}
+
+function mapChars(domain_name, useSTD3, processing_option) {
+ var hasError = false;
+ var processed = "";
+
+ var len = countSymbols(domain_name);
+ for (var i = 0; i < len; ++i) {
+ var codePoint = domain_name.codePointAt(i);
+ var status = findStatus(codePoint);
+
+ switch (status[1]) {
+ case "disallowed":
+ hasError = true;
+ processed += String.fromCodePoint(codePoint);
+ break;
+ case "ignored":
+ break;
+ case "mapped":
+ processed += String.fromCodePoint.apply(String, status[2]);
+ break;
+ case "deviation":
+ if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
+ processed += String.fromCodePoint.apply(String, status[2]);
+ } else {
+ processed += String.fromCodePoint(codePoint);
+ }
+ break;
+ case "valid":
+ processed += String.fromCodePoint(codePoint);
+ break;
+ case "disallowed_STD3_mapped":
+ if (useSTD3) {
+ hasError = true;
+ processed += String.fromCodePoint(codePoint);
+ } else {
+ processed += String.fromCodePoint.apply(String, status[2]);
+ }
+ break;
+ case "disallowed_STD3_valid":
+ if (useSTD3) {
+ hasError = true;
+ }
+
+ processed += String.fromCodePoint(codePoint);
+ break;
+ }
+ }
+
+ return {
+ string: processed,
+ error: hasError
+ };
+}
+
+var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
+
+function validateLabel(label, processing_option) {
+ if (label.substr(0, 4) === "xn--") {
+ label = punycode.toUnicode(label);
+ processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
+ }
+
+ var error = false;
+
+ if (normalize(label) !== label ||
+ (label[3] === "-" && label[4] === "-") ||
+ label[0] === "-" || label[label.length - 1] === "-" ||
+ label.indexOf(".") !== -1 ||
+ label.search(combiningMarksRegex) === 0) {
+ error = true;
+ }
+
+ var len = countSymbols(label);
+ for (var i = 0; i < len; ++i) {
+ var status = findStatus(label.codePointAt(i));
+ if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
+ (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
+ status[1] !== "valid" && status[1] !== "deviation")) {
+ error = true;
+ break;
+ }
+ }
+
+ return {
+ label: label,
+ error: error
+ };
+}
+
+function processing(domain_name, useSTD3, processing_option) {
+ var result = mapChars(domain_name, useSTD3, processing_option);
+ result.string = normalize(result.string);
+
+ var labels = result.string.split(".");
+ for (var i = 0; i < labels.length; ++i) {
+ try {
+ var validation = validateLabel(labels[i]);
+ labels[i] = validation.label;
+ result.error = result.error || validation.error;
+ } catch(e) {
+ result.error = true;
+ }
+ }
+
+ return {
+ string: labels.join("."),
+ error: result.error
+ };
+}
+
+module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
+ var result = processing(domain_name, useSTD3, processing_option);
+ var labels = result.string.split(".");
+ labels = labels.map(function(l) {
+ try {
+ return punycode.toASCII(l);
+ } catch(e) {
+ result.error = true;
+ return l;
+ }
+ });
+
+ if (verifyDnsLength) {
+ var total = labels.slice(0, labels.length - 1).join(".").length;
+ if (total.length > 253 || total.length === 0) {
+ result.error = true;
+ }
+
+ for (var i=0; i < labels.length; ++i) {
+ if (labels.length > 63 || labels.length === 0) {
+ result.error = true;
+ break;
+ }
+ }
+ }
+
+ if (result.error) return null;
+ return labels.join(".");
+};
+
+module.exports.toUnicode = function(domain_name, useSTD3) {
+ var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
+
+ return {
+ domain: result.string,
+ error: result.error
+ };
+};
+
+module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
diff --git a/client/node_modules/tr46/lib/.gitkeep b/client/node_modules/tr46/lib/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/client/node_modules/tr46/lib/.gitkeep
diff --git a/client/node_modules/tr46/lib/mappingTable.json b/client/node_modules/tr46/lib/mappingTable.json
new file mode 100644
index 0000000..89cf19a
--- /dev/null
+++ b/client/node_modules/tr46/lib/mappingTable.json
@@ -0,0 +1 @@
+[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]] \ No newline at end of file
diff --git a/client/node_modules/tr46/package.json b/client/node_modules/tr46/package.json
new file mode 100644
index 0000000..b6826da
--- /dev/null
+++ b/client/node_modules/tr46/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "tr46",
+ "version": "0.0.3",
+ "description": "An implementation of the Unicode TR46 spec",
+ "main": "index.js",
+ "scripts": {
+ "test": "mocha",
+ "pretest": "node scripts/getLatestUnicodeTests.js",
+ "prepublish": "node scripts/generateMappingTable.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Sebmaster/tr46.js.git"
+ },
+ "keywords": [
+ "unicode",
+ "tr46",
+ "url",
+ "whatwg"
+ ],
+ "author": "Sebastian Mayr <npm@smayr.name>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/Sebmaster/tr46.js/issues"
+ },
+ "homepage": "https://github.com/Sebmaster/tr46.js#readme",
+ "devDependencies": {
+ "mocha": "^2.2.5",
+ "request": "^2.57.0"
+ }
+}
diff --git a/client/node_modules/type-fest/index.d.ts b/client/node_modules/type-fest/index.d.ts
new file mode 100644
index 0000000..014a504
--- /dev/null
+++ b/client/node_modules/type-fest/index.d.ts
@@ -0,0 +1,29 @@
+// Basic
+export * from './source/basic';
+
+// Utilities
+export {Except} from './source/except';
+export {Mutable} from './source/mutable';
+export {Merge} from './source/merge';
+export {MergeExclusive} from './source/merge-exclusive';
+export {RequireAtLeastOne} from './source/require-at-least-one';
+export {RequireExactlyOne} from './source/require-exactly-one';
+export {PartialDeep} from './source/partial-deep';
+export {ReadonlyDeep} from './source/readonly-deep';
+export {LiteralUnion} from './source/literal-union';
+export {Promisable} from './source/promisable';
+export {Opaque} from './source/opaque';
+export {SetOptional} from './source/set-optional';
+export {SetRequired} from './source/set-required';
+export {ValueOf} from './source/value-of';
+export {PromiseValue} from './source/promise-value';
+export {AsyncReturnType} from './source/async-return-type';
+export {ConditionalExcept} from './source/conditional-except';
+export {ConditionalKeys} from './source/conditional-keys';
+export {ConditionalPick} from './source/conditional-pick';
+export {UnionToIntersection} from './source/union-to-intersection';
+export {Stringified} from './source/stringified';
+
+// Miscellaneous
+export {PackageJson} from './source/package-json';
+export {TsConfigJson} from './source/tsconfig-json';
diff --git a/client/node_modules/type-fest/license b/client/node_modules/type-fest/license
new file mode 100644
index 0000000..3e4c85a
--- /dev/null
+++ b/client/node_modules/type-fest/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https:/sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/type-fest/package.json b/client/node_modules/type-fest/package.json
new file mode 100644
index 0000000..2d347a2
--- /dev/null
+++ b/client/node_modules/type-fest/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "type-fest",
+ "version": "0.13.1",
+ "description": "A collection of essential TypeScript types",
+ "license": "(MIT OR CC0-1.0)",
+ "repository": "sindresorhus/type-fest",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && tsd"
+ },
+ "files": [
+ "index.d.ts",
+ "source"
+ ],
+ "keywords": [
+ "typescript",
+ "ts",
+ "types",
+ "utility",
+ "util",
+ "utilities",
+ "omit",
+ "merge",
+ "json"
+ ],
+ "devDependencies": {
+ "tsd": "^0.11.0",
+ "xo": "^0.28.2"
+ },
+ "types": "index.d.ts",
+ "xo": {
+ "rules": {
+ "@typescript-eslint/indent": "off",
+ "func-call-spacing": "off"
+ }
+ }
+}
diff --git a/client/node_modules/type-fest/readme.md b/client/node_modules/type-fest/readme.md
new file mode 100644
index 0000000..a7e684d
--- /dev/null
+++ b/client/node_modules/type-fest/readme.md
@@ -0,0 +1,642 @@
+<div align="center">
+ <br>
+ <br>
+ <img src="media/logo.svg" alt="type-fest" height="300">
+ <br>
+ <br>
+ <b>A collection of essential TypeScript types</b>
+ <br>
+ <hr>
+</div>
+<br>
+<br>
+
+[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest)
+[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
+<!-- Commented out until they actually show anything
+[![npm dependents](https://badgen.net/npm/dependents/type-fest)](https://www.npmjs.com/package/type-fest?activeTab=dependents) [![npm downloads](https://badgen.net/npm/dt/type-fest)](https://www.npmjs.com/package/type-fest)
+-->
+
+Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
+
+Either add this package as a dependency or copy-paste the needed types. No credit required. 👌
+
+PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first.
+
+## Install
+
+```
+$ npm install type-fest
+```
+
+*Requires TypeScript >=3.2*
+
+## Usage
+
+```ts
+import {Except} from 'type-fest';
+
+type Foo = {
+ unicorn: string;
+ rainbow: boolean;
+};
+
+type FooWithoutRainbow = Except<Foo, 'rainbow'>;
+//=> {unicorn: string}
+```
+
+## API
+
+Click the type names for complete docs.
+
+### Basic
+
+- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
+- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
+- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
+- [`JsonObject`](source/basic.d.ts) - Matches a JSON object.
+- [`JsonArray`](source/basic.d.ts) - Matches a JSON array.
+- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value.
+- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
+
+### Utilities
+
+- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type).
+- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` keys into a mutable object. The inverse of `Readonly<T>`.
+- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type.
+- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive keys.
+- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given keys.
+- [`RequireExactlyOne`](source/require-exactly-one.d.ts) - Create a type that requires exactly a single key of the given keys and disallows more.
+- [`PartialDeep`](source/partial-deep.d.ts) - Create a deeply optional version of another type. Use [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) if you only need one level deep.
+- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of an `object`/`Map`/`Set`/`Array` type. Use [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) if you only need one level deep.
+- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729).
+- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`.
+- [`Opaque`](source/opaque.d.ts) - Create an [opaque type](https://codemix.com/opaque-types-in-javascript/).
+- [`SetOptional`](source/set-optional.d.ts) - Create a type that makes the given keys optional.
+- [`SetRequired`](source/set-required.d.ts) - Create a type that makes the given keys required.
+- [`ValueOf`](source/value-of.d.ts) - Create a union of the given object's values, and optionally specify which keys to get the values from.
+- [`PromiseValue`](source/promise-value.d.ts) - Returns the type that is wrapped inside a `Promise`.
+- [`AsyncReturnType`](source/async-return-type.d.ts) - Unwrap the return type of a function that returns a `Promise`.
+- [`ConditionalKeys`](source/conditional-keys.d.ts) - Extract keys from a shape where values extend the given `Condition` type.
+- [`ConditionalPick`](source/conditional-pick.d.ts) - Like `Pick` except it selects properties from a shape where the values extend the given `Condition` type.
+- [`ConditionalExcept`](source/conditional-except.d.ts) - Like `Omit` except it removes properties from a shape where the values extend the given `Condition` type.
+- [`UnionToIntersection`](source/union-to-intersection.d.ts) - Convert a union type to an intersection type.
+- [`Stringified`](source/stringified.d.ts) - Create a type with the keys of the given type changed to `string` type.
+
+### Miscellaneous
+
+- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file).
+- [`TsConfigJson`](source/tsconfig-json.d.ts) - Type for [TypeScript's `tsconfig.json` file](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) (TypeScript 3.7).
+
+## Declined types
+
+*If we decline a type addition, we will make sure to document the better solution here.*
+
+- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.
+- [`Dictionary`](https://github.com/sindresorhus/type-fest/issues/33) - You only save a few characters (`Dictionary<number>` vs `Record<string, number>`) from [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434), which is more flexible and well-known. Also, you shouldn't use an object as a dictionary. We have `Map` in JavaScript now.
+- [`SubType`](https://github.com/sindresorhus/type-fest/issues/22) - The type is powerful, but lacks good use-cases and is prone to misuse.
+- [`ExtractProperties` and `ExtractMethods`](https://github.com/sindresorhus/type-fest/pull/4) - The types violate the single responsibility principle. Instead, refine your types into more granular type hierarchies.
+
+## Tips
+
+### Built-in types
+
+There are many advanced types most users don't know about.
+
+- [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://www.typescriptlang.org/play/#code/JYOwLgpgTgZghgYwgAgHIHsAmEDC6QzADmyA3gLABQyycADnanALYQBcyAzmFKEQNxUaddFDAcQAV2YAjaIMoBfKlQQAbOJ05osEAIIMAQpOBrsUMkOR1eANziRkCfISKSoD4Pg4ZseAsTIALyW1DS0DEysHADkvvoMMQA0VsKi4sgAzAAMuVaKClY2wPaOknSYDrguADwA0sgQAB6QIJjaANYQAJ7oMDp+LsQAfAAUXd0cdUnI9mo+uv6uANp1ALoAlKHhyGAAFsCcAHTOAW4eYF4gyxNrwbNwago0ypRWp66jH8QcAApwYmAjxq8SWIy2FDCNDA3ToKFBQyIdR69wmfQG1TOhShyBgomQX3w3GQE2Q6IA8jIAFYQBBgI4TTiEs5bTQYsFInrLTbbHZOIlgZDlSqQABqj0kKBC3yINx6a2xfOQwH6o2FVXFaklwSCIUkbQghBAEEwENSfNOlykEGefNe5uhB2O6sgS3GPRmLogmslG1tLxUOKgEDA7hAuydtteryAA)
+
+ ```ts
+ interface NodeConfig {
+ appName: string;
+ port: number;
+ }
+
+ class NodeAppBuilder {
+ private configuration: NodeConfig = {
+ appName: 'NodeApp',
+ port: 3000
+ };
+
+ private updateConfig<Key extends keyof NodeConfig>(key: Key, value: NodeConfig[Key]) {
+ this.configuration[key] = value;
+ }
+
+ config(config: Partial<NodeConfig>) {
+ type NodeConfigKey = keyof NodeConfig;
+
+ for (const key of Object.keys(config) as NodeConfigKey[]) {
+ const updateValue = config[key];
+
+ if (updateValue === undefined) {
+ continue;
+ }
+
+ this.updateConfig(key, updateValue);
+ }
+
+ return this;
+ }
+ }
+
+ // `Partial<NodeConfig>`` allows us to provide only a part of the
+ // NodeConfig interface.
+ new NodeAppBuilder().config({appName: 'ToDoApp'});
+ ```
+ </details>
+
+- [`Required<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgGED21VQGJZwC2wA3gFCjXAzFJgA2A-AFzADOUckA5gNxUaIYjA4ckvGG07c+g6gF8KQkAgCuEFFDA5O6gEbEwUbLm2ESwABQIixACJIoSdgCUYAR3Vg4MACYAPGYuFvYAfACU5Ko0APRxwADKMBD+wFAAFuh2Vv7OSBlYGdmc8ABu8LHKsRyGxqY4oQT21pTCIHQMjOwA5DAAHgACxAAOjDAAdChYxL0ANLHUouKSMH0AEmAAhJhY6ozpAJ77GTCMjMCiV0ToSAb7UJPPC9WRgrEJwAAqR6MwSRQPFGUFocDgRHYxnEfGAowh-zgUCOwF6KwkUl6tXqJhCeEsxDaS1AXSYfUGI3GUxmc0WSneQA)
+
+ ```ts
+ interface ContactForm {
+ email?: string;
+ message?: string;
+ }
+
+ function submitContactForm(formData: Required<ContactForm>) {
+ // Send the form data to the server.
+ }
+
+ submitContactForm({
+ email: 'ex@mple.com',
+ message: 'Hi! Could you tell me more about…',
+ });
+
+ // TypeScript error: missing property 'message'
+ submitContactForm({
+ email: 'ex@mple.com',
+ });
+ ```
+ </details>
+
+- [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4UwOwVwW2AZA9gc3mAbmANsA3gKFCOAHkAzMgGkOJABEwAjKZa2kAUQCcvEu32AMQCGAF2FYBIAL4BufDRABLCKLBcywgMZgEKZOoDCiCGSXI8i4hGEwwALmABnUVxXJ57YFgzZHSVF8sT1BpBSItLGEnJz1kAy5LLy0TM2RHACUwYQATEywATwAeAITjU3MAPnkrCJMXLigtUT4AClxgGztKbyDgaX99I1TzAEokr1BRAAslJwA6FIqLAF48TtswHp9MHDla9hJGACswZvmyLjAwAC8wVpm5xZHkUZDaMKIwqyWXYCW0oN4sNlsA1h0ug5gAByACyBQAggAHJHQ7ZBIFoXbzBjMCz7OoQP5YIaJNYQMAAdziCVaALGNSIAHomcAACoFJFgADKWjcSNEwG4vC4ji0wggEEQguiTnMEGALWAV1yAFp8gVgEjeFyuKICvMrCTgVxnst5jtsGC4ljsPNhXxGaAWcAAOq6YRXYDCRg+RWIcA5JSC+kWdCepQ+v3RYCU3RInzRMCGwlpC19NYBW1Ye08R1AA)
+
+ ```ts
+ enum LogLevel {
+ Off,
+ Debug,
+ Error,
+ Fatal
+ };
+
+ interface LoggerConfig {
+ name: string;
+ level: LogLevel;
+ }
+
+ class Logger {
+ config: Readonly<LoggerConfig>;
+
+ constructor({name, level}: LoggerConfig) {
+ this.config = {name, level};
+ Object.freeze(this.config);
+ }
+ }
+
+ const config: LoggerConfig = {
+ name: 'MyApp',
+ level: LogLevel.Debug
+ };
+
+ const logger = new Logger(config);
+
+ // TypeScript Error: cannot assign to read-only property.
+ logger.config.level = LogLevel.Error;
+
+ // We are able to edit config variable as we please.
+ config.level = LogLevel.Error;
+ ```
+ </details>
+
+- [`Pick<T, K>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgEE5TCgNugN4BQoZwOUBAXMAM5RyQDmA3KeSFABYCuAtgCMISMHloMmENh04oA9tBjQJjFuzIBfYrOAB6PcADCcGElh1gEGAHcKATwAO6ebyjB5CTNlwFwSxFR0BX5HeToYABNgBDh5fm8cfBg6AHIKG3ldA2BHOOcfFNpUygJ0pAhokr4hETFUgDpswywkggAFUwA3MFtgAF5gQgowKhhVKTYKGuFRcXo1aVZgbTIoJ3RW3xhOmB6+wfbcAGsAHi3kgBpgEtGy4AAfG54BWfqAPnZm4AAlZUj4MAkMA8GAGB4vEgfMlLLw6CwPBA8PYRmMgZVgAC6CgmI4cIommQELwICh8RBgKZKvALh1ur0bHQABR5PYMui0Wk7em2ADaAF0AJS0AASABUALIAGQAogR+Mp3CROCAFBBwVC2ikBpj5CgBIqGjizLA5TAFdAmalImAuqlBRoVQh5HBgEy1eDWfs7J5cjzGYKhroVfpDEhHM4MV6GRR5NN0JrtnRg6BVirTFBeHAKYmYY6QNpdB73LmCJZBlSAXAubtvczeSmQMNSuMbmKNgBlHFgPEUNwusBIPAAQlS1xetTmxT0SDoESgdD0C4aACtHMwxytLrohawgA)
+
+ ```ts
+ interface Article {
+ title: string;
+ thumbnail: string;
+ content: string;
+ }
+
+ // Creates new type out of the `Article` interface composed
+ // from the Articles' two properties: `title` and `thumbnail`.
+ // `ArticlePreview = {title: string; thumbnail: string}`
+ type ArticlePreview = Pick<Article, 'title' | 'thumbnail'>;
+
+ // Render a list of articles using only title and description.
+ function renderArticlePreviews(previews: ArticlePreview[]): HTMLElement {
+ const articles = document.createElement('div');
+
+ for (const preview of previews) {
+ // Append preview to the articles.
+ }
+
+ return articles;
+ }
+
+ const articles = renderArticlePreviews([
+ {
+ title: 'TypeScript tutorial!',
+ thumbnail: '/assets/ts.jpg'
+ }
+ ]);
+ ```
+ </details>
+
+- [`Record<K, T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4ejYAUHsGcCWAXBMB2dgwGbAKYC2ADgDYwCeeemCaWArgE7ADGMxAhmuQHQBQoYEnJE8wALKEARnkaxEKdMAC8wAOS0kstGuAAfdQBM8ANzxlRjXQbVaWACwC0JPB0NqA3HwGgIwAJJoWozYHCxixnAsjAhStADmwESMMJYo1Fi4HMCIaPEu+MRklHj8gpqyoeHAAKJFFFTAAN4+giDYCIxwSAByHAR4AFw5SDF5Xm2gJBzdfQPD3WPxE5PAlBxdAPLYNQAelgh4aOHDaPQEMowrIAC+3oJ+AMKMrlrAXFhSAFZ4LEhC9g4-0BmA4JBISXgiCkBQABpILrJ5MhUGhYcATGD6Bk4Hh-jNgABrPDkOBlXyQAAq9ngYmJpOAAHcEOCRjAXqwYODfoo6DhakUSph+Uh7GI4P0xER4Cj0OSQGwMP8tP1hgAlX7swwAHgRl2RvIANALSA08ABtAC6AD4VM1Wm0Kow0MMrYaHYJjGYLLJXZb3at1HYnC43Go-QHQDcvA6-JsmEJXARgCDgMYWAhjIYhDAU+YiMAAFIwex0ZmilMITCGF79TLAGRsAgJYAAZRwSEZGzEABFTOZUrJ5Yn+jwnWgeER6HB7AAKJrADpdXqS4ZqYultTG6azVfqHswPBbtauLY7fayQ7HIbAAAMwBuAEoYw9IBq2Ixs9h2eFMOQYPQObALQKJgggABeYhghCIpikkKRpOQRIknAsZUiIeCttECBEP8NSMCkjDDAARMGziuIYxHwYOjDCMBmDNnAuTxA6irdCOBB1Lh5Dqpqn66tISIykawBnOCtqqC0gbjqc9DgpGkxegOliyfJDrRkAA)
+
+ ```ts
+ // Positions of employees in our company.
+ type MemberPosition = 'intern' | 'developer' | 'tech-lead';
+
+ // Interface describing properties of a single employee.
+ interface Employee {
+ firstName: string;
+ lastName: string;
+ yearsOfExperience: number;
+ }
+
+ // Create an object that has all possible `MemberPosition` values set as keys.
+ // Those keys will store a collection of Employees of the same position.
+ const team: Record<MemberPosition, Employee[]> = {
+ intern: [],
+ developer: [],
+ 'tech-lead': [],
+ };
+
+ // Our team has decided to help John with his dream of becoming Software Developer.
+ team.intern.push({
+ firstName: 'John',
+ lastName: 'Doe',
+ yearsOfExperience: 0
+ });
+
+ // `Record` forces you to initialize all of the property keys.
+ // TypeScript Error: "tech-lead" property is missing
+ const teamEmpty: Record<MemberPosition, null> = {
+ intern: null,
+ developer: null,
+ };
+ ```
+ </details>
+
+- [`Exclude<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgMrQG7QMIHsQzADmyA3gFDLIAOuUYAXMiAK4A2byAPsgM5hRQJHqwC2AI2gBucgF9y5MAE9qKAEoQAjiwj8AEnBAATNtGQBeZAAooWphu26wAGmS3e93bRC8IASgsAPmRDJRlyAHoI5ABRAA8ENhYjFFYOZGVVZBgoXFFkAAM0zh5+QRBhZhYJaAKAOkjogEkQZAQ4X2QAdwALCFbaemRgXmQtFjhOMFwq9K6ULuB0lk6U+HYwZAxJnQaYFhAEMGB8ZCIIMAAFOjAANR2IK0HGWISklIAedCgsKDwCYgAbQA5M9gQBdVzFQJ+JhiSRQMiUYYwayZCC4VHPCzmSzAspCYEBWxgFhQAZwKC+FpgJ43VwARgADH4ZFQSWSBjcZPJyPtDsdTvxKWBvr8rD1DCZoJ5HPopaYoK4EPhCEQmGKcKriLCtrhgEYkVQVT5Nr4fmZLLZtMBbFZgT0wGBqES6ghbHBIJqoBKFdBWQpjfh+DQbhY2tqiHVsbjLMVkAB+ZAAZiZaeQTHOVxu9ySjxNaujNwDVHNvzqbBGkBAdPoAfkQA)
+
+ ```ts
+ interface ServerConfig {
+ port: null | string | number;
+ }
+
+ type RequestHandler = (request: Request, response: Response) => void;
+
+ // Exclude `null` type from `null | string | number`.
+ // In case the port is equal to `null`, we will use default value.
+ function getPortValue(port: Exclude<ServerConfig['port'], null>): number {
+ if (typeof port === 'string') {
+ return parseInt(port, 10);
+ }
+
+ return port;
+ }
+
+ function startServer(handler: RequestHandler, config: ServerConfig): void {
+ const server = require('http').createServer(handler);
+
+ const port = config.port === null ? 3000 : getPortValue(config.port);
+ server.listen(port);
+ }
+ ```
+ </details>
+
+- [`Extract<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXzSwEdkQBJYACgEoAueVZAWwCMQYBuAKDDwGcM8MgBF4AXngBlAJ6scESgHIRi6ty5ZUGdoihgEABXZ888AN5d48ANoiAuvUat23K6ihMQ9ATE0BzV3goPy8GZjZOLgBfLi4Aejj4AEEICBwAdz54MAALKFQQ+BxEeAAHY1NgKAwoIKy0grr4DByEUpgccpgMaXgAaxBerCzi+B9-ZulygDouFHRsU1z8kKMYE1RhaqgAHkt4AHkWACt4EAAPbVRgLLWNgBp9gGlBs8uQa6yAUUuYPQwdgNpKM7nh7mMML4CgA+R5WABqUAgpDeVxuhxO1he0jsXGh8EoOBO9COx3BQPo2PBADckaR6IjkSA6PBqTgsMBzPsicdrEC7OJWXSQNwYvFEgAVTS9JLXODpeDpKBZFg4GCoWa8VACIJykAKiQWKy2YQOAioYikCg0OEMDyhRSy4DyxS24KhAAMjyi6gS8AAwjh5OD0iBFHAkJoEOksC1mnkMJq8gUQKDNttKPlnfrwYp3J5XfBHXqoKpfYkAOI4ansTxaeDADmoRSCCBYAbxhC6TDx6rwYHIRX5bScjA4bLJwoDmDwDkfbA9JMrVMVdM1TN69LgkTgwgkchUahqIA)
+
+ ```ts
+ declare function uniqueId(): number;
+
+ const ID = Symbol('ID');
+
+ interface Person {
+ [ID]: number;
+ name: string;
+ age: number;
+ }
+
+ // Allows changing the person data as long as the property key is of string type.
+ function changePersonData<
+ Obj extends Person,
+ Key extends Extract<keyof Person, string>,
+ Value extends Obj[Key]
+ > (obj: Obj, key: Key, value: Value): void {
+ obj[key] = value;
+ }
+
+ // Tiny Andrew was born.
+ const andrew = {
+ [ID]: uniqueId(),
+ name: 'Andrew',
+ age: 0,
+ };
+
+ // Cool, we're fine with that.
+ changePersonData(andrew, 'name', 'Pony');
+
+ // Goverment didn't like the fact that you wanted to change your identity.
+ changePersonData(andrew, ID, uniqueId());
+ ```
+ </details>
+
+- [`NonNullable<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`.
+ <details>
+ <summary>
+ Example
+ </summary>
+ Works with <code>strictNullChecks</code> set to <code>true</code>. (Read more <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html">here</a>)
+
+ [Playground](https://typescript-play.js.org/?target=6#code/C4TwDgpgBACg9gJ2AOQK4FsBGEFQLxQDOwCAlgHYDmUAPlORtrnQwDasDcAUFwPQBU-WAEMkUOADMowqAGNWwwoSgATCBIqlgpOOSjAAFsOBRSy1IQgr9cKJlSlW1mZYQA3HFH68u8xcoBlHA8EACEHJ08Aby4oKDBUTFZSWXjEFEYcAEIALihkXTR2YSSIAB54JDQsHAA+blj4xOTUsHSACkMzPKD3HHDHNQQAGjSkPMqMmoQASh7g-oihqBi4uNIpdraxPAI2VhmVxrX9AzMAOm2ppnwoAA4ABifuE4BfKAhWSyOTuK7CS7pao3AhXF5rV48E4ICDAVAIPT-cGQyG+XTEIgLMJLTx7CAAdygvRCA0iCHaMwarhJOIQjUBSHaACJHk8mYdeLwxtdcVAAOSsh58+lXdr7Dlcq7A3n3J4PEUdADMcspUE53OluAIUGVTx46oAKuAIAFZGQwCYAKIIBCILjUxaDHAMnla+iodjcIA)
+
+ ```ts
+ type PortNumber = string | number | null;
+
+ /** Part of a class definition that is used to build a server */
+ class ServerBuilder {
+ portNumber!: NonNullable<PortNumber>;
+
+ port(this: ServerBuilder, port: PortNumber): ServerBuilder {
+ if (port == null) {
+ this.portNumber = 8000;
+ } else {
+ this.portNumber = port;
+ }
+
+ return this;
+ }
+ }
+
+ const serverBuilder = new ServerBuilder();
+
+ serverBuilder
+ .port('8000') // portNumber = '8000'
+ .port(null) // portNumber = 8000
+ .port(3000); // portNumber = 3000
+
+ // TypeScript error
+ serverBuilder.portNumber = null;
+ ```
+ </details>
+
+- [`Parameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/GYVwdgxgLglg9mABAZwBYmMANgUwBQxgAOIUAXIgIZgCeA2gLoCUFAbnDACaIDeAUIkQB6IYgCypSlBxUATrMo1ECsJzgBbLEoipqAc0J7EMKMgDkiHLnU4wp46pwAPHMgB0fAL58+oSLARECEosLAA5ABUYG2QAHgAxJGdpVWREPDdMylk9ZApqemZEAF4APipacrw-CApEgBogkKwAYThwckQwEHUAIxxZJl4BYVEImiIZKF0oZRwiWVdbeygJmThgOYgcGFYcbhqApCJsyhtpWXcR1cnEePBoeDAABVPzgbTixFeFd8uEsClADcIxGiygIFkSEOT3SmTc2VydQeRx+ZxwF2QQ34gkEwDgsnSuFmMBKiAADEDjIhYk1Qm0OlSYABqZnYka4xA1DJZHJYkGc7yCbyeRA+CAIZCzNAYbA4CIAdxg2zJwVCkWirjwMswuEaACYmCCgA)
+
+ ```ts
+ function shuffle(input: any[]): void {
+ // Mutate array randomly changing its' elements indexes.
+ }
+
+ function callNTimes<Fn extends (...args: any[]) => any> (func: Fn, callCount: number) {
+ // Type that represents the type of the received function parameters.
+ type FunctionParameters = Parameters<Fn>;
+
+ return function (...args: FunctionParameters) {
+ for (let i = 0; i < callCount; i++) {
+ func(...args);
+ }
+ }
+ }
+
+ const shuffleTwice = callNTimes(shuffle, 2);
+ ```
+ </details>
+
+- [`ConstructorParameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECCBOAXAlqApgWQPYBM0mgG8AoaaFRENALmgkXmQDsBzAblOmCycTV4D8teo1YdO3JiICuwRFngAKClWENmLAJRFOZRAAtkEAHQq00ALzlklNBzIBfYk+KhIMAJJTEYJsDQAwmDA+mgAPAAq0GgAHnxMODCKTGgA7tCKxllg8CwQtL4AngDaALraFgB80EWa1SRkAA6MAG5gfNAB4FABPDJyCrQR9tDNyG0dwMGhtBhgjWEiGgA00F70vv4RhY3hEZXVVinpc42KmuJkkv3y8Bly8EPaDWTkhiZd7r3e8LK3llwGCMXGQWGhEOsfH5zJlsrl8p0+gw-goAAo5MAAW3BaHgEEilU0tEhmzQ212BJ0ry4SOg+kg+gBBiMximIGA0nAfAQLGk2N4EAAEgzYcYcnkLsRdDTvNEYkYUKwSdCme9WdM0MYwYhFPSIPpJdTkAAzDKxBUaZX+aAAQgsVmkCTQxuYaBw2ng4Ok8CYcotSu8pMur09iG9vuObxZnx6SN+AyUWTF8MN0CcZE4Ywm5jZHK5aB5fP4iCFIqT4oRRTKRLo6lYVNeAHpG50wOzOe1zHr9NLQ+HoABybsD4HOKXXRA1JCoKhBELmI5pNaB6Fz0KKBAodDYPAgSUTmqYsAALx4m5nC6nW9nGq14KtaEUA9gR9PvuNCjQ9BgACNvcwNBtAcLiAA)
+
+ ```ts
+ class ArticleModel {
+ title: string;
+ content?: string;
+
+ constructor(title: string) {
+ this.title = title;
+ }
+ }
+
+ class InstanceCache<T extends (new (...args: any[]) => any)> {
+ private ClassConstructor: T;
+ private cache: Map<string, InstanceType<T>> = new Map();
+
+ constructor (ctr: T) {
+ this.ClassConstructor = ctr;
+ }
+
+ getInstance (...args: ConstructorParameters<T>): InstanceType<T> {
+ const hash = this.calculateArgumentsHash(...args);
+
+ const existingInstance = this.cache.get(hash);
+ if (existingInstance !== undefined) {
+ return existingInstance;
+ }
+
+ return new this.ClassConstructor(...args);
+ }
+
+ private calculateArgumentsHash(...args: any[]): string {
+ // Calculate hash.
+ return 'hash';
+ }
+ }
+
+ const articleCache = new InstanceCache(ArticleModel);
+ const amazonArticle = articleCache.getInstance('Amazon forests burining!');
+ ```
+ </details>
+
+- [`ReturnType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
+
+ ```ts
+ /** Provides every element of the iterable `iter` into the `callback` function and stores the results in an array. */
+ function mapIter<
+ Elem,
+ Func extends (elem: Elem) => any,
+ Ret extends ReturnType<Func>
+ >(iter: Iterable<Elem>, callback: Func): Ret[] {
+ const mapped: Ret[] = [];
+
+ for (const elem of iter) {
+ mapped.push(callback(elem));
+ }
+
+ return mapped;
+ }
+
+ const setObject: Set<string> = new Set();
+ const mapObject: Map<number, string> = new Map();
+
+ mapIter(setObject, (value: string) => value.indexOf('Foo')); // number[]
+
+ mapIter(mapObject, ([key, value]: [number, string]) => {
+ return key % 2 === 0 ? value : 'Odd';
+ }); // string[]
+ ```
+ </details>
+
+- [`InstanceType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
+
+ ```ts
+ class IdleService {
+ doNothing (): void {}
+ }
+
+ class News {
+ title: string;
+ content: string;
+
+ constructor(title: string, content: string) {
+ this.title = title;
+ this.content = content;
+ }
+ }
+
+ const instanceCounter: Map<Function, number> = new Map();
+
+ interface Constructor {
+ new(...args: any[]): any;
+ }
+
+ // Keep track how many instances of `Constr` constructor have been created.
+ function getInstance<
+ Constr extends Constructor,
+ Args extends ConstructorParameters<Constr>
+ >(constructor: Constr, ...args: Args): InstanceType<Constr> {
+ let count = instanceCounter.get(constructor) || 0;
+
+ const instance = new constructor(...args);
+
+ instanceCounter.set(constructor, count + 1);
+
+ console.log(`Created ${count + 1} instances of ${Constr.name} class`);
+
+ return instance;
+ }
+
+
+ const idleService = getInstance(IdleService);
+ // Will log: `Created 1 instances of IdleService class`
+ const newsEntry = getInstance(News, 'New ECMAScript proposals!', 'Last month...');
+ // Will log: `Created 1 instances of News class`
+ ```
+ </details>
+
+- [`Omit<T, K>`](https://github.com/microsoft/TypeScript/blob/71af02f7459dc812e85ac31365bfe23daf14b4e4/src/lib/es5.d.ts#L1446) – Constructs a type by picking all properties from T and then removing K.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwChlks4BzCAVShwC5kBnMKUcgbmKYAcIFgIjBs1YgOXMpSFMWbANoBdTiW5woFddwAW0kfKWEAvoUIB6U8gDCUCHEiNkICAHdkYAJ69kz4GC3JcPG4oAHteKDABBxCYNAxsPFBIWEQUCAAPJG4wZABySUFcgJAAEzMLXNV1ck0dIuCw6EjBADpy5AB1FAQ4EGQAV0YUP2AHDy8wEOQbUugmBLwtEIA3OcmQnEjuZBgQqE7gAGtgZAhwKHdkHFGwNvGUdDIcAGUliIBJEF3kAF5kAHlML4ADyPBIAGjyBUYRQAPnkqho4NoYQA+TiEGD9EAISIhPozErQMG4AASK2gn2+AApek9pCSXm8wFSQooAJQMUkAFQAsgAZACiOAgmDOOSIJAQ+OYyGl4DgoDmf2QJRCCH6YvALQQNjsEGFovF1NyJWAy1y7OUyHMyE+yRAuFImG4Iq1YDswHxbRINjA-SgfXlHqVUE4xiAA)
+
+ ```ts
+ interface Animal {
+ imageUrl: string;
+ species: string;
+ images: string[];
+ paragraphs: string[];
+ }
+
+ // Creates new type with all properties of the `Animal` interface
+ // except 'images' and 'paragraphs' properties. We can use this
+ // type to render small hover tooltip for a wiki entry list.
+ type AnimalShortInfo = Omit<Animal, 'images' | 'paragraphs'>;
+
+ function renderAnimalHoverInfo (animals: AnimalShortInfo[]): HTMLElement {
+ const container = document.createElement('div');
+ // Internal implementation.
+ return container;
+ }
+ ```
+ </details>
+
+You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types).
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Jarek Radosz](https://github.com/CvX)
+- [Dimitri Benin](https://github.com/BendingBender)
+
+## License
+
+(MIT OR CC0-1.0)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-type-fest?utm_source=npm-type-fest&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/client/node_modules/type-fest/source/async-return-type.d.ts b/client/node_modules/type-fest/source/async-return-type.d.ts
new file mode 100644
index 0000000..79ec1e9
--- /dev/null
+++ b/client/node_modules/type-fest/source/async-return-type.d.ts
@@ -0,0 +1,23 @@
+import {PromiseValue} from './promise-value';
+
+type AsyncFunction = (...args: any[]) => Promise<unknown>;
+
+/**
+Unwrap the return type of a function that returns a `Promise`.
+
+There has been [discussion](https://github.com/microsoft/TypeScript/pull/35998) about implementing this type in TypeScript.
+
+@example
+```ts
+import {AsyncReturnType} from 'type-fest';
+import {asyncFunction} from 'api';
+
+// This type resolves to the unwrapped return type of `asyncFunction`.
+type Value = AsyncReturnType<typeof asyncFunction>;
+
+async function doSomething(value: Value) {}
+
+asyncFunction().then(value => doSomething(value));
+```
+*/
+export type AsyncReturnType<Target extends AsyncFunction> = PromiseValue<ReturnType<Target>>;
diff --git a/client/node_modules/type-fest/source/basic.d.ts b/client/node_modules/type-fest/source/basic.d.ts
new file mode 100644
index 0000000..d380c8b
--- /dev/null
+++ b/client/node_modules/type-fest/source/basic.d.ts
@@ -0,0 +1,67 @@
+/// <reference lib="esnext"/>
+
+// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out.
+/**
+Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
+*/
+export type Primitive =
+ | null
+ | undefined
+ | string
+ | number
+ | boolean
+ | symbol
+ | bigint;
+
+// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default
+/**
+Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
+*/
+export type Class<T = unknown, Arguments extends any[] = any[]> = new(...arguments_: Arguments) => T;
+
+/**
+Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
+*/
+export type TypedArray =
+ | Int8Array
+ | Uint8Array
+ | Uint8ClampedArray
+ | Int16Array
+ | Uint16Array
+ | Int32Array
+ | Uint32Array
+ | Float32Array
+ | Float64Array
+ | BigInt64Array
+ | BigUint64Array;
+
+/**
+Matches a JSON object.
+
+This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`.
+*/
+export type JsonObject = {[Key in string]?: JsonValue};
+
+/**
+Matches a JSON array.
+*/
+export interface JsonArray extends Array<JsonValue> {}
+
+/**
+Matches any valid JSON value.
+*/
+export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
+
+declare global {
+ interface SymbolConstructor {
+ readonly observable: symbol;
+ }
+}
+
+/**
+Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
+*/
+export interface ObservableLike {
+ subscribe(observer: (value: unknown) => void): void;
+ [Symbol.observable](): ObservableLike;
+}
diff --git a/client/node_modules/type-fest/source/conditional-except.d.ts b/client/node_modules/type-fest/source/conditional-except.d.ts
new file mode 100644
index 0000000..ac506cc
--- /dev/null
+++ b/client/node_modules/type-fest/source/conditional-except.d.ts
@@ -0,0 +1,43 @@
+import {Except} from './except';
+import {ConditionalKeys} from './conditional-keys';
+
+/**
+Exclude keys from a shape that matches the given `Condition`.
+
+This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
+
+@example
+```
+import {Primitive, ConditionalExcept} from 'type-fest';
+
+class Awesome {
+ name: string;
+ successes: number;
+ failures: bigint;
+
+ run() {}
+}
+
+type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
+//=> {run: () => void}
+```
+
+@example
+```
+import {ConditionalExcept} from 'type-fest';
+
+interface Example {
+ a: string;
+ b: string | number;
+ c: () => void;
+ d: {};
+}
+
+type NonStringKeysOnly = ConditionalExcept<Example, string>;
+//=> {b: string | number; c: () => void; d: {}}
+```
+*/
+export type ConditionalExcept<Base, Condition> = Except<
+ Base,
+ ConditionalKeys<Base, Condition>
+>;
diff --git a/client/node_modules/type-fest/source/conditional-keys.d.ts b/client/node_modules/type-fest/source/conditional-keys.d.ts
new file mode 100644
index 0000000..eb074dc
--- /dev/null
+++ b/client/node_modules/type-fest/source/conditional-keys.d.ts
@@ -0,0 +1,43 @@
+/**
+Extract the keys from a type where the value type of the key extends the given `Condition`.
+
+Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
+
+@example
+```
+import {ConditionalKeys} from 'type-fest';
+
+interface Example {
+ a: string;
+ b: string | number;
+ c?: string;
+ d: {};
+}
+
+type StringKeysOnly = ConditionalKeys<Example, string>;
+//=> 'a'
+```
+
+To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
+
+@example
+```
+type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
+//=> 'a' | 'c'
+```
+*/
+export type ConditionalKeys<Base, Condition> = NonNullable<
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
+ {
+ // Map through all the keys of the given base type.
+ [Key in keyof Base]:
+ // Pick only keys with types extending the given `Condition` type.
+ Base[Key] extends Condition
+ // Retain this key since the condition passes.
+ ? Key
+ // Discard this key since the condition fails.
+ : never;
+
+ // Convert the produced object into a union type of the keys which passed the conditional test.
+ }[keyof Base]
+>;
diff --git a/client/node_modules/type-fest/source/conditional-pick.d.ts b/client/node_modules/type-fest/source/conditional-pick.d.ts
new file mode 100644
index 0000000..cecc3df
--- /dev/null
+++ b/client/node_modules/type-fest/source/conditional-pick.d.ts
@@ -0,0 +1,42 @@
+import {ConditionalKeys} from './conditional-keys';
+
+/**
+Pick keys from the shape that matches the given `Condition`.
+
+This is useful when you want to create a new type from a specific subset of an existing type. For example, you might want to pick all the primitive properties from a class and form a new automatically derived type.
+
+@example
+```
+import {Primitive, ConditionalPick} from 'type-fest';
+
+class Awesome {
+ name: string;
+ successes: number;
+ failures: bigint;
+
+ run() {}
+}
+
+type PickPrimitivesFromAwesome = ConditionalPick<Awesome, Primitive>;
+//=> {name: string; successes: number; failures: bigint}
+```
+
+@example
+```
+import {ConditionalPick} from 'type-fest';
+
+interface Example {
+ a: string;
+ b: string | number;
+ c: () => void;
+ d: {};
+}
+
+type StringKeysOnly = ConditionalPick<Example, string>;
+//=> {a: string}
+```
+*/
+export type ConditionalPick<Base, Condition> = Pick<
+ Base,
+ ConditionalKeys<Base, Condition>
+>;
diff --git a/client/node_modules/type-fest/source/except.d.ts b/client/node_modules/type-fest/source/except.d.ts
new file mode 100644
index 0000000..7dedbaa
--- /dev/null
+++ b/client/node_modules/type-fest/source/except.d.ts
@@ -0,0 +1,22 @@
+/**
+Create a type from an object type without certain keys.
+
+This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
+
+Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/30825) if you want to have the stricter version as a built-in in TypeScript.
+
+@example
+```
+import {Except} from 'type-fest';
+
+type Foo = {
+ a: number;
+ b: string;
+ c: boolean;
+};
+
+type FooWithoutA = Except<Foo, 'a' | 'c'>;
+//=> {b: string};
+```
+*/
+export type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
diff --git a/client/node_modules/type-fest/source/literal-union.d.ts b/client/node_modules/type-fest/source/literal-union.d.ts
new file mode 100644
index 0000000..52e8de6
--- /dev/null
+++ b/client/node_modules/type-fest/source/literal-union.d.ts
@@ -0,0 +1,33 @@
+import {Primitive} from './basic';
+
+/**
+Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
+
+Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
+
+This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
+
+@example
+```
+import {LiteralUnion} from 'type-fest';
+
+// Before
+
+type Pet = 'dog' | 'cat' | string;
+
+const pet: Pet = '';
+// Start typing in your TypeScript-enabled IDE.
+// You **will not** get auto-completion for `dog` and `cat` literals.
+
+// After
+
+type Pet2 = LiteralUnion<'dog' | 'cat', string>;
+
+const pet: Pet2 = '';
+// You **will** get auto-completion for `dog` and `cat` literals.
+```
+ */
+export type LiteralUnion<
+ LiteralType extends BaseType,
+ BaseType extends Primitive
+> = LiteralType | (BaseType & {_?: never});
diff --git a/client/node_modules/type-fest/source/merge-exclusive.d.ts b/client/node_modules/type-fest/source/merge-exclusive.d.ts
new file mode 100644
index 0000000..059bd2c
--- /dev/null
+++ b/client/node_modules/type-fest/source/merge-exclusive.d.ts
@@ -0,0 +1,39 @@
+// Helper type. Not useful on its own.
+type Without<FirstType, SecondType> = {[KeyType in Exclude<keyof FirstType, keyof SecondType>]?: never};
+
+/**
+Create a type that has mutually exclusive keys.
+
+This type was inspired by [this comment](https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604).
+
+This type works with a helper type, called `Without`. `Without<FirstType, SecondType>` produces a type that has only keys from `FirstType` which are not present on `SecondType` and sets the value type for these keys to `never`. This helper type is then used in `MergeExclusive` to remove keys from either `FirstType` or `SecondType`.
+
+@example
+```
+import {MergeExclusive} from 'type-fest';
+
+interface ExclusiveVariation1 {
+ exclusive1: boolean;
+}
+
+interface ExclusiveVariation2 {
+ exclusive2: string;
+}
+
+type ExclusiveOptions = MergeExclusive<ExclusiveVariation1, ExclusiveVariation2>;
+
+let exclusiveOptions: ExclusiveOptions;
+
+exclusiveOptions = {exclusive1: true};
+//=> Works
+exclusiveOptions = {exclusive2: 'hi'};
+//=> Works
+exclusiveOptions = {exclusive1: true, exclusive2: 'hi'};
+//=> Error
+```
+*/
+export type MergeExclusive<FirstType, SecondType> =
+ (FirstType | SecondType) extends object ?
+ (Without<FirstType, SecondType> & SecondType) | (Without<SecondType, FirstType> & FirstType) :
+ FirstType | SecondType;
+
diff --git a/client/node_modules/type-fest/source/merge.d.ts b/client/node_modules/type-fest/source/merge.d.ts
new file mode 100644
index 0000000..4b3920b
--- /dev/null
+++ b/client/node_modules/type-fest/source/merge.d.ts
@@ -0,0 +1,22 @@
+import {Except} from './except';
+
+/**
+Merge two types into a new type. Keys of the second type overrides keys of the first type.
+
+@example
+```
+import {Merge} from 'type-fest';
+
+type Foo = {
+ a: number;
+ b: string;
+};
+
+type Bar = {
+ b: number;
+};
+
+const ab: Merge<Foo, Bar> = {a: 1, b: 2};
+```
+*/
+export type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
diff --git a/client/node_modules/type-fest/source/mutable.d.ts b/client/node_modules/type-fest/source/mutable.d.ts
new file mode 100644
index 0000000..03d0dda
--- /dev/null
+++ b/client/node_modules/type-fest/source/mutable.d.ts
@@ -0,0 +1,22 @@
+/**
+Convert an object with `readonly` keys into a mutable object. Inverse of `Readonly<T>`.
+
+This can be used to [store and mutate options within a class](https://github.com/sindresorhus/pageres/blob/4a5d05fca19a5fbd2f53842cbf3eb7b1b63bddd2/source/index.ts#L72), [edit `readonly` objects within tests](https://stackoverflow.com/questions/50703834), and [construct a `readonly` object within a function](https://github.com/Microsoft/TypeScript/issues/24509).
+
+@example
+```
+import {Mutable} from 'type-fest';
+
+type Foo = {
+ readonly a: number;
+ readonly b: string;
+};
+
+const mutableFoo: Mutable<Foo> = {a: 1, b: '2'};
+mutableFoo.a = 3;
+```
+*/
+export type Mutable<ObjectType> = {
+ // For each `Key` in the keys of `ObjectType`, make a mapped type by removing the `readonly` modifier from the key.
+ -readonly [KeyType in keyof ObjectType]: ObjectType[KeyType];
+};
diff --git a/client/node_modules/type-fest/source/opaque.d.ts b/client/node_modules/type-fest/source/opaque.d.ts
new file mode 100644
index 0000000..20ab964
--- /dev/null
+++ b/client/node_modules/type-fest/source/opaque.d.ts
@@ -0,0 +1,65 @@
+/**
+Create an opaque type, which hides its internal details from the public, and can only be created by being used explicitly.
+
+The generic type parameter can be anything. It doesn't have to be an object.
+
+[Read more about opaque types.](https://codemix.com/opaque-types-in-javascript/)
+
+There have been several discussions about adding this feature to TypeScript via the `opaque type` operator, similar to how Flow does it. Unfortunately, nothing has (yet) moved forward:
+ - [Microsoft/TypeScript#15408](https://github.com/Microsoft/TypeScript/issues/15408)
+ - [Microsoft/TypeScript#15807](https://github.com/Microsoft/TypeScript/issues/15807)
+
+@example
+```
+import {Opaque} from 'type-fest';
+
+type AccountNumber = Opaque<number, 'AccountNumber'>;
+type AccountBalance = Opaque<number, 'AccountBalance'>;
+
+// The Token parameter allows the compiler to differentiate between types, whereas "unknown" will not. For example, consider the following structures:
+type ThingOne = Opaque<string>;
+type ThingTwo = Opaque<string>;
+
+// To the compiler, these types are allowed to be cast to each other as they have the same underlying type. They are both `string & { __opaque__: unknown }`.
+// To avoid this behaviour, you would instead pass the "Token" parameter, like so.
+type NewThingOne = Opaque<string, 'ThingOne'>;
+type NewThingTwo = Opaque<string, 'ThingTwo'>;
+
+// Now they're completely separate types, so the following will fail to compile.
+function createNewThingOne (): NewThingOne {
+ // As you can see, casting from a string is still allowed. However, you may not cast NewThingOne to NewThingTwo, and vice versa.
+ return 'new thing one' as NewThingOne;
+}
+
+// This will fail to compile, as they are fundamentally different types.
+const thingTwo = createNewThingOne() as NewThingTwo;
+
+// Here's another example of opaque typing.
+function createAccountNumber(): AccountNumber {
+ return 2 as AccountNumber;
+}
+
+function getMoneyForAccount(accountNumber: AccountNumber): AccountBalance {
+ return 4 as AccountBalance;
+}
+
+// This will compile successfully.
+getMoneyForAccount(createAccountNumber());
+
+// But this won't, because it has to be explicitly passed as an `AccountNumber` type.
+getMoneyForAccount(2);
+
+// You can use opaque values like they aren't opaque too.
+const accountNumber = createAccountNumber();
+
+// This will not compile successfully.
+const newAccountNumber = accountNumber + 2;
+
+// As a side note, you can (and should) use recursive types for your opaque types to make them stronger and hopefully easier to type.
+type Person = {
+ id: Opaque<number, Person>;
+ name: string;
+};
+```
+*/
+export type Opaque<Type, Token = unknown> = Type & {readonly __opaque__: Token};
diff --git a/client/node_modules/type-fest/source/package-json.d.ts b/client/node_modules/type-fest/source/package-json.d.ts
new file mode 100644
index 0000000..9699b48
--- /dev/null
+++ b/client/node_modules/type-fest/source/package-json.d.ts
@@ -0,0 +1,585 @@
+import {LiteralUnion} from '..';
+
+declare namespace PackageJson {
+ /**
+ A person who has been involved in creating or maintaining the package.
+ */
+ export type Person =
+ | string
+ | {
+ name: string;
+ url?: string;
+ email?: string;
+ };
+
+ export type BugsLocation =
+ | string
+ | {
+ /**
+ The URL to the package's issue tracker.
+ */
+ url?: string;
+
+ /**
+ The email address to which issues should be reported.
+ */
+ email?: string;
+ };
+
+ export interface DirectoryLocations {
+ [directoryType: string]: unknown;
+
+ /**
+ Location for executable scripts. Sugar to generate entries in the `bin` property by walking the folder.
+ */
+ bin?: string;
+
+ /**
+ Location for Markdown files.
+ */
+ doc?: string;
+
+ /**
+ Location for example scripts.
+ */
+ example?: string;
+
+ /**
+ Location for the bulk of the library.
+ */
+ lib?: string;
+
+ /**
+ Location for man pages. Sugar to generate a `man` array by walking the folder.
+ */
+ man?: string;
+
+ /**
+ Location for test files.
+ */
+ test?: string;
+ }
+
+ export type Scripts = {
+ /**
+ Run **before** the package is published (Also run on local `npm install` without any arguments).
+ */
+ prepublish?: string;
+
+ /**
+ Run both **before** the package is packed and published, and on local `npm install` without any arguments. This is run **after** `prepublish`, but **before** `prepublishOnly`.
+ */
+ prepare?: string;
+
+ /**
+ Run **before** the package is prepared and packed, **only** on `npm publish`.
+ */
+ prepublishOnly?: string;
+
+ /**
+ Run **before** a tarball is packed (on `npm pack`, `npm publish`, and when installing git dependencies).
+ */
+ prepack?: string;
+
+ /**
+ Run **after** the tarball has been generated and moved to its final destination.
+ */
+ postpack?: string;
+
+ /**
+ Run **after** the package is published.
+ */
+ publish?: string;
+
+ /**
+ Run **after** the package is published.
+ */
+ postpublish?: string;
+
+ /**
+ Run **before** the package is installed.
+ */
+ preinstall?: string;
+
+ /**
+ Run **after** the package is installed.
+ */
+ install?: string;
+
+ /**
+ Run **after** the package is installed and after `install`.
+ */
+ postinstall?: string;
+
+ /**
+ Run **before** the package is uninstalled and before `uninstall`.
+ */
+ preuninstall?: string;
+
+ /**
+ Run **before** the package is uninstalled.
+ */
+ uninstall?: string;
+
+ /**
+ Run **after** the package is uninstalled.
+ */
+ postuninstall?: string;
+
+ /**
+ Run **before** bump the package version and before `version`.
+ */
+ preversion?: string;
+
+ /**
+ Run **before** bump the package version.
+ */
+ version?: string;
+
+ /**
+ Run **after** bump the package version.
+ */
+ postversion?: string;
+
+ /**
+ Run with the `npm test` command, before `test`.
+ */
+ pretest?: string;
+
+ /**
+ Run with the `npm test` command.
+ */
+ test?: string;
+
+ /**
+ Run with the `npm test` command, after `test`.
+ */
+ posttest?: string;
+
+ /**
+ Run with the `npm stop` command, before `stop`.
+ */
+ prestop?: string;
+
+ /**
+ Run with the `npm stop` command.
+ */
+ stop?: string;
+
+ /**
+ Run with the `npm stop` command, after `stop`.
+ */
+ poststop?: string;
+
+ /**
+ Run with the `npm start` command, before `start`.
+ */
+ prestart?: string;
+
+ /**
+ Run with the `npm start` command.
+ */
+ start?: string;
+
+ /**
+ Run with the `npm start` command, after `start`.
+ */
+ poststart?: string;
+
+ /**
+ Run with the `npm restart` command, before `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
+ */
+ prerestart?: string;
+
+ /**
+ Run with the `npm restart` command. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
+ */
+ restart?: string;
+
+ /**
+ Run with the `npm restart` command, after `restart`. Note: `npm restart` will run the `stop` and `start` scripts if no `restart` script is provided.
+ */
+ postrestart?: string;
+ } & {
+ [scriptName: string]: string;
+ };
+
+ /**
+ Dependencies of the package. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or Git URL.
+ */
+ export interface Dependency {
+ [packageName: string]: string;
+ }
+
+ export interface NonStandardEntryPoints {
+ /**
+ An ECMAScript module ID that is the primary entry point to the program.
+ */
+ module?: string;
+
+ /**
+ A module ID with untranspiled code that is the primary entry point to the program.
+ */
+ esnext?:
+ | string
+ | {
+ [moduleName: string]: string | undefined;
+ main?: string;
+ browser?: string;
+ };
+
+ /**
+ A hint to JavaScript bundlers or component tools when packaging modules for client side use.
+ */
+ browser?:
+ | string
+ | {
+ [moduleName: string]: string | false;
+ };
+
+ /**
+ Denote which files in your project are "pure" and therefore safe for Webpack to prune if unused.
+
+ [Read more.](https://webpack.js.org/guides/tree-shaking/)
+ */
+ sideEffects?: boolean | string[];
+ }
+
+ export interface TypeScriptConfiguration {
+ /**
+ Location of the bundled TypeScript declaration file.
+ */
+ types?: string;
+
+ /**
+ Location of the bundled TypeScript declaration file. Alias of `types`.
+ */
+ typings?: string;
+ }
+
+ /**
+ An alternative configuration for Yarn workspaces.
+ */
+ export interface WorkspaceConfig {
+ /**
+ An array of workspace pattern strings which contain the workspace packages.
+ */
+ packages?: WorkspacePattern[];
+
+ /**
+ Designed to solve the problem of packages which break when their `node_modules` are moved to the root workspace directory - a process known as hoisting. For these packages, both within your workspace, and also some that have been installed via `node_modules`, it is important to have a mechanism for preventing the default Yarn workspace behavior. By adding workspace pattern strings here, Yarn will resume non-workspace behavior for any package which matches the defined patterns.
+
+ [Read more](https://classic.yarnpkg.com/blog/2018/02/15/nohoist/)
+ */
+ nohoist?: WorkspacePattern[];
+ }
+
+ /**
+ A workspace pattern points to a directory or group of directories which contain packages that should be included in the workspace installation process.
+
+ The patterns are handled with [minimatch](https://github.com/isaacs/minimatch).
+
+ @example
+ `docs` → Include the docs directory and install its dependencies.
+ `packages/*` → Include all nested directories within the packages directory, like `packages/cli` and `packages/core`.
+ */
+ type WorkspacePattern = string;
+
+ export interface YarnConfiguration {
+ /**
+ Used to configure [Yarn workspaces](https://classic.yarnpkg.com/docs/workspaces/).
+
+ Workspaces allow you to manage multiple packages within the same repository in such a way that you only need to run `yarn install` once to install all of them in a single pass.
+
+ Please note that the top-level `private` property of `package.json` **must** be set to `true` in order to use workspaces.
+ */
+ workspaces?: WorkspacePattern[] | WorkspaceConfig;
+
+ /**
+ If your package only allows one version of a given dependency, and you’d like to enforce the same behavior as `yarn install --flat` on the command-line, set this to `true`.
+
+ Note that if your `package.json` contains `"flat": true` and other packages depend on yours (e.g. you are building a library rather than an app), those other packages will also need `"flat": true` in their `package.json` or be installed with `yarn install --flat` on the command-line.
+ */
+ flat?: boolean;
+
+ /**
+ Selective version resolutions. Allows the definition of custom package versions inside dependencies without manual edits in the `yarn.lock` file.
+ */
+ resolutions?: Dependency;
+ }
+
+ export interface JSPMConfiguration {
+ /**
+ JSPM configuration.
+ */
+ jspm?: PackageJson;
+ }
+}
+
+/**
+Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file). Also includes types for fields used by other popular projects, like TypeScript and Yarn.
+*/
+export type PackageJson = {
+ /**
+ The name of the package.
+ */
+ name?: string;
+
+ /**
+ Package version, parseable by [`node-semver`](https://github.com/npm/node-semver).
+ */
+ version?: string;
+
+ /**
+ Package description, listed in `npm search`.
+ */
+ description?: string;
+
+ /**
+ Keywords associated with package, listed in `npm search`.
+ */
+ keywords?: string[];
+
+ /**
+ The URL to the package's homepage.
+ */
+ homepage?: LiteralUnion<'.', string>;
+
+ /**
+ The URL to the package's issue tracker and/or the email address to which issues should be reported.
+ */
+ bugs?: PackageJson.BugsLocation;
+
+ /**
+ The license for the package.
+ */
+ license?: string;
+
+ /**
+ The licenses for the package.
+ */
+ licenses?: Array<{
+ type?: string;
+ url?: string;
+ }>;
+
+ author?: PackageJson.Person;
+
+ /**
+ A list of people who contributed to the package.
+ */
+ contributors?: PackageJson.Person[];
+
+ /**
+ A list of people who maintain the package.
+ */
+ maintainers?: PackageJson.Person[];
+
+ /**
+ The files included in the package.
+ */
+ files?: string[];
+
+ /**
+ The module ID that is the primary entry point to the program.
+ */
+ main?: string;
+
+ /**
+ The executable files that should be installed into the `PATH`.
+ */
+ bin?:
+ | string
+ | {
+ [binary: string]: string;
+ };
+
+ /**
+ Filenames to put in place for the `man` program to find.
+ */
+ man?: string | string[];
+
+ /**
+ Indicates the structure of the package.
+ */
+ directories?: PackageJson.DirectoryLocations;
+
+ /**
+ Location for the code repository.
+ */
+ repository?:
+ | string
+ | {
+ type: string;
+ url: string;
+
+ /**
+ Relative path to package.json if it is placed in non-root directory (for example if it is part of a monorepo).
+
+ [Read more.](https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md)
+ */
+ directory?: string;
+ };
+
+ /**
+ Script commands that are run at various times in the lifecycle of the package. The key is the lifecycle event, and the value is the command to run at that point.
+ */
+ scripts?: PackageJson.Scripts;
+
+ /**
+ Is used to set configuration parameters used in package scripts that persist across upgrades.
+ */
+ config?: {
+ [configKey: string]: unknown;
+ };
+
+ /**
+ The dependencies of the package.
+ */
+ dependencies?: PackageJson.Dependency;
+
+ /**
+ Additional tooling dependencies that are not required for the package to work. Usually test, build, or documentation tooling.
+ */
+ devDependencies?: PackageJson.Dependency;
+
+ /**
+ Dependencies that are skipped if they fail to install.
+ */
+ optionalDependencies?: PackageJson.Dependency;
+
+ /**
+ Dependencies that will usually be required by the package user directly or via another dependency.
+ */
+ peerDependencies?: PackageJson.Dependency;
+
+ /**
+ Indicate peer dependencies that are optional.
+ */
+ peerDependenciesMeta?: {
+ [packageName: string]: {
+ optional: true;
+ };
+ };
+
+ /**
+ Package names that are bundled when the package is published.
+ */
+ bundledDependencies?: string[];
+
+ /**
+ Alias of `bundledDependencies`.
+ */
+ bundleDependencies?: string[];
+
+ /**
+ Engines that this package runs on.
+ */
+ engines?: {
+ [EngineName in 'npm' | 'node' | string]: string;
+ };
+
+ /**
+ @deprecated
+ */
+ engineStrict?: boolean;
+
+ /**
+ Operating systems the module runs on.
+ */
+ os?: Array<LiteralUnion<
+ | 'aix'
+ | 'darwin'
+ | 'freebsd'
+ | 'linux'
+ | 'openbsd'
+ | 'sunos'
+ | 'win32'
+ | '!aix'
+ | '!darwin'
+ | '!freebsd'
+ | '!linux'
+ | '!openbsd'
+ | '!sunos'
+ | '!win32',
+ string
+ >>;
+
+ /**
+ CPU architectures the module runs on.
+ */
+ cpu?: Array<LiteralUnion<
+ | 'arm'
+ | 'arm64'
+ | 'ia32'
+ | 'mips'
+ | 'mipsel'
+ | 'ppc'
+ | 'ppc64'
+ | 's390'
+ | 's390x'
+ | 'x32'
+ | 'x64'
+ | '!arm'
+ | '!arm64'
+ | '!ia32'
+ | '!mips'
+ | '!mipsel'
+ | '!ppc'
+ | '!ppc64'
+ | '!s390'
+ | '!s390x'
+ | '!x32'
+ | '!x64',
+ string
+ >>;
+
+ /**
+ If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally.
+
+ @deprecated
+ */
+ preferGlobal?: boolean;
+
+ /**
+ If set to `true`, then npm will refuse to publish it.
+ */
+ private?: boolean;
+
+ /**
+ A set of config values that will be used at publish-time. It's especially handy to set the tag, registry or access, to ensure that a given package is not tagged with 'latest', published to the global public registry or that a scoped module is private by default.
+ */
+ publishConfig?: {
+ [config: string]: unknown;
+ };
+
+ /**
+ Describes and notifies consumers of a package's monetary support information.
+
+ [Read more.](https://github.com/npm/rfcs/blob/latest/accepted/0017-add-funding-support.md)
+ */
+ funding?: string | {
+ /**
+ The type of funding.
+ */
+ type?: LiteralUnion<
+ | 'github'
+ | 'opencollective'
+ | 'patreon'
+ | 'individual'
+ | 'foundation'
+ | 'corporation',
+ string
+ >;
+ /**
+ The URL to the funding page.
+ */
+ url: string;
+ };
+} &
+PackageJson.NonStandardEntryPoints &
+PackageJson.TypeScriptConfiguration &
+PackageJson.YarnConfiguration &
+PackageJson.JSPMConfiguration & {
+ [key: string]: unknown;
+};
diff --git a/client/node_modules/type-fest/source/partial-deep.d.ts b/client/node_modules/type-fest/source/partial-deep.d.ts
new file mode 100644
index 0000000..b962b84
--- /dev/null
+++ b/client/node_modules/type-fest/source/partial-deep.d.ts
@@ -0,0 +1,72 @@
+import {Primitive} from './basic';
+
+/**
+Create a type from another type with all keys and nested keys set to optional.
+
+Use-cases:
+- Merging a default settings/config object with another object, the second object would be a deep partial of the default object.
+- Mocking and testing complex entities, where populating an entire object with its keys would be redundant in terms of the mock or test.
+
+@example
+```
+import {PartialDeep} from 'type-fest';
+
+const settings: Settings = {
+ textEditor: {
+ fontSize: 14;
+ fontColor: '#000000';
+ fontWeight: 400;
+ }
+ autocomplete: false;
+ autosave: true;
+};
+
+const applySavedSettings = (savedSettings: PartialDeep<Settings>) => {
+ return {...settings, ...savedSettings};
+}
+
+settings = applySavedSettings({textEditor: {fontWeight: 500}});
+```
+*/
+export type PartialDeep<T> = T extends Primitive
+ ? Partial<T>
+ : T extends Map<infer KeyType, infer ValueType>
+ ? PartialMapDeep<KeyType, ValueType>
+ : T extends Set<infer ItemType>
+ ? PartialSetDeep<ItemType>
+ : T extends ReadonlyMap<infer KeyType, infer ValueType>
+ ? PartialReadonlyMapDeep<KeyType, ValueType>
+ : T extends ReadonlySet<infer ItemType>
+ ? PartialReadonlySetDeep<ItemType>
+ : T extends ((...arguments: any[]) => unknown)
+ ? T | undefined
+ : T extends object
+ ? PartialObjectDeep<T>
+ : unknown;
+
+/**
+Same as `PartialDeep`, but accepts only `Map`s and as inputs. Internal helper for `PartialDeep`.
+*/
+interface PartialMapDeep<KeyType, ValueType> extends Map<PartialDeep<KeyType>, PartialDeep<ValueType>> {}
+
+/**
+Same as `PartialDeep`, but accepts only `Set`s as inputs. Internal helper for `PartialDeep`.
+*/
+interface PartialSetDeep<T> extends Set<PartialDeep<T>> {}
+
+/**
+Same as `PartialDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `PartialDeep`.
+*/
+interface PartialReadonlyMapDeep<KeyType, ValueType> extends ReadonlyMap<PartialDeep<KeyType>, PartialDeep<ValueType>> {}
+
+/**
+Same as `PartialDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `PartialDeep`.
+*/
+interface PartialReadonlySetDeep<T> extends ReadonlySet<PartialDeep<T>> {}
+
+/**
+Same as `PartialDeep`, but accepts only `object`s as inputs. Internal helper for `PartialDeep`.
+*/
+type PartialObjectDeep<ObjectType extends object> = {
+ [KeyType in keyof ObjectType]?: PartialDeep<ObjectType[KeyType]>
+};
diff --git a/client/node_modules/type-fest/source/promisable.d.ts b/client/node_modules/type-fest/source/promisable.d.ts
new file mode 100644
index 0000000..71242a5
--- /dev/null
+++ b/client/node_modules/type-fest/source/promisable.d.ts
@@ -0,0 +1,23 @@
+/**
+Create a type that represents either the value or the value wrapped in `PromiseLike`.
+
+Use-cases:
+- A function accepts a callback that may either return a value synchronously or may return a promised value.
+- This type could be the return type of `Promise#then()`, `Promise#catch()`, and `Promise#finally()` callbacks.
+
+Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31394) if you want to have this type as a built-in in TypeScript.
+
+@example
+```
+import {Promisable} from 'type-fest';
+
+async function logger(getLogEntry: () => Promisable<string>): Promise<void> {
+ const entry = await getLogEntry();
+ console.log(entry);
+}
+
+logger(() => 'foo');
+logger(() => Promise.resolve('bar'));
+```
+*/
+export type Promisable<T> = T | PromiseLike<T>;
diff --git a/client/node_modules/type-fest/source/promise-value.d.ts b/client/node_modules/type-fest/source/promise-value.d.ts
new file mode 100644
index 0000000..7686dd1
--- /dev/null
+++ b/client/node_modules/type-fest/source/promise-value.d.ts
@@ -0,0 +1,20 @@
+/**
+Returns the type that is wrapped inside a `Promise` type.
+If the type is not a `Promise`, the type itself is returned.
+
+@example
+```
+import {PromiseValue} from 'type-fest';
+
+type AsyncData = Promise<string>;
+let asyncData: PromiseValue<AsyncData> = Promise.resolve('ABC');
+
+type Data = PromiseValue<AsyncData>;
+let data: Data = await asyncData;
+
+// Here's an example that shows how this type reacts to non-Promise types.
+type SyncData = PromiseValue<string>;
+let syncData: SyncData = getSyncData();
+```
+*/
+export type PromiseValue<PromiseType, Otherwise = PromiseType> = PromiseType extends Promise<infer Value> ? Value : Otherwise;
diff --git a/client/node_modules/type-fest/source/readonly-deep.d.ts b/client/node_modules/type-fest/source/readonly-deep.d.ts
new file mode 100644
index 0000000..b8c04de
--- /dev/null
+++ b/client/node_modules/type-fest/source/readonly-deep.d.ts
@@ -0,0 +1,59 @@
+import {Primitive} from './basic';
+
+/**
+Convert `object`s, `Map`s, `Set`s, and `Array`s and all of their keys/elements into immutable structures recursively.
+
+This is useful when a deeply nested structure needs to be exposed as completely immutable, for example, an imported JSON module or when receiving an API response that is passed around.
+
+Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/13923) if you want to have this type as a built-in in TypeScript.
+
+@example
+```
+// data.json
+{
+ "foo": ["bar"]
+}
+
+// main.ts
+import {ReadonlyDeep} from 'type-fest';
+import dataJson = require('./data.json');
+
+const data: ReadonlyDeep<typeof dataJson> = dataJson;
+
+export default data;
+
+// test.ts
+import data from './main';
+
+data.foo.push('bar');
+//=> error TS2339: Property 'push' does not exist on type 'readonly string[]'
+```
+*/
+export type ReadonlyDeep<T> = T extends Primitive | ((...arguments: any[]) => unknown)
+ ? T
+ : T extends ReadonlyMap<infer KeyType, infer ValueType>
+ ? ReadonlyMapDeep<KeyType, ValueType>
+ : T extends ReadonlySet<infer ItemType>
+ ? ReadonlySetDeep<ItemType>
+ : T extends object
+ ? ReadonlyObjectDeep<T>
+ : unknown;
+
+/**
+Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`.
+*/
+interface ReadonlyMapDeep<KeyType, ValueType>
+ extends ReadonlyMap<ReadonlyDeep<KeyType>, ReadonlyDeep<ValueType>> {}
+
+/**
+Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`.
+*/
+interface ReadonlySetDeep<ItemType>
+ extends ReadonlySet<ReadonlyDeep<ItemType>> {}
+
+/**
+Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`.
+*/
+type ReadonlyObjectDeep<ObjectType extends object> = {
+ readonly [KeyType in keyof ObjectType]: ReadonlyDeep<ObjectType[KeyType]>
+};
diff --git a/client/node_modules/type-fest/source/require-at-least-one.d.ts b/client/node_modules/type-fest/source/require-at-least-one.d.ts
new file mode 100644
index 0000000..337379f
--- /dev/null
+++ b/client/node_modules/type-fest/source/require-at-least-one.d.ts
@@ -0,0 +1,32 @@
+import {Except} from './except';
+
+/**
+Create a type that requires at least one of the given keys. The remaining keys are kept as is.
+
+@example
+```
+import {RequireAtLeastOne} from 'type-fest';
+
+type Responder = {
+ text?: () => string;
+ json?: () => string;
+
+ secure?: boolean;
+};
+
+const responder: RequireAtLeastOne<Responder, 'text' | 'json'> = {
+ json: () => '{"message": "ok"}',
+ secure: true
+};
+```
+*/
+export type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
+ {
+ // For each Key in KeysType make a mapped type
+ [Key in KeysType]: (
+ // …by picking that Key's type and making it required
+ Required<Pick<ObjectType, Key>>
+ )
+ }[KeysType]
+ // …then, make intersection types by adding the remaining keys to each mapped type.
+ & Except<ObjectType, KeysType>;
diff --git a/client/node_modules/type-fest/source/require-exactly-one.d.ts b/client/node_modules/type-fest/source/require-exactly-one.d.ts
new file mode 100644
index 0000000..c3e7e7e
--- /dev/null
+++ b/client/node_modules/type-fest/source/require-exactly-one.d.ts
@@ -0,0 +1,35 @@
+// TODO: Remove this when we target TypeScript >=3.5.
+type _Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
+
+/**
+Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
+
+Use-cases:
+- Creating interfaces for components that only need one of the keys to display properly.
+- Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
+
+The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
+
+@example
+```
+import {RequireExactlyOne} from 'type-fest';
+
+type Responder = {
+ text: () => string;
+ json: () => string;
+ secure: boolean;
+};
+
+const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
+ // Adding a `text` key here would cause a compile error.
+
+ json: () => '{"message": "ok"}',
+ secure: true
+};
+```
+*/
+export type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
+ {[Key in KeysType]: (
+ Required<Pick<ObjectType, Key>> &
+ Partial<Record<Exclude<KeysType, Key>, never>>
+ )}[KeysType] & _Omit<ObjectType, KeysType>;
diff --git a/client/node_modules/type-fest/source/set-optional.d.ts b/client/node_modules/type-fest/source/set-optional.d.ts
new file mode 100644
index 0000000..3539899
--- /dev/null
+++ b/client/node_modules/type-fest/source/set-optional.d.ts
@@ -0,0 +1,34 @@
+import {Except} from './except';
+
+/**
+Create a type that makes the given keys optional. The remaining keys are kept as is. The sister of the `SetRequired` type.
+
+Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are optional.
+
+@example
+```
+import {SetOptional} from 'type-fest';
+
+type Foo = {
+ a: number;
+ b?: string;
+ c: boolean;
+}
+
+type SomeOptional = SetOptional<Foo, 'b' | 'c'>;
+// type SomeOptional = {
+// a: number;
+// b?: string; // Was already optional and still is.
+// c?: boolean; // Is now optional.
+// }
+```
+*/
+export type SetOptional<BaseType, Keys extends keyof BaseType = keyof BaseType> =
+ // Pick just the keys that are not optional from the base type.
+ Except<BaseType, Keys> &
+ // Pick the keys that should be optional from the base type and make them optional.
+ Partial<Pick<BaseType, Keys>> extends
+ // If `InferredType` extends the previous, then for each key, use the inferred type key.
+ infer InferredType
+ ? {[KeyType in keyof InferredType]: InferredType[KeyType]}
+ : never;
diff --git a/client/node_modules/type-fest/source/set-required.d.ts b/client/node_modules/type-fest/source/set-required.d.ts
new file mode 100644
index 0000000..0a72330
--- /dev/null
+++ b/client/node_modules/type-fest/source/set-required.d.ts
@@ -0,0 +1,34 @@
+import {Except} from './except';
+
+/**
+Create a type that makes the given keys required. The remaining keys are kept as is. The sister of the `SetOptional` type.
+
+Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are required.
+
+@example
+```
+import {SetRequired} from 'type-fest';
+
+type Foo = {
+ a?: number;
+ b: string;
+ c?: boolean;
+}
+
+type SomeRequired = SetRequired<Foo, 'b' | 'c'>;
+// type SomeRequired = {
+// a?: number;
+// b: string; // Was already required and still is.
+// c: boolean; // Is now required.
+// }
+```
+*/
+export type SetRequired<BaseType, Keys extends keyof BaseType = keyof BaseType> =
+ // Pick just the keys that are not required from the base type.
+ Except<BaseType, Keys> &
+ // Pick the keys that should be required from the base type and make them required.
+ Required<Pick<BaseType, Keys>> extends
+ // If `InferredType` extends the previous, then for each key, use the inferred type key.
+ infer InferredType
+ ? {[KeyType in keyof InferredType]: InferredType[KeyType]}
+ : never;
diff --git a/client/node_modules/type-fest/source/stringified.d.ts b/client/node_modules/type-fest/source/stringified.d.ts
new file mode 100644
index 0000000..9688b67
--- /dev/null
+++ b/client/node_modules/type-fest/source/stringified.d.ts
@@ -0,0 +1,21 @@
+/**
+Create a type with the keys of the given type changed to `string` type.
+
+Use-case: Changing interface values to strings in order to use them in a form model.
+
+@example
+```
+import {Stringified} from 'type-fest';
+
+type Car {
+ model: string;
+ speed: number;
+}
+
+const carForm: Stringified<Car> = {
+ model: 'Foo',
+ speed: '101'
+};
+```
+*/
+export type Stringified<ObjectType> = {[KeyType in keyof ObjectType]: string};
diff --git a/client/node_modules/type-fest/source/tsconfig-json.d.ts b/client/node_modules/type-fest/source/tsconfig-json.d.ts
new file mode 100644
index 0000000..c51a821
--- /dev/null
+++ b/client/node_modules/type-fest/source/tsconfig-json.d.ts
@@ -0,0 +1,872 @@
+declare namespace TsConfigJson {
+ namespace CompilerOptions {
+ export type JSX =
+ | 'preserve'
+ | 'react'
+ | 'react-native';
+
+ export type Module =
+ | 'CommonJS'
+ | 'AMD'
+ | 'System'
+ | 'UMD'
+ | 'ES6'
+ | 'ES2015'
+ | 'ESNext'
+ | 'None'
+ // Lowercase alternatives
+ | 'commonjs'
+ | 'amd'
+ | 'system'
+ | 'umd'
+ | 'es6'
+ | 'es2015'
+ | 'esnext'
+ | 'none';
+
+ export type NewLine =
+ | 'CRLF'
+ | 'LF'
+ // Lowercase alternatives
+ | 'crlf'
+ | 'lf';
+
+ export type Target =
+ | 'ES3'
+ | 'ES5'
+ | 'ES6'
+ | 'ES2015'
+ | 'ES2016'
+ | 'ES2017'
+ | 'ES2018'
+ | 'ES2019'
+ | 'ES2020'
+ | 'ESNext'
+ // Lowercase alternatives
+ | 'es3'
+ | 'es5'
+ | 'es6'
+ | 'es2015'
+ | 'es2016'
+ | 'es2017'
+ | 'es2018'
+ | 'es2019'
+ | 'es2020'
+ | 'esnext';
+
+ export type Lib =
+ | 'ES5'
+ | 'ES6'
+ | 'ES7'
+ | 'ES2015'
+ | 'ES2015.Collection'
+ | 'ES2015.Core'
+ | 'ES2015.Generator'
+ | 'ES2015.Iterable'
+ | 'ES2015.Promise'
+ | 'ES2015.Proxy'
+ | 'ES2015.Reflect'
+ | 'ES2015.Symbol.WellKnown'
+ | 'ES2015.Symbol'
+ | 'ES2016'
+ | 'ES2016.Array.Include'
+ | 'ES2017'
+ | 'ES2017.Intl'
+ | 'ES2017.Object'
+ | 'ES2017.SharedMemory'
+ | 'ES2017.String'
+ | 'ES2017.TypedArrays'
+ | 'ES2018'
+ | 'ES2018.AsyncIterable'
+ | 'ES2018.Intl'
+ | 'ES2018.Promise'
+ | 'ES2018.Regexp'
+ | 'ES2019'
+ | 'ES2019.Array'
+ | 'ES2019.Object'
+ | 'ES2019.String'
+ | 'ES2019.Symbol'
+ | 'ES2020'
+ | 'ES2020.String'
+ | 'ES2020.Symbol.WellKnown'
+ | 'ESNext'
+ | 'ESNext.Array'
+ | 'ESNext.AsyncIterable'
+ | 'ESNext.BigInt'
+ | 'ESNext.Intl'
+ | 'ESNext.Symbol'
+ | 'DOM'
+ | 'DOM.Iterable'
+ | 'ScriptHost'
+ | 'WebWorker'
+ | 'WebWorker.ImportScripts'
+ // Lowercase alternatives
+ | 'es5'
+ | 'es6'
+ | 'es7'
+ | 'es2015'
+ | 'es2015.collection'
+ | 'es2015.core'
+ | 'es2015.generator'
+ | 'es2015.iterable'
+ | 'es2015.promise'
+ | 'es2015.proxy'
+ | 'es2015.reflect'
+ | 'es2015.symbol.wellknown'
+ | 'es2015.symbol'
+ | 'es2016'
+ | 'es2016.array.include'
+ | 'es2017'
+ | 'es2017.intl'
+ | 'es2017.object'
+ | 'es2017.sharedmemory'
+ | 'es2017.string'
+ | 'es2017.typedarrays'
+ | 'es2018'
+ | 'es2018.asynciterable'
+ | 'es2018.intl'
+ | 'es2018.promise'
+ | 'es2018.regexp'
+ | 'es2019'
+ | 'es2019.array'
+ | 'es2019.object'
+ | 'es2019.string'
+ | 'es2019.symbol'
+ | 'es2020'
+ | 'es2020.string'
+ | 'es2020.symbol.wellknown'
+ | 'esnext'
+ | 'esnext.array'
+ | 'esnext.asynciterable'
+ | 'esnext.bigint'
+ | 'esnext.intl'
+ | 'esnext.symbol'
+ | 'dom'
+ | 'dom.iterable'
+ | 'scripthost'
+ | 'webworker'
+ | 'webworker.importscripts';
+
+ export interface Plugin {
+ [key: string]: unknown;
+ /**
+ Plugin name.
+ */
+ name?: string;
+ }
+ }
+
+ export interface CompilerOptions {
+ /**
+ The character set of the input files.
+
+ @default 'utf8'
+ */
+ charset?: string;
+
+ /**
+ Enables building for project references.
+
+ @default true
+ */
+ composite?: boolean;
+
+ /**
+ Generates corresponding d.ts files.
+
+ @default false
+ */
+ declaration?: boolean;
+
+ /**
+ Specify output directory for generated declaration files.
+
+ Requires TypeScript version 2.0 or later.
+ */
+ declarationDir?: string;
+
+ /**
+ Show diagnostic information.
+
+ @default false
+ */
+ diagnostics?: boolean;
+
+ /**
+ Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.
+
+ @default false
+ */
+ emitBOM?: boolean;
+
+ /**
+ Only emit `.d.ts` declaration files.
+
+ @default false
+ */
+ emitDeclarationOnly?: boolean;
+
+ /**
+ Enable incremental compilation.
+
+ @default `composite`
+ */
+ incremental?: boolean;
+
+ /**
+ Specify file to store incremental compilation information.
+
+ @default '.tsbuildinfo'
+ */
+ tsBuildInfoFile?: string;
+
+ /**
+ Emit a single file with source maps instead of having a separate file.
+
+ @default false
+ */
+ inlineSourceMap?: boolean;
+
+ /**
+ Emit the source alongside the sourcemaps within a single file.
+
+ Requires `--inlineSourceMap` to be set.
+
+ @default false
+ */
+ inlineSources?: boolean;
+
+ /**
+ Specify JSX code generation: `'preserve'`, `'react'`, or `'react-native'`.
+
+ @default 'preserve'
+ */
+ jsx?: CompilerOptions.JSX;
+
+ /**
+ Specifies the object invoked for `createElement` and `__spread` when targeting `'react'` JSX emit.
+
+ @default 'React'
+ */
+ reactNamespace?: string;
+
+ /**
+ Print names of files part of the compilation.
+
+ @default false
+ */
+ listFiles?: boolean;
+
+ /**
+ Specifies the location where debugger should locate map files instead of generated locations.
+ */
+ mapRoot?: string;
+
+ /**
+ Specify module code generation: 'None', 'CommonJS', 'AMD', 'System', 'UMD', 'ES6', 'ES2015' or 'ESNext'. Only 'AMD' and 'System' can be used in conjunction with `--outFile`. 'ES6' and 'ES2015' values may be used when targeting 'ES5' or lower.
+
+ @default ['ES3', 'ES5'].includes(target) ? 'CommonJS' : 'ES6'
+ */
+ module?: CompilerOptions.Module;
+
+ /**
+ Specifies the end of line sequence to be used when emitting files: 'crlf' (Windows) or 'lf' (Unix).
+
+ Default: Platform specific
+ */
+ newLine?: CompilerOptions.NewLine;
+
+ /**
+ Do not emit output.
+
+ @default false
+ */
+ noEmit?: boolean;
+
+ /**
+ Do not generate custom helper functions like `__extends` in compiled output.
+
+ @default false
+ */
+ noEmitHelpers?: boolean;
+
+ /**
+ Do not emit outputs if any type checking errors were reported.
+
+ @default false
+ */
+ noEmitOnError?: boolean;
+
+ /**
+ Warn on expressions and declarations with an implied 'any' type.
+
+ @default false
+ */
+ noImplicitAny?: boolean;
+
+ /**
+ Raise error on 'this' expressions with an implied any type.
+
+ @default false
+ */
+ noImplicitThis?: boolean;
+
+ /**
+ Report errors on unused locals.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ noUnusedLocals?: boolean;
+
+ /**
+ Report errors on unused parameters.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ noUnusedParameters?: boolean;
+
+ /**
+ Do not include the default library file (lib.d.ts).
+
+ @default false
+ */
+ noLib?: boolean;
+
+ /**
+ Do not add triple-slash references or module import targets to the list of compiled files.
+
+ @default false
+ */
+ noResolve?: boolean;
+
+ /**
+ Disable strict checking of generic signatures in function types.
+
+ @default false
+ */
+ noStrictGenericChecks?: boolean;
+
+ /**
+ @deprecated use `skipLibCheck` instead.
+ */
+ skipDefaultLibCheck?: boolean;
+
+ /**
+ Skip type checking of declaration files.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ skipLibCheck?: boolean;
+
+ /**
+ Concatenate and emit output to single file.
+ */
+ outFile?: string;
+
+ /**
+ Redirect output structure to the directory.
+ */
+ outDir?: string;
+
+ /**
+ Do not erase const enum declarations in generated code.
+
+ @default false
+ */
+ preserveConstEnums?: boolean;
+
+ /**
+ Do not resolve symlinks to their real path; treat a symlinked file like a real one.
+
+ @default false
+ */
+ preserveSymlinks?: boolean;
+
+ /**
+ Keep outdated console output in watch mode instead of clearing the screen.
+
+ @default false
+ */
+ preserveWatchOutput?: boolean;
+
+ /**
+ Stylize errors and messages using color and context (experimental).
+
+ @default true // Unless piping to another program or redirecting output to a file.
+ */
+ pretty?: boolean;
+
+ /**
+ Do not emit comments to output.
+
+ @default false
+ */
+ removeComments?: boolean;
+
+ /**
+ Specifies the root directory of input files.
+
+ Use to control the output directory structure with `--outDir`.
+ */
+ rootDir?: string;
+
+ /**
+ Unconditionally emit imports for unresolved files.
+
+ @default false
+ */
+ isolatedModules?: boolean;
+
+ /**
+ Generates corresponding '.map' file.
+
+ @default false
+ */
+ sourceMap?: boolean;
+
+ /**
+ Specifies the location where debugger should locate TypeScript files instead of source locations.
+ */
+ sourceRoot?: string;
+
+ /**
+ Suppress excess property checks for object literals.
+
+ @default false
+ */
+ suppressExcessPropertyErrors?: boolean;
+
+ /**
+ Suppress noImplicitAny errors for indexing objects lacking index signatures.
+
+ @default false
+ */
+ suppressImplicitAnyIndexErrors?: boolean;
+
+ /**
+ Do not emit declarations for code that has an `@internal` annotation.
+ */
+ stripInternal?: boolean;
+
+ /**
+ Specify ECMAScript target version.
+
+ @default 'es3'
+ */
+ target?: CompilerOptions.Target;
+
+ /**
+ Watch input files.
+
+ @default false
+ */
+ watch?: boolean;
+
+ /**
+ Enables experimental support for ES7 decorators.
+
+ @default false
+ */
+ experimentalDecorators?: boolean;
+
+ /**
+ Emit design-type metadata for decorated declarations in source.
+
+ @default false
+ */
+ emitDecoratorMetadata?: boolean;
+
+ /**
+ Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6).
+
+ @default ['AMD', 'System', 'ES6'].includes(module) ? 'classic' : 'node'
+ */
+ moduleResolution?: 'classic' | 'node';
+
+ /**
+ Do not report errors on unused labels.
+
+ @default false
+ */
+ allowUnusedLabels?: boolean;
+
+ /**
+ Report error when not all code paths in function return a value.
+
+ @default false
+ */
+ noImplicitReturns?: boolean;
+
+ /**
+ Report errors for fallthrough cases in switch statement.
+
+ @default false
+ */
+ noFallthroughCasesInSwitch?: boolean;
+
+ /**
+ Do not report errors on unreachable code.
+
+ @default false
+ */
+ allowUnreachableCode?: boolean;
+
+ /**
+ Disallow inconsistently-cased references to the same file.
+
+ @default false
+ */
+ forceConsistentCasingInFileNames?: boolean;
+
+ /**
+ Base directory to resolve non-relative module names.
+ */
+ baseUrl?: string;
+
+ /**
+ Specify path mapping to be computed relative to baseUrl option.
+ */
+ paths?: {
+ [key: string]: string[];
+ };
+
+ /**
+ List of TypeScript language server plugins to load.
+
+ Requires TypeScript version 2.3 or later.
+ */
+ plugins?: CompilerOptions.Plugin[];
+
+ /**
+ Specify list of root directories to be used when resolving modules.
+ */
+ rootDirs?: string[];
+
+ /**
+ Specify list of directories for type definition files to be included.
+
+ Requires TypeScript version 2.0 or later.
+ */
+ typeRoots?: string[];
+
+ /**
+ Type declaration files to be included in compilation.
+
+ Requires TypeScript version 2.0 or later.
+ */
+ types?: string[];
+
+ /**
+ Enable tracing of the name resolution process.
+
+ @default false
+ */
+ traceResolution?: boolean;
+
+ /**
+ Allow javascript files to be compiled.
+
+ @default false
+ */
+ allowJs?: boolean;
+
+ /**
+ Do not truncate error messages.
+
+ @default false
+ */
+ noErrorTruncation?: boolean;
+
+ /**
+ Allow default imports from modules with no default export. This does not affect code emit, just typechecking.
+
+ @default module === 'system' || esModuleInterop
+ */
+ allowSyntheticDefaultImports?: boolean;
+
+ /**
+ Do not emit `'use strict'` directives in module output.
+
+ @default false
+ */
+ noImplicitUseStrict?: boolean;
+
+ /**
+ Enable to list all emitted files.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ listEmittedFiles?: boolean;
+
+ /**
+ Disable size limit for JavaScript project.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ disableSizeLimit?: boolean;
+
+ /**
+ List of library files to be included in the compilation.
+
+ Requires TypeScript version 2.0 or later.
+ */
+ lib?: CompilerOptions.Lib[];
+
+ /**
+ Enable strict null checks.
+
+ Requires TypeScript version 2.0 or later.
+
+ @default false
+ */
+ strictNullChecks?: boolean;
+
+ /**
+ The maximum dependency depth to search under `node_modules` and load JavaScript files. Only applicable with `--allowJs`.
+
+ @default 0
+ */
+ maxNodeModuleJsDepth?: number;
+
+ /**
+ Import emit helpers (e.g. `__extends`, `__rest`, etc..) from tslib.
+
+ Requires TypeScript version 2.1 or later.
+
+ @default false
+ */
+ importHelpers?: boolean;
+
+ /**
+ Specify the JSX factory function to use when targeting React JSX emit, e.g. `React.createElement` or `h`.
+
+ Requires TypeScript version 2.1 or later.
+
+ @default 'React.createElement'
+ */
+ jsxFactory?: string;
+
+ /**
+ Parse in strict mode and emit `'use strict'` for each source file.
+
+ Requires TypeScript version 2.1 or later.
+
+ @default false
+ */
+ alwaysStrict?: boolean;
+
+ /**
+ Enable all strict type checking options.
+
+ Requires TypeScript version 2.3 or later.
+
+ @default false
+ */
+ strict?: boolean;
+
+ /**
+ Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions.
+
+ @default false
+ */
+ strictBindCallApply?: boolean;
+
+ /**
+ Provide full support for iterables in `for-of`, spread, and destructuring when targeting `ES5` or `ES3`.
+
+ Requires TypeScript version 2.3 or later.
+
+ @default false
+ */
+ downlevelIteration?: boolean;
+
+ /**
+ Report errors in `.js` files.
+
+ Requires TypeScript version 2.3 or later.
+
+ @default false
+ */
+ checkJs?: boolean;
+
+ /**
+ Disable bivariant parameter checking for function types.
+
+ Requires TypeScript version 2.6 or later.
+
+ @default false
+ */
+ strictFunctionTypes?: boolean;
+
+ /**
+ Ensure non-undefined class properties are initialized in the constructor.
+
+ Requires TypeScript version 2.7 or later.
+
+ @default false
+ */
+ strictPropertyInitialization?: boolean;
+
+ /**
+ Emit `__importStar` and `__importDefault` helpers for runtime Babel ecosystem compatibility and enable `--allowSyntheticDefaultImports` for typesystem compatibility.
+
+ Requires TypeScript version 2.7 or later.
+
+ @default false
+ */
+ esModuleInterop?: boolean;
+
+ /**
+ Allow accessing UMD globals from modules.
+
+ @default false
+ */
+ allowUmdGlobalAccess?: boolean;
+
+ /**
+ Resolve `keyof` to string valued property names only (no numbers or symbols).
+
+ Requires TypeScript version 2.9 or later.
+
+ @default false
+ */
+ keyofStringsOnly?: boolean;
+
+ /**
+ Emit ECMAScript standard class fields.
+
+ Requires TypeScript version 3.7 or later.
+
+ @default false
+ */
+ useDefineForClassFields?: boolean;
+
+ /**
+ Generates a sourcemap for each corresponding `.d.ts` file.
+
+ Requires TypeScript version 2.9 or later.
+
+ @default false
+ */
+ declarationMap?: boolean;
+
+ /**
+ Include modules imported with `.json` extension.
+
+ Requires TypeScript version 2.9 or later.
+
+ @default false
+ */
+ resolveJsonModule?: boolean;
+ }
+
+ /**
+ Auto type (.d.ts) acquisition options for this project.
+
+ Requires TypeScript version 2.1 or later.
+ */
+ export interface TypeAcquisition {
+ /**
+ Enable auto type acquisition.
+ */
+ enable?: boolean;
+
+ /**
+ Specifies a list of type declarations to be included in auto type acquisition. For example, `['jquery', 'lodash']`.
+ */
+ include?: string[];
+
+ /**
+ Specifies a list of type declarations to be excluded from auto type acquisition. For example, `['jquery', 'lodash']`.
+ */
+ exclude?: string[];
+ }
+
+ export interface References {
+ /**
+ A normalized path on disk.
+ */
+ path: string;
+
+ /**
+ The path as the user originally wrote it.
+ */
+ originalPath?: string;
+
+ /**
+ True if the output of this reference should be prepended to the output of this project.
+
+ Only valid for `--outFile` compilations.
+ */
+ prepend?: boolean;
+
+ /**
+ True if it is intended that this reference form a circularity.
+ */
+ circular?: boolean;
+ }
+}
+
+export interface TsConfigJson {
+ /**
+ Instructs the TypeScript compiler how to compile `.ts` files.
+ */
+ compilerOptions?: TsConfigJson.CompilerOptions;
+
+ /**
+ Auto type (.d.ts) acquisition options for this project.
+
+ Requires TypeScript version 2.1 or later.
+ */
+ typeAcquisition?: TsConfigJson.TypeAcquisition;
+
+ /**
+ Enable Compile-on-Save for this project.
+ */
+ compileOnSave?: boolean;
+
+ /**
+ Path to base configuration file to inherit from.
+
+ Requires TypeScript version 2.1 or later.
+ */
+ extends?: string;
+
+ /**
+ If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`. When a `files` property is specified, only those files and those specified by `include` are included.
+ */
+ files?: string[];
+
+ /**
+ Specifies a list of files to be excluded from compilation. The `exclude` property only affects the files included via the `include` property and not the `files` property.
+
+ Glob patterns require TypeScript version 2.0 or later.
+ */
+ exclude?: string[];
+
+ /**
+ Specifies a list of glob patterns that match files to be included in compilation.
+
+ If no `files` or `include` property is present in a `tsconfig.json`, the compiler defaults to including all files in the containing directory and subdirectories except those specified by `exclude`.
+
+ Requires TypeScript version 2.0 or later.
+ */
+ include?: string[];
+
+ /**
+ Referenced projects.
+
+ Requires TypeScript version 3.0 or later.
+ */
+ references?: TsConfigJson.References[];
+}
diff --git a/client/node_modules/type-fest/source/union-to-intersection.d.ts b/client/node_modules/type-fest/source/union-to-intersection.d.ts
new file mode 100644
index 0000000..61d9841
--- /dev/null
+++ b/client/node_modules/type-fest/source/union-to-intersection.d.ts
@@ -0,0 +1,58 @@
+/**
+Convert a union type to an intersection type using [distributive conditional types](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).
+
+Inspired by [this Stack Overflow answer](https://stackoverflow.com/a/50375286/2172153).
+
+@example
+```
+import {UnionToIntersection} from 'type-fest';
+
+type Union = {the(): void} | {great(arg: string): void} | {escape: boolean};
+
+type Intersection = UnionToIntersection<Union>;
+//=> {the(): void; great(arg: string): void; escape: boolean};
+```
+
+A more applicable example which could make its way into your library code follows.
+
+@example
+```
+import {UnionToIntersection} from 'type-fest';
+
+class CommandOne {
+ commands: {
+ a1: () => undefined,
+ b1: () => undefined,
+ }
+}
+
+class CommandTwo {
+ commands: {
+ a2: (argA: string) => undefined,
+ b2: (argB: string) => undefined,
+ }
+}
+
+const union = [new CommandOne(), new CommandTwo()].map(instance => instance.commands);
+type Union = typeof union;
+//=> {a1(): void; b1(): void} | {a2(argA: string): void; b2(argB: string): void}
+
+type Intersection = UnionToIntersection<Union>;
+//=> {a1(): void; b1(): void; a2(argA: string): void; b2(argB: string): void}
+```
+*/
+export type UnionToIntersection<Union> = (
+ // `extends any` is always going to be the case and is used to convert the
+ // `Union` into a [distributive conditional
+ // type](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).
+ Union extends unknown
+ // The union type is used as the only argument to a function since the union
+ // of function arguments is an intersection.
+ ? (distributedUnion: Union) => void
+ // This won't happen.
+ : never
+ // Infer the `Intersection` type since TypeScript represents the positional
+ // arguments of unions of functions as an intersection of the union.
+ ) extends ((mergedIntersection: infer Intersection) => void)
+ ? Intersection
+ : never;
diff --git a/client/node_modules/type-fest/source/value-of.d.ts b/client/node_modules/type-fest/source/value-of.d.ts
new file mode 100644
index 0000000..1279373
--- /dev/null
+++ b/client/node_modules/type-fest/source/value-of.d.ts
@@ -0,0 +1,40 @@
+/**
+Create a union of the given object's values, and optionally specify which keys to get the values from.
+
+Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31438) if you want to have this type as a built-in in TypeScript.
+
+@example
+```
+// data.json
+{
+ 'foo': 1,
+ 'bar': 2,
+ 'biz': 3
+}
+
+// main.ts
+import {ValueOf} from 'type-fest';
+import data = require('./data.json');
+
+export function getData(name: string): ValueOf<typeof data> {
+ return data[name];
+}
+
+export function onlyBar(name: string): ValueOf<typeof data, 'bar'> {
+ return data[name];
+}
+
+// file.ts
+import {getData, onlyBar} from './main';
+
+getData('foo');
+//=> 1
+
+onlyBar('foo');
+//=> TypeError ...
+
+onlyBar('bar');
+//=> 2
+```
+*/
+export type ValueOf<ObjectType, ValueType extends keyof ObjectType = keyof ObjectType> = ObjectType[ValueType];
diff --git a/client/node_modules/undici-types/README.md b/client/node_modules/undici-types/README.md
new file mode 100644
index 0000000..20a721c
--- /dev/null
+++ b/client/node_modules/undici-types/README.md
@@ -0,0 +1,6 @@
+# undici-types
+
+This package is a dual-publish of the [undici](https://www.npmjs.com/package/undici) library types. The `undici` package **still contains types**. This package is for users who _only_ need undici types (such as for `@types/node`). It is published alongside every release of `undici`, so you can always use the same version.
+
+- [GitHub nodejs/undici](https://github.com/nodejs/undici)
+- [Undici Documentation](https://undici.nodejs.org/#/)
diff --git a/client/node_modules/undici-types/agent.d.ts b/client/node_modules/undici-types/agent.d.ts
new file mode 100644
index 0000000..58081ce
--- /dev/null
+++ b/client/node_modules/undici-types/agent.d.ts
@@ -0,0 +1,31 @@
+import { URL } from 'url'
+import Pool from './pool'
+import Dispatcher from "./dispatcher";
+
+export default Agent
+
+declare class Agent extends Dispatcher{
+ constructor(opts?: Agent.Options)
+ /** `true` after `dispatcher.close()` has been called. */
+ closed: boolean;
+ /** `true` after `dispatcher.destroyed()` has been called or `dispatcher.close()` has been called and the dispatcher shutdown has completed. */
+ destroyed: boolean;
+ /** Dispatches a request. */
+ dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
+}
+
+declare namespace Agent {
+ export interface Options extends Pool.Options {
+ /** Default: `(origin, opts) => new Pool(origin, opts)`. */
+ factory?(origin: string | URL, opts: Object): Dispatcher;
+ /** Integer. Default: `0` */
+ maxRedirections?: number;
+
+ interceptors?: { Agent?: readonly Dispatcher.DispatchInterceptor[] } & Pool.Options["interceptors"]
+ }
+
+ export interface DispatchOptions extends Dispatcher.DispatchOptions {
+ /** Integer. */
+ maxRedirections?: number;
+ }
+}
diff --git a/client/node_modules/undici-types/api.d.ts b/client/node_modules/undici-types/api.d.ts
new file mode 100644
index 0000000..400341d
--- /dev/null
+++ b/client/node_modules/undici-types/api.d.ts
@@ -0,0 +1,43 @@
+import { URL, UrlObject } from 'url'
+import { Duplex } from 'stream'
+import Dispatcher from './dispatcher'
+
+export {
+ request,
+ stream,
+ pipeline,
+ connect,
+ upgrade,
+}
+
+/** Performs an HTTP request. */
+declare function request(
+ url: string | URL | UrlObject,
+ options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions, 'origin' | 'path' | 'method'> & Partial<Pick<Dispatcher.RequestOptions, 'method'>>,
+): Promise<Dispatcher.ResponseData>;
+
+/** A faster version of `request`. */
+declare function stream(
+ url: string | URL | UrlObject,
+ options: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions, 'origin' | 'path'>,
+ factory: Dispatcher.StreamFactory
+): Promise<Dispatcher.StreamData>;
+
+/** For easy use with `stream.pipeline`. */
+declare function pipeline(
+ url: string | URL | UrlObject,
+ options: { dispatcher?: Dispatcher } & Omit<Dispatcher.PipelineOptions, 'origin' | 'path'>,
+ handler: Dispatcher.PipelineHandler
+): Duplex;
+
+/** Starts two-way communications with the requested resource. */
+declare function connect(
+ url: string | URL | UrlObject,
+ options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.ConnectOptions, 'origin' | 'path'>
+): Promise<Dispatcher.ConnectData>;
+
+/** Upgrade to a different protocol. */
+declare function upgrade(
+ url: string | URL | UrlObject,
+ options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.UpgradeOptions, 'origin' | 'path'>
+): Promise<Dispatcher.UpgradeData>;
diff --git a/client/node_modules/undici-types/balanced-pool.d.ts b/client/node_modules/undici-types/balanced-pool.d.ts
new file mode 100644
index 0000000..d1e9375
--- /dev/null
+++ b/client/node_modules/undici-types/balanced-pool.d.ts
@@ -0,0 +1,18 @@
+import Pool from './pool'
+import Dispatcher from './dispatcher'
+import { URL } from 'url'
+
+export default BalancedPool
+
+declare class BalancedPool extends Dispatcher {
+ constructor(url: string | string[] | URL | URL[], options?: Pool.Options);
+
+ addUpstream(upstream: string | URL): BalancedPool;
+ removeUpstream(upstream: string | URL): BalancedPool;
+ upstreams: Array<string>;
+
+ /** `true` after `pool.close()` has been called. */
+ closed: boolean;
+ /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */
+ destroyed: boolean;
+}
diff --git a/client/node_modules/undici-types/cache.d.ts b/client/node_modules/undici-types/cache.d.ts
new file mode 100644
index 0000000..4c33335
--- /dev/null
+++ b/client/node_modules/undici-types/cache.d.ts
@@ -0,0 +1,36 @@
+import type { RequestInfo, Response, Request } from './fetch'
+
+export interface CacheStorage {
+ match (request: RequestInfo, options?: MultiCacheQueryOptions): Promise<Response | undefined>,
+ has (cacheName: string): Promise<boolean>,
+ open (cacheName: string): Promise<Cache>,
+ delete (cacheName: string): Promise<boolean>,
+ keys (): Promise<string[]>
+}
+
+declare const CacheStorage: {
+ prototype: CacheStorage
+ new(): CacheStorage
+}
+
+export interface Cache {
+ match (request: RequestInfo, options?: CacheQueryOptions): Promise<Response | undefined>,
+ matchAll (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Response[]>,
+ add (request: RequestInfo): Promise<undefined>,
+ addAll (requests: RequestInfo[]): Promise<undefined>,
+ put (request: RequestInfo, response: Response): Promise<undefined>,
+ delete (request: RequestInfo, options?: CacheQueryOptions): Promise<boolean>,
+ keys (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Request[]>
+}
+
+export interface CacheQueryOptions {
+ ignoreSearch?: boolean,
+ ignoreMethod?: boolean,
+ ignoreVary?: boolean
+}
+
+export interface MultiCacheQueryOptions extends CacheQueryOptions {
+ cacheName?: string
+}
+
+export declare const caches: CacheStorage
diff --git a/client/node_modules/undici-types/client.d.ts b/client/node_modules/undici-types/client.d.ts
new file mode 100644
index 0000000..74948b1
--- /dev/null
+++ b/client/node_modules/undici-types/client.d.ts
@@ -0,0 +1,97 @@
+import { URL } from 'url'
+import { TlsOptions } from 'tls'
+import Dispatcher from './dispatcher'
+import buildConnector from "./connector";
+
+/**
+ * A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default.
+ */
+export class Client extends Dispatcher {
+ constructor(url: string | URL, options?: Client.Options);
+ /** Property to get and set the pipelining factor. */
+ pipelining: number;
+ /** `true` after `client.close()` has been called. */
+ closed: boolean;
+ /** `true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed. */
+ destroyed: boolean;
+}
+
+export declare namespace Client {
+ export interface OptionsInterceptors {
+ Client: readonly Dispatcher.DispatchInterceptor[];
+ }
+ export interface Options {
+ /** TODO */
+ interceptors?: OptionsInterceptors;
+ /** The maximum length of request headers in bytes. Default: Node.js' `--max-http-header-size` or `16384` (16KiB). */
+ maxHeaderSize?: number;
+ /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */
+ headersTimeout?: number;
+ /** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */
+ socketTimeout?: never;
+ /** @deprecated unsupported requestTimeout, use headersTimeout & bodyTimeout instead */
+ requestTimeout?: never;
+ /** TODO */
+ connectTimeout?: number;
+ /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */
+ bodyTimeout?: number;
+ /** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */
+ idleTimeout?: never;
+ /** @deprecated unsupported keepAlive, use pipelining=0 instead */
+ keepAlive?: never;
+ /** the timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. Default: `4e3` milliseconds (4s). */
+ keepAliveTimeout?: number;
+ /** @deprecated unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead */
+ maxKeepAliveTimeout?: never;
+ /** the maximum allowed `idleTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Default: `600e3` milliseconds (10min). */
+ keepAliveMaxTimeout?: number;
+ /** A number of milliseconds subtracted from server *keep-alive* hints when overriding `idleTimeout` to account for timing inaccuracies caused by e.g. transport latency. Default: `1e3` milliseconds (1s). */
+ keepAliveTimeoutThreshold?: number;
+ /** TODO */
+ socketPath?: string;
+ /** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Default: `1`. */
+ pipelining?: number;
+ /** @deprecated use the connect option instead */
+ tls?: never;
+ /** If `true`, an error is thrown when the request content-length header doesn't match the length of the request body. Default: `true`. */
+ strictContentLength?: boolean;
+ /** TODO */
+ maxCachedSessions?: number;
+ /** TODO */
+ maxRedirections?: number;
+ /** TODO */
+ connect?: buildConnector.BuildOptions | buildConnector.connector;
+ /** TODO */
+ maxRequestsPerClient?: number;
+ /** TODO */
+ localAddress?: string;
+ /** Max response body size in bytes, -1 is disabled */
+ maxResponseSize?: number;
+ /** Enables a family autodetection algorithm that loosely implements section 5 of RFC 8305. */
+ autoSelectFamily?: boolean;
+ /** The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. */
+ autoSelectFamilyAttemptTimeout?: number;
+ /**
+ * @description Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation.
+ * @default false
+ */
+ allowH2?: boolean;
+ /**
+ * @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overriden by a SETTINGS remote frame.
+ * @default 100
+ */
+ maxConcurrentStreams?: number
+ }
+ export interface SocketInfo {
+ localAddress?: string
+ localPort?: number
+ remoteAddress?: string
+ remotePort?: number
+ remoteFamily?: string
+ timeout?: number
+ bytesWritten?: number
+ bytesRead?: number
+ }
+}
+
+export default Client;
diff --git a/client/node_modules/undici-types/connector.d.ts b/client/node_modules/undici-types/connector.d.ts
new file mode 100644
index 0000000..bd92433
--- /dev/null
+++ b/client/node_modules/undici-types/connector.d.ts
@@ -0,0 +1,34 @@
+import { TLSSocket, ConnectionOptions } from 'tls'
+import { IpcNetConnectOpts, Socket, TcpNetConnectOpts } from 'net'
+
+export default buildConnector
+declare function buildConnector (options?: buildConnector.BuildOptions): buildConnector.connector
+
+declare namespace buildConnector {
+ export type BuildOptions = (ConnectionOptions | TcpNetConnectOpts | IpcNetConnectOpts) & {
+ allowH2?: boolean;
+ maxCachedSessions?: number | null;
+ socketPath?: string | null;
+ timeout?: number | null;
+ port?: number;
+ keepAlive?: boolean | null;
+ keepAliveInitialDelay?: number | null;
+ }
+
+ export interface Options {
+ hostname: string
+ host?: string
+ protocol: string
+ port: string
+ servername?: string
+ localAddress?: string | null
+ httpSocket?: Socket
+ }
+
+ export type Callback = (...args: CallbackArgs) => void
+ type CallbackArgs = [null, Socket | TLSSocket] | [Error, null]
+
+ export interface connector {
+ (options: buildConnector.Options, callback: buildConnector.Callback): void
+ }
+}
diff --git a/client/node_modules/undici-types/content-type.d.ts b/client/node_modules/undici-types/content-type.d.ts
new file mode 100644
index 0000000..f2a87f1
--- /dev/null
+++ b/client/node_modules/undici-types/content-type.d.ts
@@ -0,0 +1,21 @@
+/// <reference types="node" />
+
+interface MIMEType {
+ type: string
+ subtype: string
+ parameters: Map<string, string>
+ essence: string
+}
+
+/**
+ * Parse a string to a {@link MIMEType} object. Returns `failure` if the string
+ * couldn't be parsed.
+ * @see https://mimesniff.spec.whatwg.org/#parse-a-mime-type
+ */
+export function parseMIMEType (input: string): 'failure' | MIMEType
+
+/**
+ * Convert a MIMEType object to a string.
+ * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type
+ */
+export function serializeAMimeType (mimeType: MIMEType): string
diff --git a/client/node_modules/undici-types/cookies.d.ts b/client/node_modules/undici-types/cookies.d.ts
new file mode 100644
index 0000000..aa38cae
--- /dev/null
+++ b/client/node_modules/undici-types/cookies.d.ts
@@ -0,0 +1,28 @@
+/// <reference types="node" />
+
+import type { Headers } from './fetch'
+
+export interface Cookie {
+ name: string
+ value: string
+ expires?: Date | number
+ maxAge?: number
+ domain?: string
+ path?: string
+ secure?: boolean
+ httpOnly?: boolean
+ sameSite?: 'Strict' | 'Lax' | 'None'
+ unparsed?: string[]
+}
+
+export function deleteCookie (
+ headers: Headers,
+ name: string,
+ attributes?: { name?: string, domain?: string }
+): void
+
+export function getCookies (headers: Headers): Record<string, string>
+
+export function getSetCookies (headers: Headers): Cookie[]
+
+export function setCookie (headers: Headers, cookie: Cookie): void
diff --git a/client/node_modules/undici-types/diagnostics-channel.d.ts b/client/node_modules/undici-types/diagnostics-channel.d.ts
new file mode 100644
index 0000000..85d4482
--- /dev/null
+++ b/client/node_modules/undici-types/diagnostics-channel.d.ts
@@ -0,0 +1,67 @@
+import { Socket } from "net";
+import { URL } from "url";
+import Connector from "./connector";
+import Dispatcher from "./dispatcher";
+
+declare namespace DiagnosticsChannel {
+ interface Request {
+ origin?: string | URL;
+ completed: boolean;
+ method?: Dispatcher.HttpMethod;
+ path: string;
+ headers: string;
+ addHeader(key: string, value: string): Request;
+ }
+ interface Response {
+ statusCode: number;
+ statusText: string;
+ headers: Array<Buffer>;
+ }
+ type Error = unknown;
+ interface ConnectParams {
+ host: URL["host"];
+ hostname: URL["hostname"];
+ protocol: URL["protocol"];
+ port: URL["port"];
+ servername: string | null;
+ }
+ type Connector = Connector.connector;
+ export interface RequestCreateMessage {
+ request: Request;
+ }
+ export interface RequestBodySentMessage {
+ request: Request;
+ }
+ export interface RequestHeadersMessage {
+ request: Request;
+ response: Response;
+ }
+ export interface RequestTrailersMessage {
+ request: Request;
+ trailers: Array<Buffer>;
+ }
+ export interface RequestErrorMessage {
+ request: Request;
+ error: Error;
+ }
+ export interface ClientSendHeadersMessage {
+ request: Request;
+ headers: string;
+ socket: Socket;
+ }
+ export interface ClientBeforeConnectMessage {
+ connectParams: ConnectParams;
+ connector: Connector;
+ }
+ export interface ClientConnectedMessage {
+ socket: Socket;
+ connectParams: ConnectParams;
+ connector: Connector;
+ }
+ export interface ClientConnectErrorMessage {
+ error: Error;
+ socket: Socket;
+ connectParams: ConnectParams;
+ connector: Connector;
+ }
+}
diff --git a/client/node_modules/undici-types/dispatcher.d.ts b/client/node_modules/undici-types/dispatcher.d.ts
new file mode 100644
index 0000000..816db19
--- /dev/null
+++ b/client/node_modules/undici-types/dispatcher.d.ts
@@ -0,0 +1,241 @@
+import { URL } from 'url'
+import { Duplex, Readable, Writable } from 'stream'
+import { EventEmitter } from 'events'
+import { Blob } from 'buffer'
+import { IncomingHttpHeaders } from './header'
+import BodyReadable from './readable'
+import { FormData } from './formdata'
+import Errors from './errors'
+
+type AbortSignal = unknown;
+
+export default Dispatcher
+
+/** Dispatcher is the core API used to dispatch requests. */
+declare class Dispatcher extends EventEmitter {
+ /** Dispatches a request. This API is expected to evolve through semver-major versions and is less stable than the preceding higher level APIs. It is primarily intended for library developers who implement higher level APIs on top of this. */
+ dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
+ /** Starts two-way communications with the requested resource. */
+ connect(options: Dispatcher.ConnectOptions): Promise<Dispatcher.ConnectData>;
+ connect(options: Dispatcher.ConnectOptions, callback: (err: Error | null, data: Dispatcher.ConnectData) => void): void;
+ /** Performs an HTTP request. */
+ request(options: Dispatcher.RequestOptions): Promise<Dispatcher.ResponseData>;
+ request(options: Dispatcher.RequestOptions, callback: (err: Error | null, data: Dispatcher.ResponseData) => void): void;
+ /** For easy use with `stream.pipeline`. */
+ pipeline(options: Dispatcher.PipelineOptions, handler: Dispatcher.PipelineHandler): Duplex;
+ /** A faster version of `Dispatcher.request`. */
+ stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory): Promise<Dispatcher.StreamData>;
+ stream(options: Dispatcher.RequestOptions, factory: Dispatcher.StreamFactory, callback: (err: Error | null, data: Dispatcher.StreamData) => void): void;
+ /** Upgrade to a different protocol. */
+ upgrade(options: Dispatcher.UpgradeOptions): Promise<Dispatcher.UpgradeData>;
+ upgrade(options: Dispatcher.UpgradeOptions, callback: (err: Error | null, data: Dispatcher.UpgradeData) => void): void;
+ /** Closes the client and gracefully waits for enqueued requests to complete before invoking the callback (or returning a promise if no callback is provided). */
+ close(): Promise<void>;
+ close(callback: () => void): void;
+ /** Destroy the client abruptly with the given err. All the pending and running requests will be asynchronously aborted and error. Waits until socket is closed before invoking the callback (or returning a promise if no callback is provided). Since this operation is asynchronously dispatched there might still be some progress on dispatched requests. */
+ destroy(): Promise<void>;
+ destroy(err: Error | null): Promise<void>;
+ destroy(callback: () => void): void;
+ destroy(err: Error | null, callback: () => void): void;
+
+ on(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ on(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ on(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ on(eventName: 'drain', callback: (origin: URL) => void): this;
+
+
+ once(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ once(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ once(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ once(eventName: 'drain', callback: (origin: URL) => void): this;
+
+
+ off(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ off(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ off(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ off(eventName: 'drain', callback: (origin: URL) => void): this;
+
+
+ addListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ addListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ addListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ addListener(eventName: 'drain', callback: (origin: URL) => void): this;
+
+ removeListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ removeListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ removeListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ removeListener(eventName: 'drain', callback: (origin: URL) => void): this;
+
+ prependListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ prependListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ prependListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ prependListener(eventName: 'drain', callback: (origin: URL) => void): this;
+
+ prependOnceListener(eventName: 'connect', callback: (origin: URL, targets: readonly Dispatcher[]) => void): this;
+ prependOnceListener(eventName: 'disconnect', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ prependOnceListener(eventName: 'connectionError', callback: (origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void): this;
+ prependOnceListener(eventName: 'drain', callback: (origin: URL) => void): this;
+
+ listeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[]
+ listeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
+ listeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
+ listeners(eventName: 'drain'): ((origin: URL) => void)[];
+
+ rawListeners(eventName: 'connect'): ((origin: URL, targets: readonly Dispatcher[]) => void)[]
+ rawListeners(eventName: 'disconnect'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
+ rawListeners(eventName: 'connectionError'): ((origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError) => void)[];
+ rawListeners(eventName: 'drain'): ((origin: URL) => void)[];
+
+ emit(eventName: 'connect', origin: URL, targets: readonly Dispatcher[]): boolean;
+ emit(eventName: 'disconnect', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean;
+ emit(eventName: 'connectionError', origin: URL, targets: readonly Dispatcher[], error: Errors.UndiciError): boolean;
+ emit(eventName: 'drain', origin: URL): boolean;
+}
+
+declare namespace Dispatcher {
+ export interface DispatchOptions {
+ origin?: string | URL;
+ path: string;
+ method: HttpMethod;
+ /** Default: `null` */
+ body?: string | Buffer | Uint8Array | Readable | null | FormData;
+ /** Default: `null` */
+ headers?: IncomingHttpHeaders | string[] | null;
+ /** Query string params to be embedded in the request URL. Default: `null` */
+ query?: Record<string, any>;
+ /** Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline have completed. Default: `true` if `method` is `HEAD` or `GET`. */
+ idempotent?: boolean;
+ /** Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. */
+ blocking?: boolean;
+ /** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */
+ upgrade?: boolean | string | null;
+ /** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. */
+ headersTimeout?: number | null;
+ /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 300 seconds. */
+ bodyTimeout?: number | null;
+ /** Whether the request should stablish a keep-alive or not. Default `false` */
+ reset?: boolean;
+ /** Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. Defaults to false */
+ throwOnError?: boolean;
+ /** For H2, it appends the expect: 100-continue header, and halts the request body until a 100-continue is received from the remote server*/
+ expectContinue?: boolean;
+ }
+ export interface ConnectOptions {
+ path: string;
+ /** Default: `null` */
+ headers?: IncomingHttpHeaders | string[] | null;
+ /** Default: `null` */
+ signal?: AbortSignal | EventEmitter | null;
+ /** This argument parameter is passed through to `ConnectData` */
+ opaque?: unknown;
+ /** Default: 0 */
+ maxRedirections?: number;
+ /** Default: `null` */
+ responseHeader?: 'raw' | null;
+ }
+ export interface RequestOptions extends DispatchOptions {
+ /** Default: `null` */
+ opaque?: unknown;
+ /** Default: `null` */
+ signal?: AbortSignal | EventEmitter | null;
+ /** Default: 0 */
+ maxRedirections?: number;
+ /** Default: `null` */
+ onInfo?: (info: { statusCode: number, headers: Record<string, string | string[]> }) => void;
+ /** Default: `null` */
+ responseHeader?: 'raw' | null;
+ /** Default: `64 KiB` */
+ highWaterMark?: number;
+ }
+ export interface PipelineOptions extends RequestOptions {
+ /** `true` if the `handler` will return an object stream. Default: `false` */
+ objectMode?: boolean;
+ }
+ export interface UpgradeOptions {
+ path: string;
+ /** Default: `'GET'` */
+ method?: string;
+ /** Default: `null` */
+ headers?: IncomingHttpHeaders | string[] | null;
+ /** A string of comma separated protocols, in descending preference order. Default: `'Websocket'` */
+ protocol?: string;
+ /** Default: `null` */
+ signal?: AbortSignal | EventEmitter | null;
+ /** Default: 0 */
+ maxRedirections?: number;
+ /** Default: `null` */
+ responseHeader?: 'raw' | null;
+ }
+ export interface ConnectData {
+ statusCode: number;
+ headers: IncomingHttpHeaders;
+ socket: Duplex;
+ opaque: unknown;
+ }
+ export interface ResponseData {
+ statusCode: number;
+ headers: IncomingHttpHeaders;
+ body: BodyReadable & BodyMixin;
+ trailers: Record<string, string>;
+ opaque: unknown;
+ context: object;
+ }
+ export interface PipelineHandlerData {
+ statusCode: number;
+ headers: IncomingHttpHeaders;
+ opaque: unknown;
+ body: BodyReadable;
+ context: object;
+ }
+ export interface StreamData {
+ opaque: unknown;
+ trailers: Record<string, string>;
+ }
+ export interface UpgradeData {
+ headers: IncomingHttpHeaders;
+ socket: Duplex;
+ opaque: unknown;
+ }
+ export interface StreamFactoryData {
+ statusCode: number;
+ headers: IncomingHttpHeaders;
+ opaque: unknown;
+ context: object;
+ }
+ export type StreamFactory = (data: StreamFactoryData) => Writable;
+ export interface DispatchHandlers {
+ /** Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. */
+ onConnect?(abort: () => void): void;
+ /** Invoked when an error has occurred. */
+ onError?(err: Error): void;
+ /** Invoked when request is upgraded either due to a `Upgrade` header or `CONNECT` method. */
+ onUpgrade?(statusCode: number, headers: Buffer[] | string[] | null, socket: Duplex): void;
+ /** Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. */
+ onHeaders?(statusCode: number, headers: Buffer[] | string[] | null, resume: () => void): boolean;
+ /** Invoked when response payload data is received. */
+ onData?(chunk: Buffer): boolean;
+ /** Invoked when response payload and trailers have been received and the request has completed. */
+ onComplete?(trailers: string[] | null): void;
+ /** Invoked when a body chunk is sent to the server. May be invoked multiple times for chunked requests */
+ onBodySent?(chunkSize: number, totalBytesSent: number): void;
+ }
+ export type PipelineHandler = (data: PipelineHandlerData) => Readable;
+ export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';
+
+ /**
+ * @link https://fetch.spec.whatwg.org/#body-mixin
+ */
+ interface BodyMixin {
+ readonly body?: never; // throws on node v16.6.0
+ readonly bodyUsed: boolean;
+ arrayBuffer(): Promise<ArrayBuffer>;
+ blob(): Promise<Blob>;
+ formData(): Promise<never>;
+ json(): Promise<unknown>;
+ text(): Promise<string>;
+ }
+
+ export interface DispatchInterceptor {
+ (dispatch: Dispatcher['dispatch']): Dispatcher['dispatch']
+ }
+}
diff --git a/client/node_modules/undici-types/errors.d.ts b/client/node_modules/undici-types/errors.d.ts
new file mode 100644
index 0000000..7923ddd
--- /dev/null
+++ b/client/node_modules/undici-types/errors.d.ts
@@ -0,0 +1,128 @@
+import { IncomingHttpHeaders } from "./header";
+import Client from './client'
+
+export default Errors
+
+declare namespace Errors {
+ export class UndiciError extends Error {
+ name: string;
+ code: string;
+ }
+
+ /** Connect timeout error. */
+ export class ConnectTimeoutError extends UndiciError {
+ name: 'ConnectTimeoutError';
+ code: 'UND_ERR_CONNECT_TIMEOUT';
+ }
+
+ /** A header exceeds the `headersTimeout` option. */
+ export class HeadersTimeoutError extends UndiciError {
+ name: 'HeadersTimeoutError';
+ code: 'UND_ERR_HEADERS_TIMEOUT';
+ }
+
+ /** Headers overflow error. */
+ export class HeadersOverflowError extends UndiciError {
+ name: 'HeadersOverflowError'
+ code: 'UND_ERR_HEADERS_OVERFLOW'
+ }
+
+ /** A body exceeds the `bodyTimeout` option. */
+ export class BodyTimeoutError extends UndiciError {
+ name: 'BodyTimeoutError';
+ code: 'UND_ERR_BODY_TIMEOUT';
+ }
+
+ export class ResponseStatusCodeError extends UndiciError {
+ constructor (
+ message?: string,
+ statusCode?: number,
+ headers?: IncomingHttpHeaders | string[] | null,
+ body?: null | Record<string, any> | string
+ );
+ name: 'ResponseStatusCodeError';
+ code: 'UND_ERR_RESPONSE_STATUS_CODE';
+ body: null | Record<string, any> | string
+ status: number
+ statusCode: number
+ headers: IncomingHttpHeaders | string[] | null;
+ }
+
+ /** Passed an invalid argument. */
+ export class InvalidArgumentError extends UndiciError {
+ name: 'InvalidArgumentError';
+ code: 'UND_ERR_INVALID_ARG';
+ }
+
+ /** Returned an invalid value. */
+ export class InvalidReturnValueError extends UndiciError {
+ name: 'InvalidReturnValueError';
+ code: 'UND_ERR_INVALID_RETURN_VALUE';
+ }
+
+ /** The request has been aborted by the user. */
+ export class RequestAbortedError extends UndiciError {
+ name: 'AbortError';
+ code: 'UND_ERR_ABORTED';
+ }
+
+ /** Expected error with reason. */
+ export class InformationalError extends UndiciError {
+ name: 'InformationalError';
+ code: 'UND_ERR_INFO';
+ }
+
+ /** Request body length does not match content-length header. */
+ export class RequestContentLengthMismatchError extends UndiciError {
+ name: 'RequestContentLengthMismatchError';
+ code: 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH';
+ }
+
+ /** Response body length does not match content-length header. */
+ export class ResponseContentLengthMismatchError extends UndiciError {
+ name: 'ResponseContentLengthMismatchError';
+ code: 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH';
+ }
+
+ /** Trying to use a destroyed client. */
+ export class ClientDestroyedError extends UndiciError {
+ name: 'ClientDestroyedError';
+ code: 'UND_ERR_DESTROYED';
+ }
+
+ /** Trying to use a closed client. */
+ export class ClientClosedError extends UndiciError {
+ name: 'ClientClosedError';
+ code: 'UND_ERR_CLOSED';
+ }
+
+ /** There is an error with the socket. */
+ export class SocketError extends UndiciError {
+ name: 'SocketError';
+ code: 'UND_ERR_SOCKET';
+ socket: Client.SocketInfo | null
+ }
+
+ /** Encountered unsupported functionality. */
+ export class NotSupportedError extends UndiciError {
+ name: 'NotSupportedError';
+ code: 'UND_ERR_NOT_SUPPORTED';
+ }
+
+ /** No upstream has been added to the BalancedPool. */
+ export class BalancedPoolMissingUpstreamError extends UndiciError {
+ name: 'MissingUpstreamError';
+ code: 'UND_ERR_BPL_MISSING_UPSTREAM';
+ }
+
+ export class HTTPParserError extends UndiciError {
+ name: 'HTTPParserError';
+ code: string;
+ }
+
+ /** The response exceed the length allowed. */
+ export class ResponseExceededMaxSizeError extends UndiciError {
+ name: 'ResponseExceededMaxSizeError';
+ code: 'UND_ERR_RES_EXCEEDED_MAX_SIZE';
+ }
+}
diff --git a/client/node_modules/undici-types/fetch.d.ts b/client/node_modules/undici-types/fetch.d.ts
new file mode 100644
index 0000000..fa4619c
--- /dev/null
+++ b/client/node_modules/undici-types/fetch.d.ts
@@ -0,0 +1,209 @@
+// based on https://github.com/Ethan-Arrowood/undici-fetch/blob/249269714db874351589d2d364a0645d5160ae71/index.d.ts (MIT license)
+// and https://github.com/node-fetch/node-fetch/blob/914ce6be5ec67a8bab63d68510aabf07cb818b6d/index.d.ts (MIT license)
+/// <reference types="node" />
+
+import { Blob } from 'buffer'
+import { URL, URLSearchParams } from 'url'
+import { ReadableStream } from 'stream/web'
+import { FormData } from './formdata'
+
+import Dispatcher from './dispatcher'
+
+export type RequestInfo = string | URL | Request
+
+export declare function fetch (
+ input: RequestInfo,
+ init?: RequestInit
+): Promise<Response>
+
+export type BodyInit =
+ | ArrayBuffer
+ | AsyncIterable<Uint8Array>
+ | Blob
+ | FormData
+ | Iterable<Uint8Array>
+ | NodeJS.ArrayBufferView
+ | URLSearchParams
+ | null
+ | string
+
+export interface BodyMixin {
+ readonly body: ReadableStream | null
+ readonly bodyUsed: boolean
+
+ readonly arrayBuffer: () => Promise<ArrayBuffer>
+ readonly blob: () => Promise<Blob>
+ readonly formData: () => Promise<FormData>
+ readonly json: () => Promise<unknown>
+ readonly text: () => Promise<string>
+}
+
+export interface SpecIterator<T, TReturn = any, TNext = undefined> {
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
+}
+
+export interface SpecIterableIterator<T> extends SpecIterator<T> {
+ [Symbol.iterator](): SpecIterableIterator<T>;
+}
+
+export interface SpecIterable<T> {
+ [Symbol.iterator](): SpecIterator<T>;
+}
+
+export type HeadersInit = string[][] | Record<string, string | ReadonlyArray<string>> | Headers
+
+export declare class Headers implements SpecIterable<[string, string]> {
+ constructor (init?: HeadersInit)
+ readonly append: (name: string, value: string) => void
+ readonly delete: (name: string) => void
+ readonly get: (name: string) => string | null
+ readonly has: (name: string) => boolean
+ readonly set: (name: string, value: string) => void
+ readonly getSetCookie: () => string[]
+ readonly forEach: (
+ callbackfn: (value: string, key: string, iterable: Headers) => void,
+ thisArg?: unknown
+ ) => void
+
+ readonly keys: () => SpecIterableIterator<string>
+ readonly values: () => SpecIterableIterator<string>
+ readonly entries: () => SpecIterableIterator<[string, string]>
+ readonly [Symbol.iterator]: () => SpecIterator<[string, string]>
+}
+
+export type RequestCache =
+ | 'default'
+ | 'force-cache'
+ | 'no-cache'
+ | 'no-store'
+ | 'only-if-cached'
+ | 'reload'
+
+export type RequestCredentials = 'omit' | 'include' | 'same-origin'
+
+type RequestDestination =
+ | ''
+ | 'audio'
+ | 'audioworklet'
+ | 'document'
+ | 'embed'
+ | 'font'
+ | 'image'
+ | 'manifest'
+ | 'object'
+ | 'paintworklet'
+ | 'report'
+ | 'script'
+ | 'sharedworker'
+ | 'style'
+ | 'track'
+ | 'video'
+ | 'worker'
+ | 'xslt'
+
+export interface RequestInit {
+ method?: string
+ keepalive?: boolean
+ headers?: HeadersInit
+ body?: BodyInit
+ redirect?: RequestRedirect
+ integrity?: string
+ signal?: AbortSignal
+ credentials?: RequestCredentials
+ mode?: RequestMode
+ referrer?: string
+ referrerPolicy?: ReferrerPolicy
+ window?: null
+ dispatcher?: Dispatcher
+ duplex?: RequestDuplex
+}
+
+export type ReferrerPolicy =
+ | ''
+ | 'no-referrer'
+ | 'no-referrer-when-downgrade'
+ | 'origin'
+ | 'origin-when-cross-origin'
+ | 'same-origin'
+ | 'strict-origin'
+ | 'strict-origin-when-cross-origin'
+ | 'unsafe-url';
+
+export type RequestMode = 'cors' | 'navigate' | 'no-cors' | 'same-origin'
+
+export type RequestRedirect = 'error' | 'follow' | 'manual'
+
+export type RequestDuplex = 'half'
+
+export declare class Request implements BodyMixin {
+ constructor (input: RequestInfo, init?: RequestInit)
+
+ readonly cache: RequestCache
+ readonly credentials: RequestCredentials
+ readonly destination: RequestDestination
+ readonly headers: Headers
+ readonly integrity: string
+ readonly method: string
+ readonly mode: RequestMode
+ readonly redirect: RequestRedirect
+ readonly referrerPolicy: string
+ readonly url: string
+
+ readonly keepalive: boolean
+ readonly signal: AbortSignal
+ readonly duplex: RequestDuplex
+
+ readonly body: ReadableStream | null
+ readonly bodyUsed: boolean
+
+ readonly arrayBuffer: () => Promise<ArrayBuffer>
+ readonly blob: () => Promise<Blob>
+ readonly formData: () => Promise<FormData>
+ readonly json: () => Promise<unknown>
+ readonly text: () => Promise<string>
+
+ readonly clone: () => Request
+}
+
+export interface ResponseInit {
+ readonly status?: number
+ readonly statusText?: string
+ readonly headers?: HeadersInit
+}
+
+export type ResponseType =
+ | 'basic'
+ | 'cors'
+ | 'default'
+ | 'error'
+ | 'opaque'
+ | 'opaqueredirect'
+
+export type ResponseRedirectStatus = 301 | 302 | 303 | 307 | 308
+
+export declare class Response implements BodyMixin {
+ constructor (body?: BodyInit, init?: ResponseInit)
+
+ readonly headers: Headers
+ readonly ok: boolean
+ readonly status: number
+ readonly statusText: string
+ readonly type: ResponseType
+ readonly url: string
+ readonly redirected: boolean
+
+ readonly body: ReadableStream | null
+ readonly bodyUsed: boolean
+
+ readonly arrayBuffer: () => Promise<ArrayBuffer>
+ readonly blob: () => Promise<Blob>
+ readonly formData: () => Promise<FormData>
+ readonly json: () => Promise<unknown>
+ readonly text: () => Promise<string>
+
+ readonly clone: () => Response
+
+ static error (): Response
+ static json(data: any, init?: ResponseInit): Response
+ static redirect (url: string | URL, status: ResponseRedirectStatus): Response
+}
diff --git a/client/node_modules/undici-types/file.d.ts b/client/node_modules/undici-types/file.d.ts
new file mode 100644
index 0000000..c695b7a
--- /dev/null
+++ b/client/node_modules/undici-types/file.d.ts
@@ -0,0 +1,39 @@
+// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/File.ts (MIT)
+/// <reference types="node" />
+
+import { Blob } from 'buffer'
+
+export interface BlobPropertyBag {
+ type?: string
+ endings?: 'native' | 'transparent'
+}
+
+export interface FilePropertyBag extends BlobPropertyBag {
+ /**
+ * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
+ */
+ lastModified?: number
+}
+
+export declare class File extends Blob {
+ /**
+ * Creates a new File instance.
+ *
+ * @param fileBits An `Array` strings, or [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer), [`ArrayBufferView`](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView), [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) objects, or a mix of any of such objects, that will be put inside the [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File).
+ * @param fileName The name of the file.
+ * @param options An options object containing optional attributes for the file.
+ */
+ constructor(fileBits: ReadonlyArray<string | NodeJS.ArrayBufferView | Blob>, fileName: string, options?: FilePropertyBag)
+
+ /**
+ * Name of the file referenced by the File object.
+ */
+ readonly name: string
+
+ /**
+ * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
+ */
+ readonly lastModified: number
+
+ readonly [Symbol.toStringTag]: string
+}
diff --git a/client/node_modules/undici-types/filereader.d.ts b/client/node_modules/undici-types/filereader.d.ts
new file mode 100644
index 0000000..f05d231
--- /dev/null
+++ b/client/node_modules/undici-types/filereader.d.ts
@@ -0,0 +1,54 @@
+/// <reference types="node" />
+
+import { Blob } from 'buffer'
+import { DOMException, Event, EventInit, EventTarget } from './patch'
+
+export declare class FileReader {
+ __proto__: EventTarget & FileReader
+
+ constructor ()
+
+ readAsArrayBuffer (blob: Blob): void
+ readAsBinaryString (blob: Blob): void
+ readAsText (blob: Blob, encoding?: string): void
+ readAsDataURL (blob: Blob): void
+
+ abort (): void
+
+ static readonly EMPTY = 0
+ static readonly LOADING = 1
+ static readonly DONE = 2
+
+ readonly EMPTY = 0
+ readonly LOADING = 1
+ readonly DONE = 2
+
+ readonly readyState: number
+
+ readonly result: string | ArrayBuffer | null
+
+ readonly error: DOMException | null
+
+ onloadstart: null | ((this: FileReader, event: ProgressEvent) => void)
+ onprogress: null | ((this: FileReader, event: ProgressEvent) => void)
+ onload: null | ((this: FileReader, event: ProgressEvent) => void)
+ onabort: null | ((this: FileReader, event: ProgressEvent) => void)
+ onerror: null | ((this: FileReader, event: ProgressEvent) => void)
+ onloadend: null | ((this: FileReader, event: ProgressEvent) => void)
+}
+
+export interface ProgressEventInit extends EventInit {
+ lengthComputable?: boolean
+ loaded?: number
+ total?: number
+}
+
+export declare class ProgressEvent {
+ __proto__: Event & ProgressEvent
+
+ constructor (type: string, eventInitDict?: ProgressEventInit)
+
+ readonly lengthComputable: boolean
+ readonly loaded: number
+ readonly total: number
+}
diff --git a/client/node_modules/undici-types/formdata.d.ts b/client/node_modules/undici-types/formdata.d.ts
new file mode 100644
index 0000000..df29a57
--- /dev/null
+++ b/client/node_modules/undici-types/formdata.d.ts
@@ -0,0 +1,108 @@
+// Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/FormData.ts (MIT)
+/// <reference types="node" />
+
+import { File } from './file'
+import { SpecIterator, SpecIterableIterator } from './fetch'
+
+/**
+ * A `string` or `File` that represents a single value from a set of `FormData` key-value pairs.
+ */
+declare type FormDataEntryValue = string | File
+
+/**
+ * Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using fetch().
+ */
+export declare class FormData {
+ /**
+ * Appends a new value onto an existing key inside a FormData object,
+ * or adds the key if it does not already exist.
+ *
+ * The difference between `set()` and `append()` is that if the specified key already exists, `set()` will overwrite all existing values with the new one, whereas `append()` will append the new value onto the end of the existing set of values.
+ *
+ * @param name The name of the field whose data is contained in `value`.
+ * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
+ or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string.
+ * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename.
+ */
+ append(name: string, value: unknown, fileName?: string): void
+
+ /**
+ * Set a new value for an existing key inside FormData,
+ * or add the new field if it does not already exist.
+ *
+ * @param name The name of the field whose data is contained in `value`.
+ * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
+ or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string.
+ * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename.
+ *
+ */
+ set(name: string, value: unknown, fileName?: string): void
+
+ /**
+ * Returns the first value associated with a given key from within a `FormData` object.
+ * If you expect multiple values and want all of them, use the `getAll()` method instead.
+ *
+ * @param {string} name A name of the value you want to retrieve.
+ *
+ * @returns A `FormDataEntryValue` containing the value. If the key doesn't exist, the method returns null.
+ */
+ get(name: string): FormDataEntryValue | null
+
+ /**
+ * Returns all the values associated with a given key from within a `FormData` object.
+ *
+ * @param {string} name A name of the value you want to retrieve.
+ *
+ * @returns An array of `FormDataEntryValue` whose key matches the value passed in the `name` parameter. If the key doesn't exist, the method returns an empty list.
+ */
+ getAll(name: string): FormDataEntryValue[]
+
+ /**
+ * Returns a boolean stating whether a `FormData` object contains a certain key.
+ *
+ * @param name A string representing the name of the key you want to test for.
+ *
+ * @return A boolean value.
+ */
+ has(name: string): boolean
+
+ /**
+ * Deletes a key and its value(s) from a `FormData` object.
+ *
+ * @param name The name of the key you want to delete.
+ */
+ delete(name: string): void
+
+ /**
+ * Executes given callback function for each field of the FormData instance
+ */
+ forEach: (
+ callbackfn: (value: FormDataEntryValue, key: string, iterable: FormData) => void,
+ thisArg?: unknown
+ ) => void
+
+ /**
+ * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all keys contained in this `FormData` object.
+ * Each key is a `string`.
+ */
+ keys: () => SpecIterableIterator<string>
+
+ /**
+ * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all values contained in this object `FormData` object.
+ * Each value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue).
+ */
+ values: () => SpecIterableIterator<FormDataEntryValue>
+
+ /**
+ * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs.
+ * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue).
+ */
+ entries: () => SpecIterableIterator<[string, FormDataEntryValue]>
+
+ /**
+ * An alias for FormData#entries()
+ */
+ [Symbol.iterator]: () => SpecIterableIterator<[string, FormDataEntryValue]>
+
+ readonly [Symbol.toStringTag]: string
+}
diff --git a/client/node_modules/undici-types/global-dispatcher.d.ts b/client/node_modules/undici-types/global-dispatcher.d.ts
new file mode 100644
index 0000000..728f95c
--- /dev/null
+++ b/client/node_modules/undici-types/global-dispatcher.d.ts
@@ -0,0 +1,9 @@
+import Dispatcher from "./dispatcher";
+
+export {
+ getGlobalDispatcher,
+ setGlobalDispatcher
+}
+
+declare function setGlobalDispatcher<DispatcherImplementation extends Dispatcher>(dispatcher: DispatcherImplementation): void;
+declare function getGlobalDispatcher(): Dispatcher;
diff --git a/client/node_modules/undici-types/global-origin.d.ts b/client/node_modules/undici-types/global-origin.d.ts
new file mode 100644
index 0000000..322542d
--- /dev/null
+++ b/client/node_modules/undici-types/global-origin.d.ts
@@ -0,0 +1,7 @@
+export {
+ setGlobalOrigin,
+ getGlobalOrigin
+}
+
+declare function setGlobalOrigin(origin: string | URL | undefined): void;
+declare function getGlobalOrigin(): URL | undefined; \ No newline at end of file
diff --git a/client/node_modules/undici-types/handlers.d.ts b/client/node_modules/undici-types/handlers.d.ts
new file mode 100644
index 0000000..eb4f5a9
--- /dev/null
+++ b/client/node_modules/undici-types/handlers.d.ts
@@ -0,0 +1,9 @@
+import Dispatcher from "./dispatcher";
+
+export declare class RedirectHandler implements Dispatcher.DispatchHandlers{
+ constructor (dispatch: Dispatcher, maxRedirections: number, opts: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandlers)
+}
+
+export declare class DecoratorHandler implements Dispatcher.DispatchHandlers{
+ constructor (handler: Dispatcher.DispatchHandlers)
+}
diff --git a/client/node_modules/undici-types/header.d.ts b/client/node_modules/undici-types/header.d.ts
new file mode 100644
index 0000000..bfdb329
--- /dev/null
+++ b/client/node_modules/undici-types/header.d.ts
@@ -0,0 +1,4 @@
+/**
+ * The header type declaration of `undici`.
+ */
+export type IncomingHttpHeaders = Record<string, string | string[] | undefined>;
diff --git a/client/node_modules/undici-types/index.d.ts b/client/node_modules/undici-types/index.d.ts
new file mode 100644
index 0000000..4589845
--- /dev/null
+++ b/client/node_modules/undici-types/index.d.ts
@@ -0,0 +1,63 @@
+import Dispatcher from'./dispatcher'
+import { setGlobalDispatcher, getGlobalDispatcher } from './global-dispatcher'
+import { setGlobalOrigin, getGlobalOrigin } from './global-origin'
+import Pool from'./pool'
+import { RedirectHandler, DecoratorHandler } from './handlers'
+
+import BalancedPool from './balanced-pool'
+import Client from'./client'
+import buildConnector from'./connector'
+import errors from'./errors'
+import Agent from'./agent'
+import MockClient from'./mock-client'
+import MockPool from'./mock-pool'
+import MockAgent from'./mock-agent'
+import mockErrors from'./mock-errors'
+import ProxyAgent from'./proxy-agent'
+import { request, pipeline, stream, connect, upgrade } from './api'
+
+export * from './cookies'
+export * from './fetch'
+export * from './file'
+export * from './filereader'
+export * from './formdata'
+export * from './diagnostics-channel'
+export * from './websocket'
+export * from './content-type'
+export * from './cache'
+export { Interceptable } from './mock-interceptor'
+
+export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent, RedirectHandler, DecoratorHandler }
+export default Undici
+
+declare namespace Undici {
+ var Dispatcher: typeof import('./dispatcher').default
+ var Pool: typeof import('./pool').default;
+ var RedirectHandler: typeof import ('./handlers').RedirectHandler
+ var DecoratorHandler: typeof import ('./handlers').DecoratorHandler
+ var createRedirectInterceptor: typeof import ('./interceptors').createRedirectInterceptor
+ var BalancedPool: typeof import('./balanced-pool').default;
+ var Client: typeof import('./client').default;
+ var buildConnector: typeof import('./connector').default;
+ var errors: typeof import('./errors').default;
+ var Agent: typeof import('./agent').default;
+ var setGlobalDispatcher: typeof import('./global-dispatcher').setGlobalDispatcher;
+ var getGlobalDispatcher: typeof import('./global-dispatcher').getGlobalDispatcher;
+ var request: typeof import('./api').request;
+ var stream: typeof import('./api').stream;
+ var pipeline: typeof import('./api').pipeline;
+ var connect: typeof import('./api').connect;
+ var upgrade: typeof import('./api').upgrade;
+ var MockClient: typeof import('./mock-client').default;
+ var MockPool: typeof import('./mock-pool').default;
+ var MockAgent: typeof import('./mock-agent').default;
+ var mockErrors: typeof import('./mock-errors').default;
+ var fetch: typeof import('./fetch').fetch;
+ var Headers: typeof import('./fetch').Headers;
+ var Response: typeof import('./fetch').Response;
+ var Request: typeof import('./fetch').Request;
+ var FormData: typeof import('./formdata').FormData;
+ var File: typeof import('./file').File;
+ var FileReader: typeof import('./filereader').FileReader;
+ var caches: typeof import('./cache').caches;
+}
diff --git a/client/node_modules/undici-types/interceptors.d.ts b/client/node_modules/undici-types/interceptors.d.ts
new file mode 100644
index 0000000..047ac17
--- /dev/null
+++ b/client/node_modules/undici-types/interceptors.d.ts
@@ -0,0 +1,5 @@
+import Dispatcher from "./dispatcher";
+
+type RedirectInterceptorOpts = { maxRedirections?: number }
+
+export declare function createRedirectInterceptor (opts: RedirectInterceptorOpts): Dispatcher.DispatchInterceptor
diff --git a/client/node_modules/undici-types/mock-agent.d.ts b/client/node_modules/undici-types/mock-agent.d.ts
new file mode 100644
index 0000000..98cd645
--- /dev/null
+++ b/client/node_modules/undici-types/mock-agent.d.ts
@@ -0,0 +1,50 @@
+import Agent from './agent'
+import Dispatcher from './dispatcher'
+import { Interceptable, MockInterceptor } from './mock-interceptor'
+import MockDispatch = MockInterceptor.MockDispatch;
+
+export default MockAgent
+
+interface PendingInterceptor extends MockDispatch {
+ origin: string;
+}
+
+/** A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead. */
+declare class MockAgent<TMockAgentOptions extends MockAgent.Options = MockAgent.Options> extends Dispatcher {
+ constructor(options?: MockAgent.Options)
+ /** Creates and retrieves mock Dispatcher instances which can then be used to intercept HTTP requests. If the number of connections on the mock agent is set to 1, a MockClient instance is returned. Otherwise a MockPool instance is returned. */
+ get<TInterceptable extends Interceptable>(origin: string): TInterceptable;
+ get<TInterceptable extends Interceptable>(origin: RegExp): TInterceptable;
+ get<TInterceptable extends Interceptable>(origin: ((origin: string) => boolean)): TInterceptable;
+ /** Dispatches a mocked request. */
+ dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
+ /** Closes the mock agent and waits for registered mock pools and clients to also close before resolving. */
+ close(): Promise<void>;
+ /** Disables mocking in MockAgent. */
+ deactivate(): void;
+ /** Enables mocking in a MockAgent instance. When instantiated, a MockAgent is automatically activated. Therefore, this method is only effective after `MockAgent.deactivate` has been called. */
+ activate(): void;
+ /** Define host matchers so only matching requests that aren't intercepted by the mock dispatchers will be attempted. */
+ enableNetConnect(): void;
+ enableNetConnect(host: string): void;
+ enableNetConnect(host: RegExp): void;
+ enableNetConnect(host: ((host: string) => boolean)): void;
+ /** Causes all requests to throw when requests are not matched in a MockAgent intercept. */
+ disableNetConnect(): void;
+ pendingInterceptors(): PendingInterceptor[];
+ assertNoPendingInterceptors(options?: {
+ pendingInterceptorsFormatter?: PendingInterceptorsFormatter;
+ }): void;
+}
+
+interface PendingInterceptorsFormatter {
+ format(pendingInterceptors: readonly PendingInterceptor[]): string;
+}
+
+declare namespace MockAgent {
+ /** MockAgent options. */
+ export interface Options extends Agent.Options {
+ /** A custom agent to be encapsulated by the MockAgent. */
+ agent?: Agent;
+ }
+}
diff --git a/client/node_modules/undici-types/mock-client.d.ts b/client/node_modules/undici-types/mock-client.d.ts
new file mode 100644
index 0000000..51d008c
--- /dev/null
+++ b/client/node_modules/undici-types/mock-client.d.ts
@@ -0,0 +1,25 @@
+import Client from './client'
+import Dispatcher from './dispatcher'
+import MockAgent from './mock-agent'
+import { MockInterceptor, Interceptable } from './mock-interceptor'
+
+export default MockClient
+
+/** MockClient extends the Client API and allows one to mock requests. */
+declare class MockClient extends Client implements Interceptable {
+ constructor(origin: string, options: MockClient.Options);
+ /** Intercepts any matching requests that use the same origin as this mock client. */
+ intercept(options: MockInterceptor.Options): MockInterceptor;
+ /** Dispatches a mocked request. */
+ dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean;
+ /** Closes the mock client and gracefully waits for enqueued requests to complete. */
+ close(): Promise<void>;
+}
+
+declare namespace MockClient {
+ /** MockClient options. */
+ export interface Options extends Client.Options {
+ /** The agent to associate this MockClient with. */
+ agent: MockAgent;
+ }
+}
diff --git a/client/node_modules/undici-types/mock-errors.d.ts b/client/node_modules/undici-types/mock-errors.d.ts
new file mode 100644
index 0000000..3d9e727
--- /dev/null
+++ b/client/node_modules/undici-types/mock-errors.d.ts
@@ -0,0 +1,12 @@
+import Errors from './errors'
+
+export default MockErrors
+
+declare namespace MockErrors {
+ /** The request does not match any registered mock dispatches. */
+ export class MockNotMatchedError extends Errors.UndiciError {
+ constructor(message?: string);
+ name: 'MockNotMatchedError';
+ code: 'UND_MOCK_ERR_MOCK_NOT_MATCHED';
+ }
+}
diff --git a/client/node_modules/undici-types/mock-interceptor.d.ts b/client/node_modules/undici-types/mock-interceptor.d.ts
new file mode 100644
index 0000000..6b3961c
--- /dev/null
+++ b/client/node_modules/undici-types/mock-interceptor.d.ts
@@ -0,0 +1,93 @@
+import { IncomingHttpHeaders } from './header'
+import Dispatcher from './dispatcher';
+import { BodyInit, Headers } from './fetch'
+
+export {
+ Interceptable,
+ MockInterceptor,
+ MockScope
+}
+
+/** The scope associated with a mock dispatch. */
+declare class MockScope<TData extends object = object> {
+ constructor(mockDispatch: MockInterceptor.MockDispatch<TData>);
+ /** Delay a reply by a set amount of time in ms. */
+ delay(waitInMs: number): MockScope<TData>;
+ /** Persist the defined mock data for the associated reply. It will return the defined mock data indefinitely. */
+ persist(): MockScope<TData>;
+ /** Define a reply for a set amount of matching requests. */
+ times(repeatTimes: number): MockScope<TData>;
+}
+
+/** The interceptor for a Mock. */
+declare class MockInterceptor {
+ constructor(options: MockInterceptor.Options, mockDispatches: MockInterceptor.MockDispatch[]);
+ /** Mock an undici request with the defined reply. */
+ reply<TData extends object = object>(replyOptionsCallback: MockInterceptor.MockReplyOptionsCallback<TData>): MockScope<TData>;
+ reply<TData extends object = object>(
+ statusCode: number,
+ data?: TData | Buffer | string | MockInterceptor.MockResponseDataHandler<TData>,
+ responseOptions?: MockInterceptor.MockResponseOptions
+ ): MockScope<TData>;
+ /** Mock an undici request by throwing the defined reply error. */
+ replyWithError<TError extends Error = Error>(error: TError): MockScope;
+ /** Set default reply headers on the interceptor for subsequent mocked replies. */
+ defaultReplyHeaders(headers: IncomingHttpHeaders): MockInterceptor;
+ /** Set default reply trailers on the interceptor for subsequent mocked replies. */
+ defaultReplyTrailers(trailers: Record<string, string>): MockInterceptor;
+ /** Set automatically calculated content-length header on subsequent mocked replies. */
+ replyContentLength(): MockInterceptor;
+}
+
+declare namespace MockInterceptor {
+ /** MockInterceptor options. */
+ export interface Options {
+ /** Path to intercept on. */
+ path: string | RegExp | ((path: string) => boolean);
+ /** Method to intercept on. Defaults to GET. */
+ method?: string | RegExp | ((method: string) => boolean);
+ /** Body to intercept on. */
+ body?: string | RegExp | ((body: string) => boolean);
+ /** Headers to intercept on. */
+ headers?: Record<string, string | RegExp | ((body: string) => boolean)> | ((headers: Record<string, string>) => boolean);
+ /** Query params to intercept on */
+ query?: Record<string, any>;
+ }
+ export interface MockDispatch<TData extends object = object, TError extends Error = Error> extends Options {
+ times: number | null;
+ persist: boolean;
+ consumed: boolean;
+ data: MockDispatchData<TData, TError>;
+ }
+ export interface MockDispatchData<TData extends object = object, TError extends Error = Error> extends MockResponseOptions {
+ error: TError | null;
+ statusCode?: number;
+ data?: TData | string;
+ }
+ export interface MockResponseOptions {
+ headers?: IncomingHttpHeaders;
+ trailers?: Record<string, string>;
+ }
+
+ export interface MockResponseCallbackOptions {
+ path: string;
+ origin: string;
+ method: string;
+ body?: BodyInit | Dispatcher.DispatchOptions['body'];
+ headers: Headers | Record<string, string>;
+ maxRedirections: number;
+ }
+
+ export type MockResponseDataHandler<TData extends object = object> = (
+ opts: MockResponseCallbackOptions
+ ) => TData | Buffer | string;
+
+ export type MockReplyOptionsCallback<TData extends object = object> = (
+ opts: MockResponseCallbackOptions
+ ) => { statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions }
+}
+
+interface Interceptable extends Dispatcher {
+ /** Intercepts any matching requests that use the same origin as this mock client. */
+ intercept(options: MockInterceptor.Options): MockInterceptor;
+}
diff --git a/client/node_modules/undici-types/mock-pool.d.ts b/client/node_modules/undici-types/mock-pool.d.ts
new file mode 100644
index 0000000..39e709a
--- /dev/null
+++ b/client/node_modules/undici-types/mock-pool.d.ts
@@ -0,0 +1,25 @@
+import Pool from './pool'
+import MockAgent from './mock-agent'
+import { Interceptable, MockInterceptor } from './mock-interceptor'
+import Dispatcher from './dispatcher'
+
+export default MockPool
+
+/** MockPool extends the Pool API and allows one to mock requests. */
+declare class MockPool extends Pool implements Interceptable {
+ constructor(origin: string, options: MockPool.Options);
+ /** Intercepts any matching requests that use the same origin as this mock pool. */
+ intercept(options: MockInterceptor.Options): MockInterceptor;
+ /** Dispatches a mocked request. */
+ dispatch(options: Dispatcher.DispatchOptions, handlers: Dispatcher.DispatchHandlers): boolean;
+ /** Closes the mock pool and gracefully waits for enqueued requests to complete. */
+ close(): Promise<void>;
+}
+
+declare namespace MockPool {
+ /** MockPool options. */
+ export interface Options extends Pool.Options {
+ /** The agent to associate this MockPool with. */
+ agent: MockAgent;
+ }
+}
diff --git a/client/node_modules/undici-types/package.json b/client/node_modules/undici-types/package.json
new file mode 100644
index 0000000..be7aa4c
--- /dev/null
+++ b/client/node_modules/undici-types/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "undici-types",
+ "version": "5.26.5",
+ "description": "A stand-alone types package for Undici",
+ "homepage": "https://undici.nodejs.org",
+ "bugs": {
+ "url": "https://github.com/nodejs/undici/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/nodejs/undici.git"
+ },
+ "license": "MIT",
+ "types": "index.d.ts",
+ "files": [
+ "*.d.ts"
+ ],
+ "contributors": [
+ {
+ "name": "Daniele Belardi",
+ "url": "https://github.com/dnlup",
+ "author": true
+ },
+ {
+ "name": "Ethan Arrowood",
+ "url": "https://github.com/ethan-arrowood",
+ "author": true
+ },
+ {
+ "name": "Matteo Collina",
+ "url": "https://github.com/mcollina",
+ "author": true
+ },
+ {
+ "name": "Matthew Aitken",
+ "url": "https://github.com/KhafraDev",
+ "author": true
+ },
+ {
+ "name": "Robert Nagy",
+ "url": "https://github.com/ronag",
+ "author": true
+ },
+ {
+ "name": "Szymon Marczak",
+ "url": "https://github.com/szmarczak",
+ "author": true
+ },
+ {
+ "name": "Tomas Della Vedova",
+ "url": "https://github.com/delvedor",
+ "author": true
+ }
+ ]
+} \ No newline at end of file
diff --git a/client/node_modules/undici-types/patch.d.ts b/client/node_modules/undici-types/patch.d.ts
new file mode 100644
index 0000000..3871acf
--- /dev/null
+++ b/client/node_modules/undici-types/patch.d.ts
@@ -0,0 +1,71 @@
+/// <reference types="node" />
+
+// See https://github.com/nodejs/undici/issues/1740
+
+export type DOMException = typeof globalThis extends { DOMException: infer T }
+ ? T
+ : any
+
+export type EventTarget = typeof globalThis extends { EventTarget: infer T }
+ ? T
+ : {
+ addEventListener(
+ type: string,
+ listener: any,
+ options?: any,
+ ): void
+ dispatchEvent(event: Event): boolean
+ removeEventListener(
+ type: string,
+ listener: any,
+ options?: any | boolean,
+ ): void
+ }
+
+export type Event = typeof globalThis extends { Event: infer T }
+ ? T
+ : {
+ readonly bubbles: boolean
+ cancelBubble: () => void
+ readonly cancelable: boolean
+ readonly composed: boolean
+ composedPath(): [EventTarget?]
+ readonly currentTarget: EventTarget | null
+ readonly defaultPrevented: boolean
+ readonly eventPhase: 0 | 2
+ readonly isTrusted: boolean
+ preventDefault(): void
+ returnValue: boolean
+ readonly srcElement: EventTarget | null
+ stopImmediatePropagation(): void
+ stopPropagation(): void
+ readonly target: EventTarget | null
+ readonly timeStamp: number
+ readonly type: string
+ }
+
+export interface EventInit {
+ bubbles?: boolean
+ cancelable?: boolean
+ composed?: boolean
+}
+
+export interface EventListenerOptions {
+ capture?: boolean
+}
+
+export interface AddEventListenerOptions extends EventListenerOptions {
+ once?: boolean
+ passive?: boolean
+ signal?: AbortSignal
+}
+
+export type EventListenerOrEventListenerObject = EventListener | EventListenerObject
+
+export interface EventListenerObject {
+ handleEvent (object: Event): void
+}
+
+export interface EventListener {
+ (evt: Event): void
+}
diff --git a/client/node_modules/undici-types/pool-stats.d.ts b/client/node_modules/undici-types/pool-stats.d.ts
new file mode 100644
index 0000000..8b6d2bf
--- /dev/null
+++ b/client/node_modules/undici-types/pool-stats.d.ts
@@ -0,0 +1,19 @@
+import Pool from "./pool"
+
+export default PoolStats
+
+declare class PoolStats {
+ constructor(pool: Pool);
+ /** Number of open socket connections in this pool. */
+ connected: number;
+ /** Number of open socket connections in this pool that do not have an active request. */
+ free: number;
+ /** Number of pending requests across all clients in this pool. */
+ pending: number;
+ /** Number of queued requests across all clients in this pool. */
+ queued: number;
+ /** Number of currently active requests across all clients in this pool. */
+ running: number;
+ /** Number of active, pending, or queued requests across all clients in this pool. */
+ size: number;
+}
diff --git a/client/node_modules/undici-types/pool.d.ts b/client/node_modules/undici-types/pool.d.ts
new file mode 100644
index 0000000..7747d48
--- /dev/null
+++ b/client/node_modules/undici-types/pool.d.ts
@@ -0,0 +1,28 @@
+import Client from './client'
+import TPoolStats from './pool-stats'
+import { URL } from 'url'
+import Dispatcher from "./dispatcher";
+
+export default Pool
+
+declare class Pool extends Dispatcher {
+ constructor(url: string | URL, options?: Pool.Options)
+ /** `true` after `pool.close()` has been called. */
+ closed: boolean;
+ /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */
+ destroyed: boolean;
+ /** Aggregate stats for a Pool. */
+ readonly stats: TPoolStats;
+}
+
+declare namespace Pool {
+ export type PoolStats = TPoolStats;
+ export interface Options extends Client.Options {
+ /** Default: `(origin, opts) => new Client(origin, opts)`. */
+ factory?(origin: URL, opts: object): Dispatcher;
+ /** The max number of clients to create. `null` if no limit. Default `null`. */
+ connections?: number | null;
+
+ interceptors?: { Pool?: readonly Dispatcher.DispatchInterceptor[] } & Client.Options["interceptors"]
+ }
+}
diff --git a/client/node_modules/undici-types/proxy-agent.d.ts b/client/node_modules/undici-types/proxy-agent.d.ts
new file mode 100644
index 0000000..96b2638
--- /dev/null
+++ b/client/node_modules/undici-types/proxy-agent.d.ts
@@ -0,0 +1,30 @@
+import Agent from './agent'
+import buildConnector from './connector';
+import Client from './client'
+import Dispatcher from './dispatcher'
+import { IncomingHttpHeaders } from './header'
+import Pool from './pool'
+
+export default ProxyAgent
+
+declare class ProxyAgent extends Dispatcher {
+ constructor(options: ProxyAgent.Options | string)
+
+ dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandlers): boolean;
+ close(): Promise<void>;
+}
+
+declare namespace ProxyAgent {
+ export interface Options extends Agent.Options {
+ uri: string;
+ /**
+ * @deprecated use opts.token
+ */
+ auth?: string;
+ token?: string;
+ headers?: IncomingHttpHeaders;
+ requestTls?: buildConnector.BuildOptions;
+ proxyTls?: buildConnector.BuildOptions;
+ clientFactory?(origin: URL, opts: object): Dispatcher;
+ }
+}
diff --git a/client/node_modules/undici-types/readable.d.ts b/client/node_modules/undici-types/readable.d.ts
new file mode 100644
index 0000000..4549a8c
--- /dev/null
+++ b/client/node_modules/undici-types/readable.d.ts
@@ -0,0 +1,61 @@
+import { Readable } from "stream";
+import { Blob } from 'buffer'
+
+export default BodyReadable
+
+declare class BodyReadable extends Readable {
+ constructor(
+ resume?: (this: Readable, size: number) => void | null,
+ abort?: () => void | null,
+ contentType?: string
+ )
+
+ /** Consumes and returns the body as a string
+ * https://fetch.spec.whatwg.org/#dom-body-text
+ */
+ text(): Promise<string>
+
+ /** Consumes and returns the body as a JavaScript Object
+ * https://fetch.spec.whatwg.org/#dom-body-json
+ */
+ json(): Promise<unknown>
+
+ /** Consumes and returns the body as a Blob
+ * https://fetch.spec.whatwg.org/#dom-body-blob
+ */
+ blob(): Promise<Blob>
+
+ /** Consumes and returns the body as an ArrayBuffer
+ * https://fetch.spec.whatwg.org/#dom-body-arraybuffer
+ */
+ arrayBuffer(): Promise<ArrayBuffer>
+
+ /** Not implemented
+ *
+ * https://fetch.spec.whatwg.org/#dom-body-formdata
+ */
+ formData(): Promise<never>
+
+ /** Returns true if the body is not null and the body has been consumed
+ *
+ * Otherwise, returns false
+ *
+ * https://fetch.spec.whatwg.org/#dom-body-bodyused
+ */
+ readonly bodyUsed: boolean
+
+ /** Throws on node 16.6.0
+ *
+ * If body is null, it should return null as the body
+ *
+ * If body is not null, should return the body as a ReadableStream
+ *
+ * https://fetch.spec.whatwg.org/#dom-body-body
+ */
+ readonly body: never | undefined
+
+ /** Dumps the response body by reading `limit` number of bytes.
+ * @param opts.limit Number of bytes to read (optional) - Default: 262144
+ */
+ dump(opts?: { limit: number }): Promise<void>
+}
diff --git a/client/node_modules/undici-types/webidl.d.ts b/client/node_modules/undici-types/webidl.d.ts
new file mode 100644
index 0000000..40cfe06
--- /dev/null
+++ b/client/node_modules/undici-types/webidl.d.ts
@@ -0,0 +1,220 @@
+// These types are not exported, and are only used internally
+
+/**
+ * Take in an unknown value and return one that is of type T
+ */
+type Converter<T> = (object: unknown) => T
+
+type SequenceConverter<T> = (object: unknown) => T[]
+
+type RecordConverter<K extends string, V> = (object: unknown) => Record<K, V>
+
+interface ConvertToIntOpts {
+ clamp?: boolean
+ enforceRange?: boolean
+}
+
+interface WebidlErrors {
+ exception (opts: { header: string, message: string }): TypeError
+ /**
+ * @description Throw an error when conversion from one type to another has failed
+ */
+ conversionFailed (opts: {
+ prefix: string
+ argument: string
+ types: string[]
+ }): TypeError
+ /**
+ * @description Throw an error when an invalid argument is provided
+ */
+ invalidArgument (opts: {
+ prefix: string
+ value: string
+ type: string
+ }): TypeError
+}
+
+interface WebidlUtil {
+ /**
+ * @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
+ */
+ Type (object: unknown):
+ | 'Undefined'
+ | 'Boolean'
+ | 'String'
+ | 'Symbol'
+ | 'Number'
+ | 'BigInt'
+ | 'Null'
+ | 'Object'
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
+ */
+ ConvertToInt (
+ V: unknown,
+ bitLength: number,
+ signedness: 'signed' | 'unsigned',
+ opts?: ConvertToIntOpts
+ ): number
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
+ */
+ IntegerPart (N: number): number
+}
+
+interface WebidlConverters {
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-DOMString
+ */
+ DOMString (V: unknown, opts?: {
+ legacyNullToEmptyString: boolean
+ }): string
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-ByteString
+ */
+ ByteString (V: unknown): string
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-USVString
+ */
+ USVString (V: unknown): string
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-boolean
+ */
+ boolean (V: unknown): boolean
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-any
+ */
+ any <Value>(V: Value): Value
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-long-long
+ */
+ ['long long'] (V: unknown): number
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-unsigned-long-long
+ */
+ ['unsigned long long'] (V: unknown): number
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-unsigned-long
+ */
+ ['unsigned long'] (V: unknown): number
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-unsigned-short
+ */
+ ['unsigned short'] (V: unknown, opts?: ConvertToIntOpts): number
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
+ */
+ ArrayBuffer (V: unknown): ArrayBufferLike
+ ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
+ */
+ TypedArray (
+ V: unknown,
+ TypedArray: NodeJS.TypedArray | ArrayBufferLike
+ ): NodeJS.TypedArray | ArrayBufferLike
+ TypedArray (
+ V: unknown,
+ TypedArray: NodeJS.TypedArray | ArrayBufferLike,
+ opts?: { allowShared: false }
+ ): NodeJS.TypedArray | ArrayBuffer
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
+ */
+ DataView (V: unknown, opts?: { allowShared: boolean }): DataView
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#BufferSource
+ */
+ BufferSource (
+ V: unknown,
+ opts?: { allowShared: boolean }
+ ): NodeJS.TypedArray | ArrayBufferLike | DataView
+
+ ['sequence<ByteString>']: SequenceConverter<string>
+
+ ['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
+
+ ['record<ByteString, ByteString>']: RecordConverter<string, string>
+
+ [Key: string]: (...args: any[]) => unknown
+}
+
+export interface Webidl {
+ errors: WebidlErrors
+ util: WebidlUtil
+ converters: WebidlConverters
+
+ /**
+ * @description Performs a brand-check on {@param V} to ensure it is a
+ * {@param cls} object.
+ */
+ brandCheck <Interface>(V: unknown, cls: Interface, opts?: { strict?: boolean }): asserts V is Interface
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-sequence
+ * @description Convert a value, V, to a WebIDL sequence type.
+ */
+ sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
+
+ illegalConstructor (): never
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#es-to-record
+ * @description Convert a value, V, to a WebIDL record type.
+ */
+ recordConverter <K extends string, V>(
+ keyConverter: Converter<K>,
+ valueConverter: Converter<V>
+ ): RecordConverter<K, V>
+
+ /**
+ * Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
+ * interfaces are allowed.
+ */
+ interfaceConverter <Interface>(cls: Interface): (
+ V: unknown,
+ opts?: { strict: boolean }
+ ) => asserts V is typeof cls
+
+ // TODO(@KhafraDev): a type could likely be implemented that can infer the return type
+ // from the converters given?
+ /**
+ * Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
+ * allowed, values allowed, optional and required keys. Auto converts the value to
+ * a type given a converter.
+ */
+ dictionaryConverter (converters: {
+ key: string,
+ defaultValue?: unknown,
+ required?: boolean,
+ converter: (...args: unknown[]) => unknown,
+ allowedValues?: unknown[]
+ }[]): (V: unknown) => Record<string, unknown>
+
+ /**
+ * @see https://webidl.spec.whatwg.org/#idl-nullable-type
+ * @description allows a type, V, to be null
+ */
+ nullableConverter <T>(
+ converter: Converter<T>
+ ): (V: unknown) => ReturnType<typeof converter> | null
+
+ argumentLengthCheck (args: { length: number }, min: number, context: {
+ header: string
+ message?: string
+ }): void
+}
diff --git a/client/node_modules/undici-types/websocket.d.ts b/client/node_modules/undici-types/websocket.d.ts
new file mode 100644
index 0000000..15a357d
--- /dev/null
+++ b/client/node_modules/undici-types/websocket.d.ts
@@ -0,0 +1,131 @@
+/// <reference types="node" />
+
+import type { Blob } from 'buffer'
+import type { MessagePort } from 'worker_threads'
+import {
+ EventTarget,
+ Event,
+ EventInit,
+ EventListenerOptions,
+ AddEventListenerOptions,
+ EventListenerOrEventListenerObject
+} from './patch'
+import Dispatcher from './dispatcher'
+import { HeadersInit } from './fetch'
+
+export type BinaryType = 'blob' | 'arraybuffer'
+
+interface WebSocketEventMap {
+ close: CloseEvent
+ error: Event
+ message: MessageEvent
+ open: Event
+}
+
+interface WebSocket extends EventTarget {
+ binaryType: BinaryType
+
+ readonly bufferedAmount: number
+ readonly extensions: string
+
+ onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
+ onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
+ onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
+ onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
+
+ readonly protocol: string
+ readonly readyState: number
+ readonly url: string
+
+ close(code?: number, reason?: string): void
+ send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
+
+ readonly CLOSED: number
+ readonly CLOSING: number
+ readonly CONNECTING: number
+ readonly OPEN: number
+
+ addEventListener<K extends keyof WebSocketEventMap>(
+ type: K,
+ listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
+ options?: boolean | AddEventListenerOptions
+ ): void
+ addEventListener(
+ type: string,
+ listener: EventListenerOrEventListenerObject,
+ options?: boolean | AddEventListenerOptions
+ ): void
+ removeEventListener<K extends keyof WebSocketEventMap>(
+ type: K,
+ listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
+ options?: boolean | EventListenerOptions
+ ): void
+ removeEventListener(
+ type: string,
+ listener: EventListenerOrEventListenerObject,
+ options?: boolean | EventListenerOptions
+ ): void
+}
+
+export declare const WebSocket: {
+ prototype: WebSocket
+ new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
+ readonly CLOSED: number
+ readonly CLOSING: number
+ readonly CONNECTING: number
+ readonly OPEN: number
+}
+
+interface CloseEventInit extends EventInit {
+ code?: number
+ reason?: string
+ wasClean?: boolean
+}
+
+interface CloseEvent extends Event {
+ readonly code: number
+ readonly reason: string
+ readonly wasClean: boolean
+}
+
+export declare const CloseEvent: {
+ prototype: CloseEvent
+ new (type: string, eventInitDict?: CloseEventInit): CloseEvent
+}
+
+interface MessageEventInit<T = any> extends EventInit {
+ data?: T
+ lastEventId?: string
+ origin?: string
+ ports?: (typeof MessagePort)[]
+ source?: typeof MessagePort | null
+}
+
+interface MessageEvent<T = any> extends Event {
+ readonly data: T
+ readonly lastEventId: string
+ readonly origin: string
+ readonly ports: ReadonlyArray<typeof MessagePort>
+ readonly source: typeof MessagePort | null
+ initMessageEvent(
+ type: string,
+ bubbles?: boolean,
+ cancelable?: boolean,
+ data?: any,
+ origin?: string,
+ lastEventId?: string,
+ source?: typeof MessagePort | null,
+ ports?: (typeof MessagePort)[]
+ ): void;
+}
+
+export declare const MessageEvent: {
+ prototype: MessageEvent
+ new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
+}
+
+interface WebSocketInit {
+ protocols?: string | string[],
+ dispatcher?: Dispatcher,
+ headers?: HeadersInit
+}
diff --git a/client/node_modules/universalify/LICENSE b/client/node_modules/universalify/LICENSE
new file mode 100644
index 0000000..514e84e
--- /dev/null
+++ b/client/node_modules/universalify/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2017, Ryan Zimmerman <opensrc@ryanzim.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the 'Software'), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/client/node_modules/universalify/README.md b/client/node_modules/universalify/README.md
new file mode 100644
index 0000000..487067b
--- /dev/null
+++ b/client/node_modules/universalify/README.md
@@ -0,0 +1,76 @@
+# universalify
+
+[![Travis branch](https://img.shields.io/travis/RyanZim/universalify/master.svg)](https://travis-ci.org/RyanZim/universalify)
+![Coveralls github branch](https://img.shields.io/coveralls/github/RyanZim/universalify/master.svg)
+![npm](https://img.shields.io/npm/dm/universalify.svg)
+![npm](https://img.shields.io/npm/l/universalify.svg)
+
+Make a callback- or promise-based function support both promises and callbacks.
+
+Uses the native promise implementation.
+
+## Installation
+
+```bash
+npm install universalify
+```
+
+## API
+
+### `universalify.fromCallback(fn)`
+
+Takes a callback-based function to universalify, and returns the universalified function.
+
+Function must take a callback as the last parameter that will be called with the signature `(error, result)`. `universalify` does not support calling the callback with more than three arguments, and does not ensure that the callback is only called once.
+
+```js
+function callbackFn (n, cb) {
+ setTimeout(() => cb(null, n), 15)
+}
+
+const fn = universalify.fromCallback(callbackFn)
+
+// Works with Promises:
+fn('Hello World!')
+.then(result => console.log(result)) // -> Hello World!
+.catch(error => console.error(error))
+
+// Works with Callbacks:
+fn('Hi!', (error, result) => {
+ if (error) return console.error(error)
+ console.log(result)
+ // -> Hi!
+})
+```
+
+### `universalify.fromPromise(fn)`
+
+Takes a promise-based function to universalify, and returns the universalified function.
+
+Function must return a valid JS promise. `universalify` does not ensure that a valid promise is returned.
+
+```js
+function promiseFn (n) {
+ return new Promise(resolve => {
+ setTimeout(() => resolve(n), 15)
+ })
+}
+
+const fn = universalify.fromPromise(promiseFn)
+
+// Works with Promises:
+fn('Hello World!')
+.then(result => console.log(result)) // -> Hello World!
+.catch(error => console.error(error))
+
+// Works with Callbacks:
+fn('Hi!', (error, result) => {
+ if (error) return console.error(error)
+ console.log(result)
+ // -> Hi!
+})
+```
+
+## License
+
+MIT
diff --git a/client/node_modules/universalify/index.js b/client/node_modules/universalify/index.js
new file mode 100644
index 0000000..0c9ba39
--- /dev/null
+++ b/client/node_modules/universalify/index.js
@@ -0,0 +1,25 @@
+'use strict'
+
+exports.fromCallback = function (fn) {
+ return Object.defineProperty(function () {
+ if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments)
+ else {
+ return new Promise((resolve, reject) => {
+ arguments[arguments.length] = (err, res) => {
+ if (err) return reject(err)
+ resolve(res)
+ }
+ arguments.length++
+ fn.apply(this, arguments)
+ })
+ }
+ }, 'name', { value: fn.name })
+}
+
+exports.fromPromise = function (fn) {
+ return Object.defineProperty(function () {
+ const cb = arguments[arguments.length - 1]
+ if (typeof cb !== 'function') return fn.apply(this, arguments)
+ else fn.apply(this, arguments).then(r => cb(null, r), cb)
+ }, 'name', { value: fn.name })
+}
diff --git a/client/node_modules/universalify/package.json b/client/node_modules/universalify/package.json
new file mode 100644
index 0000000..321b192
--- /dev/null
+++ b/client/node_modules/universalify/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "universalify",
+ "version": "0.1.2",
+ "description": "Make a callback- or promise-based function support both promises and callbacks.",
+ "keywords": [
+ "callback",
+ "native",
+ "promise"
+ ],
+ "homepage": "https://github.com/RyanZim/universalify#readme",
+ "bugs": "https://github.com/RyanZim/universalify/issues",
+ "license": "MIT",
+ "author": "Ryan Zimmerman <opensrc@ryanzim.com>",
+ "files": [
+ "index.js"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/RyanZim/universalify.git"
+ },
+ "scripts": {
+ "test": "standard && nyc tape test/*.js | colortape"
+ },
+ "devDependencies": {
+ "colortape": "^0.1.2",
+ "coveralls": "^3.0.1",
+ "nyc": "^10.2.0",
+ "standard": "^10.0.1",
+ "tape": "^4.6.3"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+}
diff --git a/client/node_modules/webidl-conversions/LICENSE.md b/client/node_modules/webidl-conversions/LICENSE.md
new file mode 100644
index 0000000..d4a994f
--- /dev/null
+++ b/client/node_modules/webidl-conversions/LICENSE.md
@@ -0,0 +1,12 @@
+# The BSD 2-Clause License
+
+Copyright (c) 2014, Domenic Denicola
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/client/node_modules/webidl-conversions/README.md b/client/node_modules/webidl-conversions/README.md
new file mode 100644
index 0000000..3657890
--- /dev/null
+++ b/client/node_modules/webidl-conversions/README.md
@@ -0,0 +1,53 @@
+# WebIDL Type Conversions on JavaScript Values
+
+This package implements, in JavaScript, the algorithms to convert a given JavaScript value according to a given [WebIDL](http://heycam.github.io/webidl/) [type](http://heycam.github.io/webidl/#idl-types).
+
+The goal is that you should be able to write code like
+
+```js
+const conversions = require("webidl-conversions");
+
+function doStuff(x, y) {
+ x = conversions["boolean"](x);
+ y = conversions["unsigned long"](y);
+ // actual algorithm code here
+}
+```
+
+and your function `doStuff` will behave the same as a WebIDL operation declared as
+
+```webidl
+void doStuff(boolean x, unsigned long y);
+```
+
+## API
+
+This package's main module's default export is an object with a variety of methods, each corresponding to a different WebIDL type. Each method, when invoked on a JavaScript value, will give back the new JavaScript value that results after passing through the WebIDL conversion rules. (See below for more details on what that means.) Alternately, the method could throw an error, if the WebIDL algorithm is specified to do so: for example `conversions["float"](NaN)` [will throw a `TypeError`](http://heycam.github.io/webidl/#es-float).
+
+## Status
+
+All of the numeric types are implemented (float being implemented as double) and some others are as well - check the source for all of them. This list will grow over time in service of the [HTML as Custom Elements](https://github.com/dglazkov/html-as-custom-elements) project, but in the meantime, pull requests welcome!
+
+I'm not sure yet what the strategy will be for modifiers, e.g. [`[Clamp]`](http://heycam.github.io/webidl/#Clamp). Maybe something like `conversions["unsigned long"](x, { clamp: true })`? We'll see.
+
+We might also want to extend the API to give better error messages, e.g. "Argument 1 of HTMLMediaElement.fastSeek is not a finite floating-point value" instead of "Argument is not a finite floating-point value." This would require passing in more information to the conversion functions than we currently do.
+
+## Background
+
+What's actually going on here, conceptually, is pretty weird. Let's try to explain.
+
+WebIDL, as part of its madness-inducing design, has its own type system. When people write algorithms in web platform specs, they usually operate on WebIDL values, i.e. instances of WebIDL types. For example, if they were specifying the algorithm for our `doStuff` operation above, they would treat `x` as a WebIDL value of [WebIDL type `boolean`](http://heycam.github.io/webidl/#idl-boolean). Crucially, they would _not_ treat `x` as a JavaScript variable whose value is either the JavaScript `true` or `false`. They're instead working in a different type system altogether, with its own rules.
+
+Separately from its type system, WebIDL defines a ["binding"](http://heycam.github.io/webidl/#ecmascript-binding) of the type system into JavaScript. This contains rules like: when you pass a JavaScript value to the JavaScript method that manifests a given WebIDL operation, how does that get converted into a WebIDL value? For example, a JavaScript `true` passed in the position of a WebIDL `boolean` argument becomes a WebIDL `true`. But, a JavaScript `true` passed in the position of a [WebIDL `unsigned long`](http://heycam.github.io/webidl/#idl-unsigned-long) becomes a WebIDL `1`. And so on.
+
+Finally, we have the actual implementation code. This is usually C++, although these days [some smart people are using Rust](https://github.com/servo/servo). The implementation, of course, has its own type system. So when they implement the WebIDL algorithms, they don't actually use WebIDL values, since those aren't "real" outside of specs. Instead, implementations apply the WebIDL binding rules in such a way as to convert incoming JavaScript values into C++ values. For example, if code in the browser called `doStuff(true, true)`, then the implementation code would eventually receive a C++ `bool` containing `true` and a C++ `uint32_t` containing `1`.
+
+The upside of all this is that implementations can abstract all the conversion logic away, letting WebIDL handle it, and focus on implementing the relevant methods in C++ with values of the correct type already provided. That is payoff of WebIDL, in a nutshell.
+
+And getting to that payoff is the goal of _this_ project—but for JavaScript implementations, instead of C++ ones. That is, this library is designed to make it easier for JavaScript developers to write functions that behave like a given WebIDL operation. So conceptually, the conversion pipeline, which in its general form is JavaScript values ↦ WebIDL values ↦ implementation-language values, in this case becomes JavaScript values ↦ WebIDL values ↦ JavaScript values. And that intermediate step is where all the logic is performed: a JavaScript `true` becomes a WebIDL `1` in an unsigned long context, which then becomes a JavaScript `1`.
+
+## Don't Use This
+
+Seriously, why would you ever use this? You really shouldn't. WebIDL is … not great, and you shouldn't be emulating its semantics. If you're looking for a generic argument-processing library, you should find one with better rules than those from WebIDL. In general, your JavaScript should not be trying to become more like WebIDL; if anything, we should fix WebIDL to make it more like JavaScript.
+
+The _only_ people who should use this are those trying to create faithful implementations (or polyfills) of web platform interfaces defined in WebIDL.
diff --git a/client/node_modules/webidl-conversions/lib/index.js b/client/node_modules/webidl-conversions/lib/index.js
new file mode 100644
index 0000000..c5153a3
--- /dev/null
+++ b/client/node_modules/webidl-conversions/lib/index.js
@@ -0,0 +1,189 @@
+"use strict";
+
+var conversions = {};
+module.exports = conversions;
+
+function sign(x) {
+ return x < 0 ? -1 : 1;
+}
+
+function evenRound(x) {
+ // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
+ if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
+ return Math.floor(x);
+ } else {
+ return Math.round(x);
+ }
+}
+
+function createNumberConversion(bitLength, typeOpts) {
+ if (!typeOpts.unsigned) {
+ --bitLength;
+ }
+ const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
+ const upperBound = Math.pow(2, bitLength) - 1;
+
+ const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
+ const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
+
+ return function(V, opts) {
+ if (!opts) opts = {};
+
+ let x = +V;
+
+ if (opts.enforceRange) {
+ if (!Number.isFinite(x)) {
+ throw new TypeError("Argument is not a finite number");
+ }
+
+ x = sign(x) * Math.floor(Math.abs(x));
+ if (x < lowerBound || x > upperBound) {
+ throw new TypeError("Argument is not in byte range");
+ }
+
+ return x;
+ }
+
+ if (!isNaN(x) && opts.clamp) {
+ x = evenRound(x);
+
+ if (x < lowerBound) x = lowerBound;
+ if (x > upperBound) x = upperBound;
+ return x;
+ }
+
+ if (!Number.isFinite(x) || x === 0) {
+ return 0;
+ }
+
+ x = sign(x) * Math.floor(Math.abs(x));
+ x = x % moduloVal;
+
+ if (!typeOpts.unsigned && x >= moduloBound) {
+ return x - moduloVal;
+ } else if (typeOpts.unsigned) {
+ if (x < 0) {
+ x += moduloVal;
+ } else if (x === -0) { // don't return negative zero
+ return 0;
+ }
+ }
+
+ return x;
+ }
+}
+
+conversions["void"] = function () {
+ return undefined;
+};
+
+conversions["boolean"] = function (val) {
+ return !!val;
+};
+
+conversions["byte"] = createNumberConversion(8, { unsigned: false });
+conversions["octet"] = createNumberConversion(8, { unsigned: true });
+
+conversions["short"] = createNumberConversion(16, { unsigned: false });
+conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
+
+conversions["long"] = createNumberConversion(32, { unsigned: false });
+conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
+
+conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
+conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
+
+conversions["double"] = function (V) {
+ const x = +V;
+
+ if (!Number.isFinite(x)) {
+ throw new TypeError("Argument is not a finite floating-point value");
+ }
+
+ return x;
+};
+
+conversions["unrestricted double"] = function (V) {
+ const x = +V;
+
+ if (isNaN(x)) {
+ throw new TypeError("Argument is NaN");
+ }
+
+ return x;
+};
+
+// not quite valid, but good enough for JS
+conversions["float"] = conversions["double"];
+conversions["unrestricted float"] = conversions["unrestricted double"];
+
+conversions["DOMString"] = function (V, opts) {
+ if (!opts) opts = {};
+
+ if (opts.treatNullAsEmptyString && V === null) {
+ return "";
+ }
+
+ return String(V);
+};
+
+conversions["ByteString"] = function (V, opts) {
+ const x = String(V);
+ let c = undefined;
+ for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
+ if (c > 255) {
+ throw new TypeError("Argument is not a valid bytestring");
+ }
+ }
+
+ return x;
+};
+
+conversions["USVString"] = function (V) {
+ const S = String(V);
+ const n = S.length;
+ const U = [];
+ for (let i = 0; i < n; ++i) {
+ const c = S.charCodeAt(i);
+ if (c < 0xD800 || c > 0xDFFF) {
+ U.push(String.fromCodePoint(c));
+ } else if (0xDC00 <= c && c <= 0xDFFF) {
+ U.push(String.fromCodePoint(0xFFFD));
+ } else {
+ if (i === n - 1) {
+ U.push(String.fromCodePoint(0xFFFD));
+ } else {
+ const d = S.charCodeAt(i + 1);
+ if (0xDC00 <= d && d <= 0xDFFF) {
+ const a = c & 0x3FF;
+ const b = d & 0x3FF;
+ U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
+ ++i;
+ } else {
+ U.push(String.fromCodePoint(0xFFFD));
+ }
+ }
+ }
+ }
+
+ return U.join('');
+};
+
+conversions["Date"] = function (V, opts) {
+ if (!(V instanceof Date)) {
+ throw new TypeError("Argument is not a Date object");
+ }
+ if (isNaN(V)) {
+ return undefined;
+ }
+
+ return V;
+};
+
+conversions["RegExp"] = function (V, opts) {
+ if (!(V instanceof RegExp)) {
+ V = new RegExp(V);
+ }
+
+ return V;
+};
diff --git a/client/node_modules/webidl-conversions/package.json b/client/node_modules/webidl-conversions/package.json
new file mode 100644
index 0000000..c31bc07
--- /dev/null
+++ b/client/node_modules/webidl-conversions/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "webidl-conversions",
+ "version": "3.0.1",
+ "description": "Implements the WebIDL algorithms for converting to and from JavaScript values",
+ "main": "lib/index.js",
+ "scripts": {
+ "test": "mocha test/*.js"
+ },
+ "repository": "jsdom/webidl-conversions",
+ "keywords": [
+ "webidl",
+ "web",
+ "types"
+ ],
+ "files": [
+ "lib/"
+ ],
+ "author": "Domenic Denicola <d@domenic.me> (https://domenic.me/)",
+ "license": "BSD-2-Clause",
+ "devDependencies": {
+ "mocha": "^1.21.4"
+ }
+}
diff --git a/client/node_modules/whatwg-url/LICENSE.txt b/client/node_modules/whatwg-url/LICENSE.txt
new file mode 100644
index 0000000..54dfac3
--- /dev/null
+++ b/client/node_modules/whatwg-url/LICENSE.txt
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015–2016 Sebastian Mayr
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/client/node_modules/whatwg-url/README.md b/client/node_modules/whatwg-url/README.md
new file mode 100644
index 0000000..4347a7f
--- /dev/null
+++ b/client/node_modules/whatwg-url/README.md
@@ -0,0 +1,67 @@
+# whatwg-url
+
+whatwg-url is a full implementation of the WHATWG [URL Standard](https://url.spec.whatwg.org/). It can be used standalone, but it also exposes a lot of the internal algorithms that are useful for integrating a URL parser into a project like [jsdom](https://github.com/tmpvar/jsdom).
+
+## Current Status
+
+whatwg-url is currently up to date with the URL spec up to commit [a62223](https://github.com/whatwg/url/commit/a622235308342c9adc7fc2fd1659ff059f7d5e2a).
+
+## API
+
+### The `URL` Constructor
+
+The main API is the [`URL`](https://url.spec.whatwg.org/#url) export, which follows the spec's behavior in all ways (including e.g. `USVString` conversion). Most consumers of this library will want to use this.
+
+### Low-level URL Standard API
+
+The following methods are exported for use by places like jsdom that need to implement things like [`HTMLHyperlinkElementUtils`](https://html.spec.whatwg.org/#htmlhyperlinkelementutils). They operate on or return an "internal URL" or ["URL record"](https://url.spec.whatwg.org/#concept-url) type.
+
+- [URL parser](https://url.spec.whatwg.org/#concept-url-parser): `parseURL(input, { baseURL, encodingOverride })`
+- [Basic URL parser](https://url.spec.whatwg.org/#concept-basic-url-parser): `basicURLParse(input, { baseURL, encodingOverride, url, stateOverride })`
+- [URL serializer](https://url.spec.whatwg.org/#concept-url-serializer): `serializeURL(urlRecord, excludeFragment)`
+- [Host serializer](https://url.spec.whatwg.org/#concept-host-serializer): `serializeHost(hostFromURLRecord)`
+- [Serialize an integer](https://url.spec.whatwg.org/#serialize-an-integer): `serializeInteger(number)`
+- [Origin](https://url.spec.whatwg.org/#concept-url-origin) [serializer](https://html.spec.whatwg.org/multipage/browsers.html#serialization-of-an-origin): `serializeURLOrigin(urlRecord)`
+- [Set the username](https://url.spec.whatwg.org/#set-the-username): `setTheUsername(urlRecord, usernameString)`
+- [Set the password](https://url.spec.whatwg.org/#set-the-password): `setThePassword(urlRecord, passwordString)`
+- [Cannot have a username/password/port](https://url.spec.whatwg.org/#cannot-have-a-username-password-port): `cannotHaveAUsernamePasswordPort(urlRecord)`
+
+The `stateOverride` parameter is one of the following strings:
+
+- [`"scheme start"`](https://url.spec.whatwg.org/#scheme-start-state)
+- [`"scheme"`](https://url.spec.whatwg.org/#scheme-state)
+- [`"no scheme"`](https://url.spec.whatwg.org/#no-scheme-state)
+- [`"special relative or authority"`](https://url.spec.whatwg.org/#special-relative-or-authority-state)
+- [`"path or authority"`](https://url.spec.whatwg.org/#path-or-authority-state)
+- [`"relative"`](https://url.spec.whatwg.org/#relative-state)
+- [`"relative slash"`](https://url.spec.whatwg.org/#relative-slash-state)
+- [`"special authority slashes"`](https://url.spec.whatwg.org/#special-authority-slashes-state)
+- [`"special authority ignore slashes"`](https://url.spec.whatwg.org/#special-authority-ignore-slashes-state)
+- [`"authority"`](https://url.spec.whatwg.org/#authority-state)
+- [`"host"`](https://url.spec.whatwg.org/#host-state)
+- [`"hostname"`](https://url.spec.whatwg.org/#hostname-state)
+- [`"port"`](https://url.spec.whatwg.org/#port-state)
+- [`"file"`](https://url.spec.whatwg.org/#file-state)
+- [`"file slash"`](https://url.spec.whatwg.org/#file-slash-state)
+- [`"file host"`](https://url.spec.whatwg.org/#file-host-state)
+- [`"path start"`](https://url.spec.whatwg.org/#path-start-state)
+- [`"path"`](https://url.spec.whatwg.org/#path-state)
+- [`"cannot-be-a-base-URL path"`](https://url.spec.whatwg.org/#cannot-be-a-base-url-path-state)
+- [`"query"`](https://url.spec.whatwg.org/#query-state)
+- [`"fragment"`](https://url.spec.whatwg.org/#fragment-state)
+
+The URL record type has the following API:
+
+- [`scheme`](https://url.spec.whatwg.org/#concept-url-scheme)
+- [`username`](https://url.spec.whatwg.org/#concept-url-username)
+- [`password`](https://url.spec.whatwg.org/#concept-url-password)
+- [`host`](https://url.spec.whatwg.org/#concept-url-host)
+- [`port`](https://url.spec.whatwg.org/#concept-url-port)
+- [`path`](https://url.spec.whatwg.org/#concept-url-path) (as an array)
+- [`query`](https://url.spec.whatwg.org/#concept-url-query)
+- [`fragment`](https://url.spec.whatwg.org/#concept-url-fragment)
+- [`cannotBeABaseURL`](https://url.spec.whatwg.org/#url-cannot-be-a-base-url-flag) (as a boolean)
+
+These properties should be treated with care, as in general changing them will cause the URL record to be in an inconsistent state until the appropriate invocation of `basicURLParse` is used to fix it up. You can see examples of this in the URL Standard, where there are many step sequences like "4. Set context object’s url’s fragment to the empty string. 5. Basic URL parse _input_ with context object’s url as _url_ and fragment state as _state override_." In between those two steps, a URL record is in an unusable state.
+
+The return value of "failure" in the spec is represented by the string `"failure"`. That is, functions like `parseURL` and `basicURLParse` can return _either_ a URL record _or_ the string `"failure"`.
diff --git a/client/node_modules/whatwg-url/lib/URL-impl.js b/client/node_modules/whatwg-url/lib/URL-impl.js
new file mode 100644
index 0000000..dc7452c
--- /dev/null
+++ b/client/node_modules/whatwg-url/lib/URL-impl.js
@@ -0,0 +1,200 @@
+"use strict";
+const usm = require("./url-state-machine");
+
+exports.implementation = class URLImpl {
+ constructor(constructorArgs) {
+ const url = constructorArgs[0];
+ const base = constructorArgs[1];
+
+ let parsedBase = null;
+ if (base !== undefined) {
+ parsedBase = usm.basicURLParse(base);
+ if (parsedBase === "failure") {
+ throw new TypeError("Invalid base URL");
+ }
+ }
+
+ const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
+ if (parsedURL === "failure") {
+ throw new TypeError("Invalid URL");
+ }
+
+ this._url = parsedURL;
+
+ // TODO: query stuff
+ }
+
+ get href() {
+ return usm.serializeURL(this._url);
+ }
+
+ set href(v) {
+ const parsedURL = usm.basicURLParse(v);
+ if (parsedURL === "failure") {
+ throw new TypeError("Invalid URL");
+ }
+
+ this._url = parsedURL;
+ }
+
+ get origin() {
+ return usm.serializeURLOrigin(this._url);
+ }
+
+ get protocol() {
+ return this._url.scheme + ":";
+ }
+
+ set protocol(v) {
+ usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
+ }
+
+ get username() {
+ return this._url.username;
+ }
+
+ set username(v) {
+ if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+ return;
+ }
+
+ usm.setTheUsername(this._url, v);
+ }
+
+ get password() {
+ return this._url.password;
+ }
+
+ set password(v) {
+ if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+ return;
+ }
+
+ usm.setThePassword(this._url, v);
+ }
+
+ get host() {
+ const url = this._url;
+
+ if (url.host === null) {
+ return "";
+ }
+
+ if (url.port === null) {
+ return usm.serializeHost(url.host);
+ }
+
+ return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
+ }
+
+ set host(v) {
+ if (this._url.cannotBeABaseURL) {
+ return;
+ }
+
+ usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
+ }
+
+ get hostname() {
+ if (this._url.host === null) {
+ return "";
+ }
+
+ return usm.serializeHost(this._url.host);
+ }
+
+ set hostname(v) {
+ if (this._url.cannotBeABaseURL) {
+ return;
+ }
+
+ usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
+ }
+
+ get port() {
+ if (this._url.port === null) {
+ return "";
+ }
+
+ return usm.serializeInteger(this._url.port);
+ }
+
+ set port(v) {
+ if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
+ return;
+ }
+
+ if (v === "") {
+ this._url.port = null;
+ } else {
+ usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
+ }
+ }
+
+ get pathname() {
+ if (this._url.cannotBeABaseURL) {
+ return this._url.path[0];
+ }
+
+ if (this._url.path.length === 0) {
+ return "";
+ }
+
+ return "/" + this._url.path.join("/");
+ }
+
+ set pathname(v) {
+ if (this._url.cannotBeABaseURL) {
+ return;
+ }
+
+ this._url.path = [];
+ usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
+ }
+
+ get search() {
+ if (this._url.query === null || this._url.query === "") {
+ return "";
+ }
+
+ return "?" + this._url.query;
+ }
+
+ set search(v) {
+ // TODO: query stuff
+
+ const url = this._url;
+
+ if (v === "") {
+ url.query = null;
+ return;
+ }
+
+ const input = v[0] === "?" ? v.substring(1) : v;
+ url.query = "";
+ usm.basicURLParse(input, { url, stateOverride: "query" });
+ }
+
+ get hash() {
+ if (this._url.fragment === null || this._url.fragment === "") {
+ return "";
+ }
+
+ return "#" + this._url.fragment;
+ }
+
+ set hash(v) {
+ if (v === "") {
+ this._url.fragment = null;
+ return;
+ }
+
+ const input = v[0] === "#" ? v.substring(1) : v;
+ this._url.fragment = "";
+ usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
+ }
+
+ toJSON() {
+ return this.href;
+ }
+};
diff --git a/client/node_modules/whatwg-url/lib/URL.js b/client/node_modules/whatwg-url/lib/URL.js
new file mode 100644
index 0000000..78c7207
--- /dev/null
+++ b/client/node_modules/whatwg-url/lib/URL.js
@@ -0,0 +1,196 @@
+"use strict";
+
+const conversions = require("webidl-conversions");
+const utils = require("./utils.js");
+const Impl = require(".//URL-impl.js");
+
+const impl = utils.implSymbol;
+
+function URL(url) {
+ if (!this || this[impl] || !(this instanceof URL)) {
+ throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
+ }
+ if (arguments.length < 1) {
+ throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
+ }
+ const args = [];
+ for (let i = 0; i < arguments.length && i < 2; ++i) {
+ args[i] = arguments[i];
+ }
+ args[0] = conversions["USVString"](args[0]);
+ if (args[1] !== undefined) {
+ args[1] = conversions["USVString"](args[1]);
+ }
+
+ module.exports.setup(this, args);
+}
+
+URL.prototype.toJSON = function toJSON() {
+ if (!this || !module.exports.is(this)) {
+ throw new TypeError("Illegal invocation");
+ }
+ const args = [];
+ for (let i = 0; i < arguments.length && i < 0; ++i) {
+ args[i] = arguments[i];
+ }
+ return this[impl].toJSON.apply(this[impl], args);
+};
+Object.defineProperty(URL.prototype, "href", {
+ get() {
+ return this[impl].href;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].href = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+URL.prototype.toString = function () {
+ if (!this || !module.exports.is(this)) {
+ throw new TypeError("Illegal invocation");
+ }
+ return this.href;
+};
+
+Object.defineProperty(URL.prototype, "origin", {
+ get() {
+ return this[impl].origin;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "protocol", {
+ get() {
+ return this[impl].protocol;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].protocol = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "username", {
+ get() {
+ return this[impl].username;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].username = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "password", {
+ get() {
+ return this[impl].password;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].password = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "host", {
+ get() {
+ return this[impl].host;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].host = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hostname", {
+ get() {
+ return this[impl].hostname;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].hostname = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "port", {
+ get() {
+ return this[impl].port;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].port = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "pathname", {
+ get() {
+ return this[impl].pathname;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].pathname = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "search", {
+ get() {
+ return this[impl].search;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].search = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+Object.defineProperty(URL.prototype, "hash", {
+ get() {
+ return this[impl].hash;
+ },
+ set(V) {
+ V = conversions["USVString"](V);
+ this[impl].hash = V;
+ },
+ enumerable: true,
+ configurable: true
+});
+
+
+module.exports = {
+ is(obj) {
+ return !!obj && obj[impl] instanceof Impl.implementation;
+ },
+ create(constructorArgs, privateData) {
+ let obj = Object.create(URL.prototype);
+ this.setup(obj, constructorArgs, privateData);
+ return obj;
+ },
+ setup(obj, constructorArgs, privateData) {
+ if (!privateData) privateData = {};
+ privateData.wrapper = obj;
+
+ obj[impl] = new Impl.implementation(constructorArgs, privateData);
+ obj[impl][utils.wrapperSymbol] = obj;
+ },
+ interface: URL,
+ expose: {
+ Window: { URL: URL },
+ Worker: { URL: URL }
+ }
+};
+
diff --git a/client/node_modules/whatwg-url/lib/public-api.js b/client/node_modules/whatwg-url/lib/public-api.js
new file mode 100644
index 0000000..932dcad
--- /dev/null
+++ b/client/node_modules/whatwg-url/lib/public-api.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports.URL = require("./URL").interface;
+exports.serializeURL = require("./url-state-machine").serializeURL;
+exports.serializeURLOrigin = require("./url-state-machine").serializeURLOrigin;
+exports.basicURLParse = require("./url-state-machine").basicURLParse;
+exports.setTheUsername = require("./url-state-machine").setTheUsername;
+exports.setThePassword = require("./url-state-machine").setThePassword;
+exports.serializeHost = require("./url-state-machine").serializeHost;
+exports.serializeInteger = require("./url-state-machine").serializeInteger;
+exports.parseURL = require("./url-state-machine").parseURL;
diff --git a/client/node_modules/whatwg-url/lib/url-state-machine.js b/client/node_modules/whatwg-url/lib/url-state-machine.js
new file mode 100644
index 0000000..c25dbc2
--- /dev/null
+++ b/client/node_modules/whatwg-url/lib/url-state-machine.js
@@ -0,0 +1,1297 @@
+"use strict";
+const punycode = require("punycode");
+const tr46 = require("tr46");
+
+const specialSchemes = {
+ ftp: 21,
+ file: null,
+ gopher: 70,
+ http: 80,
+ https: 443,
+ ws: 80,
+ wss: 443
+};
+
+const failure = Symbol("failure");
+
+function countSymbols(str) {
+ return punycode.ucs2.decode(str).length;
+}
+
+function at(input, idx) {
+ const c = input[idx];
+ return isNaN(c) ? undefined : String.fromCodePoint(c);
+}
+
+function isASCIIDigit(c) {
+ return c >= 0x30 && c <= 0x39;
+}
+
+function isASCIIAlpha(c) {
+ return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
+}
+
+function isASCIIAlphanumeric(c) {
+ return isASCIIAlpha(c) || isASCIIDigit(c);
+}
+
+function isASCIIHex(c) {
+ return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
+}
+
+function isSingleDot(buffer) {
+ return buffer === "." || buffer.toLowerCase() === "%2e";
+}
+
+function isDoubleDot(buffer) {
+ buffer = buffer.toLowerCase();
+ return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
+}
+
+function isWindowsDriveLetterCodePoints(cp1, cp2) {
+ return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
+}
+
+function isWindowsDriveLetterString(string) {
+ return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
+}
+
+function isNormalizedWindowsDriveLetterString(string) {
+ return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
+}
+
+function containsForbiddenHostCodePoint(string) {
+ return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function containsForbiddenHostCodePointExcludingPercent(string) {
+ return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
+}
+
+function isSpecialScheme(scheme) {
+ return specialSchemes[scheme] !== undefined;
+}
+
+function isSpecial(url) {
+ return isSpecialScheme(url.scheme);
+}
+
+function defaultPort(scheme) {
+ return specialSchemes[scheme];
+}
+
+function percentEncode(c) {
+ let hex = c.toString(16).toUpperCase();
+ if (hex.length === 1) {
+ hex = "0" + hex;
+ }
+
+ return "%" + hex;
+}
+
+function utf8PercentEncode(c) {
+ const buf = new Buffer(c);
+
+ let str = "";
+
+ for (let i = 0; i < buf.length; ++i) {
+ str += percentEncode(buf[i]);
+ }
+
+ return str;
+}
+
+function utf8PercentDecode(str) {
+ const input = new Buffer(str);
+ const output = [];
+ for (let i = 0; i < input.length; ++i) {
+ if (input[i] !== 37) {
+ output.push(input[i]);
+ } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
+ output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
+ i += 2;
+ } else {
+ output.push(input[i]);
+ }
+ }
+ return new Buffer(output).toString();
+}
+
+function isC0ControlPercentEncode(c) {
+ return c <= 0x1F || c > 0x7E;
+}
+
+const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
+function isPathPercentEncode(c) {
+ return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
+}
+
+const extraUserinfoPercentEncodeSet =
+ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
+function isUserinfoPercentEncode(c) {
+ return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
+}
+
+function percentEncodeChar(c, encodeSetPredicate) {
+ const cStr = String.fromCodePoint(c);
+
+ if (encodeSetPredicate(c)) {
+ return utf8PercentEncode(cStr);
+ }
+
+ return cStr;
+}
+
+function parseIPv4Number(input) {
+ let R = 10;
+
+ if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
+ input = input.substring(2);
+ R = 16;
+ } else if (input.length >= 2 && input.charAt(0) === "0") {
+ input = input.substring(1);
+ R = 8;
+ }
+
+ if (input === "") {
+ return 0;
+ }
+
+ const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
+ if (regex.test(input)) {
+ return failure;
+ }
+
+ return parseInt(input, R);
+}
+
+function parseIPv4(input) {
+ const parts = input.split(".");
+ if (parts[parts.length - 1] === "") {
+ if (parts.length > 1) {
+ parts.pop();
+ }
+ }
+
+ if (parts.length > 4) {
+ return input;
+ }
+
+ const numbers = [];
+ for (const part of parts) {
+ if (part === "") {
+ return input;
+ }
+ const n = parseIPv4Number(part);
+ if (n === failure) {
+ return input;
+ }
+
+ numbers.push(n);
+ }
+
+ for (let i = 0; i < numbers.length - 1; ++i) {
+ if (numbers[i] > 255) {
+ return failure;
+ }
+ }
+ if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
+ return failure;
+ }
+
+ let ipv4 = numbers.pop();
+ let counter = 0;
+
+ for (const n of numbers) {
+ ipv4 += n * Math.pow(256, 3 - counter);
+ ++counter;
+ }
+
+ return ipv4;
+}
+
+function serializeIPv4(address) {
+ let output = "";
+ let n = address;
+
+ for (let i = 1; i <= 4; ++i) {
+ output = String(n % 256) + output;
+ if (i !== 4) {
+ output = "." + output;
+ }
+ n = Math.floor(n / 256);
+ }
+
+ return output;
+}
+
+function parseIPv6(input) {
+ const address = [0, 0, 0, 0, 0, 0, 0, 0];
+ let pieceIndex = 0;
+ let compress = null;
+ let pointer = 0;
+
+ input = punycode.ucs2.decode(input);
+
+ if (input[pointer] === 58) {
+ if (input[pointer + 1] !== 58) {
+ return failure;
+ }
+
+ pointer += 2;
+ ++pieceIndex;
+ compress = pieceIndex;
+ }
+
+ while (pointer < input.length) {
+ if (pieceIndex === 8) {
+ return failure;
+ }
+
+ if (input[pointer] === 58) {
+ if (compress !== null) {
+ return failure;
+ }
+ ++pointer;
+ ++pieceIndex;
+ compress = pieceIndex;
+ continue;
+ }
+
+ let value = 0;
+ let length = 0;
+
+ while (length < 4 && isASCIIHex(input[pointer])) {
+ value = value * 0x10 + parseInt(at(input, pointer), 16);
+ ++pointer;
+ ++length;
+ }
+
+ if (input[pointer] === 46) {
+ if (length === 0) {
+ return failure;
+ }
+
+ pointer -= length;
+
+ if (pieceIndex > 6) {
+ return failure;
+ }
+
+ let numbersSeen = 0;
+
+ while (input[pointer] !== undefined) {
+ let ipv4Piece = null;
+
+ if (numbersSeen > 0) {
+ if (input[pointer] === 46 && numbersSeen < 4) {
+ ++pointer;
+ } else {
+ return failure;
+ }
+ }
+
+ if (!isASCIIDigit(input[pointer])) {
+ return failure;
+ }
+
+ while (isASCIIDigit(input[pointer])) {
+ const number = parseInt(at(input, pointer));
+ if (ipv4Piece === null) {
+ ipv4Piece = number;
+ } else if (ipv4Piece === 0) {
+ return failure;
+ } else {
+ ipv4Piece = ipv4Piece * 10 + number;
+ }
+ if (ipv4Piece > 255) {
+ return failure;
+ }
+ ++pointer;
+ }
+
+ address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
+
+ ++numbersSeen;
+
+ if (numbersSeen === 2 || numbersSeen === 4) {
+ ++pieceIndex;
+ }
+ }
+
+ if (numbersSeen !== 4) {
+ return failure;
+ }
+
+ break;
+ } else if (input[pointer] === 58) {
+ ++pointer;
+ if (input[pointer] === undefined) {
+ return failure;
+ }
+ } else if (input[pointer] !== undefined) {
+ return failure;
+ }
+
+ address[pieceIndex] = value;
+ ++pieceIndex;
+ }
+
+ if (compress !== null) {
+ let swaps = pieceIndex - compress;
+ pieceIndex = 7;
+ while (pieceIndex !== 0 && swaps > 0) {
+ const temp = address[compress + swaps - 1];
+ address[compress + swaps - 1] = address[pieceIndex];
+ address[pieceIndex] = temp;
+ --pieceIndex;
+ --swaps;
+ }
+ } else if (compress === null && pieceIndex !== 8) {
+ return failure;
+ }
+
+ return address;
+}
+
+function serializeIPv6(address) {
+ let output = "";
+ const seqResult = findLongestZeroSequence(address);
+ const compress = seqResult.idx;
+ let ignore0 = false;
+
+ for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
+ if (ignore0 && address[pieceIndex] === 0) {
+ continue;
+ } else if (ignore0) {
+ ignore0 = false;
+ }
+
+ if (compress === pieceIndex) {
+ const separator = pieceIndex === 0 ? "::" : ":";
+ output += separator;
+ ignore0 = true;
+ continue;
+ }
+
+ output += address[pieceIndex].toString(16);
+
+ if (pieceIndex !== 7) {
+ output += ":";
+ }
+ }
+
+ return output;
+}
+
+function parseHost(input, isSpecialArg) {
+ if (input[0] === "[") {
+ if (input[input.length - 1] !== "]") {
+ return failure;
+ }
+
+ return parseIPv6(input.substring(1, input.length - 1));
+ }
+
+ if (!isSpecialArg) {
+ return parseOpaqueHost(input);
+ }
+
+ const domain = utf8PercentDecode(input);
+ const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
+ if (asciiDomain === null) {
+ return failure;
+ }
+
+ if (containsForbiddenHostCodePoint(asciiDomain)) {
+ return failure;
+ }
+
+ const ipv4Host = parseIPv4(asciiDomain);
+ if (typeof ipv4Host === "number" || ipv4Host === failure) {
+ return ipv4Host;
+ }
+
+ return asciiDomain;
+}
+
+function parseOpaqueHost(input) {
+ if (containsForbiddenHostCodePointExcludingPercent(input)) {
+ return failure;
+ }
+
+ let output = "";
+ const decoded = punycode.ucs2.decode(input);
+ for (let i = 0; i < decoded.length; ++i) {
+ output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
+ }
+ return output;
+}
+
+function findLongestZeroSequence(arr) {
+ let maxIdx = null;
+ let maxLen = 1; // only find elements > 1
+ let currStart = null;
+ let currLen = 0;
+
+ for (let i = 0; i < arr.length; ++i) {
+ if (arr[i] !== 0) {
+ if (currLen > maxLen) {
+ maxIdx = currStart;
+ maxLen = currLen;
+ }
+
+ currStart = null;
+ currLen = 0;
+ } else {
+ if (currStart === null) {
+ currStart = i;
+ }
+ ++currLen;
+ }
+ }
+
+ // if trailing zeros
+ if (currLen > maxLen) {
+ maxIdx = currStart;
+ maxLen = currLen;
+ }
+
+ return {
+ idx: maxIdx,
+ len: maxLen
+ };
+}
+
+function serializeHost(host) {
+ if (typeof host === "number") {
+ return serializeIPv4(host);
+ }
+
+ // IPv6 serializer
+ if (host instanceof Array) {
+ return "[" + serializeIPv6(host) + "]";
+ }
+
+ return host;
+}
+
+function trimControlChars(url) {
+ return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
+}
+
+function trimTabAndNewline(url) {
+ return url.replace(/\u0009|\u000A|\u000D/g, "");
+}
+
+function shortenPath(url) {
+ const path = url.path;
+ if (path.length === 0) {
+ return;
+ }
+ if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
+ return;
+ }
+
+ path.pop();
+}
+
+function includesCredentials(url) {
+ return url.username !== "" || url.password !== "";
+}
+
+function cannotHaveAUsernamePasswordPort(url) {
+ return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
+}
+
+function isNormalizedWindowsDriveLetter(string) {
+ return /^[A-Za-z]:$/.test(string);
+}
+
+function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
+ this.pointer = 0;
+ this.input = input;
+ this.base = base || null;
+ this.encodingOverride = encodingOverride || "utf-8";
+ this.stateOverride = stateOverride;
+ this.url = url;
+ this.failure = false;
+ this.parseError = false;
+
+ if (!this.url) {
+ this.url = {
+ scheme: "",
+ username: "",
+ password: "",
+ host: null,
+ port: null,
+ path: [],
+ query: null,
+ fragment: null,
+
+ cannotBeABaseURL: false
+ };
+
+ const res = trimControlChars(this.input);
+ if (res !== this.input) {
+ this.parseError = true;
+ }
+ this.input = res;
+ }
+
+ const res = trimTabAndNewline(this.input);
+ if (res !== this.input) {
+ this.parseError = true;
+ }
+ this.input = res;
+
+ this.state = stateOverride || "scheme start";
+
+ this.buffer = "";
+ this.atFlag = false;
+ this.arrFlag = false;
+ this.passwordTokenSeenFlag = false;
+
+ this.input = punycode.ucs2.decode(this.input);
+
+ for (; this.pointer <= this.input.length; ++this.pointer) {
+ const c = this.input[this.pointer];
+ const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
+
+ // exec state machine
+ const ret = this["parse " + this.state](c, cStr);
+ if (!ret) {
+ break; // terminate algorithm
+ } else if (ret === failure) {
+ this.failure = true;
+ break;
+ }
+ }
+}
+
+URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
+ if (isASCIIAlpha(c)) {
+ this.buffer += cStr.toLowerCase();
+ this.state = "scheme";
+ } else if (!this.stateOverride) {
+ this.state = "no scheme";
+ --this.pointer;
+ } else {
+ this.parseError = true;
+ return failure;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
+ if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
+ this.buffer += cStr.toLowerCase();
+ } else if (c === 58) {
+ if (this.stateOverride) {
+ if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
+ return false;
+ }
+
+ if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
+ return false;
+ }
+
+ if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
+ return false;
+ }
+
+ if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
+ return false;
+ }
+ }
+ this.url.scheme = this.buffer;
+ this.buffer = "";
+ if (this.stateOverride) {
+ return false;
+ }
+ if (this.url.scheme === "file") {
+ if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
+ this.parseError = true;
+ }
+ this.state = "file";
+ } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
+ this.state = "special relative or authority";
+ } else if (isSpecial(this.url)) {
+ this.state = "special authority slashes";
+ } else if (this.input[this.pointer + 1] === 47) {
+ this.state = "path or authority";
+ ++this.pointer;
+ } else {
+ this.url.cannotBeABaseURL = true;
+ this.url.path.push("");
+ this.state = "cannot-be-a-base-URL path";
+ }
+ } else if (!this.stateOverride) {
+ this.buffer = "";
+ this.state = "no scheme";
+ this.pointer = -1;
+ } else {
+ this.parseError = true;
+ return failure;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
+ if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
+ return failure;
+ } else if (this.base.cannotBeABaseURL && c === 35) {
+ this.url.scheme = this.base.scheme;
+ this.url.path = this.base.path.slice();
+ this.url.query = this.base.query;
+ this.url.fragment = "";
+ this.url.cannotBeABaseURL = true;
+ this.state = "fragment";
+ } else if (this.base.scheme === "file") {
+ this.state = "file";
+ --this.pointer;
+ } else {
+ this.state = "relative";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
+ if (c === 47 && this.input[this.pointer + 1] === 47) {
+ this.state = "special authority ignore slashes";
+ ++this.pointer;
+ } else {
+ this.parseError = true;
+ this.state = "relative";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
+ if (c === 47) {
+ this.state = "authority";
+ } else {
+ this.state = "path";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
+ this.url.scheme = this.base.scheme;
+ if (isNaN(c)) {
+ this.url.username = this.base.username;
+ this.url.password = this.base.password;
+ this.url.host = this.base.host;
+ this.url.port = this.base.port;
+ this.url.path = this.base.path.slice();
+ this.url.query = this.base.query;
+ } else if (c === 47) {
+ this.state = "relative slash";
+ } else if (c === 63) {
+ this.url.username = this.base.username;
+ this.url.password = this.base.password;
+ this.url.host = this.base.host;
+ this.url.port = this.base.port;
+ this.url.path = this.base.path.slice();
+ this.url.query = "";
+ this.state = "query";
+ } else if (c === 35) {
+ this.url.username = this.base.username;
+ this.url.password = this.base.password;
+ this.url.host = this.base.host;
+ this.url.port = this.base.port;
+ this.url.path = this.base.path.slice();
+ this.url.query = this.base.query;
+ this.url.fragment = "";
+ this.state = "fragment";
+ } else if (isSpecial(this.url) && c === 92) {
+ this.parseError = true;
+ this.state = "relative slash";
+ } else {
+ this.url.username = this.base.username;
+ this.url.password = this.base.password;
+ this.url.host = this.base.host;
+ this.url.port = this.base.port;
+ this.url.path = this.base.path.slice(0, this.base.path.length - 1);
+
+ this.state = "path";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
+ if (isSpecial(this.url) && (c === 47 || c === 92)) {
+ if (c === 92) {
+ this.parseError = true;
+ }
+ this.state = "special authority ignore slashes";
+ } else if (c === 47) {
+ this.state = "authority";
+ } else {
+ this.url.username = this.base.username;
+ this.url.password = this.base.password;
+ this.url.host = this.base.host;
+ this.url.port = this.base.port;
+ this.state = "path";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
+ if (c === 47 && this.input[this.pointer + 1] === 47) {
+ this.state = "special authority ignore slashes";
+ ++this.pointer;
+ } else {
+ this.parseError = true;
+ this.state = "special authority ignore slashes";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
+ if (c !== 47 && c !== 92) {
+ this.state = "authority";
+ --this.pointer;
+ } else {
+ this.parseError = true;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
+ if (c === 64) {
+ this.parseError = true;
+ if (this.atFlag) {
+ this.buffer = "%40" + this.buffer;
+ }
+ this.atFlag = true;
+
+ // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
+ const len = countSymbols(this.buffer);
+ for (let pointer = 0; pointer < len; ++pointer) {
+ const codePoint = this.buffer.codePointAt(pointer);
+
+ if (codePoint === 58 && !this.passwordTokenSeenFlag) {
+ this.passwordTokenSeenFlag = true;
+ continue;
+ }
+ const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
+ if (this.passwordTokenSeenFlag) {
+ this.url.password += encodedCodePoints;
+ } else {
+ this.url.username += encodedCodePoints;
+ }
+ }
+ this.buffer = "";
+ } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+ (isSpecial(this.url) && c === 92)) {
+ if (this.atFlag && this.buffer === "") {
+ this.parseError = true;
+ return failure;
+ }
+ this.pointer -= countSymbols(this.buffer) + 1;
+ this.buffer = "";
+ this.state = "host";
+ } else {
+ this.buffer += cStr;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse hostname"] =
+URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
+ if (this.stateOverride && this.url.scheme === "file") {
+ --this.pointer;
+ this.state = "file host";
+ } else if (c === 58 && !this.arrFlag) {
+ if (this.buffer === "") {
+ this.parseError = true;
+ return failure;
+ }
+
+ const host = parseHost(this.buffer, isSpecial(this.url));
+ if (host === failure) {
+ return failure;
+ }
+
+ this.url.host = host;
+ this.buffer = "";
+ this.state = "port";
+ if (this.stateOverride === "hostname") {
+ return false;
+ }
+ } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+ (isSpecial(this.url) && c === 92)) {
+ --this.pointer;
+ if (isSpecial(this.url) && this.buffer === "") {
+ this.parseError = true;
+ return failure;
+ } else if (this.stateOverride && this.buffer === "" &&
+ (includesCredentials(this.url) || this.url.port !== null)) {
+ this.parseError = true;
+ return false;
+ }
+
+ const host = parseHost(this.buffer, isSpecial(this.url));
+ if (host === failure) {
+ return failure;
+ }
+
+ this.url.host = host;
+ this.buffer = "";
+ this.state = "path start";
+ if (this.stateOverride) {
+ return false;
+ }
+ } else {
+ if (c === 91) {
+ this.arrFlag = true;
+ } else if (c === 93) {
+ this.arrFlag = false;
+ }
+ this.buffer += cStr;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
+ if (isASCIIDigit(c)) {
+ this.buffer += cStr;
+ } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
+ (isSpecial(this.url) && c === 92) ||
+ this.stateOverride) {
+ if (this.buffer !== "") {
+ const port = parseInt(this.buffer);
+ if (port > Math.pow(2, 16) - 1) {
+ this.parseError = true;
+ return failure;
+ }
+ this.url.port = port === defaultPort(this.url.scheme) ? null : port;
+ this.buffer = "";
+ }
+ if (this.stateOverride) {
+ return false;
+ }
+ this.state = "path start";
+ --this.pointer;
+ } else {
+ this.parseError = true;
+ return failure;
+ }
+
+ return true;
+};
+
+const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
+
+URLStateMachine.prototype["parse file"] = function parseFile(c) {
+ this.url.scheme = "file";
+
+ if (c === 47 || c === 92) {
+ if (c === 92) {
+ this.parseError = true;
+ }
+ this.state = "file slash";
+ } else if (this.base !== null && this.base.scheme === "file") {
+ if (isNaN(c)) {
+ this.url.host = this.base.host;
+ this.url.path = this.base.path.slice();
+ this.url.query = this.base.query;
+ } else if (c === 63) {
+ this.url.host = this.base.host;
+ this.url.path = this.base.path.slice();
+ this.url.query = "";
+ this.state = "query";
+ } else if (c === 35) {
+ this.url.host = this.base.host;
+ this.url.path = this.base.path.slice();
+ this.url.query = this.base.query;
+ this.url.fragment = "";
+ this.state = "fragment";
+ } else {
+ if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
+ !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
+ (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
+ !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
+ this.url.host = this.base.host;
+ this.url.path = this.base.path.slice();
+ shortenPath(this.url);
+ } else {
+ this.parseError = true;
+ }
+
+ this.state = "path";
+ --this.pointer;
+ }
+ } else {
+ this.state = "path";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
+ if (c === 47 || c === 92) {
+ if (c === 92) {
+ this.parseError = true;
+ }
+ this.state = "file host";
+ } else {
+ if (this.base !== null && this.base.scheme === "file") {
+ if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
+ this.url.path.push(this.base.path[0]);
+ } else {
+ this.url.host = this.base.host;
+ }
+ }
+ this.state = "path";
+ --this.pointer;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
+ if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
+ --this.pointer;
+ if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
+ this.parseError = true;
+ this.state = "path";
+ } else if (this.buffer === "") {
+ this.url.host = "";
+ if (this.stateOverride) {
+ return false;
+ }
+ this.state = "path start";
+ } else {
+ let host = parseHost(this.buffer, isSpecial(this.url));
+ if (host === failure) {
+ return failure;
+ }
+ if (host === "localhost") {
+ host = "";
+ }
+ this.url.host = host;
+
+ if (this.stateOverride) {
+ return false;
+ }
+
+ this.buffer = "";
+ this.state = "path start";
+ }
+ } else {
+ this.buffer += cStr;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
+ if (isSpecial(this.url)) {
+ if (c === 92) {
+ this.parseError = true;
+ }
+ this.state = "path";
+
+ if (c !== 47 && c !== 92) {
+ --this.pointer;
+ }
+ } else if (!this.stateOverride && c === 63) {
+ this.url.query = "";
+ this.state = "query";
+ } else if (!this.stateOverride && c === 35) {
+ this.url.fragment = "";
+ this.state = "fragment";
+ } else if (c !== undefined) {
+ this.state = "path";
+ if (c !== 47) {
+ --this.pointer;
+ }
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse path"] = function parsePath(c) {
+ if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
+ (!this.stateOverride && (c === 63 || c === 35))) {
+ if (isSpecial(this.url) && c === 92) {
+ this.parseError = true;
+ }
+
+ if (isDoubleDot(this.buffer)) {
+ shortenPath(this.url);
+ if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
+ this.url.path.push("");
+ }
+ } else if (isSingleDot(this.buffer) && c !== 47 &&
+ !(isSpecial(this.url) && c === 92)) {
+ this.url.path.push("");
+ } else if (!isSingleDot(this.buffer)) {
+ if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
+ if (this.url.host !== "" && this.url.host !== null) {
+ this.parseError = true;
+ this.url.host = "";
+ }
+ this.buffer = this.buffer[0] + ":";
+ }
+ this.url.path.push(this.buffer);
+ }
+ this.buffer = "";
+ if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
+ while (this.url.path.length > 1 && this.url.path[0] === "") {
+ this.parseError = true;
+ this.url.path.shift();
+ }
+ }
+ if (c === 63) {
+ this.url.query = "";
+ this.state = "query";
+ }
+ if (c === 35) {
+ this.url.fragment = "";
+ this.state = "fragment";
+ }
+ } else {
+ // TODO: If c is not a URL code point and not "%", parse error.
+
+ if (c === 37 &&
+ (!isASCIIHex(this.input[this.pointer + 1]) ||
+ !isASCIIHex(this.input[this.pointer + 2]))) {
+ this.parseError = true;
+ }
+
+ this.buffer += percentEncodeChar(c, isPathPercentEncode);
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
+ if (c === 63) {
+ this.url.query = "";
+ this.state = "query";
+ } else if (c === 35) {
+ this.url.fragment = "";
+ this.state = "fragment";
+ } else {
+ // TODO: Add: not a URL code point
+ if (!isNaN(c) && c !== 37) {
+ this.parseError = true;
+ }
+
+ if (c === 37 &&
+ (!isASCIIHex(this.input[this.pointer + 1]) ||
+ !isASCIIHex(this.input[this.pointer + 2]))) {
+ this.parseError = true;
+ }
+
+ if (!isNaN(c)) {
+ this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
+ }
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
+ if (isNaN(c) || (!this.stateOverride && c === 35)) {
+ if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
+ this.encodingOverride = "utf-8";
+ }
+
+ const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
+ for (let i = 0; i < buffer.length; ++i) {
+ if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
+ buffer[i] === 0x3C || buffer[i] === 0x3E) {
+ this.url.query += percentEncode(buffer[i]);
+ } else {
+ this.url.query += String.fromCodePoint(buffer[i]);
+ }
+ }
+
+ this.buffer = "";
+ if (c === 35) {
+ this.url.fragment = "";
+ this.state = "fragment";
+ }
+ } else {
+ // TODO: If c is not a URL code point and not "%", parse error.
+ if (c === 37 &&
+ (!isASCIIHex(this.input[this.pointer + 1]) ||
+ !isASCIIHex(this.input[this.pointer + 2]))) {
+ this.parseError = true;
+ }
+
+ this.buffer += cStr;
+ }
+
+ return true;
+};
+
+URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
+ if (isNaN(c)) { // do nothing
+ } else if (c === 0x0) {
+ this.parseError = true;
+ } else {
+ // TODO: If c is not a URL code point and not "%", parse error.
+ if (c === 37 &&
+ (!isASCIIHex(this.input[this.pointer + 1]) ||
+ !isASCIIHex(this.input[this.pointer + 2]))) {
+ this.parseError = true;
+ }
+
+ this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
+ }
+
+ return true;
+};
+
+function serializeURL(url, excludeFragment) {
+ let output = url.scheme + ":";
+ if (url.host !== null) {
+ output += "//";
+
+ if (url.username !== "" || url.password !== "") {
+ output += url.username;
+ if (url.password !== "") {
+ output += ":" + url.password;
+ }
+ output += "@";
+ }
+
+ output += serializeHost(url.host);
+
+ if (url.port !== null) {
+ output += ":" + url.port;
+ }
+ } else if (url.host === null && url.scheme === "file") {
+ output += "//";
+ }
+
+ if (url.cannotBeABaseURL) {
+ output += url.path[0];
+ } else {
+ for (const string of url.path) {
+ output += "/" + string;
+ }
+ }
+
+ if (url.query !== null) {
+ output += "?" + url.query;
+ }
+
+ if (!excludeFragment && url.fragment !== null) {
+ output += "#" + url.fragment;
+ }
+
+ return output;
+}
+
+function serializeOrigin(tuple) {
+ let result = tuple.scheme + "://";
+ result += serializeHost(tuple.host);
+
+ if (tuple.port !== null) {
+ result += ":" + tuple.port;
+ }
+
+ return result;
+}
+
+module.exports.serializeURL = serializeURL;
+
+module.exports.serializeURLOrigin = function (url) {
+ // https://url.spec.whatwg.org/#concept-url-origin
+ switch (url.scheme) {
+ case "blob":
+ try {
+ return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
+ } catch (e) {
+ // serializing an opaque origin returns "null"
+ return "null";
+ }
+ case "ftp":
+ case "gopher":
+ case "http":
+ case "https":
+ case "ws":
+ case "wss":
+ return serializeOrigin({
+ scheme: url.scheme,
+ host: url.host,
+ port: url.port
+ });
+ case "file":
+ // spec says "exercise to the reader", chrome says "file://"
+ return "file://";
+ default:
+ // serializing an opaque origin returns "null"
+ return "null";
+ }
+};
+
+module.exports.basicURLParse = function (input, options) {
+ if (options === undefined) {
+ options = {};
+ }
+
+ const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
+ if (usm.failure) {
+ return "failure";
+ }
+
+ return usm.url;
+};
+
+module.exports.setTheUsername = function (url, username) {
+ url.username = "";
+ const decoded = punycode.ucs2.decode(username);
+ for (let i = 0; i < decoded.length; ++i) {
+ url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+ }
+};
+
+module.exports.setThePassword = function (url, password) {
+ url.password = "";
+ const decoded = punycode.ucs2.decode(password);
+ for (let i = 0; i < decoded.length; ++i) {
+ url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
+ }
+};
+
+module.exports.serializeHost = serializeHost;
+
+module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
+
+module.exports.serializeInteger = function (integer) {
+ return String(integer);
+};
+
+module.exports.parseURL = function (input, options) {
+ if (options === undefined) {
+ options = {};
+ }
+
+ // We don't handle blobs, so this just delegates:
+ return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
+};
diff --git a/client/node_modules/whatwg-url/lib/utils.js b/client/node_modules/whatwg-url/lib/utils.js
new file mode 100644
index 0000000..a562009
--- /dev/null
+++ b/client/node_modules/whatwg-url/lib/utils.js
@@ -0,0 +1,20 @@
+"use strict";
+
+module.exports.mixin = function mixin(target, source) {
+ const keys = Object.getOwnPropertyNames(source);
+ for (let i = 0; i < keys.length; ++i) {
+ Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
+ }
+};
+
+module.exports.wrapperSymbol = Symbol("wrapper");
+module.exports.implSymbol = Symbol("impl");
+
+module.exports.wrapperForImpl = function (impl) {
+ return impl[module.exports.wrapperSymbol];
+};
+
+module.exports.implForWrapper = function (wrapper) {
+ return wrapper[module.exports.implSymbol];
+};
+
diff --git a/client/node_modules/whatwg-url/package.json b/client/node_modules/whatwg-url/package.json
new file mode 100644
index 0000000..fce35ae
--- /dev/null
+++ b/client/node_modules/whatwg-url/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "whatwg-url",
+ "version": "5.0.0",
+ "description": "An implementation of the WHATWG URL Standard's URL API and parsing machinery",
+ "main": "lib/public-api.js",
+ "files": [
+ "lib/"
+ ],
+ "author": "Sebastian Mayr <github@smayr.name>",
+ "license": "MIT",
+ "repository": "jsdom/whatwg-url",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ },
+ "devDependencies": {
+ "eslint": "^2.6.0",
+ "istanbul": "~0.4.3",
+ "mocha": "^2.2.4",
+ "recast": "~0.10.29",
+ "request": "^2.55.0",
+ "webidl2js": "^3.0.2"
+ },
+ "scripts": {
+ "build": "node scripts/transform.js && node scripts/convert-idl.js",
+ "coverage": "istanbul cover node_modules/mocha/bin/_mocha",
+ "lint": "eslint .",
+ "prepublish": "npm run build",
+ "pretest": "node scripts/get-latest-platform-tests.js && npm run build",
+ "test": "mocha"
+ }
+}
diff --git a/client/node_modules/wrappy/LICENSE b/client/node_modules/wrappy/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/wrappy/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/wrappy/README.md b/client/node_modules/wrappy/README.md
new file mode 100644
index 0000000..98eab25
--- /dev/null
+++ b/client/node_modules/wrappy/README.md
@@ -0,0 +1,36 @@
+# wrappy
+
+Callback wrapping utility
+
+## USAGE
+
+```javascript
+var wrappy = require("wrappy")
+
+// var wrapper = wrappy(wrapperFunction)
+
+// make sure a cb is called only once
+// See also: http://npm.im/once for this specific use case
+var once = wrappy(function (cb) {
+ var called = false
+ return function () {
+ if (called) return
+ called = true
+ return cb.apply(this, arguments)
+ }
+})
+
+function printBoo () {
+ console.log('boo')
+}
+// has some rando property
+printBoo.iAmBooPrinter = true
+
+var onlyPrintOnce = once(printBoo)
+
+onlyPrintOnce() // prints 'boo'
+onlyPrintOnce() // does nothing
+
+// random property is retained!
+assert.equal(onlyPrintOnce.iAmBooPrinter, true)
+```
diff --git a/client/node_modules/wrappy/package.json b/client/node_modules/wrappy/package.json
new file mode 100644
index 0000000..1307520
--- /dev/null
+++ b/client/node_modules/wrappy/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "wrappy",
+ "version": "1.0.2",
+ "description": "Callback wrapping utility",
+ "main": "wrappy.js",
+ "files": [
+ "wrappy.js"
+ ],
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "^2.3.1"
+ },
+ "scripts": {
+ "test": "tap --coverage test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/wrappy"
+ },
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/npm/wrappy/issues"
+ },
+ "homepage": "https://github.com/npm/wrappy"
+}
diff --git a/client/node_modules/wrappy/wrappy.js b/client/node_modules/wrappy/wrappy.js
new file mode 100644
index 0000000..bb7e7d6
--- /dev/null
+++ b/client/node_modules/wrappy/wrappy.js
@@ -0,0 +1,33 @@
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+module.exports = wrappy
+function wrappy (fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb)
+
+ if (typeof fn !== 'function')
+ throw new TypeError('need wrapper function')
+
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k]
+ })
+
+ return wrapper
+
+ function wrapper() {
+ var args = new Array(arguments.length)
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i]
+ }
+ var ret = fn.apply(this, args)
+ var cb = args[args.length-1]
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k]
+ })
+ }
+ return ret
+ }
+}
diff --git a/client/node_modules/yallist/LICENSE b/client/node_modules/yallist/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/client/node_modules/yallist/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/client/node_modules/yallist/README.md b/client/node_modules/yallist/README.md
new file mode 100644
index 0000000..f586101
--- /dev/null
+++ b/client/node_modules/yallist/README.md
@@ -0,0 +1,204 @@
+# yallist
+
+Yet Another Linked List
+
+There are many doubly-linked list implementations like it, but this
+one is mine.
+
+For when an array would be too big, and a Map can't be iterated in
+reverse order.
+
+
+[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist)
+
+## basic usage
+
+```javascript
+var yallist = require('yallist')
+var myList = yallist.create([1, 2, 3])
+myList.push('foo')
+myList.unshift('bar')
+// of course pop() and shift() are there, too
+console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']
+myList.forEach(function (k) {
+ // walk the list head to tail
+})
+myList.forEachReverse(function (k, index, list) {
+ // walk the list tail to head
+})
+var myDoubledList = myList.map(function (k) {
+ return k + k
+})
+// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']
+// mapReverse is also a thing
+var myDoubledListReverse = myList.mapReverse(function (k) {
+ return k + k
+}) // ['foofoo', 6, 4, 2, 'barbar']
+
+var reduced = myList.reduce(function (set, entry) {
+ set += entry
+ return set
+}, 'start')
+console.log(reduced) // 'startfoo123bar'
+```
+
+## api
+
+The whole API is considered "public".
+
+Functions with the same name as an Array method work more or less the
+same way.
+
+There's reverse versions of most things because that's the point.
+
+### Yallist
+
+Default export, the class that holds and manages a list.
+
+Call it with either a forEach-able (like an array) or a set of
+arguments, to initialize the list.
+
+The Array-ish methods all act like you'd expect. No magic length,
+though, so if you change that it won't automatically prune or add
+empty spots.
+
+### Yallist.create(..)
+
+Alias for Yallist function. Some people like factories.
+
+#### yallist.head
+
+The first node in the list
+
+#### yallist.tail
+
+The last node in the list
+
+#### yallist.length
+
+The number of nodes in the list. (Change this at your peril. It is
+not magic like Array length.)
+
+#### yallist.toArray()
+
+Convert the list to an array.
+
+#### yallist.forEach(fn, [thisp])
+
+Call a function on each item in the list.
+
+#### yallist.forEachReverse(fn, [thisp])
+
+Call a function on each item in the list, in reverse order.
+
+#### yallist.get(n)
+
+Get the data at position `n` in the list. If you use this a lot,
+probably better off just using an Array.
+
+#### yallist.getReverse(n)
+
+Get the data at position `n`, counting from the tail.
+
+#### yallist.map(fn, thisp)
+
+Create a new Yallist with the result of calling the function on each
+item.
+
+#### yallist.mapReverse(fn, thisp)
+
+Same as `map`, but in reverse.
+
+#### yallist.pop()
+
+Get the data from the list tail, and remove the tail from the list.
+
+#### yallist.push(item, ...)
+
+Insert one or more items to the tail of the list.
+
+#### yallist.reduce(fn, initialValue)
+
+Like Array.reduce.
+
+#### yallist.reduceReverse
+
+Like Array.reduce, but in reverse.
+
+#### yallist.reverse
+
+Reverse the list in place.
+
+#### yallist.shift()
+
+Get the data from the list head, and remove the head from the list.
+
+#### yallist.slice([from], [to])
+
+Just like Array.slice, but returns a new Yallist.
+
+#### yallist.sliceReverse([from], [to])
+
+Just like yallist.slice, but the result is returned in reverse.
+
+#### yallist.toArray()
+
+Create an array representation of the list.
+
+#### yallist.toArrayReverse()
+
+Create a reversed array representation of the list.
+
+#### yallist.unshift(item, ...)
+
+Insert one or more items to the head of the list.
+
+#### yallist.unshiftNode(node)
+
+Move a Node object to the front of the list. (That is, pull it out of
+wherever it lives, and make it the new head.)
+
+If the node belongs to a different list, then that list will remove it
+first.
+
+#### yallist.pushNode(node)
+
+Move a Node object to the end of the list. (That is, pull it out of
+wherever it lives, and make it the new tail.)
+
+If the node belongs to a list already, then that list will remove it
+first.
+
+#### yallist.removeNode(node)
+
+Remove a node from the list, preserving referential integrity of head
+and tail and other nodes.
+
+Will throw an error if you try to have a list remove a node that
+doesn't belong to it.
+
+### Yallist.Node
+
+The class that holds the data and is actually the list.
+
+Call with `var n = new Node(value, previousNode, nextNode)`
+
+Note that if you do direct operations on Nodes themselves, it's very
+easy to get into weird states where the list is broken. Be careful :)
+
+#### node.next
+
+The next node in the list.
+
+#### node.prev
+
+The previous node in the list.
+
+#### node.value
+
+The data the node contains.
+
+#### node.list
+
+The list to which this node belongs. (Null if it does not belong to
+any list.)
diff --git a/client/node_modules/yallist/iterator.js b/client/node_modules/yallist/iterator.js
new file mode 100644
index 0000000..d41c97a
--- /dev/null
+++ b/client/node_modules/yallist/iterator.js
@@ -0,0 +1,8 @@
+'use strict'
+module.exports = function (Yallist) {
+ Yallist.prototype[Symbol.iterator] = function* () {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value
+ }
+ }
+}
diff --git a/client/node_modules/yallist/package.json b/client/node_modules/yallist/package.json
new file mode 100644
index 0000000..8a08386
--- /dev/null
+++ b/client/node_modules/yallist/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "yallist",
+ "version": "4.0.0",
+ "description": "Yet Another Linked List",
+ "main": "yallist.js",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "yallist.js",
+ "iterator.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "^12.1.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js --100",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --all; git push origin --tags"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC"
+}
diff --git a/client/node_modules/yallist/yallist.js b/client/node_modules/yallist/yallist.js
new file mode 100644
index 0000000..4e83ab1
--- /dev/null
+++ b/client/node_modules/yallist/yallist.js
@@ -0,0 +1,426 @@
+'use strict'
+module.exports = Yallist
+
+Yallist.Node = Node
+Yallist.create = Yallist
+
+function Yallist (list) {
+ var self = this
+ if (!(self instanceof Yallist)) {
+ self = new Yallist()
+ }
+
+ self.tail = null
+ self.head = null
+ self.length = 0
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item)
+ })
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i])
+ }
+ }
+
+ return self
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list')
+ }
+
+ var next = node.next
+ var prev = node.prev
+
+ if (next) {
+ next.prev = prev
+ }
+
+ if (prev) {
+ prev.next = next
+ }
+
+ if (node === this.head) {
+ this.head = next
+ }
+ if (node === this.tail) {
+ this.tail = prev
+ }
+
+ node.list.length--
+ node.next = null
+ node.prev = null
+ node.list = null
+
+ return next
+}
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var head = this.head
+ node.list = this
+ node.next = head
+ if (head) {
+ head.prev = node
+ }
+
+ this.head = node
+ if (!this.tail) {
+ this.tail = node
+ }
+ this.length++
+}
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var tail = this.tail
+ node.list = this
+ node.prev = tail
+ if (tail) {
+ tail.next = node
+ }
+
+ this.tail = node
+ if (!this.head) {
+ this.head = node
+ }
+ this.length++
+}
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined
+ }
+
+ var res = this.tail.value
+ this.tail = this.tail.prev
+ if (this.tail) {
+ this.tail.next = null
+ } else {
+ this.head = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined
+ }
+
+ var res = this.head.value
+ this.head = this.head.next
+ if (this.head) {
+ this.head.prev = null
+ } else {
+ this.tail = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.next
+ }
+}
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.prev
+ }
+}
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.next
+ }
+ return res
+}
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.prev
+ }
+ return res
+}
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc
+ var walker = this.head
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.head) {
+ walker = this.head.next
+ acc = this.head.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.next
+ }
+
+ return acc
+}
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc
+ var walker = this.tail
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.tail) {
+ walker = this.tail.prev
+ acc = this.tail.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.prev
+ }
+
+ return acc
+}
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.next
+ }
+ return arr
+}
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.prev
+ }
+ return arr
+}
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next
+ }
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev
+ }
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
+ if (start > this.length) {
+ start = this.length - 1
+ }
+ if (start < 0) {
+ start = this.length + start;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
+ walker = walker.next
+ }
+
+ var ret = []
+ for (var i = 0; walker && i < deleteCount; i++) {
+ ret.push(walker.value)
+ walker = this.removeNode(walker)
+ }
+ if (walker === null) {
+ walker = this.tail
+ }
+
+ if (walker !== this.head && walker !== this.tail) {
+ walker = walker.prev
+ }
+
+ for (var i = 0; i < nodes.length; i++) {
+ walker = insert(this, walker, nodes[i])
+ }
+ return ret;
+}
+
+Yallist.prototype.reverse = function () {
+ var head = this.head
+ var tail = this.tail
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev
+ walker.prev = walker.next
+ walker.next = p
+ }
+ this.head = tail
+ this.tail = head
+ return this
+}
+
+function insert (self, node, value) {
+ var inserted = node === self.head ?
+ new Node(value, null, node, self) :
+ new Node(value, node, node.next, self)
+
+ if (inserted.next === null) {
+ self.tail = inserted
+ }
+ if (inserted.prev === null) {
+ self.head = inserted
+ }
+
+ self.length++
+
+ return inserted
+}
+
+function push (self, item) {
+ self.tail = new Node(item, self.tail, null, self)
+ if (!self.head) {
+ self.head = self.tail
+ }
+ self.length++
+}
+
+function unshift (self, item) {
+ self.head = new Node(item, null, self.head, self)
+ if (!self.tail) {
+ self.tail = self.head
+ }
+ self.length++
+}
+
+function Node (value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list)
+ }
+
+ this.list = list
+ this.value = value
+
+ if (prev) {
+ prev.next = this
+ this.prev = prev
+ } else {
+ this.prev = null
+ }
+
+ if (next) {
+ next.prev = this
+ this.next = next
+ } else {
+ this.next = null
+ }
+}
+
+try {
+ // add if support for Symbol.iterator is present
+ require('./iterator.js')(Yallist)
+} catch (er) {}
diff --git a/client/node_modules/yauzl/LICENSE b/client/node_modules/yauzl/LICENSE
new file mode 100644
index 0000000..37538d4
--- /dev/null
+++ b/client/node_modules/yauzl/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Josh Wolfe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/node_modules/yauzl/README.md b/client/node_modules/yauzl/README.md
new file mode 100644
index 0000000..d4e53f4
--- /dev/null
+++ b/client/node_modules/yauzl/README.md
@@ -0,0 +1,658 @@
+# yauzl
+
+[![Build Status](https://travis-ci.org/thejoshwolfe/yauzl.svg?branch=master)](https://travis-ci.org/thejoshwolfe/yauzl)
+[![Coverage Status](https://img.shields.io/coveralls/thejoshwolfe/yauzl.svg)](https://coveralls.io/r/thejoshwolfe/yauzl)
+
+yet another unzip library for node. For zipping, see
+[yazl](https://github.com/thejoshwolfe/yazl).
+
+Design principles:
+
+ * Follow the spec.
+ Don't scan for local file headers.
+ Read the central directory for file metadata.
+ (see [No Streaming Unzip API](#no-streaming-unzip-api)).
+ * Don't block the JavaScript thread.
+ Use and provide async APIs.
+ * Keep memory usage under control.
+ Don't attempt to buffer entire files in RAM at once.
+ * Never crash (if used properly).
+ Don't let malformed zip files bring down client applications who are trying to catch errors.
+ * Catch unsafe file names.
+ See `validateFileName()`.
+
+## Usage
+
+```js
+var yauzl = require("yauzl");
+
+yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) {
+ if (err) throw err;
+ zipfile.readEntry();
+ zipfile.on("entry", function(entry) {
+ if (/\/$/.test(entry.fileName)) {
+ // Directory file names end with '/'.
+ // Note that entires for directories themselves are optional.
+ // An entry's fileName implicitly requires its parent directories to exist.
+ zipfile.readEntry();
+ } else {
+ // file entry
+ zipfile.openReadStream(entry, function(err, readStream) {
+ if (err) throw err;
+ readStream.on("end", function() {
+ zipfile.readEntry();
+ });
+ readStream.pipe(somewhere);
+ });
+ }
+ });
+});
+```
+
+See also `examples/` for more usage examples.
+
+## API
+
+The default for every optional `callback` parameter is:
+
+```js
+function defaultCallback(err) {
+ if (err) throw err;
+}
+```
+
+### open(path, [options], [callback])
+
+Calls `fs.open(path, "r")` and reads the `fd` effectively the same as `fromFd()` would.
+
+`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
+
+`autoClose` is effectively equivalent to:
+
+```js
+zipfile.once("end", function() {
+ zipfile.close();
+});
+```
+
+`lazyEntries` indicates that entries should be read only when `readEntry()` is called.
+If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing
+file data from all entries in parallel.
+This is not recommended, as it can lead to out of control memory usage for zip files with many entries.
+See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22).
+If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`.
+This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries.
+
+`decodeStrings` is the default and causes yauzl to decode strings with `CP437` or `UTF-8` as required by the spec.
+The exact effects of turning this option off are:
+
+* `zipfile.comment`, `entry.fileName`, and `entry.fileComment` will be `Buffer` objects instead of `String`s.
+* Any Info-ZIP Unicode Path Extra Field will be ignored. See `extraFields`.
+* Automatic file name validation will not be performed. See `validateFileName()`.
+
+`validateEntrySizes` is the default and ensures that an entry's reported uncompressed size matches its actual uncompressed size.
+This check happens as early as possible, which is either before emitting each `"entry"` event (for entries with no compression),
+or during the `readStream` piping after calling `openReadStream()`.
+See `openReadStream()` for more information on defending against zip bomb attacks.
+
+When `strictFileNames` is `false` (the default) and `decodeStrings` is `true`,
+all backslash (`\`) characters in each `entry.fileName` are replaced with forward slashes (`/`).
+The spec forbids file names with backslashes,
+but Microsoft's `System.IO.Compression.ZipFile` class in .NET versions 4.5.0 until 4.6.1
+creates non-conformant zipfiles with backslashes in file names.
+`strictFileNames` is `false` by default so that clients can read these
+non-conformant zipfiles without knowing about this Microsoft-specific bug.
+When `strictFileNames` is `true` and `decodeStrings` is `true`,
+entries with backslashes in their file names will result in an error. See `validateFileName()`.
+When `decodeStrings` is `false`, `strictFileNames` has no effect.
+
+The `callback` is given the arguments `(err, zipfile)`.
+An `err` is provided if the End of Central Directory Record cannot be found, or if its metadata appears malformed.
+This kind of error usually indicates that this is not a zip file.
+Otherwise, `zipfile` is an instance of `ZipFile`.
+
+### fromFd(fd, [options], [callback])
+
+Reads from the fd, which is presumed to be an open .zip file.
+Note that random access is required by the zip file specification,
+so the fd cannot be an open socket or any other fd that does not support random access.
+
+`options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
+
+See `open()` for the meaning of the options and callback.
+
+### fromBuffer(buffer, [options], [callback])
+
+Like `fromFd()`, but reads from a RAM buffer instead of an open file.
+`buffer` is a `Buffer`.
+
+If a `ZipFile` is acquired from this method,
+it will never emit the `close` event,
+and calling `close()` is not necessary.
+
+`options` may be omitted or `null`. The defaults are `{lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
+
+See `open()` for the meaning of the options and callback.
+The `autoClose` option is ignored for this method.
+
+### fromRandomAccessReader(reader, totalSize, [options], [callback])
+
+This method of reading a zip file allows clients to implement their own back-end file system.
+For example, a client might translate read calls into network requests.
+
+The `reader` parameter must be of a type that is a subclass of
+[RandomAccessReader](#class-randomaccessreader) that implements the required methods.
+The `totalSize` is a Number and indicates the total file size of the zip file.
+
+`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`.
+
+See `open()` for the meaning of the options and callback.
+
+### dosDateTimeToDate(date, time)
+
+Converts MS-DOS `date` and `time` data into a JavaScript `Date` object.
+Each parameter is a `Number` treated as an unsigned 16-bit integer.
+Note that this format does not support timezones,
+so the returned object will use the local timezone.
+
+### validateFileName(fileName)
+
+Returns `null` or a `String` error message depending on the validity of `fileName`.
+If `fileName` starts with `"/"` or `/[A-Za-z]:\//` or if it contains `".."` path segments or `"\\"`,
+this function returns an error message appropriate for use like this:
+
+```js
+var errorMessage = yauzl.validateFileName(fileName);
+if (errorMessage != null) throw new Error(errorMessage);
+```
+
+This function is automatically run for each entry, as long as `decodeStrings` is `true`.
+See `open()`, `strictFileNames`, and `Event: "entry"` for more information.
+
+### Class: ZipFile
+
+The constructor for the class is not part of the public API.
+Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead.
+
+#### Event: "entry"
+
+Callback gets `(entry)`, which is an `Entry`.
+See `open()` and `readEntry()` for when this event is emitted.
+
+If `decodeStrings` is `true`, entries emitted via this event have already passed file name validation.
+See `validateFileName()` and `open()` for more information.
+
+If `validateEntrySizes` is `true` and this entry's `compressionMethod` is `0` (stored without compression),
+this entry has already passed entry size validation.
+See `open()` for more information.
+
+#### Event: "end"
+
+Emitted after the last `entry` event has been emitted.
+See `open()` and `readEntry()` for more info on when this event is emitted.
+
+#### Event: "close"
+
+Emitted after the fd is actually closed.
+This is after calling `close()` (or after the `end` event when `autoClose` is `true`),
+and after all stream pipelines created from `openReadStream()` have finished reading data from the fd.
+
+If this `ZipFile` was acquired from `fromRandomAccessReader()`,
+the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client.
+
+If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted.
+
+#### Event: "error"
+
+Emitted in the case of errors with reading the zip file.
+(Note that other errors can be emitted from the streams created from `openReadStream()` as well.)
+After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted,
+but the `close` event may still be emitted.
+
+#### readEntry()
+
+Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event).
+This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`).
+When this `ZipFile` was created with the `lazyEntries` option set to `true`,
+`entry` and `end` events are only ever emitted in response to this method call.
+
+The event that is emitted in response to this method will not be emitted until after this method has returned,
+so it is safe to call this method before attaching event listeners.
+
+After calling this method, calling this method again before the response event has been emitted will cause undefined behavior.
+Calling this method after the `end` event has been emitted will cause undefined behavior.
+Calling this method after calling `close()` will cause undefined behavior.
+
+#### openReadStream(entry, [options], callback)
+
+`entry` must be an `Entry` object from this `ZipFile`.
+`callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream` that provides the file data for this entry.
+If this zipfile is already closed (see `close()`), the `callback` will receive an `err`.
+
+`options` may be omitted or `null`, and has the following defaults:
+
+```js
+{
+ decompress: entry.isCompressed() ? true : null,
+ decrypt: null,
+ start: 0, // actually the default is null, see below
+ end: entry.compressedSize, // actually the default is null, see below
+}
+```
+
+If the entry is compressed (with a supported compression method),
+and the `decompress` option is `true` (or omitted),
+the read stream provides the decompressed data.
+Omitting the `decompress` option is what most clients should do.
+
+The `decompress` option must be `null` (or omitted) when the entry is not compressed (see `isCompressed()`),
+and either `true` (or omitted) or `false` when the entry is compressed.
+Specifying `decompress: false` for a compressed entry causes the read stream
+to provide the raw compressed file data without going through a zlib inflate transform.
+
+If the entry is encrypted (see `isEncrypted()`), clients may want to avoid calling `openReadStream()` on the entry entirely.
+Alternatively, clients may call `openReadStream()` for encrypted entries and specify `decrypt: false`.
+If the entry is also compressed, clients must *also* specify `decompress: false`.
+Specifying `decrypt: false` for an encrypted entry causes the read stream to provide the raw, still-encrypted file data.
+(This data includes the 12-byte header described in the spec.)
+
+The `decrypt` option must be `null` (or omitted) for non-encrypted entries, and `false` for encrypted entries.
+Omitting the `decrypt` option (or specifying it as `null`) for an encrypted entry
+will result in the `callback` receiving an `err`.
+This default behavior is so that clients not accounting for encrypted files aren't surprised by bogus file data.
+
+The `start` (inclusive) and `end` (exclusive) options are byte offsets into this entry's file data,
+and can be used to obtain part of an entry's file data rather than the whole thing.
+If either of these options are specified and non-`null`,
+then the above options must be used to obain the file's raw data.
+Speficying `{start: 0, end: entry.compressedSize}` will result in the complete file,
+which is effectively the default values for these options,
+but note that unlike omitting the options, when you specify `start` or `end` as any non-`null` value,
+the above requirement is still enforced that you must also pass the appropriate options to get the file's raw data.
+
+It's possible for the `readStream` provided to the `callback` to emit errors for several reasons.
+For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`.
+Two more error cases (when `validateEntrySizes` is `true`) are if the decompressed data has too many
+or too few actual bytes compared to the reported byte count from the entry's `uncompressedSize` field.
+yauzl notices this false information and emits an error from the `readStream`
+after some number of bytes have already been piped through the stream.
+
+This check allows clients to trust the `uncompressedSize` field in `Entry` objects.
+Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by
+doing some heuristic checks on the size metadata and then watching out for the above errors.
+Such heuristics are outside the scope of this library,
+but enforcing the `uncompressedSize` is implemented here as a security feature.
+
+It is possible to destroy the `readStream` before it has piped all of its data.
+To do this, call `readStream.destroy()`.
+You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`.
+If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation
+must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`)
+in order for calls to `readStream.destroy()` to work in this context.
+
+#### close()
+
+Causes all future calls to `openReadStream()` to fail,
+and closes the fd, if any, after all streams created by `openReadStream()` have emitted their `end` events.
+
+If the `autoClose` option is set to `true` (see `open()`),
+this function will be called automatically effectively in response to this object's `end` event.
+
+If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet,
+this function causes undefined behavior.
+If the `lazyEntries` option is set to `true`,
+you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile.
+
+It is safe to call this function multiple times; after the first call, successive calls have no effect.
+This includes situations where the `autoClose` option effectively calls this function for you.
+
+If `close()` is never called, then the zipfile is "kept open".
+For zipfiles created with `fromFd()`, this will leave the `fd` open, which may be desirable.
+For zipfiles created with `open()`, this will leave the underlying `fd` open, thereby "leaking" it, which is probably undesirable.
+For zipfiles created with `fromRandomAccessReader()`, the reader's `close()` method will never be called.
+For zipfiles created with `fromBuffer()`, the `close()` function has no effect whether called or not.
+
+Regardless of how this `ZipFile` was created, there are no resources other than those listed above that require cleanup from this function.
+This means it may be desirable to never call `close()` in some usecases.
+
+#### isOpen
+
+`Boolean`. `true` until `close()` is called; then it's `false`.
+
+#### entryCount
+
+`Number`. Total number of central directory records.
+
+#### comment
+
+`String`. Always decoded with `CP437` per the spec.
+
+If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
+
+### Class: Entry
+
+Objects of this class represent Central Directory Records.
+Refer to the zipfile specification for more details about these fields.
+
+These fields are of type `Number`:
+
+ * `versionMadeBy`
+ * `versionNeededToExtract`
+ * `generalPurposeBitFlag`
+ * `compressionMethod`
+ * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`)
+ * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`)
+ * `crc32`
+ * `compressedSize`
+ * `uncompressedSize`
+ * `fileNameLength` (bytes)
+ * `extraFieldLength` (bytes)
+ * `fileCommentLength` (bytes)
+ * `internalFileAttributes`
+ * `externalFileAttributes`
+ * `relativeOffsetOfLocalHeader`
+
+#### fileName
+
+`String`.
+Following the spec, the bytes for the file name are decoded with
+`UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`.
+Alternatively, this field may be populated from the Info-ZIP Unicode Path Extra Field
+(see `extraFields`).
+
+This field is automatically validated by `validateFileName()` before yauzl emits an "entry" event.
+If this field would contain unsafe characters, yauzl emits an error instead of an entry.
+
+If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
+Therefore, `generalPurposeBitFlag` and any Info-ZIP Unicode Path Extra Field are ignored.
+Furthermore, no automatic file name validation is performed for this file name.
+
+#### extraFields
+
+`Array` with each entry in the form `{id: id, data: data}`,
+where `id` is a `Number` and `data` is a `Buffer`.
+
+This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001)
+in order to support ZIP64 format zip files.
+
+This library also looks for and reads the Info-ZIP Unicode Path Extra Field (0x7075)
+in order to support some zipfiles that use it instead of General Purpose Bit 11
+to convey `UTF-8` file names.
+When the field is identified and verified to be reliable (see the zipfile spec),
+the the file name in this field is stored in the `fileName` property,
+and the file name in the central directory record for this entry is ignored.
+Note that when `decodeStrings` is false, all Info-ZIP Unicode Path Extra Fields are ignored.
+
+None of the other fields are considered significant by this library.
+Fields that this library reads are left unalterned in the `extraFields` array.
+
+#### fileComment
+
+`String` decoded with the charset indicated by `generalPurposeBitFlag & 0x800` as with the `fileName`.
+(The Info-ZIP Unicode Path Extra Field has no effect on the charset used for this field.)
+
+If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`.
+
+Prior to yauzl version 2.7.0, this field was erroneously documented as `comment` instead of `fileComment`.
+For compatibility with any code that uses the field name `comment`,
+yauzl creates an alias field named `comment` which is identical to `fileComment`.
+
+#### getLastModDate()
+
+Effectively implemented as:
+
+```js
+return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);
+```
+
+#### isEncrypted()
+
+Returns is this entry encrypted with "Traditional Encryption".
+Effectively implemented as:
+
+```js
+return (this.generalPurposeBitFlag & 0x1) !== 0;
+```
+
+See `openReadStream()` for the implications of this value.
+
+Note that "Strong Encryption" is not supported, and will result in an `"error"` event emitted from the `ZipFile`.
+
+#### isCompressed()
+
+Effectively implemented as:
+
+```js
+return this.compressionMethod === 8;
+```
+
+See `openReadStream()` for the implications of this value.
+
+### Class: RandomAccessReader
+
+This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function.
+
+An example implementation can be found in `test/test.js`.
+
+#### randomAccessReader._readStreamForRange(start, end)
+
+Subclasses *must* implement this method.
+
+`start` and `end` are Numbers and indicate byte offsets from the start of the file.
+`end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes.
+`end - start` will always be at least `1`.
+
+This method should return a readable stream which will be `pipe()`ed into another stream.
+It is expected that the readable stream will provide data in several chunks if necessary.
+If the readable stream provides too many or too few bytes, an error will be emitted.
+(Note that `validateEntrySizes` has no effect on this check,
+because this is a low-level API that should behave correctly regardless of the contents of the file.)
+Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream
+(returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback
+(for example, for `fromRandomAccessReader()`).
+
+The returned stream *must* implement a method `.destroy()`
+if you call `readStream.destroy()` on streams you get from `openReadStream()`.
+If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`.
+`.destroy()` should abort any streaming that is in progress and clean up any associated resources.
+`.destroy()` will only be called after the stream has been `unpipe()`d from its destination.
+
+Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`.
+The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream).
+
+#### randomAccessReader.read(buffer, offset, length, position, callback)
+
+Subclasses may implement this method.
+The default implementation uses `createReadStream()` to fill the `buffer`.
+
+This method should behave like `fs.read()`.
+
+#### randomAccessReader.close(callback)
+
+Subclasses may implement this method.
+The default implementation is effectively `setImmediate(callback);`.
+
+`callback` takes parameters `(err)`.
+
+This method is called once the all streams returned from `_readStreamForRange()` have ended,
+and no more `_readStreamForRange()` or `read()` requests will be issued to this object.
+
+## How to Avoid Crashing
+
+When a malformed zipfile is encountered, the default behavior is to crash (throw an exception).
+If you want to handle errors more gracefully than this,
+be sure to do the following:
+
+ * Provide `callback` parameters where they are allowed, and check the `err` parameter.
+ * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`.
+ * Attach a listener for the `error` event on any stream you get from `openReadStream()`.
+
+Minor version updates to yauzl will not add any additional requirements to this list.
+
+## Limitations
+
+### No Streaming Unzip API
+
+Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish
+(such as from a readable stream) without sacrificing correctness.
+The Central Directory, which is the authority on the contents of the .zip file, is at the end of a .zip file, not the beginning.
+A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything
+(defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file.
+However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory,
+so trusting them would be a violation of the spec.
+
+Any library that offers a streaming unzip API must make one of the above two compromises,
+which makes the library either dishonest or nonconformant (usually the latter).
+This library insists on correctness and adherence to the spec, and so does not offer a streaming API.
+
+Here is a way to create a spec-conformant .zip file using the `zip` command line program (Info-ZIP)
+available in most unix-like environments, that is (nearly) impossible to parse correctly with a streaming parser:
+
+```
+$ echo -ne '\x50\x4b\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > file.txt
+$ zip -q0 - file.txt | cat > out.zip
+```
+
+This .zip file contains a single file entry that uses General Purpose Bit 3,
+which means the Local File Header doesn't know the size of the file.
+Any streaming parser that encounters this situation will either immediately fail,
+or attempt to search for the Data Descriptor after the file's contents.
+The file's contents is a sequence of 16-bytes crafted to exactly mimic a valid Data Descriptor for an empty file,
+which will fool any parser that gets this far into thinking that the file is empty rather than containing 16-bytes.
+What follows the file's real contents is the file's real Data Descriptor,
+which will likely cause some kind of signature mismatch error for a streaming parser (if one hasn't occurred already).
+
+By using General Purpose Bit 3 (and compression method 0),
+it's possible to create arbitrarily ambiguous .zip files that
+distract parsers with file contents that contain apparently valid .zip file metadata.
+
+### Limitted ZIP64 Support
+
+For ZIP64, only zip files smaller than `8PiB` are supported,
+not the full `16EiB` range that a 64-bit integer should be able to index.
+This is due to the JavaScript Number type being an IEEE 754 double precision float.
+
+The Node.js `fs` module probably has this same limitation.
+
+### ZIP64 Extensible Data Sector Is Ignored
+
+The spec does not allow zip file creators to put arbitrary data here,
+but rather reserves its use for PKWARE and mentions something about Z390.
+This doesn't seem useful to expose in this library, so it is ignored.
+
+### No Multi-Disk Archive Support
+
+This library does not support multi-disk zip files.
+The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks,
+which probably never happens now.
+If the "number of this disk" field in the End of Central Directory Record is not `0`,
+the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`.
+By extension the following zip file fields are ignored by this library and not provided to clients:
+
+ * Disk where central directory starts
+ * Number of central directory records on this disk
+ * Disk number where file starts
+
+### Limited Encryption Handling
+
+You can detect when a file entry is encrypted with "Traditional Encryption" via `isEncrypted()`,
+but yauzl will not help you decrypt it.
+See `openReadStream()`.
+
+If a zip file contains file entries encrypted with "Strong Encryption", yauzl emits an error.
+
+If the central directory is encrypted or compressed, yauzl emits an error.
+
+### Local File Headers Are Ignored
+
+Many unzip libraries mistakenly read the Local File Header data in zip files.
+This data is officially defined to be redundant with the Central Directory information,
+and is not to be trusted.
+Aside from checking the signature, yauzl ignores the content of the Local File Header.
+
+### No CRC-32 Checking
+
+This library provides the `crc32` field of `Entry` objects read from the Central Directory.
+However, this field is not used for anything in this library.
+
+### versionNeededToExtract Is Ignored
+
+The field `versionNeededToExtract` is ignored,
+because this library doesn't support the complete zip file spec at any version,
+
+### No Support For Obscure Compression Methods
+
+Regarding the `compressionMethod` field of `Entry` objects,
+only method `0` (stored with no compression)
+and method `8` (deflated) are supported.
+Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`.
+
+### Data Descriptors Are Ignored
+
+There may or may not be Data Descriptor sections in a zip file.
+This library provides no support for finding or interpreting them.
+
+### Archive Extra Data Record Is Ignored
+
+There may or may not be an Archive Extra Data Record section in a zip file.
+This library provides no support for finding or interpreting it.
+
+### No Language Encoding Flag Support
+
+Zip files officially support charset encodings other than CP437 and UTF-8,
+but the zip file spec does not specify how it works.
+This library makes no attempt to interpret the Language Encoding Flag.
+
+## Change History
+
+ * 2.10.0
+ * Added support for non-conformant zipfiles created by Microsoft, and added option `strictFileNames` to disable the workaround. [issue #66](https://github.com/thejoshwolfe/yauzl/issues/66), [issue #88](https://github.com/thejoshwolfe/yauzl/issues/88)
+ * 2.9.2
+ * Removed `tools/hexdump-zip.js` and `tools/hex2bin.js`. Those tools are now located here: [thejoshwolfe/hexdump-zip](https://github.com/thejoshwolfe/hexdump-zip) and [thejoshwolfe/hex2bin](https://github.com/thejoshwolfe/hex2bin)
+ * Worked around performance problem with zlib when using `fromBuffer()` and `readStream.destroy()` for large compressed files. [issue #87](https://github.com/thejoshwolfe/yauzl/issues/87)
+ * 2.9.1
+ * Removed `console.log()` accidentally introduced in 2.9.0. [issue #64](https://github.com/thejoshwolfe/yauzl/issues/64)
+ * 2.9.0
+ * Throw an exception if `readEntry()` is called without `lazyEntries:true`. Previously this caused undefined behavior. [issue #63](https://github.com/thejoshwolfe/yauzl/issues/63)
+ * 2.8.0
+ * Added option `validateEntrySizes`. [issue #53](https://github.com/thejoshwolfe/yauzl/issues/53)
+ * Added `examples/promises.js`
+ * Added ability to read raw file data via `decompress` and `decrypt` options. [issue #11](https://github.com/thejoshwolfe/yauzl/issues/11), [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38), [pull #39](https://github.com/thejoshwolfe/yauzl/pull/39)
+ * Added `start` and `end` options to `openReadStream()`. [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38)
+ * 2.7.0
+ * Added option `decodeStrings`. [issue #42](https://github.com/thejoshwolfe/yauzl/issues/42)
+ * Fixed documentation for `entry.fileComment` and added compatibility alias. [issue #47](https://github.com/thejoshwolfe/yauzl/issues/47)
+ * 2.6.0
+ * Support Info-ZIP Unicode Path Extra Field, used by WinRAR for Chinese file names. [issue #33](https://github.com/thejoshwolfe/yauzl/issues/33)
+ * 2.5.0
+ * Ignore malformed Extra Field that is common in Android .apk files. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
+ * 2.4.3
+ * Fix crash when parsing malformed Extra Field buffers. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31)
+ * 2.4.2
+ * Remove .npmignore and .travis.yml from npm package.
+ * 2.4.1
+ * Fix error handling.
+ * 2.4.0
+ * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yauzl/issues/6)
+ * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22)
+ * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yauzl/issues/26)
+ * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yauzl/issues/14)
+ * Add `examples/unzip.js`.
+ * 2.3.1
+ * Documentation updates.
+ * 2.3.0
+ * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yauzl/issues/13)
+ * 2.2.1
+ * Update dependencies.
+ * 2.2.0
+ * Update dependencies.
+ * 2.1.0
+ * Remove dependency on `iconv`.
+ * 2.0.3
+ * Fix crash when trying to read a 0-byte file.
+ * 2.0.2
+ * Fix event behavior after errors.
+ * 2.0.1
+ * Fix bug with using `iconv`.
+ * 2.0.0
+ * Initial release.
diff --git a/client/node_modules/yauzl/index.js b/client/node_modules/yauzl/index.js
new file mode 100644
index 0000000..cf5d70d
--- /dev/null
+++ b/client/node_modules/yauzl/index.js
@@ -0,0 +1,796 @@
+var fs = require("fs");
+var zlib = require("zlib");
+var fd_slicer = require("fd-slicer");
+var crc32 = require("buffer-crc32");
+var util = require("util");
+var EventEmitter = require("events").EventEmitter;
+var Transform = require("stream").Transform;
+var PassThrough = require("stream").PassThrough;
+var Writable = require("stream").Writable;
+
+exports.open = open;
+exports.fromFd = fromFd;
+exports.fromBuffer = fromBuffer;
+exports.fromRandomAccessReader = fromRandomAccessReader;
+exports.dosDateTimeToDate = dosDateTimeToDate;
+exports.validateFileName = validateFileName;
+exports.ZipFile = ZipFile;
+exports.Entry = Entry;
+exports.RandomAccessReader = RandomAccessReader;
+
+function open(path, options, callback) {
+ if (typeof options === "function") {
+ callback = options;
+ options = null;
+ }
+ if (options == null) options = {};
+ if (options.autoClose == null) options.autoClose = true;
+ if (options.lazyEntries == null) options.lazyEntries = false;
+ if (options.decodeStrings == null) options.decodeStrings = true;
+ if (options.validateEntrySizes == null) options.validateEntrySizes = true;
+ if (options.strictFileNames == null) options.strictFileNames = false;
+ if (callback == null) callback = defaultCallback;
+ fs.open(path, "r", function(err, fd) {
+ if (err) return callback(err);
+ fromFd(fd, options, function(err, zipfile) {
+ if (err) fs.close(fd, defaultCallback);
+ callback(err, zipfile);
+ });
+ });
+}
+
+function fromFd(fd, options, callback) {
+ if (typeof options === "function") {
+ callback = options;
+ options = null;
+ }
+ if (options == null) options = {};
+ if (options.autoClose == null) options.autoClose = false;
+ if (options.lazyEntries == null) options.lazyEntries = false;
+ if (options.decodeStrings == null) options.decodeStrings = true;
+ if (options.validateEntrySizes == null) options.validateEntrySizes = true;
+ if (options.strictFileNames == null) options.strictFileNames = false;
+ if (callback == null) callback = defaultCallback;
+ fs.fstat(fd, function(err, stats) {
+ if (err) return callback(err);
+ var reader = fd_slicer.createFromFd(fd, {autoClose: true});
+ fromRandomAccessReader(reader, stats.size, options, callback);
+ });
+}
+
+function fromBuffer(buffer, options, callback) {
+ if (typeof options === "function") {
+ callback = options;
+ options = null;
+ }
+ if (options == null) options = {};
+ options.autoClose = false;
+ if (options.lazyEntries == null) options.lazyEntries = false;
+ if (options.decodeStrings == null) options.decodeStrings = true;
+ if (options.validateEntrySizes == null) options.validateEntrySizes = true;
+ if (options.strictFileNames == null) options.strictFileNames = false;
+ // limit the max chunk size. see https://github.com/thejoshwolfe/yauzl/issues/87
+ var reader = fd_slicer.createFromBuffer(buffer, {maxChunkSize: 0x10000});
+ fromRandomAccessReader(reader, buffer.length, options, callback);
+}
+
+function fromRandomAccessReader(reader, totalSize, options, callback) {
+ if (typeof options === "function") {
+ callback = options;
+ options = null;
+ }
+ if (options == null) options = {};
+ if (options.autoClose == null) options.autoClose = true;
+ if (options.lazyEntries == null) options.lazyEntries = false;
+ if (options.decodeStrings == null) options.decodeStrings = true;
+ var decodeStrings = !!options.decodeStrings;
+ if (options.validateEntrySizes == null) options.validateEntrySizes = true;
+ if (options.strictFileNames == null) options.strictFileNames = false;
+ if (callback == null) callback = defaultCallback;
+ if (typeof totalSize !== "number") throw new Error("expected totalSize parameter to be a number");
+ if (totalSize > Number.MAX_SAFE_INTEGER) {
+ throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");
+ }
+
+ // the matching unref() call is in zipfile.close()
+ reader.ref();
+
+ // eocdr means End of Central Directory Record.
+ // search backwards for the eocdr signature.
+ // the last field of the eocdr is a variable-length comment.
+ // the comment size is encoded in a 2-byte field in the eocdr, which we can't find without trudging backwards through the comment to find it.
+ // as a consequence of this design decision, it's possible to have ambiguous zip file metadata if a coherent eocdr was in the comment.
+ // we search backwards for a eocdr signature, and hope that whoever made the zip file was smart enough to forbid the eocdr signature in the comment.
+ var eocdrWithoutCommentSize = 22;
+ var maxCommentSize = 0xffff; // 2-byte size
+ var bufferSize = Math.min(eocdrWithoutCommentSize + maxCommentSize, totalSize);
+ var buffer = newBuffer(bufferSize);
+ var bufferReadStart = totalSize - buffer.length;
+ readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) {
+ if (err) return callback(err);
+ for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) {
+ if (buffer.readUInt32LE(i) !== 0x06054b50) continue;
+ // found eocdr
+ var eocdrBuffer = buffer.slice(i);
+
+ // 0 - End of central directory signature = 0x06054b50
+ // 4 - Number of this disk
+ var diskNumber = eocdrBuffer.readUInt16LE(4);
+ if (diskNumber !== 0) {
+ return callback(new Error("multi-disk zip files are not supported: found disk number: " + diskNumber));
+ }
+ // 6 - Disk where central directory starts
+ // 8 - Number of central directory records on this disk
+ // 10 - Total number of central directory records
+ var entryCount = eocdrBuffer.readUInt16LE(10);
+ // 12 - Size of central directory (bytes)
+ // 16 - Offset of start of central directory, relative to start of archive
+ var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16);
+ // 20 - Comment length
+ var commentLength = eocdrBuffer.readUInt16LE(20);
+ var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize;
+ if (commentLength !== expectedCommentLength) {
+ return callback(new Error("invalid comment length. expected: " + expectedCommentLength + ". found: " + commentLength));
+ }
+ // 22 - Comment
+ // the encoding is always cp437.
+ var comment = decodeStrings ? decodeBuffer(eocdrBuffer, 22, eocdrBuffer.length, false)
+ : eocdrBuffer.slice(22);
+
+ if (!(entryCount === 0xffff || centralDirectoryOffset === 0xffffffff)) {
+ return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));
+ }
+
+ // ZIP64 format
+
+ // ZIP64 Zip64 end of central directory locator
+ var zip64EocdlBuffer = newBuffer(20);
+ var zip64EocdlOffset = bufferReadStart + i - zip64EocdlBuffer.length;
+ readAndAssertNoEof(reader, zip64EocdlBuffer, 0, zip64EocdlBuffer.length, zip64EocdlOffset, function(err) {
+ if (err) return callback(err);
+
+ // 0 - zip64 end of central dir locator signature = 0x07064b50
+ if (zip64EocdlBuffer.readUInt32LE(0) !== 0x07064b50) {
+ return callback(new Error("invalid zip64 end of central directory locator signature"));
+ }
+ // 4 - number of the disk with the start of the zip64 end of central directory
+ // 8 - relative offset of the zip64 end of central directory record
+ var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8);
+ // 16 - total number of disks
+
+ // ZIP64 end of central directory record
+ var zip64EocdrBuffer = newBuffer(56);
+ readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err) {
+ if (err) return callback(err);
+
+ // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)
+ if (zip64EocdrBuffer.readUInt32LE(0) !== 0x06064b50) {
+ return callback(new Error("invalid zip64 end of central directory record signature"));
+ }
+ // 4 - size of zip64 end of central directory record 8 bytes
+ // 12 - version made by 2 bytes
+ // 14 - version needed to extract 2 bytes
+ // 16 - number of this disk 4 bytes
+ // 20 - number of the disk with the start of the central directory 4 bytes
+ // 24 - total number of entries in the central directory on this disk 8 bytes
+ // 32 - total number of entries in the central directory 8 bytes
+ entryCount = readUInt64LE(zip64EocdrBuffer, 32);
+ // 40 - size of the central directory 8 bytes
+ // 48 - offset of start of central directory with respect to the starting disk number 8 bytes
+ centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48);
+ // 56 - zip64 extensible data sector (variable size)
+ return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));
+ });
+ });
+ return;
+ }
+ callback(new Error("end of central directory record signature not found"));
+ });
+}
+
+util.inherits(ZipFile, EventEmitter);
+function ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) {
+ var self = this;
+ EventEmitter.call(self);
+ self.reader = reader;
+ // forward close events
+ self.reader.on("error", function(err) {
+ // error closing the fd
+ emitError(self, err);
+ });
+ self.reader.once("close", function() {
+ self.emit("close");
+ });
+ self.readEntryCursor = centralDirectoryOffset;
+ self.fileSize = fileSize;
+ self.entryCount = entryCount;
+ self.comment = comment;
+ self.entriesRead = 0;
+ self.autoClose = !!autoClose;
+ self.lazyEntries = !!lazyEntries;
+ self.decodeStrings = !!decodeStrings;
+ self.validateEntrySizes = !!validateEntrySizes;
+ self.strictFileNames = !!strictFileNames;
+ self.isOpen = true;
+ self.emittedError = false;
+
+ if (!self.lazyEntries) self._readEntry();
+}
+ZipFile.prototype.close = function() {
+ if (!this.isOpen) return;
+ this.isOpen = false;
+ this.reader.unref();
+};
+
+function emitErrorAndAutoClose(self, err) {
+ if (self.autoClose) self.close();
+ emitError(self, err);
+}
+function emitError(self, err) {
+ if (self.emittedError) return;
+ self.emittedError = true;
+ self.emit("error", err);
+}
+
+ZipFile.prototype.readEntry = function() {
+ if (!this.lazyEntries) throw new Error("readEntry() called without lazyEntries:true");
+ this._readEntry();
+};
+ZipFile.prototype._readEntry = function() {
+ var self = this;
+ if (self.entryCount === self.entriesRead) {
+ // done with metadata
+ setImmediate(function() {
+ if (self.autoClose) self.close();
+ if (self.emittedError) return;
+ self.emit("end");
+ });
+ return;
+ }
+ if (self.emittedError) return;
+ var buffer = newBuffer(46);
+ readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {
+ if (err) return emitErrorAndAutoClose(self, err);
+ if (self.emittedError) return;
+ var entry = new Entry();
+ // 0 - Central directory file header signature
+ var signature = buffer.readUInt32LE(0);
+ if (signature !== 0x02014b50) return emitErrorAndAutoClose(self, new Error("invalid central directory file header signature: 0x" + signature.toString(16)));
+ // 4 - Version made by
+ entry.versionMadeBy = buffer.readUInt16LE(4);
+ // 6 - Version needed to extract (minimum)
+ entry.versionNeededToExtract = buffer.readUInt16LE(6);
+ // 8 - General purpose bit flag
+ entry.generalPurposeBitFlag = buffer.readUInt16LE(8);
+ // 10 - Compression method
+ entry.compressionMethod = buffer.readUInt16LE(10);
+ // 12 - File last modification time
+ entry.lastModFileTime = buffer.readUInt16LE(12);
+ // 14 - File last modification date
+ entry.lastModFileDate = buffer.readUInt16LE(14);
+ // 16 - CRC-32
+ entry.crc32 = buffer.readUInt32LE(16);
+ // 20 - Compressed size
+ entry.compressedSize = buffer.readUInt32LE(20);
+ // 24 - Uncompressed size
+ entry.uncompressedSize = buffer.readUInt32LE(24);
+ // 28 - File name length (n)
+ entry.fileNameLength = buffer.readUInt16LE(28);
+ // 30 - Extra field length (m)
+ entry.extraFieldLength = buffer.readUInt16LE(30);
+ // 32 - File comment length (k)
+ entry.fileCommentLength = buffer.readUInt16LE(32);
+ // 34 - Disk number where file starts
+ // 36 - Internal file attributes
+ entry.internalFileAttributes = buffer.readUInt16LE(36);
+ // 38 - External file attributes
+ entry.externalFileAttributes = buffer.readUInt32LE(38);
+ // 42 - Relative offset of local file header
+ entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42);
+
+ if (entry.generalPurposeBitFlag & 0x40) return emitErrorAndAutoClose(self, new Error("strong encryption is not supported"));
+
+ self.readEntryCursor += 46;
+
+ buffer = newBuffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength);
+ readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {
+ if (err) return emitErrorAndAutoClose(self, err);
+ if (self.emittedError) return;
+ // 46 - File name
+ var isUtf8 = (entry.generalPurposeBitFlag & 0x800) !== 0;
+ entry.fileName = self.decodeStrings ? decodeBuffer(buffer, 0, entry.fileNameLength, isUtf8)
+ : buffer.slice(0, entry.fileNameLength);
+
+ // 46+n - Extra field
+ var fileCommentStart = entry.fileNameLength + entry.extraFieldLength;
+ var extraFieldBuffer = buffer.slice(entry.fileNameLength, fileCommentStart);
+ entry.extraFields = [];
+ var i = 0;
+ while (i < extraFieldBuffer.length - 3) {
+ var headerId = extraFieldBuffer.readUInt16LE(i + 0);
+ var dataSize = extraFieldBuffer.readUInt16LE(i + 2);
+ var dataStart = i + 4;
+ var dataEnd = dataStart + dataSize;
+ if (dataEnd > extraFieldBuffer.length) return emitErrorAndAutoClose(self, new Error("extra field length exceeds extra field buffer size"));
+ var dataBuffer = newBuffer(dataSize);
+ extraFieldBuffer.copy(dataBuffer, 0, dataStart, dataEnd);
+ entry.extraFields.push({
+ id: headerId,
+ data: dataBuffer,
+ });
+ i = dataEnd;
+ }
+
+ // 46+n+m - File comment
+ entry.fileComment = self.decodeStrings ? decodeBuffer(buffer, fileCommentStart, fileCommentStart + entry.fileCommentLength, isUtf8)
+ : buffer.slice(fileCommentStart, fileCommentStart + entry.fileCommentLength);
+ // compatibility hack for https://github.com/thejoshwolfe/yauzl/issues/47
+ entry.comment = entry.fileComment;
+
+ self.readEntryCursor += buffer.length;
+ self.entriesRead += 1;
+
+ if (entry.uncompressedSize === 0xffffffff ||
+ entry.compressedSize === 0xffffffff ||
+ entry.relativeOffsetOfLocalHeader === 0xffffffff) {
+ // ZIP64 format
+ // find the Zip64 Extended Information Extra Field
+ var zip64EiefBuffer = null;
+ for (var i = 0; i < entry.extraFields.length; i++) {
+ var extraField = entry.extraFields[i];
+ if (extraField.id === 0x0001) {
+ zip64EiefBuffer = extraField.data;
+ break;
+ }
+ }
+ if (zip64EiefBuffer == null) {
+ return emitErrorAndAutoClose(self, new Error("expected zip64 extended information extra field"));
+ }
+ var index = 0;
+ // 0 - Original Size 8 bytes
+ if (entry.uncompressedSize === 0xffffffff) {
+ if (index + 8 > zip64EiefBuffer.length) {
+ return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include uncompressed size"));
+ }
+ entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index);
+ index += 8;
+ }
+ // 8 - Compressed Size 8 bytes
+ if (entry.compressedSize === 0xffffffff) {
+ if (index + 8 > zip64EiefBuffer.length) {
+ return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include compressed size"));
+ }
+ entry.compressedSize = readUInt64LE(zip64EiefBuffer, index);
+ index += 8;
+ }
+ // 16 - Relative Header Offset 8 bytes
+ if (entry.relativeOffsetOfLocalHeader === 0xffffffff) {
+ if (index + 8 > zip64EiefBuffer.length) {
+ return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include relative header offset"));
+ }
+ entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index);
+ index += 8;
+ }
+ // 24 - Disk Start Number 4 bytes
+ }
+
+ // check for Info-ZIP Unicode Path Extra Field (0x7075)
+ // see https://github.com/thejoshwolfe/yauzl/issues/33
+ if (self.decodeStrings) {
+ for (var i = 0; i < entry.extraFields.length; i++) {
+ var extraField = entry.extraFields[i];
+ if (extraField.id === 0x7075) {
+ if (extraField.data.length < 6) {
+ // too short to be meaningful
+ continue;
+ }
+ // Version 1 byte version of this extra field, currently 1
+ if (extraField.data.readUInt8(0) !== 1) {
+ // > Changes may not be backward compatible so this extra
+ // > field should not be used if the version is not recognized.
+ continue;
+ }
+ // NameCRC32 4 bytes File Name Field CRC32 Checksum
+ var oldNameCrc32 = extraField.data.readUInt32LE(1);
+ if (crc32.unsigned(buffer.slice(0, entry.fileNameLength)) !== oldNameCrc32) {
+ // > If the CRC check fails, this UTF-8 Path Extra Field should be
+ // > ignored and the File Name field in the header should be used instead.
+ continue;
+ }
+ // UnicodeName Variable UTF-8 version of the entry File Name
+ entry.fileName = decodeBuffer(extraField.data, 5, extraField.data.length, true);
+ break;
+ }
+ }
+ }
+
+ // validate file size
+ if (self.validateEntrySizes && entry.compressionMethod === 0) {
+ var expectedCompressedSize = entry.uncompressedSize;
+ if (entry.isEncrypted()) {
+ // traditional encryption prefixes the file data with a header
+ expectedCompressedSize += 12;
+ }
+ if (entry.compressedSize !== expectedCompressedSize) {
+ var msg = "compressed/uncompressed size mismatch for stored file: " + entry.compressedSize + " != " + entry.uncompressedSize;
+ return emitErrorAndAutoClose(self, new Error(msg));
+ }
+ }
+
+ if (self.decodeStrings) {
+ if (!self.strictFileNames) {
+ // allow backslash
+ entry.fileName = entry.fileName.replace(/\\/g, "/");
+ }
+ var errorMessage = validateFileName(entry.fileName, self.validateFileNameOptions);
+ if (errorMessage != null) return emitErrorAndAutoClose(self, new Error(errorMessage));
+ }
+ self.emit("entry", entry);
+
+ if (!self.lazyEntries) self._readEntry();
+ });
+ });
+};
+
+ZipFile.prototype.openReadStream = function(entry, options, callback) {
+ var self = this;
+ // parameter validation
+ var relativeStart = 0;
+ var relativeEnd = entry.compressedSize;
+ if (callback == null) {
+ callback = options;
+ options = {};
+ } else {
+ // validate options that the caller has no excuse to get wrong
+ if (options.decrypt != null) {
+ if (!entry.isEncrypted()) {
+ throw new Error("options.decrypt can only be specified for encrypted entries");
+ }
+ if (options.decrypt !== false) throw new Error("invalid options.decrypt value: " + options.decrypt);
+ if (entry.isCompressed()) {
+ if (options.decompress !== false) throw new Error("entry is encrypted and compressed, and options.decompress !== false");
+ }
+ }
+ if (options.decompress != null) {
+ if (!entry.isCompressed()) {
+ throw new Error("options.decompress can only be specified for compressed entries");
+ }
+ if (!(options.decompress === false || options.decompress === true)) {
+ throw new Error("invalid options.decompress value: " + options.decompress);
+ }
+ }
+ if (options.start != null || options.end != null) {
+ if (entry.isCompressed() && options.decompress !== false) {
+ throw new Error("start/end range not allowed for compressed entry without options.decompress === false");
+ }
+ if (entry.isEncrypted() && options.decrypt !== false) {
+ throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false");
+ }
+ }
+ if (options.start != null) {
+ relativeStart = options.start;
+ if (relativeStart < 0) throw new Error("options.start < 0");
+ if (relativeStart > entry.compressedSize) throw new Error("options.start > entry.compressedSize");
+ }
+ if (options.end != null) {
+ relativeEnd = options.end;
+ if (relativeEnd < 0) throw new Error("options.end < 0");
+ if (relativeEnd > entry.compressedSize) throw new Error("options.end > entry.compressedSize");
+ if (relativeEnd < relativeStart) throw new Error("options.end < options.start");
+ }
+ }
+ // any further errors can either be caused by the zipfile,
+ // or were introduced in a minor version of yauzl,
+ // so should be passed to the client rather than thrown.
+ if (!self.isOpen) return callback(new Error("closed"));
+ if (entry.isEncrypted()) {
+ if (options.decrypt !== false) return callback(new Error("entry is encrypted, and options.decrypt !== false"));
+ }
+ // make sure we don't lose the fd before we open the actual read stream
+ self.reader.ref();
+ var buffer = newBuffer(30);
+ readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) {
+ try {
+ if (err) return callback(err);
+ // 0 - Local file header signature = 0x04034b50
+ var signature = buffer.readUInt32LE(0);
+ if (signature !== 0x04034b50) {
+ return callback(new Error("invalid local file header signature: 0x" + signature.toString(16)));
+ }
+ // all this should be redundant
+ // 4 - Version needed to extract (minimum)
+ // 6 - General purpose bit flag
+ // 8 - Compression method
+ // 10 - File last modification time
+ // 12 - File last modification date
+ // 14 - CRC-32
+ // 18 - Compressed size
+ // 22 - Uncompressed size
+ // 26 - File name length (n)
+ var fileNameLength = buffer.readUInt16LE(26);
+ // 28 - Extra field length (m)
+ var extraFieldLength = buffer.readUInt16LE(28);
+ // 30 - File name
+ // 30+n - Extra field
+ var localFileHeaderEnd = entry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength;
+ var decompress;
+ if (entry.compressionMethod === 0) {
+ // 0 - The file is stored (no compression)
+ decompress = false;
+ } else if (entry.compressionMethod === 8) {
+ // 8 - The file is Deflated
+ decompress = options.decompress != null ? options.decompress : true;
+ } else {
+ return callback(new Error("unsupported compression method: " + entry.compressionMethod));
+ }
+ var fileDataStart = localFileHeaderEnd;
+ var fileDataEnd = fileDataStart + entry.compressedSize;
+ if (entry.compressedSize !== 0) {
+ // bounds check now, because the read streams will probably not complain loud enough.
+ // since we're dealing with an unsigned offset plus an unsigned size,
+ // we only have 1 thing to check for.
+ if (fileDataEnd > self.fileSize) {
+ return callback(new Error("file data overflows file bounds: " +
+ fileDataStart + " + " + entry.compressedSize + " > " + self.fileSize));
+ }
+ }
+ var readStream = self.reader.createReadStream({
+ start: fileDataStart + relativeStart,
+ end: fileDataStart + relativeEnd,
+ });
+ var endpointStream = readStream;
+ if (decompress) {
+ var destroyed = false;
+ var inflateFilter = zlib.createInflateRaw();
+ readStream.on("error", function(err) {
+ // setImmediate here because errors can be emitted during the first call to pipe()
+ setImmediate(function() {
+ if (!destroyed) inflateFilter.emit("error", err);
+ });
+ });
+ readStream.pipe(inflateFilter);
+
+ if (self.validateEntrySizes) {
+ endpointStream = new AssertByteCountStream(entry.uncompressedSize);
+ inflateFilter.on("error", function(err) {
+ // forward zlib errors to the client-visible stream
+ setImmediate(function() {
+ if (!destroyed) endpointStream.emit("error", err);
+ });
+ });
+ inflateFilter.pipe(endpointStream);
+ } else {
+ // the zlib filter is the client-visible stream
+ endpointStream = inflateFilter;
+ }
+ // this is part of yauzl's API, so implement this function on the client-visible stream
+ endpointStream.destroy = function() {
+ destroyed = true;
+ if (inflateFilter !== endpointStream) inflateFilter.unpipe(endpointStream);
+ readStream.unpipe(inflateFilter);
+ // TODO: the inflateFilter may cause a memory leak. see Issue #27.
+ readStream.destroy();
+ };
+ }
+ callback(null, endpointStream);
+ } finally {
+ self.reader.unref();
+ }
+ });
+};
+
+function Entry() {
+}
+Entry.prototype.getLastModDate = function() {
+ return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);
+};
+Entry.prototype.isEncrypted = function() {
+ return (this.generalPurposeBitFlag & 0x1) !== 0;
+};
+Entry.prototype.isCompressed = function() {
+ return this.compressionMethod === 8;
+};
+
+function dosDateTimeToDate(date, time) {
+ var day = date & 0x1f; // 1-31
+ var month = (date >> 5 & 0xf) - 1; // 1-12, 0-11
+ var year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108
+
+ var millisecond = 0;
+ var second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers)
+ var minute = time >> 5 & 0x3f; // 0-59
+ var hour = time >> 11 & 0x1f; // 0-23
+
+ return new Date(year, month, day, hour, minute, second, millisecond);
+}
+
+function validateFileName(fileName) {
+ if (fileName.indexOf("\\") !== -1) {
+ return "invalid characters in fileName: " + fileName;
+ }
+ if (/^[a-zA-Z]:/.test(fileName) || /^\//.test(fileName)) {
+ return "absolute path: " + fileName;
+ }
+ if (fileName.split("/").indexOf("..") !== -1) {
+ return "invalid relative path: " + fileName;
+ }
+ // all good
+ return null;
+}
+
+function readAndAssertNoEof(reader, buffer, offset, length, position, callback) {
+ if (length === 0) {
+ // fs.read will throw an out-of-bounds error if you try to read 0 bytes from a 0 byte file
+ return setImmediate(function() { callback(null, newBuffer(0)); });
+ }
+ reader.read(buffer, offset, length, position, function(err, bytesRead) {
+ if (err) return callback(err);
+ if (bytesRead < length) {
+ return callback(new Error("unexpected EOF"));
+ }
+ callback();
+ });
+}
+
+util.inherits(AssertByteCountStream, Transform);
+function AssertByteCountStream(byteCount) {
+ Transform.call(this);
+ this.actualByteCount = 0;
+ this.expectedByteCount = byteCount;
+}
+AssertByteCountStream.prototype._transform = function(chunk, encoding, cb) {
+ this.actualByteCount += chunk.length;
+ if (this.actualByteCount > this.expectedByteCount) {
+ var msg = "too many bytes in the stream. expected " + this.expectedByteCount + ". got at least " + this.actualByteCount;
+ return cb(new Error(msg));
+ }
+ cb(null, chunk);
+};
+AssertByteCountStream.prototype._flush = function(cb) {
+ if (this.actualByteCount < this.expectedByteCount) {
+ var msg = "not enough bytes in the stream. expected " + this.expectedByteCount + ". got only " + this.actualByteCount;
+ return cb(new Error(msg));
+ }
+ cb();
+};
+
+util.inherits(RandomAccessReader, EventEmitter);
+function RandomAccessReader() {
+ EventEmitter.call(this);
+ this.refCount = 0;
+}
+RandomAccessReader.prototype.ref = function() {
+ this.refCount += 1;
+};
+RandomAccessReader.prototype.unref = function() {
+ var self = this;
+ self.refCount -= 1;
+
+ if (self.refCount > 0) return;
+ if (self.refCount < 0) throw new Error("invalid unref");
+
+ self.close(onCloseDone);
+
+ function onCloseDone(err) {
+ if (err) return self.emit('error', err);
+ self.emit('close');
+ }
+};
+RandomAccessReader.prototype.createReadStream = function(options) {
+ var start = options.start;
+ var end = options.end;
+ if (start === end) {
+ var emptyStream = new PassThrough();
+ setImmediate(function() {
+ emptyStream.end();
+ });
+ return emptyStream;
+ }
+ var stream = this._readStreamForRange(start, end);
+
+ var destroyed = false;
+ var refUnrefFilter = new RefUnrefFilter(this);
+ stream.on("error", function(err) {
+ setImmediate(function() {
+ if (!destroyed) refUnrefFilter.emit("error", err);
+ });
+ });
+ refUnrefFilter.destroy = function() {
+ stream.unpipe(refUnrefFilter);
+ refUnrefFilter.unref();
+ stream.destroy();
+ };
+
+ var byteCounter = new AssertByteCountStream(end - start);
+ refUnrefFilter.on("error", function(err) {
+ setImmediate(function() {
+ if (!destroyed) byteCounter.emit("error", err);
+ });
+ });
+ byteCounter.destroy = function() {
+ destroyed = true;
+ refUnrefFilter.unpipe(byteCounter);
+ refUnrefFilter.destroy();
+ };
+
+ return stream.pipe(refUnrefFilter).pipe(byteCounter);
+};
+RandomAccessReader.prototype._readStreamForRange = function(start, end) {
+ throw new Error("not implemented");
+};
+RandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) {
+ var readStream = this.createReadStream({start: position, end: position + length});
+ var writeStream = new Writable();
+ var written = 0;
+ writeStream._write = function(chunk, encoding, cb) {
+ chunk.copy(buffer, offset + written, 0, chunk.length);
+ written += chunk.length;
+ cb();
+ };
+ writeStream.on("finish", callback);
+ readStream.on("error", function(error) {
+ callback(error);
+ });
+ readStream.pipe(writeStream);
+};
+RandomAccessReader.prototype.close = function(callback) {
+ setImmediate(callback);
+};
+
+util.inherits(RefUnrefFilter, PassThrough);
+function RefUnrefFilter(context) {
+ PassThrough.call(this);
+ this.context = context;
+ this.context.ref();
+ this.unreffedYet = false;
+}
+RefUnrefFilter.prototype._flush = function(cb) {
+ this.unref();
+ cb();
+};
+RefUnrefFilter.prototype.unref = function(cb) {
+ if (this.unreffedYet) return;
+ this.unreffedYet = true;
+ this.context.unref();
+};
+
+var cp437 = '\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';
+function decodeBuffer(buffer, start, end, isUtf8) {
+ if (isUtf8) {
+ return buffer.toString("utf8", start, end);
+ } else {
+ var result = "";
+ for (var i = start; i < end; i++) {
+ result += cp437[buffer[i]];
+ }
+ return result;
+ }
+}
+
+function readUInt64LE(buffer, offset) {
+ // there is no native function for this, because we can't actually store 64-bit integers precisely.
+ // after 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore.
+ // but since 53 bits is a whole lot more than 32 bits, we do our best anyway.
+ var lower32 = buffer.readUInt32LE(offset);
+ var upper32 = buffer.readUInt32LE(offset + 4);
+ // we can't use bitshifting here, because JavaScript bitshifting only works on 32-bit integers.
+ return upper32 * 0x100000000 + lower32;
+ // as long as we're bounds checking the result of this function against the total file size,
+ // we'll catch any overflow errors, because we already made sure the total file size was within reason.
+}
+
+// Node 10 deprecated new Buffer().
+var newBuffer;
+if (typeof Buffer.allocUnsafe === "function") {
+ newBuffer = function(len) {
+ return Buffer.allocUnsafe(len);
+ };
+} else {
+ newBuffer = function(len) {
+ return new Buffer(len);
+ };
+}
+
+function defaultCallback(err) {
+ if (err) throw err;
+}
diff --git a/client/node_modules/yauzl/package.json b/client/node_modules/yauzl/package.json
new file mode 100644
index 0000000..4f1144a
--- /dev/null
+++ b/client/node_modules/yauzl/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "yauzl",
+ "version": "2.10.0",
+ "description": "yet another unzip library for node",
+ "main": "index.js",
+ "scripts": {
+ "test": "node test/test.js",
+ "test-cov": "istanbul cover test/test.js",
+ "test-travis": "istanbul cover --report lcovonly test/test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/thejoshwolfe/yauzl.git"
+ },
+ "keywords": [
+ "unzip",
+ "zip",
+ "stream",
+ "archive",
+ "file"
+ ],
+ "author": "Josh Wolfe <thejoshwolfe@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/thejoshwolfe/yauzl/issues"
+ },
+ "homepage": "https://github.com/thejoshwolfe/yauzl",
+ "dependencies": {
+ "fd-slicer": "~1.1.0",
+ "buffer-crc32": "~0.2.3"
+ },
+ "devDependencies": {
+ "bl": "~1.0.0",
+ "istanbul": "~0.3.4",
+ "pend": "~1.2.0"
+ },
+ "files": [
+ "index.js"
+ ]
+}
diff --git a/client/package-lock.json b/client/package-lock.json
new file mode 100644
index 0000000..2e84317
--- /dev/null
+++ b/client/package-lock.json
@@ -0,0 +1,1042 @@
+{
+ "name": "client",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "@cliqz/adblocker-electron": "^1.26.12",
+ "cross-fetch": "^4.0.0"
+ }
+ },
+ "node_modules/@cliqz/adblocker": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker/-/adblocker-1.26.12.tgz",
+ "integrity": "sha512-mnFxASJpHfkbBJ9/pmY2MPbOfwWQtk+MvqF044IssBmvpOe9t8miBNwl+PX+moGGIFYqRHk78TwUkZHUNkbGJg==",
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12",
+ "@cliqz/adblocker-extended-selectors": "^1.26.12",
+ "@remusao/guess-url-type": "^1.2.1",
+ "@remusao/small": "^1.2.1",
+ "@remusao/smaz": "^1.9.1",
+ "@types/chrome": "^0.0.248",
+ "@types/firefox-webext-browser": "^111.0.2",
+ "tldts-experimental": "^6.0.14"
+ }
+ },
+ "node_modules/@cliqz/adblocker-content": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-content/-/adblocker-content-1.26.12.tgz",
+ "integrity": "sha512-4LWW3kntWuTDo10u24uuk0GmTzegkw9cZ8eDBzzDvHOtRVRMUv4fuoaWCwnB6UpA1VH7iU5nCbRlXNvjnnUA2Q==",
+ "dependencies": {
+ "@cliqz/adblocker-extended-selectors": "^1.26.12"
+ }
+ },
+ "node_modules/@cliqz/adblocker-electron": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-electron/-/adblocker-electron-1.26.12.tgz",
+ "integrity": "sha512-KcteTxbOvnnNSjYobRnJmUKWitIxBvJqN9GTrHYTygJzOtm0te7/QexCP2/wIBbbD56c+9Fn0FsdDU4gZAIyWA==",
+ "dependencies": {
+ "@cliqz/adblocker": "^1.26.12",
+ "@cliqz/adblocker-electron-preload": "^1.26.12",
+ "tldts-experimental": "^6.0.14"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ }
+ },
+ "node_modules/@cliqz/adblocker-electron-preload": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.26.12.tgz",
+ "integrity": "sha512-R9ZL5d6M1qKBed9/BCmIh3+RWpoO9MnDDxeVFySfpHM9pdLkRDniZURuP2FTQ43JD2GtWopHgYmfWj3Hc46huw==",
+ "dependencies": {
+ "@cliqz/adblocker-content": "^1.26.12"
+ },
+ "peerDependencies": {
+ "electron": ">11"
+ }
+ },
+ "node_modules/@cliqz/adblocker-extended-selectors": {
+ "version": "1.26.12",
+ "resolved": "https://registry.npmjs.org/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.26.12.tgz",
+ "integrity": "sha512-Sbh9Fu1FzqD0p/UExKoTKcsbGL3wZdHcn/WTe0MvFbRYAjPVzVCyUxCBwCXOQ1XPFK3D7CarXMb6NZPct7q/rg=="
+ },
+ "node_modules/@electron/get": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
+ "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ }
+ },
+ "node_modules/@remusao/guess-url-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@remusao/guess-url-type/-/guess-url-type-1.2.1.tgz",
+ "integrity": "sha512-rbOqre2jW8STjheOsOaQHLgYBaBZ9Owbdt8NO7WvNZftJlaG3y/K9oOkl8ZUpuFBisIhmBuMEW6c+YrQl5inRA=="
+ },
+ "node_modules/@remusao/small": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@remusao/small/-/small-1.2.1.tgz",
+ "integrity": "sha512-7MjoGt0TJMVw1GPKgWq6SJPws1SLsUXQRa43Umht+nkyw2jnpy3WpiLNqGdwo5rHr5Wp9B2W/Pm5RQp656UJdw=="
+ },
+ "node_modules/@remusao/smaz": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz/-/smaz-1.9.1.tgz",
+ "integrity": "sha512-e6BLuP8oaXCZ9+v46Is4ilAZ/Vq6YLgmBP204Ixgk1qTjXmqvFYG7+AS7v9nsZdGOy96r9DWGFbbDVgMxwu1rA==",
+ "dependencies": {
+ "@remusao/smaz-compress": "^1.9.1",
+ "@remusao/smaz-decompress": "^1.9.1"
+ }
+ },
+ "node_modules/@remusao/smaz-compress": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-compress/-/smaz-compress-1.9.1.tgz",
+ "integrity": "sha512-E2f48TwloQu3r6BdLOGF2aczeH7bJ/32oJGqvzT9SKur0cuUnLcZ7ZXP874E2fwmdE+cXzfC7bKzp79cDnmeyw==",
+ "dependencies": {
+ "@remusao/trie": "^1.4.1"
+ }
+ },
+ "node_modules/@remusao/smaz-decompress": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-decompress/-/smaz-decompress-1.9.1.tgz",
+ "integrity": "sha512-TfjKKprYe3n47od8auhvJ/Ikj9kQTbDTe71ynKlxslrvvUhlIV3VQSuwYuMWMbdz1fIs0H/fxCN1Z8/H3km6/A=="
+ },
+ "node_modules/@remusao/trie": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@remusao/trie/-/trie-1.4.1.tgz",
+ "integrity": "sha512-yvwa+aCyYI/UjeD39BnpMypG8N06l86wIDW1/PAc6ihBRnodIfZDwccxQN3n1t74wduzaz74m4ZMHZnB06567Q=="
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "peer": true,
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "peer": true,
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/chrome": {
+ "version": "0.0.248",
+ "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.248.tgz",
+ "integrity": "sha512-qtBzxZD1v3eWZn8XxH1i07pAhzJDHnxJBBVy7bmntXxXKxjzNXYxD41teqa5yOcX/Yy8brRFGZESEzGoINvBDg==",
+ "dependencies": {
+ "@types/filesystem": "*",
+ "@types/har-format": "*"
+ }
+ },
+ "node_modules/@types/filesystem": {
+ "version": "0.0.35",
+ "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz",
+ "integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==",
+ "dependencies": {
+ "@types/filewriter": "*"
+ }
+ },
+ "node_modules/@types/filewriter": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz",
+ "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg=="
+ },
+ "node_modules/@types/firefox-webext-browser": {
+ "version": "111.0.5",
+ "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-111.0.5.tgz",
+ "integrity": "sha512-YYE+4MeJvq7DZ+UzPD8c5uN1HJpGu4Fl6O6PEAfBJQmLzQkfTWlgMjZMJQHAmcH3rjVS5fjN+jMkkZ4ZTlKbmA=="
+ },
+ "node_modules/@types/har-format": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz",
+ "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA=="
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "peer": true
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "18.18.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz",
+ "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==",
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "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,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
+ "optional": true,
+ "peer": true
+ },
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "peer": true,
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "peer": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "peer": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
+ "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "peer": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/electron": {
+ "version": "27.1.2",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-27.1.2.tgz",
+ "integrity": "sha512-Dy6BUuGLiIJv+zfsXwr78TV2TNppi24rXF4PIIS+OjDblEKdkI9r1iM8JUd3/x3sbGUy5mdLMSPhvmu//IhkgA==",
+ "hasInstallScript": true,
+ "peer": true,
+ "dependencies": {
+ "@electron/get": "^2.0.0",
+ "@types/node": "^18.11.18",
+ "extract-zip": "^2.0.1"
+ },
+ "bin": {
+ "electron": "cli.js"
+ },
+ "engines": {
+ "node": ">= 12.20.55"
+ }
+ },
+ "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==",
+ "peer": true,
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "peer": true,
+ "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/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==",
+ "peer": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "peer": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "peer": true,
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "peer": true
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "peer": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "peer": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "peer": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "peer": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "peer": true
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "peer": true,
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.0.21",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.0.21.tgz",
+ "integrity": "sha512-Ae3+JCsuiewSntToPzJh/Gu0on8nbpGcWXGL2y3WufIQOzUhJd7Kod/vXAA8bS5uUd87thNkfz4KeIVoRftfLA=="
+ },
+ "node_modules/tldts-experimental": {
+ "version": "6.0.21",
+ "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-6.0.21.tgz",
+ "integrity": "sha512-xa7521+GxoVWJpd6mxIZCrr1AW+ZzklCilSHJuBydIWpPceNgM9/KNquycOaN0nw5uM4fPqPWNUbkQ3vOK58gw==",
+ "dependencies": {
+ "tldts-core": "^6.0.21"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "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==",
+ "peer": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "optional": true,
+ "peer": true
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/client/package.json b/client/package.json
new file mode 100644
index 0000000..258cc2b
--- /dev/null
+++ b/client/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "@cliqz/adblocker-electron": "^1.26.12",
+ "cross-fetch": "^4.0.0"
+ }
+}
diff --git a/client/secure-no.svg b/client/secure-no.svg
new file mode 100644
index 0000000..035e3f0
--- /dev/null
+++ b/client/secure-no.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m754-318-60-62q12-32 19-66.5t7-69.5v-189l-240-90-146 55-62-62 208-78 320 120v244q0 51-11.5 101T754-318Zm38 262L662-186q-38 39-84.5 65.5T480-80q-139-35-229.5-159.5T160-516v-172L56-792l56-56 736 736-56 56ZM423-425Zm91-135Zm-34 396q35-11 67-31t59-47L240-608v92q0 121 68 220t172 132Z"/></svg> \ No newline at end of file
diff --git a/client/secure-ok.svg b/client/secure-ok.svg
new file mode 100644
index 0000000..4abb666
--- /dev/null
+++ b/client/secure-ok.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m438-338 226-226-57-57-169 169-84-84-57 57 141 141Zm42 258q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q104-33 172-132t68-220v-189l-240-90-240 90v189q0 121 68 220t172 132Zm0-316Z"/></svg> \ No newline at end of file
diff --git a/client/secure-sd.svg b/client/secure-sd.svg
new file mode 100644
index 0000000..3bc315b
--- /dev/null
+++ b/client/secure-sd.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M501-320q38 0 74.5-16t63.5-48q7-8 3-18t-14-12q-38-6-72-28.5T501-502q-20-35-23.5-75.5T488-656q4-10-2.5-18t-17.5-6q-69 13-109 65t-40 115q0 75 53.5 127.5T501-320ZM480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q104-33 172-132t68-220v-189l-240-90-240 90v189q0 121 68 220t172 132Zm0-316Z"/></svg> \ No newline at end of file
diff --git a/client/secure-wh.svg b/client/secure-wh.svg
new file mode 100644
index 0000000..342ac08
--- /dev/null
+++ b/client/secure-wh.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q104-33 172-132t68-220v-189l-240-90-240 90v189q0 121 68 220t172 132Zm0-316Zm0 200q17 0 29.5-12.5T522-322q0-17-12.5-29.5T480-364q-17 0-29.5 12.5T438-322q0 17 12.5 29.5T480-280Zm-29-128h60v-22q0-11 5-21 6-14 16-23.5t21-19.5q17-17 29.5-38t12.5-46q0-45-34.5-73.5T480-680q-40 0-71.5 23T366-596l54 22q6-20 22.5-34t37.5-14q22 0 38.5 13t16.5 33q0 17-10.5 31.5T501-518q-12 11-24 22.5T458-469q-7 14-7 29.5v31.5Z"/></svg> \ No newline at end of file